| 12345678910111213141516171819202122232425262728293031323334353637 |
- export const AI_WRITING_SIDEBAR_SIZE = Object.freeze({
- min: 360,
- default: 520,
- max: 900,
- minMain: 360,
- keyboardStep: 32
- })
- function toFiniteNumber(value, fallback) {
- const numberValue = Number(value)
- return Number.isFinite(numberValue) ? numberValue : fallback
- }
- function clamp(value, min, max) {
- return Math.min(Math.max(value, min), max)
- }
- export function calculateResizableSidebarWidth({
- pointerX,
- containerRight,
- containerWidth,
- minWidth = AI_WRITING_SIDEBAR_SIZE.min,
- maxWidth = AI_WRITING_SIDEBAR_SIZE.max,
- minMainWidth = AI_WRITING_SIDEBAR_SIZE.minMain
- } = {}) {
- const safeMinWidth = Math.max(0, toFiniteNumber(minWidth, AI_WRITING_SIDEBAR_SIZE.min))
- const safeMaxWidth = Math.max(safeMinWidth, toFiniteNumber(maxWidth, AI_WRITING_SIDEBAR_SIZE.max))
- const safeMainWidth = Math.max(0, toFiniteNumber(minMainWidth, AI_WRITING_SIDEBAR_SIZE.minMain))
- const safeContainerWidth = Math.max(0, toFiniteNumber(containerWidth, safeMaxWidth + safeMainWidth))
- const availableMaxWidth = Math.max(
- safeMinWidth,
- Math.min(safeMaxWidth, safeContainerWidth - safeMainWidth)
- )
- const rawWidth = toFiniteNumber(containerRight, 0) - toFiniteNumber(pointerX, 0)
- return Math.round(clamp(rawWidth, safeMinWidth, availableMaxWidth))
- }
|