function DiffNavigator(editor, options) {
            if (options === void 0) { options = {}; }
            var _this = _super.call(this, [
                DiffNavigator.Events.UPDATED
            ]) || this;
            _this.editor = editor;
            _this.options = objects.mixin(options, defaultOptions, false);
            _this.disposed = false;
            _this.toUnbind = [];
            _this.nextIdx = -1;
            _this.ranges = [];
            _this.ignoreSelectionChange = false;
            _this.revealFirst = _this.options.alwaysRevealFirst;
            // hook up to diff editor for diff, disposal, and caret move
            _this.toUnbind.push(_this.editor.onDidDispose(function () { return _this.dispose(); }));
            _this.toUnbind.push(_this.editor.onDidUpdateDiff(function () { return _this.onDiffUpdated(); }));
            if (_this.options.followsCaret) {
                _this.toUnbind.push(_this.editor.getModifiedEditor().onDidChangeCursorPosition(function (e) {
                    if (_this.ignoreSelectionChange) {
                        return;
                    }
                    _this.nextIdx = -1;
                }));
            }
            if (_this.options.alwaysRevealFirst) {
                _this.toUnbind.push(_this.editor.getModifiedEditor().onDidChangeModel(function (e) {
                    _this.revealFirst = true;
                }));
            }
            // init things
            _this.init();
            return _this;
        }
Create a new diff navigator for the provided diff editor.