'use strict'; /** * Licensed Materials - Property of IBM * IBM Cognos Products: BI Cloud (C) Copyright IBM Corp. 2014, 2018 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. * * Guideline Manager */ define(['jquery', 'underscore', '../../../../lib/@waca/core-client/js/core-client/ui/core/Class', './LayoutGuidelines', './GridGuidelines'], function ($, _, Class, LayoutGuidelines, GridGuidelines) { var Manager = Class.extend({ LayoutGuidelines: {}, init: function init(options) { this.layoutController = options.layoutController; this.layoutGuidelines = new LayoutGuidelines(); }, getReady: function getReady(page, dragObject, keyboard) { this.domNode = page; this.snapContributions = []; var layoutModel = this.layoutController.boardModel.layout.findModel(page.id); if (!layoutModel) { layoutModel = this.layoutController.boardModel.layout; } var snapObject = layoutModel.getValueFromSelfOrParent('snapObjects'); snapObject = snapObject === undefined ? true : snapObject; this.gridGuidelines = new GridGuidelines({ 'page': page, 'controller': this.layoutController }); if (!keyboard) { this.layoutGuidelines.setup(page, dragObject, snapObject); this.snapContributions.push(this.layoutGuidelines); } this.snapContributions.push(this.gridGuidelines); }, finish: function finish() { $(this.domNode).children('.guideline').remove(); this.domNode = null; }, getSnapCoordinates: function getSnapCoordinates(dragBox) { var revisedDragBox = { 'top': null, 'right': null, 'bottom': null, 'left': null }; var snapDistanceRight = []; var snapDistanceLeft = []; var snapDistanceTop = []; var snapDistanceBottom = []; if (this.snapContributions) { this.snapContributions.forEach(function (contribution) { snapDistanceRight.push(contribution.calculateSnapPoint(dragBox.right, 'x')); snapDistanceLeft.push(contribution.calculateSnapPoint(dragBox.left, 'x')); snapDistanceTop.push(contribution.calculateSnapPoint(dragBox.top, 'y')); snapDistanceBottom.push(contribution.calculateSnapPoint(dragBox.bottom, 'y')); }.bind(this)); } revisedDragBox.right = this._calculateClosestSnapPoint(snapDistanceRight, 'x'); revisedDragBox.left = this._calculateClosestSnapPoint(snapDistanceLeft, 'x'); revisedDragBox.top = this._calculateClosestSnapPoint(snapDistanceTop, 'y'); revisedDragBox.bottom = this._calculateClosestSnapPoint(snapDistanceBottom, 'y'); return revisedDragBox; }, _calculateClosestSnapPoint: function _calculateClosestSnapPoint(snapDistance) { var closestPoint = null; snapDistance.forEach(function (distance) { if (distance.distance && closestPoint) { if (closestPoint.distance > Math.abs(distance.distance)) { closestPoint = distance; } } else if (distance.distance && !closestPoint) { closestPoint = distance; } }.bind(this)); if (closestPoint && closestPoint.distance) { if (closestPoint.show) { closestPoint.show(); } return closestPoint.distance; } else { return closestPoint; } }, hideAll: function hideAll() { $(this.domNode).children('.guideline').hide(); } }); return Manager; }); //# sourceMappingURL=GuidelineManager.js.map