Compare commits

..

2 Commits

Author SHA1 Message Date
Jamie Peabody
bd659adcfd patch(#95): fixes cursor focus on init (#133)
Co-authored-by: Jamie Peabody <jpeabody@axway.com>
2020-10-15 14:28:46 +01:00
Jamie Peabody
ddeb16ef8b added 'updated' event and fixed 'scrollTo' 2020-07-01 22:06:42 +01:00
4 changed files with 43 additions and 17 deletions

View File

@@ -1,5 +1,16 @@
# Changes
## 4.1.1:
* patch: fixes issue #95
## 4.1.0:
* minor: emits 'updated' event after every change.
* patch: fixes `scrollTo` that no longer functioned after a codemirror update.
* patch: fixes `loaded` being called prematurely and after every resize, and is now is called once, after the 'updated' event.
## 4.0.16:
* patch: fixes rendering beyond change constraint
## 4.0.15
* patch: removed unnecessary addon mark-selected

View File

@@ -1,6 +1,6 @@
{
"name": "mergely",
"version": "4.0.16",
"version": "4.1.1",
"description": "A javascript UI for diff/merge",
"directories": {
"doc": "doc",

View File

@@ -367,7 +367,7 @@ Mgly.CodeMirrorDiffView = function(el, options) {
CodeMirror.defineExtension('centerOnCursor', function() {
var coords = this.cursorCoords(null, 'local');
this.scrollTo(null,
(coords.y + coords.yBot) / 2 - (this.getScrollerElement().clientHeight / 2));
(coords.top + coords.bottom) / 2 - (this.getScrollerElement().clientHeight / 2));
});
this.init(el, options);
};
@@ -432,11 +432,10 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
else {
self.show();
}
if (this.loaded) this.loaded();
}
if (this.resized) this.resized();
},
_debug: '', //scroll,draw,calc,diff,markup,change
_debug: '', //scroll,draw,calc,diff,markup,change,init
resized: function() { }
}, options);
@@ -648,6 +647,7 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
return d.normal_form();
},
bind: function(el) {
this.trace('init', 'bind');
this.element.hide();
this.id = jQuery(el).attr('id');
try {
@@ -784,6 +784,7 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
// bind
var self = this;
self.trace('init', 'binding event listeners');
this.editor = [];
this.editor[this.id + '-lhs'] = CodeMirror.fromTextArea(lhstx, this.lhs_cmsettings);
this.editor[this.id + '-rhs'] = CodeMirror.fromTextArea(rhstx, this.rhs_cmsettings);
@@ -798,9 +799,6 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
if (self.settings.resize) self.settings.resize(init);
self.editor[self.id + '-lhs'].refresh();
self.editor[self.id + '-rhs'].refresh();
if (self.settings.autoupdate) {
self._changing(self.id + '-lhs', self.id + '-rhs');
}
};
jQuery(window).on('resize.mergely',
function () {
@@ -842,19 +840,34 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
gutterClicked.call(this, 'rhs', n, ev);
}.bind(this));
//bind
// if `lhs` and `rhs` are passed in, this sets the values in each editor
// and kicks off the whole change pipeline.
var setv;
if (this.settings.lhs) {
setv = this.editor[this.id + '-lhs'].getDoc().setValue;
this.settings.lhs(setv.bind(this.editor[this.id + '-lhs'].getDoc()));
self.trace('init', 'setting lhs value');
this.settings.lhs(function setValue(value) {
this._initializing = true;
this.editor[this.id + '-lhs'].getDoc().setValue(value);
}.bind(this));
}
if (this.settings.rhs) {
setv = this.editor[this.id + '-rhs'].getDoc().setValue;
this.settings.rhs(setv.bind(this.editor[this.id + '-rhs'].getDoc()));
self.trace('init', 'setting rhs value');
this.settings.rhs(function setValue(value) {
this._initializing = true;
this.editor[this.id + '-rhs'].getDoc().setValue(value);
}.bind(this));
}
this.element.one('updated', () => {
this._initializing = false;
if (self.settings.loaded) {
self.settings.loaded();
}
});
this.trace('init', 'bound');
this.editor[this.id + '-lhs'].focus();
},
_scroll_to_change : function(change) {
_scroll_to_change: function(change) {
if (!change) return;
var self = this;
var led = self.editor[self.id+'-lhs'];
@@ -865,6 +878,7 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
if (change["lhs-line-to"] >= 0) {
led.scrollIntoView({line: change["lhs-line-to"]});
}
led.focus();
},
_scrolling: function(editor_name) {
@@ -1025,8 +1039,9 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
this.trace('change', 'diff time', Timer.stop());
this.changes = Mgly.DiffParser(d.normal_form());
this.trace('change', 'parse time', Timer.stop());
if (this._current_diff === undefined && this.changes.length) {
// go to first difference on start-up
if (this._current_diff === undefined && this.changes.length && this._initializing) {
// go to first difference on start-up where values are provided in
// settings.
this._current_diff = 0;
this._scroll_to_change(this.changes[0]);
}
@@ -1037,6 +1052,7 @@ jQuery.extend(Mgly.CodeMirrorDiffView.prototype, {
this.trace('change', 'markup time', Timer.stop());
this._draw_diff(editor_name1, editor_name2, this.changes);
this.trace('change', 'draw time', Timer.stop());
this.element.trigger('updated');
},
_parse_diff: function (editor_name1, editor_name2, diff) {
this.trace('diff', 'diff results:\n', diff);

View File

@@ -39,8 +39,7 @@ module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: 'examples/app.html',
filename: 'mergely.html'
template: path.join(__dirname, 'examples', 'app.html')
}),
new webpack.ProvidePlugin({
$: 'jquery',