devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
126 lines (125 loc) • 4.4 kB
JavaScript
/**
* DevExtreme (esm/__internal/ui/diagram/ui.diagram.scroll_view.js)
* Version: 26.1.3
* Build date: Wed Jun 10 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
calculateScrollbarWidth
} from "../../../__internal/grids/pivot_grid/m_widget_utils";
import $ from "../../../core/renderer";
import {
getHeight,
getWidth
} from "../../../core/utils/size";
import Widget from "../../core/widget/widget";
import {
getDiagram
} from "../../ui/diagram/diagram.importer";
import ScrollView from "../../ui/scroll_view/scroll_view";
class DiagramScrollView extends Widget {
_init() {
super._init();
const {
EventDispatcher: EventDispatcher
} = getDiagram();
this.onScroll = new EventDispatcher;
this._createOnCreateDiagramAction()
}
_initMarkup() {
super._initMarkup();
const $scrollViewWrapper = $("<div>").appendTo(this.$element());
const options = {
direction: "both",
bounceEnabled: false,
scrollByContent: false,
onScroll: _ref => {
let {
scrollOffset: scrollOffset
} = _ref;
this._raiseOnScroll(scrollOffset.left, scrollOffset.top)
}
};
const {
useNativeScrolling: useNativeScrolling
} = this.option();
if (void 0 !== useNativeScrolling) {
options.useNative = useNativeScrolling
}
this._scrollView = this._createComponent($scrollViewWrapper, ScrollView, options);
this._onCreateDiagramAction({
$parent: $(this._scrollView.content()),
scrollView: this
})
}
setScroll(left, top) {
var _this$_scrollView;
null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView || _this$_scrollView.scrollTo({
left: left,
top: top
});
this._raiseOnScrollWithoutPoint()
}
offsetScroll(left, top) {
var _this$_scrollView2;
null === (_this$_scrollView2 = this._scrollView) || void 0 === _this$_scrollView2 || _this$_scrollView2.scrollBy({
left: left,
top: top
});
this._raiseOnScrollWithoutPoint()
}
getSize() {
var _this$_scrollView3;
const {
Size: Size
} = getDiagram();
const $element = null === (_this$_scrollView3 = this._scrollView) || void 0 === _this$_scrollView3 ? void 0 : _this$_scrollView3.$element();
return new Size(Math.floor(getWidth($element)), Math.floor(getHeight($element)))
}
getScrollContainer() {
var _this$_scrollView4;
return null === (_this$_scrollView4 = this._scrollView) || void 0 === _this$_scrollView4 ? void 0 : _this$_scrollView4.$element()[0]
}
getScrollBarWidth() {
const {
useNativeScrolling: useNativeScrolling
} = this.option();
return useNativeScrolling ? calculateScrollbarWidth() : 0
}
detachEvents() {}
_raiseOnScroll(left, top) {
const {
Point: Point
} = getDiagram();
this.onScroll.raise("notifyScrollChanged", () => new Point(left, top))
}
_raiseOnScrollWithoutPoint() {
const {
Point: Point
} = getDiagram();
this.onScroll.raise("notifyScrollChanged", () => {
var _this$_scrollView5, _this$_scrollView6;
return new Point(null === (_this$_scrollView5 = this._scrollView) || void 0 === _this$_scrollView5 ? void 0 : _this$_scrollView5.scrollLeft(), null === (_this$_scrollView6 = this._scrollView) || void 0 === _this$_scrollView6 ? void 0 : _this$_scrollView6.scrollTop())
})
}
_createOnCreateDiagramAction() {
this._onCreateDiagramAction = this._createActionByOption("onCreateDiagram")
}
_optionChanged(args) {
const {
name: name
} = args;
switch (name) {
case "onCreateDiagram":
this._createOnCreateDiagramAction();
break;
case "useNativeScrolling":
break;
default:
super._optionChanged(args)
}
}
}
export default DiagramScrollView;