MCPcopy Create free account
hub / github.com/RtlZeroMemory/Rezi / expandPanel

Function expandPanel

packages/core/src/widgets/splitPane.ts:304–342  ·  view source on GitHub ↗
(
  sizes: readonly number[],
  index: number,
  targetSize: number,
)

Source from the content-addressed store, hash-verified

302 * @returns Updated sizes with expanded panel
303 */
304export function expandPanel(
305 sizes: readonly number[],
306 index: number,
307 targetSize: number,
308): readonly number[] {
309 if (index < 0 || index >= sizes.length) {
310 return sizes;
311 }
312
313 const newSizes = [...sizes];
314 const currentSize = sizes[index] ?? 0;
315 const delta = targetSize - currentSize;
316
317 if (delta <= 0) {
318 return sizes;
319 }
320
321 let taken = 0;
322
323 // Take space from adjacent panels
324 if (index > 0) {
325 const neighborSize = newSizes[index - 1] ?? 0;
326 const take = Math.min(delta - taken, neighborSize);
327 newSizes[index - 1] = neighborSize - take;
328 taken += take;
329 } else if (index < sizes.length - 1) {
330 const neighborSize = newSizes[index + 1] ?? 0;
331 const take = Math.min(delta - taken, neighborSize);
332 newSizes[index + 1] = neighborSize - take;
333 taken += take;
334 }
335
336 if (taken <= 0) {
337 return sizes;
338 }
339
340 newSizes[index] = currentSize + taken;
341 return Object.freeze(newSizes);
342}
343
344/**
345 * Hit test to determine if a point is on a divider.

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected