UNPKG

@atlaskit/editor-common

Version:

A package that contains common classes and components for editor and renderer

90 lines (89 loc) 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.calcColumnsFromPx = calcColumnsFromPx; exports.calcMediaPxWidth = void 0; exports.calcPctFromPx = calcPctFromPx; exports.calcPctWidth = void 0; exports.calcPxFromColumns = calcPxFromColumns; exports.calcPxFromPct = calcPxFromPct; exports.wrappedLayouts = exports.snapToGrid = exports.layoutSupportsWidth = void 0; var _editorSharedStyles = require("@atlaskit/editor-shared-styles"); var _constants = require("../../media-single/constants"); var validWidthModes = ['center', 'wrap-left', 'wrap-right', 'align-start', 'align-end']; var layoutSupportsWidth = exports.layoutSupportsWidth = function layoutSupportsWidth(layout) { return validWidthModes.indexOf(layout) > -1; }; function calcPxFromColumns(columns, lineLength, gridSize) { var maxWidth = lineLength + _constants.MEDIA_SINGLE_GUTTER_SIZE; return maxWidth / gridSize * columns - _constants.MEDIA_SINGLE_GUTTER_SIZE; } function calcColumnsFromPx(width, lineLength, gridSize) { var maxWidth = lineLength + _constants.MEDIA_SINGLE_GUTTER_SIZE; return (width + _constants.MEDIA_SINGLE_GUTTER_SIZE) * gridSize / maxWidth; } function calcPxFromPct(pct, lineLength) { var maxWidth = lineLength + _constants.MEDIA_SINGLE_GUTTER_SIZE; return maxWidth * pct - _constants.MEDIA_SINGLE_GUTTER_SIZE; } function calcPctFromPx(width, lineLength) { var maxWidth = lineLength + _constants.MEDIA_SINGLE_GUTTER_SIZE; return (width + _constants.MEDIA_SINGLE_GUTTER_SIZE) / maxWidth; } var wrappedLayouts = exports.wrappedLayouts = ['wrap-left', 'wrap-right', 'align-end', 'align-start']; var calcPctWidth = exports.calcPctWidth = function calcPctWidth(containerWidth, pctWidth, origWidth, origHeight) { return pctWidth && origWidth && origHeight && Math.ceil(calcPxFromPct(pctWidth / 100, containerWidth.lineLength || containerWidth.width)); }; var calcMediaPxWidth = exports.calcMediaPxWidth = function calcMediaPxWidth(opts) { var origWidth = opts.origWidth, origHeight = opts.origHeight, layout = opts.layout, pctWidth = opts.pctWidth, containerWidth = opts.containerWidth, resizedPctWidth = opts.resizedPctWidth; var width = containerWidth.width, lineLength = containerWidth.lineLength; var calculatedPctWidth = calcPctWidth(containerWidth, pctWidth, origWidth, origHeight); var calculatedResizedPctWidth = calcPctWidth(containerWidth, resizedPctWidth, origWidth, origHeight); if (layout === 'wide') { if (lineLength) { var wideWidth = Math.ceil(lineLength * _editorSharedStyles.breakoutWideScaleRatio); return wideWidth > width ? lineLength : wideWidth; } } else if (layout === 'full-width') { return width - _editorSharedStyles.akEditorBreakoutPadding; } else if (calculatedPctWidth) { if (wrappedLayouts.indexOf(layout) > -1) { if (calculatedResizedPctWidth) { if (resizedPctWidth < 50) { return calculatedResizedPctWidth; } return calculatedPctWidth; } return Math.min(calculatedPctWidth, origWidth); } if (calculatedResizedPctWidth) { return calculatedResizedPctWidth; } return calculatedPctWidth; } else if (layout === 'center') { if (calculatedResizedPctWidth) { return calculatedResizedPctWidth; } return Math.min(origWidth, lineLength || width); } else if (layout && wrappedLayouts.indexOf(layout) !== -1) { var halfLineLength = Math.ceil((lineLength || width) / 2); return origWidth <= halfLineLength ? origWidth : halfLineLength; } return origWidth; }; var snapToGrid = exports.snapToGrid = function snapToGrid(gridWidth, width, height, lineLength, gridSize) { var pxWidth = calcPxFromPct(gridWidth / 100, lineLength); var columnSpan = Math.round(calcColumnsFromPx(pxWidth, lineLength, gridSize)); var alignedWidth = calcPxFromColumns(columnSpan, lineLength, gridSize); return { height: height / width * alignedWidth, width: alignedWidth }; };