'use strict'; const utils_assert = require('./assert.cjs'); const utils_dom = require('./dom.cjs'); const utils_events = require('./events.cjs'); function calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) { const isHorizontal = direction === "horizontal"; const handleElement = utils_dom.getResizeHandleElement(dragHandleId, panelGroupElement); utils_assert.assert(handleElement); const groupId = handleElement.getAttribute("data-panel-group-id"); utils_assert.assert(groupId); const { initialCursorPosition } = initialDragState; const cursorPosition = utils_events.getResizeEventCursorPosition(direction, event); const groupElement = utils_dom.getPanelGroupElement(groupId, panelGroupElement); utils_assert.assert(groupElement); const groupRect = groupElement.getBoundingClientRect(); const groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height; const offsetPixels = cursorPosition - initialCursorPosition; const offsetPercentage = offsetPixels / groupSizeInPixels * 100; return offsetPercentage; } function calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) { if (utils_events.isKeyDown(event)) { const isHorizontal = direction === "horizontal"; let delta = 0; if (event.shiftKey) delta = 100; else delta = keyboardResizeBy ?? 10; let movement = 0; switch (event.key) { case "ArrowDown": movement = isHorizontal ? 0 : delta; break; case "ArrowLeft": movement = isHorizontal ? -delta : 0; break; case "ArrowRight": movement = isHorizontal ? delta : 0; break; case "ArrowUp": movement = isHorizontal ? 0 : -delta; break; case "End": movement = 100; break; case "Home": movement = -100; break; } return movement; } else { if (initialDragState == null) return 0; return calculateDragOffsetPercentage( event, dragHandleId, direction, initialDragState, panelGroupElement ); } } function calculateAriaValues({ layout, panelsArray, pivotIndices }) { let currentMinSize = 0; let currentMaxSize = 100; let totalMinSize = 0; let totalMaxSize = 0; const firstIndex = pivotIndices[0]; utils_assert.assert(firstIndex != null); panelsArray.forEach((panelData, index) => { const { constraints } = panelData; const { maxSize = 100, minSize = 0 } = constraints; if (index === firstIndex) { currentMinSize = minSize; currentMaxSize = maxSize; } else { totalMinSize += minSize; totalMaxSize += maxSize; } }); const valueMax = Math.min(currentMaxSize, 100 - totalMinSize); const valueMin = Math.max(currentMinSize, 100 - totalMaxSize); const valueNow = layout[firstIndex]; return { valueMax, valueMin, valueNow }; } function calculateUnsafeDefaultLayout({ panelDataArray }) { const layout = Array.from({ length: panelDataArray.length }); const panelConstraintsArray = panelDataArray.map( (panelData) => panelData.constraints ); let numPanelsWithSizes = 0; let remainingSize = 100; for (let index = 0; index < panelDataArray.length; index++) { const panelConstraints = panelConstraintsArray[index]; utils_assert.assert(panelConstraints); const { defaultSize } = panelConstraints; if (defaultSize != null) { numPanelsWithSizes++; layout[index] = defaultSize; remainingSize -= defaultSize; } } for (let index = 0; index < panelDataArray.length; index++) { const panelConstraints = panelConstraintsArray[index]; utils_assert.assert(panelConstraints); const { defaultSize } = panelConstraints; if (defaultSize != null) continue; const numRemainingPanels = panelDataArray.length - numPanelsWithSizes; const size = remainingSize / numRemainingPanels; numPanelsWithSizes++; layout[index] = size; remainingSize -= size; } return layout; } exports.calculateAriaValues = calculateAriaValues; exports.calculateDeltaPercentage = calculateDeltaPercentage; exports.calculateUnsafeDefaultLayout = calculateUnsafeDefaultLayout; //# sourceMappingURL=calculate.cjs.map