@cnc_cbz/usefultools-plugin-official 1.0.9 → 1.1.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.
Files changed (2) hide show
  1. package/dist/text-diff.mjs +231 -131
  2. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, computed, openBlock, createElementBlock, createCommentVNode, createElementVNode, createTextVNode, toDisplayString, normalizeClass, withDirectives, vModelText, Fragment, renderList } from "vue";
1
+ import { defineComponent, ref, computed, openBlock, createElementBlock, createCommentVNode, createElementVNode, normalizeClass, createTextVNode, toDisplayString, Fragment, withDirectives, vModelText, renderList } from "vue";
2
2
  class Diff {
3
3
  diff(oldStr, newStr, options = {}) {
4
4
  let callback;
@@ -247,37 +247,43 @@ function tokenize(value, options) {
247
247
  }
248
248
  const _hoisted_1 = { class: "flex flex-col h-full gap-3" };
249
249
  const _hoisted_2 = { class: "flex flex-wrap items-center gap-3" };
250
- const _hoisted_3 = { class: "ml-auto flex items-center gap-3" };
251
- const _hoisted_4 = {
250
+ const _hoisted_3 = { class: "flex border-2 border-white/20 rounded overflow-hidden" };
251
+ const _hoisted_4 = { class: "ml-auto flex items-center gap-3" };
252
+ const _hoisted_5 = {
252
253
  key: 0,
253
254
  class: "flex items-center gap-3 text-sm font-bold"
254
255
  };
255
- const _hoisted_5 = { class: "text-neon-green" };
256
- const _hoisted_6 = { class: "text-coral-red" };
257
- const _hoisted_7 = {
256
+ const _hoisted_6 = { class: "text-neon-green" };
257
+ const _hoisted_7 = { class: "text-coral-red" };
258
+ const _hoisted_8 = {
258
259
  key: 1,
259
260
  class: "flex border-2 border-white/20 rounded overflow-hidden"
260
261
  };
261
- const _hoisted_8 = {
262
+ const _hoisted_9 = { class: "flex-1 grid grid-cols-2 gap-3 min-h-0" };
263
+ const _hoisted_10 = { class: "flex flex-col min-h-0" };
264
+ const _hoisted_11 = { class: "flex items-center gap-2 mb-1.5" };
265
+ const _hoisted_12 = { class: "text-sm font-bold text-gray-400 tracking-wider" };
266
+ const _hoisted_13 = ["placeholder"];
267
+ const _hoisted_14 = { class: "flex flex-col min-h-0" };
268
+ const _hoisted_15 = { class: "flex items-center gap-2 mb-1.5" };
269
+ const _hoisted_16 = { class: "text-sm font-bold text-gray-400 tracking-wider" };
270
+ const _hoisted_17 = ["placeholder"];
271
+ const _hoisted_18 = {
262
272
  key: 0,
263
- class: "flex-1 grid grid-cols-2 gap-3 min-h-0"
273
+ class: "px-4 py-3 bg-deep-charcoal border-4 border-black rounded-xl shadow-hard text-sm text-gray-400 leading-6"
264
274
  };
265
- const _hoisted_9 = { class: "flex flex-col min-h-0" };
266
- const _hoisted_10 = { class: "flex items-center gap-2 mb-1.5" };
267
- const _hoisted_11 = { class: "flex flex-col min-h-0" };
268
- const _hoisted_12 = { class: "flex items-center gap-2 mb-1.5" };
269
- const _hoisted_13 = {
275
+ const _hoisted_19 = {
270
276
  key: 1,
271
277
  class: "flex-1 flex flex-col min-h-0"
272
278
  };
273
- const _hoisted_14 = { class: "flex-1 bg-deep-charcoal border-4 border-black rounded-xl overflow-auto shadow-hard" };
274
- const _hoisted_15 = { class: "w-full font-mono text-sm border-collapse" };
275
- const _hoisted_16 = {
279
+ const _hoisted_20 = { class: "flex-1 bg-deep-charcoal border-4 border-black rounded-xl overflow-auto shadow-hard" };
280
+ const _hoisted_21 = { class: "w-full font-mono text-sm border-collapse" };
281
+ const _hoisted_22 = {
276
282
  key: 2,
277
283
  class: "flex-1 grid grid-cols-2 gap-3 min-h-0"
278
284
  };
279
- const _hoisted_17 = { class: "w-full font-mono text-sm border-collapse" };
280
- const _hoisted_18 = { class: "w-full font-mono text-sm border-collapse" };
285
+ const _hoisted_23 = { class: "w-full font-mono text-sm border-collapse" };
286
+ const _hoisted_24 = { class: "w-full font-mono text-sm border-collapse" };
281
287
  const _sfc_main = /* @__PURE__ */ defineComponent({
282
288
  __name: "index",
283
289
  setup(__props) {
@@ -285,6 +291,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
285
291
  const newText = ref("");
286
292
  const hasCompared = ref(false);
287
293
  const viewMode = ref("unified");
294
+ const compareMode = ref("text");
288
295
  const unifiedLines = ref([]);
289
296
  const leftLines = ref([]);
290
297
  const rightLines = ref([]);
@@ -296,6 +303,43 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
296
303
  if (lines[lines.length - 1] === "") lines.pop();
297
304
  return lines;
298
305
  }
306
+ function tryDecode(value) {
307
+ try {
308
+ return decodeURIComponent(value);
309
+ } catch {
310
+ return value;
311
+ }
312
+ }
313
+ function stringifyUrlForDiff(raw) {
314
+ const input = raw.trim();
315
+ if (!input) return "";
316
+ try {
317
+ const url = new URL(input);
318
+ const lines = [
319
+ `protocol: ${url.protocol.replace(/:$/, "")}`,
320
+ `host: ${url.host}`,
321
+ `pathname: ${url.pathname || "/"}`
322
+ ];
323
+ if (url.hash) {
324
+ lines.push(`hash: ${tryDecode(url.hash.slice(1))}`);
325
+ }
326
+ const entries = Array.from(url.searchParams.entries()).sort(([keyA], [keyB]) => keyA.localeCompare(keyB));
327
+ if (entries.length === 0) {
328
+ lines.push("query: <empty>");
329
+ } else {
330
+ lines.push("query:");
331
+ for (const [key, value] of entries) {
332
+ lines.push(` ${key} = ${tryDecode(value)}`);
333
+ }
334
+ }
335
+ return lines.join("\n");
336
+ } catch {
337
+ return input;
338
+ }
339
+ }
340
+ function getComparableText(raw) {
341
+ return compareMode.value === "url" ? stringifyUrlForDiff(raw) : raw;
342
+ }
299
343
  function alignChunk(oldArr, newArr) {
300
344
  const m = oldArr.length, n = newArr.length;
301
345
  const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
@@ -325,7 +369,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
325
369
  }
326
370
  function handleCompare() {
327
371
  var _a;
328
- const changes = diffLines(oldText.value, newText.value);
372
+ const changes = diffLines(getComparableText(oldText.value), getComparableText(newText.value));
329
373
  const unified = [];
330
374
  const left = [];
331
375
  const right = [];
@@ -419,7 +463,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
419
463
  });
420
464
  }
421
465
  function loadSample() {
422
- oldText.value = `html,
466
+ if (compareMode.value === "url") {
467
+ oldText.value = "http://localhost:8102/usersys/FormSetPage?Name=WholeInventoryPage&FormName=Observed&RequestViewName=TalentReviewListForManagement&AppConfigID=2&FormApplicationID=428&FormID=4226&MenuName=UserWholeInventory&AskForm_Where=ReviewStage%3D4&checkStart=true";
468
+ newText.value = "http://localhost:8102/usersys/FormSetPage?Name=WholeInventoryPageForPosition&RequestViewName=TalentReviewListForPosition&FormName=Observed&MenuStep=undefined&AskForm_Where=undefined&MeetingEntryID=undefined&AppConfigID=2&FormApplicationID=428&FormID=4226&MenuName=UserWholeInventoryForPosition";
469
+ } else {
470
+ oldText.value = `html,
423
471
  body {
424
472
  width: 100%;
425
473
  height: 100%;
@@ -443,7 +491,7 @@ body {
443
491
  background-color: #000000;
444
492
  opacity: 1;
445
493
  }`;
446
- newText.value = `html,
494
+ newText.value = `html,
447
495
  body {
448
496
  width: 100%;
449
497
  height: 100%;
@@ -467,6 +515,7 @@ body {
467
515
  background-color: #031607;
468
516
  opacity: 1;
469
517
  }`;
518
+ }
470
519
  handleCompare();
471
520
  }
472
521
  const stats = computed(() => {
@@ -494,11 +543,65 @@ body {
494
543
  return openBlock(), createElementBlock("div", _hoisted_1, [
495
544
  createCommentVNode(" Toolbar "),
496
545
  createElementVNode("div", _hoisted_2, [
546
+ createElementVNode("div", _hoisted_3, [
547
+ createElementVNode(
548
+ "button",
549
+ {
550
+ class: normalizeClass(["h-9 px-3 text-sm font-bold flex items-center gap-1.5 transition-all", compareMode.value === "text" ? "bg-primary text-black" : "bg-deep-charcoal text-gray-400 hover:text-white"]),
551
+ onClick: _cache[0] || (_cache[0] = ($event) => {
552
+ compareMode.value = "text";
553
+ handleEdit();
554
+ })
555
+ },
556
+ [..._cache[10] || (_cache[10] = [
557
+ createElementVNode(
558
+ "span",
559
+ { class: "material-icons text-lg" },
560
+ "article",
561
+ -1
562
+ /* CACHED */
563
+ ),
564
+ createTextVNode(
565
+ "文本对比 ",
566
+ -1
567
+ /* CACHED */
568
+ )
569
+ ])],
570
+ 2
571
+ /* CLASS */
572
+ ),
573
+ createElementVNode(
574
+ "button",
575
+ {
576
+ class: normalizeClass(["h-9 px-3 text-sm font-bold flex items-center gap-1.5 transition-all border-l border-white/20", compareMode.value === "url" ? "bg-primary text-black" : "bg-deep-charcoal text-gray-400 hover:text-white"]),
577
+ onClick: _cache[1] || (_cache[1] = ($event) => {
578
+ compareMode.value = "url";
579
+ handleEdit();
580
+ })
581
+ },
582
+ [..._cache[11] || (_cache[11] = [
583
+ createElementVNode(
584
+ "span",
585
+ { class: "material-icons text-lg" },
586
+ "link",
587
+ -1
588
+ /* CACHED */
589
+ ),
590
+ createTextVNode(
591
+ "URL 对比 ",
592
+ -1
593
+ /* CACHED */
594
+ )
595
+ ])],
596
+ 2
597
+ /* CLASS */
598
+ )
599
+ ]),
497
600
  !hasCompared.value ? (openBlock(), createElementBlock("button", {
498
601
  key: 0,
499
602
  class: "h-9 px-4 bg-primary text-black font-bold border-2 border-black rounded shadow-hard-sm hover:shadow-none hover:translate-x-0.5 hover:translate-y-0.5 transition-all flex items-center gap-1.5 text-sm",
500
603
  onClick: handleCompare
501
- }, [..._cache[8] || (_cache[8] = [
604
+ }, [..._cache[12] || (_cache[12] = [
502
605
  createElementVNode(
503
606
  "span",
504
607
  { class: "material-icons text-lg" },
@@ -516,7 +619,7 @@ body {
516
619
  key: 1,
517
620
  class: "h-9 px-4 bg-primary text-black font-bold border-2 border-black rounded shadow-hard-sm hover:shadow-none hover:translate-x-0.5 hover:translate-y-0.5 transition-all flex items-center gap-1.5 text-sm",
518
621
  onClick: handleEdit
519
- }, [..._cache[9] || (_cache[9] = [
622
+ }, [..._cache[13] || (_cache[13] = [
520
623
  createElementVNode(
521
624
  "span",
522
625
  { class: "material-icons text-lg" },
@@ -533,7 +636,7 @@ body {
533
636
  createElementVNode("button", {
534
637
  class: "h-9 px-4 bg-white text-black font-bold border-2 border-black rounded shadow-hard-sm hover:shadow-none hover:translate-x-0.5 hover:translate-y-0.5 transition-all flex items-center gap-1.5 text-sm",
535
638
  onClick: handleSwap
536
- }, [..._cache[10] || (_cache[10] = [
639
+ }, [..._cache[14] || (_cache[14] = [
537
640
  createElementVNode(
538
641
  "span",
539
642
  { class: "material-icons text-lg" },
@@ -550,7 +653,7 @@ body {
550
653
  createElementVNode("button", {
551
654
  class: "h-9 px-4 bg-coral-red text-white font-bold border-2 border-black rounded shadow-hard-sm hover:shadow-none hover:translate-x-0.5 hover:translate-y-0.5 transition-all flex items-center gap-1.5 text-sm",
552
655
  onClick: handleClear
553
- }, [..._cache[11] || (_cache[11] = [
656
+ }, [..._cache[15] || (_cache[15] = [
554
657
  createElementVNode(
555
658
  "span",
556
659
  { class: "material-icons text-lg" },
@@ -564,32 +667,32 @@ body {
564
667
  /* CACHED */
565
668
  )
566
669
  ])]),
567
- createElementVNode("div", _hoisted_3, [
568
- hasCompared.value ? (openBlock(), createElementBlock("div", _hoisted_4, [
670
+ createElementVNode("div", _hoisted_4, [
671
+ hasCompared.value ? (openBlock(), createElementBlock("div", _hoisted_5, [
569
672
  createElementVNode(
570
673
  "span",
571
- _hoisted_5,
674
+ _hoisted_6,
572
675
  "+" + toDisplayString(stats.value.added),
573
676
  1
574
677
  /* TEXT */
575
678
  ),
576
679
  createElementVNode(
577
680
  "span",
578
- _hoisted_6,
681
+ _hoisted_7,
579
682
  "-" + toDisplayString(stats.value.removed),
580
683
  1
581
684
  /* TEXT */
582
685
  )
583
686
  ])) : createCommentVNode("v-if", true),
584
687
  createCommentVNode(" 视图切换 "),
585
- hasCompared.value ? (openBlock(), createElementBlock("div", _hoisted_7, [
688
+ hasCompared.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
586
689
  createElementVNode(
587
690
  "button",
588
691
  {
589
692
  class: normalizeClass(["h-7 px-2.5 text-xs font-bold flex items-center gap-1 transition-all", viewMode.value === "unified" ? "bg-primary text-black" : "bg-deep-charcoal text-gray-400 hover:text-white"]),
590
- onClick: _cache[0] || (_cache[0] = ($event) => viewMode.value = "unified")
693
+ onClick: _cache[2] || (_cache[2] = ($event) => viewMode.value = "unified")
591
694
  },
592
- [..._cache[12] || (_cache[12] = [
695
+ [..._cache[16] || (_cache[16] = [
593
696
  createElementVNode(
594
697
  "span",
595
698
  { class: "material-icons text-sm" },
@@ -610,9 +713,9 @@ body {
610
713
  "button",
611
714
  {
612
715
  class: normalizeClass(["h-7 px-2.5 text-xs font-bold flex items-center gap-1 transition-all border-l border-white/20", viewMode.value === "split" ? "bg-primary text-black" : "bg-deep-charcoal text-gray-400 hover:text-white"]),
613
- onClick: _cache[1] || (_cache[1] = ($event) => viewMode.value = "split")
716
+ onClick: _cache[3] || (_cache[3] = ($event) => viewMode.value = "split")
614
717
  },
615
- [..._cache[13] || (_cache[13] = [
718
+ [..._cache[17] || (_cache[17] = [
616
719
  createElementVNode(
617
720
  "span",
618
721
  { class: "material-icons text-sm" },
@@ -633,7 +736,7 @@ body {
633
736
  createElementVNode("button", {
634
737
  class: "h-9 px-3 bg-deep-charcoal text-gray-300 font-bold border-2 border-white/20 rounded hover:border-primary hover:text-primary transition-all text-sm flex items-center gap-1.5",
635
738
  onClick: loadSample
636
- }, [..._cache[14] || (_cache[14] = [
739
+ }, [..._cache[18] || (_cache[18] = [
637
740
  createElementVNode(
638
741
  "span",
639
742
  { class: "material-icons text-lg" },
@@ -650,96 +753,93 @@ body {
650
753
  ])
651
754
  ]),
652
755
  createCommentVNode(" 编辑模式:并排输入 "),
653
- !hasCompared.value ? (openBlock(), createElementBlock("div", _hoisted_8, [
654
- createElementVNode("div", _hoisted_9, [
655
- createElementVNode("div", _hoisted_10, [
656
- _cache[16] || (_cache[16] = createElementVNode(
657
- "span",
658
- { class: "text-sm font-bold text-gray-400 tracking-wider" },
659
- "A 原始文本",
660
- -1
661
- /* CACHED */
662
- )),
663
- createElementVNode("button", {
664
- class: "ml-auto text-xs text-gray-500 hover:text-primary transition-colors flex items-center gap-1",
665
- onClick: _cache[2] || (_cache[2] = ($event) => handlePaste("old"))
666
- }, [..._cache[15] || (_cache[15] = [
667
- createElementVNode(
668
- "span",
669
- { class: "material-icons text-sm" },
670
- "content_paste",
671
- -1
672
- /* CACHED */
673
- ),
674
- createTextVNode(
675
- "粘贴 ",
676
- -1
677
- /* CACHED */
678
- )
679
- ])])
680
- ]),
681
- withDirectives(createElementVNode(
682
- "textarea",
683
- {
684
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => oldText.value = $event),
685
- placeholder: "在此输入原始文本...",
686
- spellcheck: "false",
687
- class: "flex-1 w-full bg-deep-charcoal text-gray-100 border-4 border-black rounded-xl p-4 font-mono text-sm leading-relaxed resize-none shadow-hard focus:border-primary focus:shadow-none focus:translate-x-1 focus:translate-y-1 transition-all outline-none placeholder-gray-600"
688
- },
689
- null,
690
- 512
691
- /* NEED_PATCH */
692
- ), [
693
- [vModelText, oldText.value]
694
- ])
695
- ]),
696
- createElementVNode("div", _hoisted_11, [
697
- createElementVNode("div", _hoisted_12, [
698
- _cache[18] || (_cache[18] = createElementVNode(
699
- "span",
700
- { class: "text-sm font-bold text-gray-400 tracking-wider" },
701
- "B 新文本",
702
- -1
703
- /* CACHED */
704
- )),
705
- createElementVNode("button", {
706
- class: "ml-auto text-xs text-gray-500 hover:text-primary transition-colors flex items-center gap-1",
707
- onClick: _cache[4] || (_cache[4] = ($event) => handlePaste("new"))
708
- }, [..._cache[17] || (_cache[17] = [
709
- createElementVNode(
710
- "span",
711
- { class: "material-icons text-sm" },
712
- "content_paste",
713
- -1
714
- /* CACHED */
715
- ),
716
- createTextVNode(
717
- "粘贴 ",
718
- -1
719
- /* CACHED */
720
- )
721
- ])])
756
+ !hasCompared.value ? (openBlock(), createElementBlock(
757
+ Fragment,
758
+ { key: 0 },
759
+ [
760
+ createElementVNode("div", _hoisted_9, [
761
+ createElementVNode("div", _hoisted_10, [
762
+ createElementVNode("div", _hoisted_11, [
763
+ createElementVNode(
764
+ "span",
765
+ _hoisted_12,
766
+ "A " + toDisplayString(compareMode.value === "url" ? "原始 URL" : "原始文本"),
767
+ 1
768
+ /* TEXT */
769
+ ),
770
+ createElementVNode("button", {
771
+ class: "ml-auto text-xs text-gray-500 hover:text-primary transition-colors flex items-center gap-1",
772
+ onClick: _cache[4] || (_cache[4] = ($event) => handlePaste("old"))
773
+ }, [..._cache[19] || (_cache[19] = [
774
+ createElementVNode(
775
+ "span",
776
+ { class: "material-icons text-sm" },
777
+ "content_paste",
778
+ -1
779
+ /* CACHED */
780
+ ),
781
+ createTextVNode(
782
+ "粘贴 ",
783
+ -1
784
+ /* CACHED */
785
+ )
786
+ ])])
787
+ ]),
788
+ withDirectives(createElementVNode("textarea", {
789
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => oldText.value = $event),
790
+ placeholder: compareMode.value === "url" ? "在此输入原始 URL..." : "在此输入原始文本...",
791
+ spellcheck: "false",
792
+ class: "flex-1 w-full bg-deep-charcoal text-gray-100 border-4 border-black rounded-xl p-4 font-mono text-sm leading-relaxed resize-none shadow-hard focus:border-primary focus:shadow-none focus:translate-x-1 focus:translate-y-1 transition-all outline-none placeholder-gray-600"
793
+ }, null, 8, _hoisted_13), [
794
+ [vModelText, oldText.value]
795
+ ])
796
+ ]),
797
+ createElementVNode("div", _hoisted_14, [
798
+ createElementVNode("div", _hoisted_15, [
799
+ createElementVNode(
800
+ "span",
801
+ _hoisted_16,
802
+ "B " + toDisplayString(compareMode.value === "url" ? "新 URL" : "新文本"),
803
+ 1
804
+ /* TEXT */
805
+ ),
806
+ createElementVNode("button", {
807
+ class: "ml-auto text-xs text-gray-500 hover:text-primary transition-colors flex items-center gap-1",
808
+ onClick: _cache[6] || (_cache[6] = ($event) => handlePaste("new"))
809
+ }, [..._cache[20] || (_cache[20] = [
810
+ createElementVNode(
811
+ "span",
812
+ { class: "material-icons text-sm" },
813
+ "content_paste",
814
+ -1
815
+ /* CACHED */
816
+ ),
817
+ createTextVNode(
818
+ "粘贴 ",
819
+ -1
820
+ /* CACHED */
821
+ )
822
+ ])])
823
+ ]),
824
+ withDirectives(createElementVNode("textarea", {
825
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => newText.value = $event),
826
+ placeholder: compareMode.value === "url" ? "在此输入新 URL..." : "在此输入新文本...",
827
+ spellcheck: "false",
828
+ class: "flex-1 w-full bg-deep-charcoal text-gray-100 border-4 border-black rounded-xl p-4 font-mono text-sm leading-relaxed resize-none shadow-hard focus:border-primary focus:shadow-none focus:translate-x-1 focus:translate-y-1 transition-all outline-none placeholder-gray-600"
829
+ }, null, 8, _hoisted_17), [
830
+ [vModelText, newText.value]
831
+ ])
832
+ ])
722
833
  ]),
723
- withDirectives(createElementVNode(
724
- "textarea",
725
- {
726
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => newText.value = $event),
727
- placeholder: "在此输入新文本...",
728
- spellcheck: "false",
729
- class: "flex-1 w-full bg-deep-charcoal text-gray-100 border-4 border-black rounded-xl p-4 font-mono text-sm leading-relaxed resize-none shadow-hard focus:border-primary focus:shadow-none focus:translate-x-1 focus:translate-y-1 transition-all outline-none placeholder-gray-600"
730
- },
731
- null,
732
- 512
733
- /* NEED_PATCH */
734
- ), [
735
- [vModelText, newText.value]
736
- ])
737
- ])
738
- ])) : createCommentVNode("v-if", true),
834
+ compareMode.value === "url" ? (openBlock(), createElementBlock("div", _hoisted_18, " URL 对比会先解析协议、主机、路径和查询参数,再按参数名排序后进行逐行差异对比,便于快速定位参数增删和取值变化。 ")) : createCommentVNode("v-if", true)
835
+ ],
836
+ 64
837
+ /* STABLE_FRAGMENT */
838
+ )) : createCommentVNode("v-if", true),
739
839
  createCommentVNode(" 对比结果:统一视图 "),
740
- hasCompared.value && viewMode.value === "unified" ? (openBlock(), createElementBlock("div", _hoisted_13, [
741
- createElementVNode("div", _hoisted_14, [
742
- createElementVNode("table", _hoisted_15, [
840
+ hasCompared.value && viewMode.value === "unified" ? (openBlock(), createElementBlock("div", _hoisted_19, [
841
+ createElementVNode("div", _hoisted_20, [
842
+ createElementVNode("table", _hoisted_21, [
743
843
  (openBlock(true), createElementBlock(
744
844
  Fragment,
745
845
  null,
@@ -802,17 +902,17 @@ body {
802
902
  ])
803
903
  ])) : createCommentVNode("v-if", true),
804
904
  createCommentVNode(" 对比结果:并排视图 "),
805
- hasCompared.value && viewMode.value === "split" ? (openBlock(), createElementBlock("div", _hoisted_16, [
905
+ hasCompared.value && viewMode.value === "split" ? (openBlock(), createElementBlock("div", _hoisted_22, [
806
906
  createElementVNode(
807
907
  "div",
808
908
  {
809
909
  ref_key: "leftPanel",
810
910
  ref: leftPanel,
811
- onScroll: _cache[6] || (_cache[6] = ($event) => syncScroll("left")),
911
+ onScroll: _cache[8] || (_cache[8] = ($event) => syncScroll("left")),
812
912
  class: "bg-deep-charcoal border-4 border-black rounded-xl overflow-auto shadow-hard"
813
913
  },
814
914
  [
815
- createElementVNode("table", _hoisted_17, [
915
+ createElementVNode("table", _hoisted_23, [
816
916
  (openBlock(true), createElementBlock(
817
917
  Fragment,
818
918
  null,
@@ -863,11 +963,11 @@ body {
863
963
  {
864
964
  ref_key: "rightPanel",
865
965
  ref: rightPanel,
866
- onScroll: _cache[7] || (_cache[7] = ($event) => syncScroll("right")),
966
+ onScroll: _cache[9] || (_cache[9] = ($event) => syncScroll("right")),
867
967
  class: "bg-deep-charcoal border-4 border-black rounded-xl overflow-auto shadow-hard"
868
968
  },
869
969
  [
870
- createElementVNode("table", _hoisted_18, [
970
+ createElementVNode("table", _hoisted_24, [
871
971
  (openBlock(true), createElementBlock(
872
972
  Fragment,
873
973
  null,
@@ -925,7 +1025,7 @@ const _export_sfc = (sfc, props) => {
925
1025
  }
926
1026
  return target;
927
1027
  };
928
- const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-90752a2e"]]);
1028
+ const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0a7b0920"]]);
929
1029
  export {
930
1030
  index as default
931
1031
  };
@@ -2979,10 +3079,10 @@ export {
2979
3079
  }
2980
3080
  }
2981
3081
 
2982
- table tr td[data-v-90752a2e] {
3082
+ table tr td[data-v-0a7b0920] {
2983
3083
  line-height: 1.75;
2984
3084
  }
2985
- .diff-num[data-v-90752a2e] {
3085
+ .diff-num[data-v-0a7b0920] {
2986
3086
  min-width: 3ch;
2987
3087
  }
2988
3088
  `;})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cnc_cbz/usefultools-plugin-official",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "UsefulTools 官方工具插件包",
6
6
  "keywords": [