in kystudio/src/directive/index.js [307:379]
function checkBoxCollision (changeType, size, rectifyVal) {
rectifyVal = rectifyVal || 0
// 无自定义盒子和限制
if (!dragInfo.box && !limitObj && dragInfo.allowOutOfView) {
return true
}
if (limitObj) {
let curCheckProp = limitObj[changeType]
if (curCheckProp) {
// 无自定义限制
if (curCheckProp.length > 0 && undefined !== curCheckProp[0] && size < curCheckProp[0]) {
dragInfo[changeType] = curCheckProp[0]
return false
}
if (curCheckProp.length > 1 && undefined !== curCheckProp[1] && size > curCheckProp[1]) {
dragInfo[changeType] = curCheckProp[1]
return false
}
}
}
if (dragInfo.box && !dragInfo.allowOutOfView) {
if (changeType === 'top') {
if (size + dragInfo.height > boxH) {
dragInfo.top = boxH - dragInfo.height > 0 ? boxH - dragInfo.height : 0
return false
}
if (size < 0) {
dragInfo.top = 0
return false
}
}
if (changeType === 'height') {
if (dragInfo.top + rectifyVal < 0) {
return false
}
if (rectifyVal + size + dragInfo.top > boxH) {
dragInfo.height = boxH - dragInfo.top
return false
}
}
if (changeType === 'width') {
if (!isNaN(dragInfo.left)) {
if (dragInfo.left + rectifyVal < 0) {
return false
}
if (rectifyVal + size + dragInfo.left > boxW) {
dragInfo.left = boxW - dragInfo.width
return false
}
}
if (!isNaN(dragInfo.right)) {
if (dragInfo.right + rectifyVal < 0) {
return false
}
if (size + dragInfo.right - rectifyVal > boxW) {
dragInfo.width = boxW - dragInfo.right
return false
}
}
}
if (changeType === 'right' || changeType === 'left') {
if (size + dragInfo.width > boxW) {
dragInfo[changeType] = boxW - dragInfo.width > 0 ? boxW - dragInfo.width : 0
return false
}
if (size < 0) {
dragInfo[changeType] = 0
return false
}
}
}
return true
}