UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

126 lines (125 loc) 4.52 kB
/** * DevExtreme (esm/__internal/ui/diagram/ui.diagram.scroll_view.js) * Version: 25.2.8 * Build date: Mon Jun 08 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;