| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- var useSize = require('./useSize.js');
- var shared = require('@vue/shared');
- function useResize(panels, containerSize, pxSizes, lazy) {
- const ptg2px = (ptg) => ptg * containerSize.value || 0;
- function getLimitSize(str, defaultLimit) {
- if (useSize.isPct(str)) {
- return ptg2px(useSize.getPct(str));
- } else if (useSize.isPx(str)) {
- return useSize.getPx(str);
- }
- return str != null ? str : defaultLimit;
- }
- const lazyOffset = vue.ref(0);
- const movingIndex = vue.ref(null);
- let cachePxSizes = [];
- let updatePanelSizes = shared.NOOP;
- const limitSizes = vue.computed(() => panels.value.map((item) => [item.min, item.max]));
- vue.watch(lazy, () => {
- if (lazyOffset.value) {
- const mouseup = new MouseEvent("mouseup", { bubbles: true });
- window.dispatchEvent(mouseup);
- }
- });
- const onMoveStart = (index) => {
- lazyOffset.value = 0;
- movingIndex.value = { index, confirmed: false };
- cachePxSizes = pxSizes.value;
- };
- const onMoving = (index, offset) => {
- var _a, _b;
- let confirmedIndex = null;
- if ((!movingIndex.value || !movingIndex.value.confirmed) && offset !== 0) {
- if (offset > 0) {
- confirmedIndex = index;
- movingIndex.value = { index, confirmed: true };
- } else {
- for (let i = index; i >= 0; i -= 1) {
- if (cachePxSizes[i] > 0) {
- confirmedIndex = i;
- movingIndex.value = { index: i, confirmed: true };
- break;
- }
- }
- }
- }
- const mergedIndex = (_b = confirmedIndex != null ? confirmedIndex : (_a = movingIndex.value) == null ? void 0 : _a.index) != null ? _b : index;
- const numSizes = [...cachePxSizes];
- const nextIndex = mergedIndex + 1;
- const startMinSize = getLimitSize(limitSizes.value[mergedIndex][0], 0);
- const endMinSize = getLimitSize(limitSizes.value[nextIndex][0], 0);
- const startMaxSize = getLimitSize(limitSizes.value[mergedIndex][1], containerSize.value || 0);
- const endMaxSize = getLimitSize(limitSizes.value[nextIndex][1], containerSize.value || 0);
- let mergedOffset = offset;
- if (numSizes[mergedIndex] + mergedOffset < startMinSize) {
- mergedOffset = startMinSize - numSizes[mergedIndex];
- }
- if (numSizes[nextIndex] - mergedOffset < endMinSize) {
- mergedOffset = numSizes[nextIndex] - endMinSize;
- }
- if (numSizes[mergedIndex] + mergedOffset > startMaxSize) {
- mergedOffset = startMaxSize - numSizes[mergedIndex];
- }
- if (numSizes[nextIndex] - mergedOffset > endMaxSize) {
- mergedOffset = numSizes[nextIndex] - endMaxSize;
- }
- numSizes[mergedIndex] += mergedOffset;
- numSizes[nextIndex] -= mergedOffset;
- lazyOffset.value = mergedOffset;
- updatePanelSizes = () => {
- panels.value.forEach((panel, index2) => {
- panel.size = numSizes[index2];
- });
- updatePanelSizes = shared.NOOP;
- };
- if (!lazy.value) {
- updatePanelSizes();
- }
- };
- const onMoveEnd = () => {
- if (lazy.value) {
- updatePanelSizes();
- }
- lazyOffset.value = 0;
- movingIndex.value = null;
- cachePxSizes = [];
- };
- const cacheCollapsedSize = [];
- const onCollapse = (index, type) => {
- if (!cacheCollapsedSize.length) {
- cacheCollapsedSize.push(...pxSizes.value);
- }
- const currentSizes = pxSizes.value;
- const currentIndex = type === "start" ? index : index + 1;
- const targetIndex = type === "start" ? index + 1 : index;
- const currentSize = currentSizes[currentIndex];
- const targetSize = currentSizes[targetIndex];
- if (currentSize !== 0 && targetSize !== 0) {
- currentSizes[currentIndex] = 0;
- currentSizes[targetIndex] += currentSize;
- cacheCollapsedSize[index] = currentSize;
- } else {
- const totalSize = currentSize + targetSize;
- const targetCacheCollapsedSize = cacheCollapsedSize[index];
- const currentCacheCollapsedSize = totalSize - targetCacheCollapsedSize;
- currentSizes[targetIndex] = targetCacheCollapsedSize;
- currentSizes[currentIndex] = currentCacheCollapsedSize;
- }
- panels.value.forEach((panel, index2) => {
- panel.size = currentSizes[index2];
- });
- };
- return {
- lazyOffset,
- onMoveStart,
- onMoving,
- onMoveEnd,
- movingIndex,
- onCollapse
- };
- }
- exports.useResize = useResize;
- //# sourceMappingURL=useResize.js.map
|