v-code-diff 0.3.10 → 0.3.11
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/dist/v-code-diff/util.d.ts +4 -1
- package/dist/v-code-diff/v-code-diff.d.ts +9 -20
- package/dist/v-code-diff.cjs.js +1 -1
- package/dist/v-code-diff.esm.js +1 -1
- package/dist/v-code-diff.umd.js +1 -1
- package/package.json +1 -1
- package/src/lib/v-code-diff/util.ts +30 -12
- package/src/lib/v-code-diff/v-code-diff.ts +15 -8
|
@@ -17,5 +17,8 @@ declare type Props = Readonly<{
|
|
|
17
17
|
export declare function useDebounceFn(fn: any, delay: any): () => void;
|
|
18
18
|
export declare const createHtml: (props: Props) => string;
|
|
19
19
|
export declare function highlightElements(element: Element, props: any, ctx: SetupContext<any>): Promise<void>;
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function useSyncScroll(selector: any): {
|
|
21
|
+
addSyncScroll: () => void;
|
|
22
|
+
removeSyncScroll: () => void;
|
|
23
|
+
};
|
|
21
24
|
export {};
|
|
@@ -53,24 +53,13 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
53
53
|
type: BooleanConstructor;
|
|
54
54
|
default: boolean;
|
|
55
55
|
};
|
|
56
|
+
syncScroll: {
|
|
57
|
+
type: BooleanConstructor;
|
|
58
|
+
default: boolean;
|
|
59
|
+
};
|
|
56
60
|
}, {
|
|
57
61
|
html: import("vue-demi").Ref<string>;
|
|
58
62
|
}, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, ("before-render" | "after-render")[], "before-render" | "after-render", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<{
|
|
59
|
-
highlight?: unknown;
|
|
60
|
-
oldString?: unknown;
|
|
61
|
-
newString?: unknown;
|
|
62
|
-
context?: unknown;
|
|
63
|
-
outputFormat?: unknown;
|
|
64
|
-
drawFileList?: unknown;
|
|
65
|
-
renderNothingWhenEmpty?: unknown;
|
|
66
|
-
diffStyle?: unknown;
|
|
67
|
-
fileName?: unknown;
|
|
68
|
-
isShowNoChange?: unknown;
|
|
69
|
-
trim?: unknown;
|
|
70
|
-
language?: unknown;
|
|
71
|
-
noDiffLineFeed?: unknown;
|
|
72
|
-
} & {
|
|
73
|
-
trim: boolean;
|
|
74
63
|
highlight: boolean;
|
|
75
64
|
oldString: string;
|
|
76
65
|
newString: string;
|
|
@@ -81,13 +70,11 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
81
70
|
diffStyle: "word" | "char";
|
|
82
71
|
fileName: string;
|
|
83
72
|
isShowNoChange: boolean;
|
|
73
|
+
trim: boolean;
|
|
84
74
|
language: string;
|
|
85
75
|
noDiffLineFeed: boolean;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
"onAfter-render"?: ((...args: any[]) => any) | undefined;
|
|
89
|
-
}, {
|
|
90
|
-
trim: boolean;
|
|
76
|
+
syncScroll: boolean;
|
|
77
|
+
} & {}>, {
|
|
91
78
|
highlight: boolean;
|
|
92
79
|
oldString: string;
|
|
93
80
|
newString: string;
|
|
@@ -98,7 +85,9 @@ declare const _default: import("vue-demi").DefineComponent<{
|
|
|
98
85
|
diffStyle: "word" | "char";
|
|
99
86
|
fileName: string;
|
|
100
87
|
isShowNoChange: boolean;
|
|
88
|
+
trim: boolean;
|
|
101
89
|
language: string;
|
|
102
90
|
noDiffLineFeed: boolean;
|
|
91
|
+
syncScroll: boolean;
|
|
103
92
|
}>;
|
|
104
93
|
export default _default;
|
package/dist/v-code-diff.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue-demi"),n=require("diff"),t=require("diff2html"),r=require("highlight.js");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue-demi"),n=require("diff"),t=require("diff2html"),r=require("highlight.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}require("diff2html/bundles/css/diff2html.min.css");var a=i(t),o=l(r);const d=e=>{let t=e.trim?e.oldString.trim():e.oldString,r=e.trim?e.newString.trim():e.newString;t=e.noDiffLineFeed?t.replace(/(\r\n)/g,"\n"):t,r=e.noDiffLineFeed?r.replace(/(\r\n)/g,"\n"):r;let l=e.context;e.isShowNoChange&&t===r&&(t="File Without Change\tOldString: ======================== \n"+t,r="File Without Change\tNewString: ======================== \n"+r,l=99999);const i=n.createPatch(e.fileName,t,r,"","",{context:l});return a.html(i,{outputFormat:e.outputFormat,drawFileList:e.drawFileList,matching:"lines",diffStyle:e.diffStyle,renderNothingWhenEmpty:e.renderNothingWhenEmpty})};async function p(e,n,t){t.emit("before-render");const r=await async function(e){return new Promise((n=>{setTimeout((()=>{const t=e.querySelectorAll(".d2h-wrapper .d2h-code-line-ctn");n(Array.from(t))}),0)}))}(e),l=Array.from(r).map((e=>async function(e,n){return new Promise((t=>{setTimeout((()=>{if(n){const t=e.innerText;e.innerHTML=o.default.highlight(t,{language:n}).value}else o.default.highlightElement(e);t(!0)}),0)}))}(e,n.language)));await Promise.all(l),t.emit("after-render")}var h=[],s=[];function c(e,n){if(e&&"undefined"!=typeof document){var t,r=!0===n.prepend?"prepend":"append",l=!0===n.singleTag,i="string"==typeof n.container?document.querySelector(n.container):document.getElementsByTagName("head")[0];if(l){var a=h.indexOf(i);-1===a&&(a=h.push(i)-1,s[a]={}),t=s[a]&&s[a][r]?s[a][r]:s[a][r]=o()}else t=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function o(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),n.attributes)for(var t=Object.keys(n.attributes),l=0;l<t.length;l++)e.setAttribute(t[l],n.attributes[t[l]]);var a="prepend"===r?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}c(".d2h-wrapper .hljs {\n display: inline-block;\n padding: 0;\n background: transparent;\n vertical-align: middle;\n}\n.d2h-wrapper .hljs-comment,\n.d2h-wrapper .hljs-quote {\n color: #800;\n}\n.d2h-wrapper .hljs-keyword,\n.d2h-wrapper .hljs-selector-tag,\n.d2h-wrapper .hljs-section,\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-name {\n color: #008;\n}\n.d2h-wrapper .hljs-variable,\n.d2h-wrapper .hljs-template-variable {\n color: #660;\n}\n.d2h-wrapper .hljs-string,\n.d2h-wrapper .hljs-selector-attr,\n.d2h-wrapper .hljs-selector-pseudo,\n.d2h-wrapper .hljs-regexp {\n color: #080;\n}\n.d2h-wrapper .hljs-literal,\n.d2h-wrapper .hljs-symbol,\n.d2h-wrapper .hljs-bullet,\n.d2h-wrapper .hljs-meta,\n.d2h-wrapper .hljs-number,\n.d2h-wrapper .hljs-link {\n color: #066;\n}\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-type,\n.d2h-wrapper .hljs-attr,\n.d2h-wrapper .hljs-built_in,\n.d2h-wrapper .hljs-builtin-name,\n.d2h-wrapper .hljs-params {\n color: #606;\n}\n.d2h-wrapper .hljs-attribute,\n.d2h-wrapper .hljs-subst {\n color: #000;\n}\n.d2h-wrapper .hljs-formula {\n background-color: #eee;\n font-style: italic;\n}\n.d2h-wrapper .hljs-selector-id,\n.d2h-wrapper .hljs-selector-class {\n color: #9B703F;\n}\n.d2h-wrapper .hljs-addition {\n background-color: #baeeba;\n}\n.d2h-wrapper .hljs-deletion {\n background-color: #ffc8bd;\n}\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-strong {\n font-weight: bold;\n}\n.d2h-wrapper .hljs-emphasis {\n font-style: italic;\n}",{});c(".d2h-wrapper {\n position: relative;\n line-height: normal;\n}\n.d2h-wrapper .d2h-file-header {\n display: none;\n}\n.d2h-wrapper .d2h-files-diff {\n display: flex;\n}\n.d2h-wrapper .d2h-file-side-diff {\n margin-bottom: -5px;\n}\n.d2h-wrapper .d2h-code-side-emptyplaceholder {\n max-height: 19px;\n}\n.d2h-wrapper .d2h-code-side-line,\n.d2h-wrapper .d2h-code-line {\n width: auto;\n}\n.d2h-wrapper .d2h-code-side-line .d2h-info {\n height: 18px;\n}\n.d2h-wrapper .d2h-cntx,\n.d2h-wrapper .d2h-del,\n.d2h-wrapper .d2h-ins {\n height: 18px;\n}\n.d2h-wrapper .d2h-code-linenumber,\n.d2h-wrapper .d2h-code-side-linenumber {\n line-height: 20px;\n height: 20px;\n}\n.d2h-wrapper tr {\n height: 20px;\n}",{});var u=e.defineComponent({name:"CodeDiff",props:{highlight:{type:Boolean,default:!0},oldString:{type:String,default:""},newString:{type:String,default:""},context:{type:Number,default:10},outputFormat:{type:String,default:"line-by-line"},drawFileList:{type:Boolean,default:!1},renderNothingWhenEmpty:{type:Boolean,default:!1},diffStyle:{type:String,default:"word"},fileName:{type:String,default:""},isShowNoChange:{type:Boolean,default:!1},trim:{type:Boolean,default:!1},language:{type:String,default:""},noDiffLineFeed:{type:Boolean,default:!1},syncScroll:{type:Boolean,default:!0}},emits:["before-render","after-render"],setup(n,t){const r=e.ref(d(n)),l=function(e,n){let t;return function(){const r=this,l=arguments;clearTimeout(t),t=setTimeout((function(){e.apply(r,l)}),n)}}((async()=>{if(r.value=d(n),n.highlight){const e=document.createElement("div");e.innerHTML=r.value,await p(e,n,t),r.value=e.innerHTML}}),200);e.watch(n,l,{deep:!0,immediate:!0});const{addSyncScroll:i,removeSyncScroll:a}=function(e){let n=document.createElement("div");function t(t){t.target===n&&document.querySelectorAll(e).forEach((function(e){n!==e&&(e.scrollTop=n.scrollTop,e.scrollLeft=n.scrollLeft)}))}function r(e){n=e.target}return{addSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.addEventListener("mouseenter",r),e.addEventListener("scroll",t)}))},removeSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.removeEventListener("mouseenter",r),e.removeEventListener("scroll",t)}))}}}(".d2h-file-side-diff");return e.watch((()=>n.syncScroll),((e,n)=>{a(),e&&i()})),e.onMounted((()=>{i()})),{html:r}},render(){return e.isVue3?e.h("div",{innerHTML:this.html}):e.h("div",{domProps:{innerHTML:this.html}})}});const f=[u],m=e=>{f.forEach((n=>{e.component(n.name,n)}))};var g={install:m};exports.CodeDiff=u,exports.default=g,exports.install=m;
|
package/dist/v-code-diff.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,ref as n,watch as
|
|
1
|
+
import{defineComponent as e,ref as n,watch as r,onMounted as t,isVue3 as l,h as i}from"vue-demi";import{createPatch as o}from"diff";import*as a from"diff2html";import d from"highlight.js";import"diff2html/bundles/css/diff2html.min.css";const p=e=>{let n=e.trim?e.oldString.trim():e.oldString,r=e.trim?e.newString.trim():e.newString;n=e.noDiffLineFeed?n.replace(/(\r\n)/g,"\n"):n,r=e.noDiffLineFeed?r.replace(/(\r\n)/g,"\n"):r;let t=e.context;e.isShowNoChange&&n===r&&(n="File Without Change\tOldString: ======================== \n"+n,r="File Without Change\tNewString: ======================== \n"+r,t=99999);const l=o(e.fileName,n,r,"","",{context:t});return a.html(l,{outputFormat:e.outputFormat,drawFileList:e.drawFileList,matching:"lines",diffStyle:e.diffStyle,renderNothingWhenEmpty:e.renderNothingWhenEmpty})};async function h(e,n,r){r.emit("before-render");const t=await async function(e){return new Promise((n=>{setTimeout((()=>{const r=e.querySelectorAll(".d2h-wrapper .d2h-code-line-ctn");n(Array.from(r))}),0)}))}(e),l=Array.from(t).map((e=>async function(e,n){return new Promise((r=>{setTimeout((()=>{if(n){const r=e.innerText;e.innerHTML=d.highlight(r,{language:n}).value}else d.highlightElement(e);r(!0)}),0)}))}(e,n.language)));await Promise.all(l),r.emit("after-render")}var s=[],c=[];function u(e,n){if(e&&"undefined"!=typeof document){var r,t=!0===n.prepend?"prepend":"append",l=!0===n.singleTag,i="string"==typeof n.container?document.querySelector(n.container):document.getElementsByTagName("head")[0];if(l){var o=s.indexOf(i);-1===o&&(o=s.push(i)-1,c[o]={}),r=c[o]&&c[o][t]?c[o][t]:c[o][t]=a()}else r=a();65279===e.charCodeAt(0)&&(e=e.substring(1)),r.styleSheet?r.styleSheet.cssText+=e:r.appendChild(document.createTextNode(e))}function a(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),n.attributes)for(var r=Object.keys(n.attributes),l=0;l<r.length;l++)e.setAttribute(r[l],n.attributes[r[l]]);var o="prepend"===t?"afterbegin":"beforeend";return i.insertAdjacentElement(o,e),e}}u(".d2h-wrapper .hljs {\n display: inline-block;\n padding: 0;\n background: transparent;\n vertical-align: middle;\n}\n.d2h-wrapper .hljs-comment,\n.d2h-wrapper .hljs-quote {\n color: #800;\n}\n.d2h-wrapper .hljs-keyword,\n.d2h-wrapper .hljs-selector-tag,\n.d2h-wrapper .hljs-section,\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-name {\n color: #008;\n}\n.d2h-wrapper .hljs-variable,\n.d2h-wrapper .hljs-template-variable {\n color: #660;\n}\n.d2h-wrapper .hljs-string,\n.d2h-wrapper .hljs-selector-attr,\n.d2h-wrapper .hljs-selector-pseudo,\n.d2h-wrapper .hljs-regexp {\n color: #080;\n}\n.d2h-wrapper .hljs-literal,\n.d2h-wrapper .hljs-symbol,\n.d2h-wrapper .hljs-bullet,\n.d2h-wrapper .hljs-meta,\n.d2h-wrapper .hljs-number,\n.d2h-wrapper .hljs-link {\n color: #066;\n}\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-type,\n.d2h-wrapper .hljs-attr,\n.d2h-wrapper .hljs-built_in,\n.d2h-wrapper .hljs-builtin-name,\n.d2h-wrapper .hljs-params {\n color: #606;\n}\n.d2h-wrapper .hljs-attribute,\n.d2h-wrapper .hljs-subst {\n color: #000;\n}\n.d2h-wrapper .hljs-formula {\n background-color: #eee;\n font-style: italic;\n}\n.d2h-wrapper .hljs-selector-id,\n.d2h-wrapper .hljs-selector-class {\n color: #9B703F;\n}\n.d2h-wrapper .hljs-addition {\n background-color: #baeeba;\n}\n.d2h-wrapper .hljs-deletion {\n background-color: #ffc8bd;\n}\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-strong {\n font-weight: bold;\n}\n.d2h-wrapper .hljs-emphasis {\n font-style: italic;\n}",{});u(".d2h-wrapper {\n position: relative;\n line-height: normal;\n}\n.d2h-wrapper .d2h-file-header {\n display: none;\n}\n.d2h-wrapper .d2h-files-diff {\n display: flex;\n}\n.d2h-wrapper .d2h-file-side-diff {\n margin-bottom: -5px;\n}\n.d2h-wrapper .d2h-code-side-emptyplaceholder {\n max-height: 19px;\n}\n.d2h-wrapper .d2h-code-side-line,\n.d2h-wrapper .d2h-code-line {\n width: auto;\n}\n.d2h-wrapper .d2h-code-side-line .d2h-info {\n height: 18px;\n}\n.d2h-wrapper .d2h-cntx,\n.d2h-wrapper .d2h-del,\n.d2h-wrapper .d2h-ins {\n height: 18px;\n}\n.d2h-wrapper .d2h-code-linenumber,\n.d2h-wrapper .d2h-code-side-linenumber {\n line-height: 20px;\n height: 20px;\n}\n.d2h-wrapper tr {\n height: 20px;\n}",{});var f=e({name:"CodeDiff",props:{highlight:{type:Boolean,default:!0},oldString:{type:String,default:""},newString:{type:String,default:""},context:{type:Number,default:10},outputFormat:{type:String,default:"line-by-line"},drawFileList:{type:Boolean,default:!1},renderNothingWhenEmpty:{type:Boolean,default:!1},diffStyle:{type:String,default:"word"},fileName:{type:String,default:""},isShowNoChange:{type:Boolean,default:!1},trim:{type:Boolean,default:!1},language:{type:String,default:""},noDiffLineFeed:{type:Boolean,default:!1},syncScroll:{type:Boolean,default:!0}},emits:["before-render","after-render"],setup(e,l){const i=n(p(e)),o=function(e,n){let r;return function(){const t=this,l=arguments;clearTimeout(r),r=setTimeout((function(){e.apply(t,l)}),n)}}((async()=>{if(i.value=p(e),e.highlight){const n=document.createElement("div");n.innerHTML=i.value,await h(n,e,l),i.value=n.innerHTML}}),200);r(e,o,{deep:!0,immediate:!0});const{addSyncScroll:a,removeSyncScroll:d}=function(e){let n=document.createElement("div");function r(r){r.target===n&&document.querySelectorAll(e).forEach((function(e){n!==e&&(e.scrollTop=n.scrollTop,e.scrollLeft=n.scrollLeft)}))}function t(e){n=e.target}return{addSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.addEventListener("mouseenter",t),e.addEventListener("scroll",r)}))},removeSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.removeEventListener("mouseenter",t),e.removeEventListener("scroll",r)}))}}}(".d2h-file-side-diff");return r((()=>e.syncScroll),((e,n)=>{d(),e&&a()})),t((()=>{a()})),{html:i}},render(){return i("div",l?{innerHTML:this.html}:{domProps:{innerHTML:this.html}})}});const m=[f],g=e=>{m.forEach((n=>{e.component(n.name,n)}))};var w={install:g};export default w;export{f as CodeDiff,g as install};
|
package/dist/v-code-diff.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vue-demi"),require("diff"),require("diff2html"),require("highlight.js"),require("diff2html/bundles/css/diff2html.min.css")):"function"==typeof define&&define.amd?define(["exports","vue-demi","diff","diff2html","highlight.js","diff2html/bundles/css/diff2html.min.css"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["v-code-diff"]={},e.VueDemi,e.diff,e.d2h,e.hljs)}(this,(function(e,n,t,r,
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vue-demi"),require("diff"),require("diff2html"),require("highlight.js"),require("diff2html/bundles/css/diff2html.min.css")):"function"==typeof define&&define.amd?define(["exports","vue-demi","diff","diff2html","highlight.js","diff2html/bundles/css/diff2html.min.css"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["v-code-diff"]={},e.VueDemi,e.diff,e.d2h,e.hljs)}(this,(function(e,n,t,r,l){"use strict";function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function o(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var d=o(r),a=i(l);const h=e=>{let n=e.trim?e.oldString.trim():e.oldString,r=e.trim?e.newString.trim():e.newString;n=e.noDiffLineFeed?n.replace(/(\r\n)/g,"\n"):n,r=e.noDiffLineFeed?r.replace(/(\r\n)/g,"\n"):r;let l=e.context;e.isShowNoChange&&n===r&&(n="File Without Change\tOldString: ======================== \n"+n,r="File Without Change\tNewString: ======================== \n"+r,l=99999);const i=t.createPatch(e.fileName,n,r,"","",{context:l});return d.html(i,{outputFormat:e.outputFormat,drawFileList:e.drawFileList,matching:"lines",diffStyle:e.diffStyle,renderNothingWhenEmpty:e.renderNothingWhenEmpty})};async function p(e,n,t){t.emit("before-render");const r=await async function(e){return new Promise((n=>{setTimeout((()=>{const t=e.querySelectorAll(".d2h-wrapper .d2h-code-line-ctn");n(Array.from(t))}),0)}))}(e),l=Array.from(r).map((e=>async function(e,n){return new Promise((t=>{setTimeout((()=>{if(n){const t=e.innerText;e.innerHTML=a.default.highlight(t,{language:n}).value}else a.default.highlightElement(e);t(!0)}),0)}))}(e,n.language)));await Promise.all(l),t.emit("after-render")}var s=[],c=[];function f(e,n){if(e&&"undefined"!=typeof document){var t,r=!0===n.prepend?"prepend":"append",l=!0===n.singleTag,i="string"==typeof n.container?document.querySelector(n.container):document.getElementsByTagName("head")[0];if(l){var o=s.indexOf(i);-1===o&&(o=s.push(i)-1,c[o]={}),t=c[o]&&c[o][r]?c[o][r]:c[o][r]=d()}else t=d();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function d(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),n.attributes)for(var t=Object.keys(n.attributes),l=0;l<t.length;l++)e.setAttribute(t[l],n.attributes[t[l]]);var o="prepend"===r?"afterbegin":"beforeend";return i.insertAdjacentElement(o,e),e}}f(".d2h-wrapper .hljs {\n display: inline-block;\n padding: 0;\n background: transparent;\n vertical-align: middle;\n}\n.d2h-wrapper .hljs-comment,\n.d2h-wrapper .hljs-quote {\n color: #800;\n}\n.d2h-wrapper .hljs-keyword,\n.d2h-wrapper .hljs-selector-tag,\n.d2h-wrapper .hljs-section,\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-name {\n color: #008;\n}\n.d2h-wrapper .hljs-variable,\n.d2h-wrapper .hljs-template-variable {\n color: #660;\n}\n.d2h-wrapper .hljs-string,\n.d2h-wrapper .hljs-selector-attr,\n.d2h-wrapper .hljs-selector-pseudo,\n.d2h-wrapper .hljs-regexp {\n color: #080;\n}\n.d2h-wrapper .hljs-literal,\n.d2h-wrapper .hljs-symbol,\n.d2h-wrapper .hljs-bullet,\n.d2h-wrapper .hljs-meta,\n.d2h-wrapper .hljs-number,\n.d2h-wrapper .hljs-link {\n color: #066;\n}\n.d2h-wrapper .hljs-title,\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-type,\n.d2h-wrapper .hljs-attr,\n.d2h-wrapper .hljs-built_in,\n.d2h-wrapper .hljs-builtin-name,\n.d2h-wrapper .hljs-params {\n color: #606;\n}\n.d2h-wrapper .hljs-attribute,\n.d2h-wrapper .hljs-subst {\n color: #000;\n}\n.d2h-wrapper .hljs-formula {\n background-color: #eee;\n font-style: italic;\n}\n.d2h-wrapper .hljs-selector-id,\n.d2h-wrapper .hljs-selector-class {\n color: #9B703F;\n}\n.d2h-wrapper .hljs-addition {\n background-color: #baeeba;\n}\n.d2h-wrapper .hljs-deletion {\n background-color: #ffc8bd;\n}\n.d2h-wrapper .hljs-doctag,\n.d2h-wrapper .hljs-strong {\n font-weight: bold;\n}\n.d2h-wrapper .hljs-emphasis {\n font-style: italic;\n}",{});f(".d2h-wrapper {\n position: relative;\n line-height: normal;\n}\n.d2h-wrapper .d2h-file-header {\n display: none;\n}\n.d2h-wrapper .d2h-files-diff {\n display: flex;\n}\n.d2h-wrapper .d2h-file-side-diff {\n margin-bottom: -5px;\n}\n.d2h-wrapper .d2h-code-side-emptyplaceholder {\n max-height: 19px;\n}\n.d2h-wrapper .d2h-code-side-line,\n.d2h-wrapper .d2h-code-line {\n width: auto;\n}\n.d2h-wrapper .d2h-code-side-line .d2h-info {\n height: 18px;\n}\n.d2h-wrapper .d2h-cntx,\n.d2h-wrapper .d2h-del,\n.d2h-wrapper .d2h-ins {\n height: 18px;\n}\n.d2h-wrapper .d2h-code-linenumber,\n.d2h-wrapper .d2h-code-side-linenumber {\n line-height: 20px;\n height: 20px;\n}\n.d2h-wrapper tr {\n height: 20px;\n}",{});var u=n.defineComponent({name:"CodeDiff",props:{highlight:{type:Boolean,default:!0},oldString:{type:String,default:""},newString:{type:String,default:""},context:{type:Number,default:10},outputFormat:{type:String,default:"line-by-line"},drawFileList:{type:Boolean,default:!1},renderNothingWhenEmpty:{type:Boolean,default:!1},diffStyle:{type:String,default:"word"},fileName:{type:String,default:""},isShowNoChange:{type:Boolean,default:!1},trim:{type:Boolean,default:!1},language:{type:String,default:""},noDiffLineFeed:{type:Boolean,default:!1},syncScroll:{type:Boolean,default:!0}},emits:["before-render","after-render"],setup(e,t){const r=n.ref(h(e)),l=function(e,n){let t;return function(){const r=this,l=arguments;clearTimeout(t),t=setTimeout((function(){e.apply(r,l)}),n)}}((async()=>{if(r.value=h(e),e.highlight){const n=document.createElement("div");n.innerHTML=r.value,await p(n,e,t),r.value=n.innerHTML}}),200);n.watch(e,l,{deep:!0,immediate:!0});const{addSyncScroll:i,removeSyncScroll:o}=function(e){let n=document.createElement("div");function t(t){t.target===n&&document.querySelectorAll(e).forEach((function(e){n!==e&&(e.scrollTop=n.scrollTop,e.scrollLeft=n.scrollLeft)}))}function r(e){n=e.target}return{addSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.addEventListener("mouseenter",r),e.addEventListener("scroll",t)}))},removeSyncScroll:function(){document.querySelectorAll(e).forEach((function(e){e.removeEventListener("mouseenter",r),e.removeEventListener("scroll",t)}))}}}(".d2h-file-side-diff");return n.watch((()=>e.syncScroll),((e,n)=>{o(),e&&i()})),n.onMounted((()=>{i()})),{html:r}},render(){return n.isVue3?n.h("div",{innerHTML:this.html}):n.h("div",{domProps:{innerHTML:this.html}})}});const m=[u],g=e=>{m.forEach((n=>{e.component(n.name,n)}))};var w={install:g};e.CodeDiff=u,e.default=w,e.install=g,Object.defineProperty(e,"__esModule",{value:!0})}));
|
package/package.json
CHANGED
|
@@ -83,22 +83,40 @@ export async function highlightElements (element: Element, props, ctx: SetupCont
|
|
|
83
83
|
ctx.emit('after-render')
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
export function
|
|
86
|
+
export function useSyncScroll (selector) {
|
|
87
87
|
let active: HTMLElement = document.createElement('div')
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
|
|
89
|
+
function onScroll (e) {
|
|
90
|
+
if (e.target !== active) return
|
|
91
|
+
|
|
92
|
+
document.querySelectorAll(selector).forEach(function (target) {
|
|
93
|
+
if (active === target) return
|
|
94
|
+
|
|
95
|
+
target.scrollTop = active.scrollTop
|
|
96
|
+
target.scrollLeft = active.scrollLeft
|
|
91
97
|
})
|
|
98
|
+
}
|
|
92
99
|
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
function onMouseenter (e) {
|
|
101
|
+
active = e.target
|
|
102
|
+
}
|
|
95
103
|
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
function addSyncScroll () {
|
|
105
|
+
document.querySelectorAll(selector).forEach(function (element) {
|
|
106
|
+
element.addEventListener('mouseenter', onMouseenter)
|
|
107
|
+
element.addEventListener('scroll', onScroll)
|
|
108
|
+
})
|
|
109
|
+
}
|
|
98
110
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
111
|
+
function removeSyncScroll () {
|
|
112
|
+
document.querySelectorAll(selector).forEach(function (element) {
|
|
113
|
+
element.removeEventListener('mouseenter', onMouseenter)
|
|
114
|
+
element.removeEventListener('scroll', onScroll)
|
|
102
115
|
})
|
|
103
|
-
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
addSyncScroll,
|
|
120
|
+
removeSyncScroll
|
|
121
|
+
}
|
|
104
122
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, isVue3, PropType, h, ref, watch, onUpdated, onMounted } from 'vue-demi'
|
|
2
|
-
import { createHtml, highlightElements,
|
|
2
|
+
import { createHtml, highlightElements, useDebounceFn, useSyncScroll } from '@/lib/v-code-diff/util'
|
|
3
3
|
import './styles'
|
|
4
4
|
|
|
5
5
|
export default defineComponent({
|
|
@@ -56,6 +56,10 @@ export default defineComponent({
|
|
|
56
56
|
noDiffLineFeed: {
|
|
57
57
|
type: Boolean,
|
|
58
58
|
default: false
|
|
59
|
+
},
|
|
60
|
+
syncScroll: {
|
|
61
|
+
type: Boolean,
|
|
62
|
+
default: true
|
|
59
63
|
}
|
|
60
64
|
},
|
|
61
65
|
emits: ['before-render', 'after-render'],
|
|
@@ -71,16 +75,19 @@ export default defineComponent({
|
|
|
71
75
|
}
|
|
72
76
|
}, 200)
|
|
73
77
|
watch(props, cb, { deep: true, immediate: true })
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
78
|
+
|
|
79
|
+
const { addSyncScroll, removeSyncScroll } = useSyncScroll('.d2h-file-side-diff')
|
|
80
|
+
watch(() => props.syncScroll, (newVal, oldVal) => {
|
|
81
|
+
removeSyncScroll()
|
|
82
|
+
if (newVal) {
|
|
83
|
+
addSyncScroll()
|
|
77
84
|
}
|
|
78
85
|
})
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
86
|
+
|
|
87
|
+
onMounted(() => {
|
|
88
|
+
addSyncScroll()
|
|
83
89
|
})
|
|
90
|
+
|
|
84
91
|
return {
|
|
85
92
|
html
|
|
86
93
|
}
|