@atlaskit/editor-plugin-table
Version:
Table plugin for the @atlaskit/editor
58 lines (57 loc) • 2.52 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getPopupOptions;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _consts = require("../consts");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var DELETE_BUTTON_CONTROLS_OFFSET = _consts.tableToolbarSize + _consts.tableDeleteButtonSize + _consts.tableDeleteButtonOffset;
function getColumnOptions(left, tableWrapper) {
return {
alignX: 'left',
alignY: 'start',
offset: [left, DELETE_BUTTON_CONTROLS_OFFSET],
shouldRenderPopup: function shouldRenderPopup() {
if (tableWrapper) {
var rect = tableWrapper.getBoundingClientRect();
var maxVisibleLeftPosition = rect.width + tableWrapper.scrollLeft - _consts.tableDeleteButtonSize;
var minVisibleLeftPosition = tableWrapper.scrollLeft;
return maxVisibleLeftPosition - left > 0 && left > minVisibleLeftPosition;
}
return true;
}
};
}
function getRowOptions(top) {
return {
alignX: 'left',
alignY: 'start',
forcePlacement: true,
offset: [0, -top],
onPositionCalculated: function onPositionCalculated(position) {
return _objectSpread(_objectSpread({}, position), {}, {
// We need to force left to always be the offset to not be affected by overflow
left: -DELETE_BUTTON_CONTROLS_OFFSET
});
}
};
}
function getPopupOptions(_ref) {
var left = _ref.left,
top = _ref.top,
selectionType = _ref.selectionType,
tableWrapper = _ref.tableWrapper;
switch (selectionType) {
case 'column':
return getColumnOptions(left, tableWrapper);
case 'row':
return getRowOptions(top);
default:
{
return {};
}
}
}