diff --git a/dist/commonjs/index.js b/dist/commonjs/index.js index e3bdcf702702392e9a06c981545f659ee7c5970e..d88ae6b2dc5b4cf1970cb693f58a926bd12a8f45 100644 --- a/dist/commonjs/index.js +++ b/dist/commonjs/index.js @@ -757,30 +757,14 @@ function updateLayout(context, dragEvent) { panelAfter.onCollapseChange.current(false); } } - const panelBeforeIsAboutToCollapse = panelBefore.currentValue.value.eq(getUnitPixelValue(context, panelBefore.min)); - // If the panel was expanded and now is at it's min size, collapse it - if (!dragEvent.disregardCollapseBuffer && - panelBefore.collapsible && - panelBeforeIsAboutToCollapse) { - if (panelBefore.onCollapseChange?.current && - panelBefore.collapseIsControlled && - !dragEvent.controlled && - !dragEvent.isVirtual) { - panelBefore.onCollapseChange.current(true); - return { dragOvershoot: newDragOvershoot }; - } - // Make it collapsed - panelBefore.collapsed = true; - panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize); - // Add the extra space created to the before panel - panelAfterNewValue = panelAfter.currentValue.value.add(panelBeforePreviousValue.minus(panelBeforeNewValue)); - if (panelBefore.onCollapseChange?.current && - !panelBefore.collapseIsControlled && - !dragEvent.controlled && - !dragEvent.isVirtual) { - panelBefore.onCollapseChange.current(true); - } - } + // Drag-to-collapse is disabled in this fork: every consumer of the + // library uses controlled `collapsed` props and triggers collapse + // explicitly (close button, ESC, URL change, etc.). The original auto- + // collapse-on-drag logic that lived here would notify the parent when a + // collapsible panel reached its min during a drag — keeping it for our + // (controlled-only) case caused state-machine deadlocks when handlers + // were no-ops, so the block is removed entirely. Panels just clamp at + // `min` during drag now. panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue }; panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue }; const leftoverSpace = new big_js_1.default(getGroupSize(context)).minus(newItems.reduce((acc, b) => acc.add(isPanelData(b) ? b.currentValue.value : b.size.value), new big_js_1.default(0))); @@ -940,7 +924,12 @@ function setCookie(name, jsonData) { function getDeltaForEvent(context, event) { const panel = getPanelWithId(context, event.panelId); if (event.type === "expandPanel") { - return new big_js_1.default(panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)).minus(panel.currentValue.value); + // Fall back to `default` before `min` so the first-ever expand of a + // panel that started life collapsed lands at its configured default + // size rather than getting stuck at `min`. + const defaultPx = panel.default ? getUnitPixelValue(context, panel.default) : undefined; + const target = panel.sizeBeforeCollapse ?? defaultPx ?? getUnitPixelValue(context, panel.min); + return new big_js_1.default(target).minus(panel.currentValue.value); } const collapsedSize = getUnitPixelValue(context, panel.collapsedSize); return panel.currentValue.value.minus(collapsedSize); diff --git a/dist/esm/index.js b/dist/esm/index.js index f8fddd70c0f1aaed29f2fb0ca0d8093d8ce66335..d1dae8beb1447afca47b91e796b8279135f50c36 100644 --- a/dist/esm/index.js +++ b/dist/esm/index.js @@ -728,30 +728,14 @@ function updateLayout(context, dragEvent) { panelAfter.onCollapseChange.current(false); } } - const panelBeforeIsAboutToCollapse = panelBefore.currentValue.value.eq(getUnitPixelValue(context, panelBefore.min)); - // If the panel was expanded and now is at it's min size, collapse it - if (!dragEvent.disregardCollapseBuffer && - panelBefore.collapsible && - panelBeforeIsAboutToCollapse) { - if (panelBefore.onCollapseChange?.current && - panelBefore.collapseIsControlled && - !dragEvent.controlled && - !dragEvent.isVirtual) { - panelBefore.onCollapseChange.current(true); - return { dragOvershoot: newDragOvershoot }; - } - // Make it collapsed - panelBefore.collapsed = true; - panelBeforeNewValue = getUnitPixelValue(context, panelBefore.collapsedSize); - // Add the extra space created to the before panel - panelAfterNewValue = panelAfter.currentValue.value.add(panelBeforePreviousValue.minus(panelBeforeNewValue)); - if (panelBefore.onCollapseChange?.current && - !panelBefore.collapseIsControlled && - !dragEvent.controlled && - !dragEvent.isVirtual) { - panelBefore.onCollapseChange.current(true); - } - } + // Drag-to-collapse is disabled in this fork: every consumer of the + // library uses controlled `collapsed` props and triggers collapse + // explicitly (close button, ESC, URL change, etc.). The original auto- + // collapse-on-drag logic that lived here would notify the parent when a + // collapsible panel reached its min during a drag — keeping it for our + // (controlled-only) case caused state-machine deadlocks when handlers + // were no-ops, so the block is removed entirely. Panels just clamp at + // `min` during drag now. panelBefore.currentValue = { type: "pixel", value: panelBeforeNewValue }; panelAfter.currentValue = { type: "pixel", value: panelAfterNewValue }; const leftoverSpace = new Big(getGroupSize(context)).minus(newItems.reduce((acc, b) => acc.add(isPanelData(b) ? b.currentValue.value : b.size.value), new Big(0))); @@ -911,7 +895,12 @@ function setCookie(name, jsonData) { function getDeltaForEvent(context, event) { const panel = getPanelWithId(context, event.panelId); if (event.type === "expandPanel") { - return new Big(panel.sizeBeforeCollapse ?? getUnitPixelValue(context, panel.min)).minus(panel.currentValue.value); + // Fall back to `default` before `min` so the first-ever expand of a + // panel that started life collapsed lands at its configured default + // size rather than getting stuck at `min`. + const defaultPx = panel.default ? getUnitPixelValue(context, panel.default) : undefined; + const target = panel.sizeBeforeCollapse ?? defaultPx ?? getUnitPixelValue(context, panel.min); + return new Big(target).minus(panel.currentValue.value); } const collapsedSize = getUnitPixelValue(context, panel.collapsedSize); return panel.currentValue.value.minus(collapsedSize);