react-resize-demo 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +93 -1
  2. package/README.md +156 -109
  3. package/dist/components/ResizeHandle/index.js +92 -0
  4. package/dist/components/ResizeHandle/index.js.map +1 -0
  5. package/dist/components/ResizePanel/index.js +33 -0
  6. package/dist/components/ResizePanel/index.js.map +1 -0
  7. package/dist/components/ResizePanelGroup/index.js +61 -0
  8. package/dist/components/ResizePanelGroup/index.js.map +1 -0
  9. package/dist/components/shared/context.js +35 -0
  10. package/dist/components/shared/context.js.map +1 -0
  11. package/dist/esm/components/ResizeHandle/index.js +90 -0
  12. package/dist/esm/components/ResizeHandle/index.js.map +1 -0
  13. package/dist/esm/components/ResizePanel/index.js +31 -0
  14. package/dist/esm/components/ResizePanel/index.js.map +1 -0
  15. package/dist/esm/components/ResizePanelGroup/index.js +59 -0
  16. package/dist/esm/components/ResizePanelGroup/index.js.map +1 -0
  17. package/dist/esm/components/shared/context.js +32 -0
  18. package/dist/esm/components/shared/context.js.map +1 -0
  19. package/dist/esm/index.js +6 -0
  20. package/dist/esm/index.js.map +1 -0
  21. package/dist/esm/utils/resizeAble.js +427 -0
  22. package/dist/esm/utils/resizeAble.js.map +1 -0
  23. package/dist/esm/utils/virtualNode.js +164 -0
  24. package/dist/esm/utils/virtualNode.js.map +1 -0
  25. package/dist/index.js +9 -721
  26. package/dist/index.js.map +1 -1
  27. package/dist/types/index.d.ts +68 -2
  28. package/dist/utils/resizeAble.js +431 -0
  29. package/dist/utils/resizeAble.js.map +1 -0
  30. package/dist/utils/virtualNode.js +168 -0
  31. package/dist/utils/virtualNode.js.map +1 -0
  32. package/package.json +30 -3
  33. package/dist/components/ResizeHandle/index.d.ts +0 -8
  34. package/dist/components/ResizeHandle/index.d.ts.map +0 -1
  35. package/dist/components/ResizePanel/index.d.ts +0 -19
  36. package/dist/components/ResizePanel/index.d.ts.map +0 -1
  37. package/dist/index.d.ts +0 -22
  38. package/dist/index.d.ts.map +0 -1
  39. package/dist/index.esm.js +0 -724
  40. package/dist/index.esm.js.map +0 -1
  41. package/dist/types/index.d.ts.map +0 -1
  42. package/dist/utils/index.d.ts +0 -5
  43. package/dist/utils/index.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/core/virtualNode.js","../src/core/resizeAble.js","../src/components/ResizePanel/index.tsx"],"sourcesContent":["/**\r\n * 虚拟节点管理模块\r\n * 负责创建、更新、销毁虚拟节点,用于虚拟化拖拽\r\n */\r\n\r\nclass VirtualNodeManager {\r\n constructor() {\r\n this.virtualNodes = new Map(); // 存储虚拟节点映射:realEl -> virtualEl\r\n }\r\n\r\n /**\r\n * 创建虚拟节点\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @param {Object} config - 虚拟化配置\r\n * @param {Object} config.style - 虚拟节点样式\r\n * @param {string} config.className - 虚拟节点类名\r\n * @returns {HTMLElement} 虚拟节点\r\n */\r\n createVirtualNode(originalEl, config = {}) {\r\n if (!originalEl || !originalEl.parentElement) {\r\n return null;\r\n }\r\n\r\n // 如果已存在虚拟节点,先移除\r\n if (this.virtualNodes.has(originalEl)) {\r\n this.removeVirtualNode(originalEl);\r\n }\r\n\r\n // 获取原始节点的位置和尺寸信息\r\n const rect = originalEl.getBoundingClientRect();\r\n const parentRect = originalEl.parentElement.getBoundingClientRect();\r\n const computedStyle = window.getComputedStyle(originalEl);\r\n\r\n // 创建虚拟节点(只复制结构,不复制内容以提高性能)\r\n const virtualEl = originalEl.cloneNode(false); // false 表示不复制子节点\r\n \r\n // 计算相对于父容器的位置\r\n const top = rect.top - parentRect.top + (originalEl.parentElement.scrollTop || 0);\r\n const left = rect.left - parentRect.left + (originalEl.parentElement.scrollLeft || 0);\r\n \r\n // 设置虚拟节点样式\r\n virtualEl.style.cssText = `\r\n position: absolute;\r\n top: ${top}px;\r\n left: ${left}px;\r\n width: ${rect.width}px;\r\n height: ${rect.height}px;\r\n margin: 0;\r\n padding: ${computedStyle.padding};\r\n border: ${computedStyle.border};\r\n box-sizing: ${computedStyle.boxSizing};\r\n pointer-events: none;\r\n z-index: 10000;\r\n opacity: 0.6;\r\n background-color: ${computedStyle.backgroundColor || 'rgba(0, 123, 255, 0.1)'};\r\n overflow: hidden;\r\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.3);\r\n `;\r\n\r\n // 应用自定义样式\r\n if (config.style) {\r\n Object.assign(virtualEl.style, config.style);\r\n }\r\n\r\n // 应用自定义类名\r\n if (config.className) {\r\n virtualEl.className = config.className;\r\n }\r\n\r\n // 隐藏原始节点的内容(可选,通过设置透明度)\r\n const originalOpacity = originalEl.style.opacity;\r\n originalEl.style.opacity = '0.3';\r\n originalEl.dataset.originalOpacity = originalOpacity || '';\r\n\r\n // 将虚拟节点插入到父容器中\r\n originalEl.parentElement.appendChild(virtualEl);\r\n\r\n // 存储映射关系\r\n this.virtualNodes.set(originalEl, virtualEl);\r\n\r\n return virtualEl;\r\n }\r\n\r\n /**\r\n * 更新虚拟节点尺寸\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @param {number} size - 新尺寸\r\n * @param {string} direction - 方向 'horizontal' | 'vertical'\r\n */\r\n updateVirtualNode(originalEl, size, direction) {\r\n const virtualEl = this.virtualNodes.get(originalEl);\r\n if (!virtualEl) return;\r\n\r\n const sizeProperty = direction === 'horizontal' ? 'width' : 'height';\r\n virtualEl.style[sizeProperty] = `${size}px`;\r\n }\r\n\r\n /**\r\n * 更新虚拟节点位置(用于级联调整)\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @param {number} newPosition - 新位置(绝对位置,不是偏移量)\r\n * @param {string} direction - 方向 'horizontal' | 'vertical'\r\n */\r\n updateVirtualNodePosition(originalEl, newPosition, direction) {\r\n const virtualEl = this.virtualNodes.get(originalEl);\r\n if (!virtualEl) return;\r\n\r\n const positionProperty = direction === 'horizontal' ? 'left' : 'top';\r\n virtualEl.style[positionProperty] = `${newPosition}px`;\r\n }\r\n\r\n /**\r\n * 移除虚拟节点\r\n * @param {HTMLElement} originalEl - 原始节点\r\n */\r\n removeVirtualNode(originalEl) {\r\n const virtualEl = this.virtualNodes.get(originalEl);\r\n if (!virtualEl) return;\r\n\r\n // 恢复原始节点透明度\r\n if (originalEl.dataset.originalOpacity !== undefined) {\r\n originalEl.style.opacity = originalEl.dataset.originalOpacity;\r\n delete originalEl.dataset.originalOpacity;\r\n }\r\n\r\n // 移除虚拟节点\r\n if (virtualEl.parentElement) {\r\n virtualEl.parentElement.removeChild(virtualEl);\r\n }\r\n\r\n // 移除映射关系\r\n this.virtualNodes.delete(originalEl);\r\n }\r\n\r\n /**\r\n * 将最终尺寸应用到真实节点\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @param {number} finalSize - 最终尺寸\r\n * @param {string} direction - 方向 'horizontal' | 'vertical'\r\n */\r\n applyToRealNode(originalEl, finalSize, direction) {\r\n const sizeProperty = direction === 'horizontal' ? 'width' : 'height';\r\n originalEl.style[sizeProperty] = `${finalSize}px`;\r\n }\r\n\r\n /**\r\n * 移除所有虚拟节点\r\n */\r\n removeAllVirtualNodes() {\r\n const nodesToRemove = Array.from(this.virtualNodes.keys());\r\n nodesToRemove.forEach(originalEl => {\r\n this.removeVirtualNode(originalEl);\r\n });\r\n this.virtualNodes.clear();\r\n }\r\n\r\n /**\r\n * 检查是否存在虚拟节点\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @returns {boolean}\r\n */\r\n hasVirtualNode(originalEl) {\r\n return this.virtualNodes.has(originalEl);\r\n }\r\n\r\n /**\r\n * 获取虚拟节点\r\n * @param {HTMLElement} originalEl - 原始节点\r\n * @returns {HTMLElement|null}\r\n */\r\n getVirtualNode(originalEl) {\r\n return this.virtualNodes.get(originalEl) || null;\r\n }\r\n\r\n /**\r\n * 销毁管理器,清理所有资源\r\n */\r\n destroy() {\r\n this.removeAllVirtualNodes();\r\n }\r\n}\r\n\r\nexport default VirtualNodeManager;\r\n\r\n","// @ts-expect-error - VirtualNodeManager is a JS file\r\nimport VirtualNodeManager from './virtualNode';\r\n\r\nclass ResizeAbleCore {\r\n constructor(options) {\r\n this.prePanelEl = options.prePanelEl;\r\n this.nextPanelEl = options.nextPanelEl;\r\n this.getPanelInfo = options.getPanelInfo;\r\n this.prePanelIndex = options.prePanelIndex;\r\n this.nextPanelIndex = options.nextPanelIndex;\r\n this.direction = options.direction;\r\n this.virtualEnabled = options.virtualEnabled || false;\r\n this.virtualConfig = options.virtualConfig || {};\r\n\r\n this.isResizing = false;\r\n this.startPos = 0;\r\n this.prePanelStartSize = 0;\r\n this.nextPanelStartSize = 0;\r\n this.allPanelsStartSizes = new Map();\r\n this.allPanelsStartPositions = new Map(); // 记录面板初始位置(虚拟化模式使用)\r\n this.handleSize = options.handleSize || 0; // 拖拽器尺寸(宽度或高度,根据方向)\r\n \r\n // 如果启用虚拟化,创建虚拟节点管理器\r\n if (this.virtualEnabled) {\r\n this.virtualNodeManager = new VirtualNodeManager();\r\n }\r\n }\r\n startResize() {\r\n console.log(11111)\r\n // 设置开始拖拽\r\n this.isResizing = true;\r\n\r\n // 记录前一个面板的开始大小\r\n this.prePanelStartSize = this.getSize(this.prePanelEl)\r\n this.allPanelsStartSizes.set(this.prePanelIndex, this.prePanelStartSize);\r\n // 记录后一个面板的开始大小\r\n this.nextPanelStartSize = this.getSize(this.nextPanelEl)\r\n this.allPanelsStartSizes.set(this.nextPanelIndex, this.nextPanelStartSize);\r\n \r\n // 根据方向设置尺寸属性\r\n const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';\r\n \r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n // 虚拟化模式:创建虚拟节点并记录初始位置\r\n const prePos = this.getPosition(this.prePanelEl);\r\n this.allPanelsStartPositions.set(this.prePanelIndex, prePos);\r\n this.virtualNodeManager.createVirtualNode(this.prePanelEl, this.virtualConfig);\r\n \r\n const nextPos = this.getPosition(this.nextPanelEl);\r\n this.allPanelsStartPositions.set(this.nextPanelIndex, nextPos);\r\n this.virtualNodeManager.createVirtualNode(this.nextPanelEl, this.virtualConfig);\r\n\r\n // 记录前面面板的初始尺寸和位置并创建虚拟节点\r\n let prevIndex = this.prePanelIndex - 1;\r\n while (prevIndex >= 0) {\r\n const panelInfo = this.getPanelInfo(prevIndex);\r\n if (!panelInfo) break;\r\n\r\n const size = this.getSize(panelInfo.panelEl);\r\n const pos = this.getPosition(panelInfo.panelEl);\r\n this.allPanelsStartSizes.set(prevIndex, size);\r\n this.allPanelsStartPositions.set(prevIndex, pos);\r\n this.virtualNodeManager.createVirtualNode(panelInfo.panelEl, this.virtualConfig);\r\n prevIndex--;\r\n }\r\n\r\n // 记录后续面板的初始尺寸和位置并创建虚拟节点\r\n let nextIndex = this.nextPanelIndex + 1;\r\n let nextPanelInfo = this.getPanelInfo(nextIndex);\r\n while (nextPanelInfo) {\r\n const size = this.getSize(nextPanelInfo.panelEl);\r\n const pos = this.getPosition(nextPanelInfo.panelEl);\r\n this.allPanelsStartSizes.set(nextIndex, size);\r\n this.allPanelsStartPositions.set(nextIndex, pos);\r\n this.virtualNodeManager.createVirtualNode(nextPanelInfo.panelEl, this.virtualConfig);\r\n nextIndex++;\r\n nextPanelInfo = this.getPanelInfo(nextIndex);\r\n }\r\n } else {\r\n // 非虚拟化模式:直接操作真实节点\r\n // 禁用flex\r\n this.prePanelEl.style.flex = 'none';\r\n this.prePanelEl.style[sizeProperty] = `${this.prePanelStartSize}px`;\r\n this.nextPanelEl.style.flex = 'none';\r\n this.nextPanelEl.style[sizeProperty] = `${this.nextPanelStartSize}px`;\r\n\r\n // 记录前面面板的初始尺寸(用于向前拖拽时的级联调整)\r\n let prevIndex = this.prePanelIndex - 1;\r\n while (prevIndex >= 0) {\r\n const panelInfo = this.getPanelInfo(prevIndex);\r\n if (!panelInfo) break;\r\n\r\n const size = this.getSize(panelInfo.panelEl);\r\n this.allPanelsStartSizes.set(prevIndex, size);\r\n panelInfo.panelEl.style.flex = 'none';\r\n panelInfo.panelEl.style[sizeProperty] = `${size}px`;\r\n prevIndex--;\r\n }\r\n\r\n // 记录后续面板的初始尺寸(用于向后拖拽时的级联调整)\r\n let nextIndex = this.nextPanelIndex + 1;\r\n let nextPanelInfo = this.getPanelInfo(nextIndex);\r\n while (nextPanelInfo) {\r\n const size = this.getSize(nextPanelInfo.panelEl);\r\n this.allPanelsStartSizes.set(nextIndex, size);\r\n nextPanelInfo.panelEl.style.flex = 'none';\r\n nextPanelInfo.panelEl.style[sizeProperty] = `${size}px`;\r\n nextIndex++;\r\n nextPanelInfo = this.getPanelInfo(nextIndex);\r\n }\r\n }\r\n }\r\n onResize(delta) {\r\n if (!this.isResizing) return;\r\n\r\n if (delta > 0) {\r\n // 向后拖拽(水平布局向右,垂直布局向下):扩大前一个面板,缩小后一个面板\r\n this.adjustPanelsNext(delta);\r\n } else {\r\n // 向前拖拽(水平布局向左,垂直布局向上):缩小前一个面板,扩大后一个面板\r\n // 将负数转为正数处理\r\n this.adjustPanelsPre(-delta);\r\n }\r\n }\r\n adjustPanelsNext(delta) {\r\n console.log('next', 'kkkkkkk')\r\n let remainingDelta = delta;\r\n const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';\r\n\r\n // 尝试从后一个面板获取空间\r\n const nextPanelInfo = this.getPanelInfo(this.nextPanelIndex);\r\n if (nextPanelInfo) {\r\n const nextStartSize = this.allPanelsStartSizes.get(this.nextPanelIndex);\r\n const targetNextSize = nextStartSize - remainingDelta;\r\n const newNextSize = Math.max(nextPanelInfo.minSize, targetNextSize);\r\n const actualReduction = nextStartSize - newNextSize;\r\n\r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(this.nextPanelEl, newNextSize, this.direction);\r\n } else {\r\n this.nextPanelEl.style[sizeProperty] = `${newNextSize}px`;\r\n }\r\n remainingDelta -= actualReduction;\r\n }\r\n\r\n console.log(remainingDelta, 'kkkkkk')\r\n\r\n // 如果后一个面板达到了最小值,继续从后续的面板中获取空间\r\n if (remainingDelta > 0) {\r\n let nextIndex = this.nextPanelIndex + 1;\r\n while (remainingDelta > 0) {\r\n const nextPanelInfo = this.getPanelInfo(nextIndex);\r\n if (!nextPanelInfo) break;\r\n const nextStartSize = this.allPanelsStartSizes.get(nextIndex);\r\n const targetNextSize = nextStartSize - remainingDelta;\r\n const newNextSize = Math.max(nextPanelInfo.minSize, targetNextSize);\r\n const actualReduction = nextStartSize - newNextSize;\r\n \r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(nextPanelInfo.panelEl, newNextSize, this.direction);\r\n } else {\r\n nextPanelInfo.panelEl.style[sizeProperty] = `${newNextSize}px`;\r\n }\r\n remainingDelta -= actualReduction;\r\n if (newNextSize <= nextPanelInfo.minSize && remainingDelta > 0) {\r\n nextIndex++\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // 扩大前一个面板\r\n const prePanelInfo = this.getPanelInfo(this.prePanelIndex);\r\n if (prePanelInfo) {\r\n const preStartSize = this.allPanelsStartSizes.get(this.prePanelIndex);\r\n const actualGained = delta - remainingDelta; // 实际获得的尺寸\r\n const newPreSize = preStartSize + actualGained;\r\n \r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(this.prePanelEl, newPreSize, this.direction);\r\n \r\n // 重新计算所有面板的位置(基于尺寸变化)\r\n this.recalculateAllPanelsPositions();\r\n } else {\r\n this.prePanelEl.style[sizeProperty] = `${newPreSize}px`;\r\n }\r\n }\r\n }\r\n adjustPanelsPre(delta) {\r\n // 向前拖拽(水平布局向左,垂直布局向上):缩小前一个面板,扩大后一个面板\r\n // delta 此时是正数(表示向前拖拽的距离)\r\n let remainingDelta = delta;\r\n let totalReduced = 0; // 记录从前一个面板实际减少的尺寸总和\r\n const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';\r\n \r\n // 先尝试缩小前一个面板\r\n const prePanelInfo = this.getPanelInfo(this.prePanelIndex);\r\n if (prePanelInfo) {\r\n const preStartSize = this.allPanelsStartSizes.get(this.prePanelIndex);\r\n const targetPreSize = preStartSize - remainingDelta;\r\n const newPreSize = Math.max(prePanelInfo.minSize, targetPreSize);\r\n const actualReduction = preStartSize - newPreSize;\r\n \r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(this.prePanelEl, newPreSize, this.direction);\r\n } else {\r\n this.prePanelEl.style[sizeProperty] = `${newPreSize}px`;\r\n }\r\n totalReduced += actualReduction;\r\n remainingDelta -= actualReduction;\r\n }\r\n \r\n // 如果前一个面板达到最小值,继续缩小更前面的面板(prevPanel)\r\n // 这样可以实现\"依次后延\"的效果\r\n if (remainingDelta > 0) {\r\n let prevIndex = this.prePanelIndex - 1;\r\n console.log(prevIndex, this.prePanelIndex, 'kkkkkkkk')\r\n while (remainingDelta > 0 && prevIndex >= 0) {\r\n const prevPanelInfo = this.getPanelInfo(prevIndex);\r\n if (!prevPanelInfo) break;\r\n \r\n const prevStartSize = this.allPanelsStartSizes.get(prevIndex);\r\n if (prevStartSize === undefined) break;\r\n \r\n const targetPrevSize = prevStartSize - remainingDelta;\r\n const newPrevSize = Math.max(prevPanelInfo.minSize, targetPrevSize);\r\n const actualReduction = prevStartSize - newPrevSize;\r\n \r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(prevPanelInfo.panelEl, newPrevSize, this.direction);\r\n } else {\r\n prevPanelInfo.panelEl.style[sizeProperty] = `${newPrevSize}px`;\r\n }\r\n totalReduced += actualReduction; // 将这部分空间也加到后一个面板\r\n remainingDelta -= actualReduction;\r\n \r\n if (newPrevSize <= prevPanelInfo.minSize && remainingDelta > 0) {\r\n prevIndex--; // 继续向前查找\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n \r\n // 扩大后一个面板(使用实际减少的尺寸)\r\n const nextPanelInfo = this.getPanelInfo(this.nextPanelIndex);\r\n if (nextPanelInfo) {\r\n const nextStartSize = this.allPanelsStartSizes.get(this.nextPanelIndex);\r\n const newNextSize = nextStartSize + totalReduced;\r\n \r\n // 虚拟化模式下更新虚拟节点,否则更新真实节点\r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n this.virtualNodeManager.updateVirtualNode(this.nextPanelEl, newNextSize, this.direction);\r\n \r\n // 重新计算所有面板的位置(基于尺寸变化)\r\n this.recalculateAllPanelsPositions();\r\n } else {\r\n this.nextPanelEl.style[sizeProperty] = `${newNextSize}px`;\r\n }\r\n }\r\n }\r\n /**\r\n * 重新计算所有面板的位置(虚拟化模式使用)\r\n * 基于每个面板的初始位置和前面所有面板的尺寸变化\r\n */\r\n recalculateAllPanelsPositions() {\r\n if (!this.virtualEnabled || !this.virtualNodeManager) return;\r\n \r\n // 从第一个面板开始,顺序计算每个面板的新位置\r\n // 使用累积方式:从第一个面板的初始位置开始,依次加上每个面板的当前尺寸和拖拽器尺寸\r\n const firstPanelStartPos = this.allPanelsStartPositions.get(0) || 0;\r\n let currentPosition = firstPanelStartPos;\r\n \r\n let index = 0;\r\n let panelInfo = this.getPanelInfo(index);\r\n while (panelInfo) {\r\n const startPos = this.allPanelsStartPositions.get(index);\r\n \r\n if (startPos !== undefined) {\r\n // 获取虚拟节点\r\n const virtualEl = this.virtualNodeManager.getVirtualNode(panelInfo.panelEl);\r\n if (virtualEl) {\r\n // 如果是第一个面板,使用初始位置\r\n if (index === 0) {\r\n currentPosition = startPos;\r\n } else {\r\n // 对于后续面板,使用累积方式计算位置\r\n // 从第一个面板开始,累积所有前面面板的尺寸和拖拽器尺寸\r\n currentPosition = firstPanelStartPos;\r\n for (let i = 0; i < index; i++) {\r\n const prevInfo = this.getPanelInfo(i);\r\n if (prevInfo) {\r\n const prevVEl = this.virtualNodeManager.getVirtualNode(prevInfo.panelEl);\r\n if (prevVEl) {\r\n const prevSize = this.direction === 'horizontal' \r\n ? prevVEl.offsetWidth \r\n : prevVEl.offsetHeight;\r\n currentPosition += prevSize + this.handleSize;\r\n }\r\n }\r\n }\r\n }\r\n \r\n // 更新虚拟节点的位置\r\n this.virtualNodeManager.updateVirtualNodePosition(panelInfo.panelEl, currentPosition, this.direction);\r\n }\r\n }\r\n \r\n index++;\r\n panelInfo = this.getPanelInfo(index);\r\n }\r\n }\r\n getSize(el) {\r\n return this.direction === 'horizontal' ? el.offsetWidth : el.offsetHeight;\r\n }\r\n getPosition(el) {\r\n // 获取元素相对于父容器的位置\r\n if (this.direction === 'horizontal') {\r\n return el.offsetLeft;\r\n } else {\r\n return el.offsetTop;\r\n }\r\n }\r\n endResize() {\r\n this.isResizing = false;\r\n \r\n if (this.virtualEnabled && this.virtualNodeManager) {\r\n // 虚拟化模式:将最终尺寸应用到真实节点\r\n const sizeProperty = this.direction === 'horizontal' ? 'width' : 'height';\r\n \r\n // 获取所有虚拟节点的最终尺寸并应用到真实节点\r\n this.allPanelsStartSizes.forEach((startSize, index) => {\r\n const panelInfo = this.getPanelInfo(index);\r\n if (!panelInfo) return;\r\n \r\n const virtualEl = this.virtualNodeManager.getVirtualNode(panelInfo.panelEl);\r\n if (virtualEl) {\r\n const finalSize = this.direction === 'horizontal' \r\n ? virtualEl.offsetWidth \r\n : virtualEl.offsetHeight;\r\n \r\n // 应用最终尺寸到真实节点\r\n panelInfo.panelEl.style.flex = 'none';\r\n panelInfo.panelEl.style[sizeProperty] = `${finalSize}px`;\r\n }\r\n });\r\n \r\n // 清理所有虚拟节点\r\n this.virtualNodeManager.removeAllVirtualNodes();\r\n }\r\n \r\n this.allPanelsStartSizes.clear();\r\n }\r\n destroy() {\r\n this.endResize();\r\n // 清理虚拟节点管理器\r\n if (this.virtualNodeManager) {\r\n this.virtualNodeManager.destroy();\r\n }\r\n }\r\n}\r\n\r\nexport default ResizeAbleCore;","import React, { useRef, useEffect, useContext } from 'react';\n// @ts-expect-error - ResizeAbleCore is a JS file\nimport ResizeAbleCore from '../../core/resizeAble';\n\ninterface PanelInfo {\n panelEl: HTMLElement;\n minSize: number;\n}\n\nexport interface VirtualConfig {\n enabled?: boolean;\n style?: React.CSSProperties;\n className?: string;\n}\n\nconst ResizeableContext = React.createContext<{\n panelCount: number;\n registerPanel: (panelEl: HTMLElement, minSize: number) => number; // 返回索引\n unregisterPanel: (panelEl: HTMLElement) => void;\n getPanelInfo: (index: number) => PanelInfo | null;\n getPanelIndex: (panelEl: HTMLElement) => number;\n direction: string;\n panelInfos: PanelInfo[];\n virtualConfig: VirtualConfig;\n}>({\n panelCount: 0,\n registerPanel: () => 0,\n unregisterPanel: () => {},\n getPanelInfo: () => null,\n getPanelIndex: () => -1,\n direction: 'horizontal',\n panelInfos: [],\n virtualConfig: { enabled: false },\n})\n\nexport const ResizeablePanelGroup: React.FC<{\n children: React.ReactNode;\n direction?: 'horizontal' | 'vertical';\n virtual?: boolean; // 是否启用虚拟化,默认false\n virtualConfig?: VirtualConfig; // 虚拟化配置\n style?: React.CSSProperties;\n}> = ({\n children,\n direction = 'horizontal',\n style,\n virtual = false,\n virtualConfig = {},\n}) => {\n const panelInfos = useRef<PanelInfo[]>([]);\n const [panelCount, setPanelCount] = React.useState(0);\n \n const registerPanel = React.useCallback((panelEl: HTMLElement, minSize: number): number => {\n const index = panelInfos.current.length;\n panelInfos.current.push({ panelEl, minSize });\n setPanelCount(panelInfos.current.length);\n console.log(panelInfos.current, 'panelInfos.current')\n return index;\n }, []);\n \n const unregisterPanel = React.useCallback((panelEl: HTMLElement) => {\n panelInfos.current = panelInfos.current.filter(info => info.panelEl !== panelEl);\n setPanelCount(panelInfos.current.length);\n }, []);\n \n const getPanelInfo = (index: number): PanelInfo | null => {\n return panelInfos.current[index] || null;\n }\n \n const getPanelIndex = (panelEl: HTMLElement): number => {\n return panelInfos.current.findIndex(info => info.panelEl === panelEl);\n }\n\n const childrenArray = React.Children.toArray(children);\n const panelsWithHandles: React.ReactNode[] = [];\n console.log(childrenArray, panelInfos.current, 'childrenArray')\n\n childrenArray.forEach((child, index) => {\n panelsWithHandles.push(child);\n \n // 在面板之间插入拖拽器(最后一个面板后不插入)\n if (index < childrenArray.length - 1) {\n panelsWithHandles.push(\n <ResizeHandle\n key={`handle-${index}`}\n prePanelIndex={index}\n nextPanelIndex={index + 1}\n direction={direction}\n />\n );\n }\n });\n\n // 合并虚拟化配置\n const mergedVirtualConfig: VirtualConfig = {\n enabled: virtual,\n ...virtualConfig,\n };\n\n return (\n <ResizeableContext.Provider value={{ \n panelCount: panelCount,\n registerPanel, \n unregisterPanel,\n getPanelInfo,\n getPanelIndex,\n direction,\n panelInfos: panelInfos.current,\n virtualConfig: mergedVirtualConfig,\n }}>\n <div style={{\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n height: '100%',\n position: 'relative', // 为虚拟节点定位提供参考\n ...style,\n }}>\n {panelsWithHandles}\n </div>\n </ResizeableContext.Provider>\n )\n}\n\n\nexport const ResizeablePanel: React.FC<{\n children: React.ReactNode;\n minSize?: number;\n onResize?: (width: number) => void;\n}> = ({\n children,\n minSize = 100,\n // onResize, // 暂时未使用,保留以备将来使用\n}) => {\n const panelRef = useRef<HTMLDivElement>(null);\n const panelIndexRef = useRef<number>(-1);\n const { registerPanel, unregisterPanel, direction } = useContext(ResizeableContext);\n \n useEffect(() => {\n if(!panelRef.current) return;\n const panelEl = panelRef.current;\n panelIndexRef.current = registerPanel(panelEl, minSize);\n return () => {\n unregisterPanel(panelEl);\n }\n }, [minSize, registerPanel, unregisterPanel]);\n\n return (\n <div\n ref = {panelRef}\n style={{\n flex: 1,\n minWidth: direction === 'horizontal' ? minSize : undefined,\n minHeight: direction === 'vertical' ? minSize : undefined,\n width: 'auto',\n overflow: 'hidden',\n position: 'relative',\n }}\n >\n <div style={{height: '100%', padding: 16}}>\n {children}\n </div>\n </div>\n )\n}\n\nconst ResizeHandle: React.FC<{\n prePanelIndex: number;\n nextPanelIndex: number;\n direction: string;\n}> = ({\n prePanelIndex,\n nextPanelIndex,\n direction,\n}) => {\n const handleRef = useRef<HTMLDivElement>(null);\n const coreInstanceRef = useRef<InstanceType<typeof ResizeAbleCore> | null>(null);\n const { getPanelInfo, panelCount, virtualConfig } = useContext(ResizeableContext);\n\n useEffect(() => {\n // 确保所需的面板索引都已注册\n // 需要确保 nextPanelIndex 对应的面板已经注册(因为索引从0开始,所以需要 >= nextPanelIndex + 1)\n if (panelCount <= nextPanelIndex || !handleRef.current) {\n return;\n }\n \n const prePanelInfo = getPanelInfo(prePanelIndex);\n const nextPanelInfo = getPanelInfo(nextPanelIndex);\n if(!prePanelInfo || !nextPanelInfo) return;\n \n // 获取拖拽器的尺寸\n const handleSize = handleRef.current \n ? (direction === 'horizontal' \n ? handleRef.current.offsetWidth \n : handleRef.current.offsetHeight)\n : (direction === 'horizontal' ? 10 : 10); // 默认10px\n \n coreInstanceRef.current = new ResizeAbleCore({\n prePanelEl: prePanelInfo.panelEl,\n nextPanelEl: nextPanelInfo.panelEl,\n getPanelInfo,\n prePanelIndex,\n nextPanelIndex,\n direction,\n virtualEnabled: virtualConfig.enabled || false,\n virtualConfig: {\n style: virtualConfig.style,\n className: virtualConfig.className,\n },\n handleSize, // 传递拖拽器尺寸\n });\n\n // 将拖拽器的开始/移动/结束事件绑定至核心类\n const handleEl = handleRef.current;\n let isResizing = false;\n let startPos = 0;\n\n const startResize = (e: MouseEvent) => {\n console.log(9999999)\n e.preventDefault();\n isResizing = true;\n startPos = direction === 'horizontal' ? e.clientX : e.clientY;\n if (coreInstanceRef.current) {\n coreInstanceRef.current.startResize();\n }\n };\n const onResizeMove = (e: MouseEvent) => {\n if(!isResizing || !coreInstanceRef.current) return;\n const currentPos = direction === 'horizontal' ? e.clientX : e.clientY;\n const delta = currentPos - startPos;\n coreInstanceRef.current.onResize(delta);\n };\n const endResize = () => {\n if(isResizing && coreInstanceRef.current) {\n isResizing = false;\n coreInstanceRef.current.endResize();\n }\n }\n handleEl.addEventListener('mousedown', startResize);\n document.addEventListener('mousemove', onResizeMove);\n document.addEventListener('mouseup', endResize);\n return () => {\n handleEl.removeEventListener('mousedown', startResize);\n document.removeEventListener('mousemove', onResizeMove);\n document.removeEventListener('mouseup', endResize);\n if(coreInstanceRef.current) {\n coreInstanceRef.current.destroy();\n }\n }\n }, [prePanelIndex, nextPanelIndex, direction, getPanelInfo, panelCount, virtualConfig]);\n\n\n const isHorizontal = direction === 'horizontal';\n return (\n <div\n ref={handleRef}\n style={{\n position: 'relative',\n width: isHorizontal ? '10px' : '100%',\n height: isHorizontal ? '100%' : '10px',\n backgroundColor: '#000',\n cursor: isHorizontal ? 'ew-resize' : 'ns-resize',\n zIndex: 1000,\n flexShrink: 0,\n }}\n />\n )\n}"],"names":["_jsx"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,CAAC;AACzB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACtC,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,EAAE,EAAE;AAC/C,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AACtD,YAAY,OAAO,IAAI,CAAC;AACxB,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC/C,YAAY,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;AACxD,QAAQ,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC5E,QAAQ,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAClE;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACtD;AACA;AACA,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAC1F,QAAQ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;AAC9F;AACA;AACA,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;AACnC;AACA,iBAAiB,EAAE,GAAG,CAAC;AACvB,kBAAkB,EAAE,IAAI,CAAC;AACzB,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC;AAChC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC;AAClC;AACA,qBAAqB,EAAE,aAAa,CAAC,OAAO,CAAC;AAC7C,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC;AAC3C,wBAAwB,EAAE,aAAa,CAAC,SAAS,CAAC;AAClD;AACA;AACA;AACA,8BAA8B,EAAE,aAAa,CAAC,eAAe,IAAI,wBAAwB,CAAC;AAC1F;AACA;AACA,QAAQ,CAAC,CAAC;AACV;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AAC9B,YAAY,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AACnD,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AACzD,QAAQ,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC,QAAQ,UAAU,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,IAAI,EAAE,CAAC;AACnE;AACA;AACA,QAAQ,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACxD;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AACrD;AACA,QAAQ,OAAO,SAAS,CAAC;AACzB,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;AACnD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,EAAE,OAAO;AAC/B;AACA,QAAQ,MAAM,YAAY,GAAG,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC7E,QAAQ,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACpD,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,yBAAyB,CAAC,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;AAClE,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,EAAE,OAAO;AAC/B;AACA,QAAQ,MAAM,gBAAgB,GAAG,SAAS,KAAK,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;AAC7E,QAAQ,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAC/D,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAClC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,SAAS,EAAE,OAAO;AAC/B;AACA;AACA,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE;AAC9D,YAAY,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;AAC1E,YAAY,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC;AACtD,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,IAAI,SAAS,CAAC,aAAa,EAAE;AACrC,YAAY,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7C,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE;AACtD,QAAQ,MAAM,YAAY,GAAG,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC7E,QAAQ,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1D,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AACnE,QAAQ,aAAa,CAAC,OAAO,CAAC,UAAU,IAAI;AAC5C,YAAY,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC/C,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAClC,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACjD,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,UAAU,EAAE;AAC/B,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;AACzD,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACrC,IAAI,CAAC;AACL;;ACpLA;AAEA;AACA,MAAM,cAAc,CAAC;AACrB,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;AAC7C,QAAQ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AAC/C,QAAQ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACjD,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AACnD,QAAQ,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AACrD,QAAQ,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;AAC3C,QAAQ,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;AAC9D,QAAQ,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;AACzD;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC1B,QAAQ,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AACnC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AACpC,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;AAClD;AACA;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AACjC,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC/D,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,KAAK,EAAC;AAC1B;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAC/B;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAC;AAC9D,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACjF;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAC;AAChE,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACnF;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClF;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC5D;AACA,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACzE,YAAY,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC3F;AACA,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/D,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC3E,YAAY,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAC5F;AACA;AACA,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACnD,YAAY,OAAO,SAAS,IAAI,CAAC,EAAE;AACnC,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,gBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM;AACtC;AACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAChE,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACjG,gBAAgB,SAAS,EAAE,CAAC;AAC5B,YAAY,CAAC;AACb;AACA;AACA,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACpD,YAAY,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,OAAO,aAAa,EAAE;AAClC,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjE,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACpE,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACjE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACrG,gBAAgB,SAAS,EAAE,CAAC;AAC5B,gBAAgB,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,CAAC;AACb,QAAQ,CAAC,MAAM;AACf;AACA;AACA,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAChD,YAAY,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAChF,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACjD,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAClF;AACA;AACA,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACnD,YAAY,OAAO,SAAS,IAAI,CAAC,EAAE;AACnC,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/D,gBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM;AACtC;AACA,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7D,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D,gBAAgB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AACtD,gBAAgB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,gBAAgB,SAAS,EAAE,CAAC;AAC5B,YAAY,CAAC;AACb;AACA;AACA,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACpD,YAAY,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,OAAO,aAAa,EAAE;AAClC,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACjE,gBAAgB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9D,gBAAgB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAC1D,gBAAgB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,gBAAgB,SAAS,EAAE,CAAC;AAC5B,gBAAgB,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC7D,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO;AACrC;AACA,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE;AACvB;AACA,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,CAAC,MAAM;AACf;AACA;AACA,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;AACzC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B,QAAQ,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAC;AACtC,QAAQ,IAAI,cAAc,GAAG,KAAK,CAAC;AACnC,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClF;AACA;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrE,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpF,YAAY,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;AAClE,YAAY,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAChF,YAAY,MAAM,eAAe,GAAG,aAAa,GAAG,WAAW,CAAC;AAChE;AACA;AACA,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzG,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAC1E,YAAY,CAAC;AACb,YAAY,cAAc,IAAI,eAAe,CAAC;AAC9C,QAAQ,CAAC;AACT;AACA,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAC;AAC7C;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACpD,YAAY,OAAO,cAAc,GAAG,CAAC,EAAE;AACvC,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACnE,gBAAgB,IAAI,CAAC,aAAa,EAAE,MAAM;AAC1C,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9E,gBAAgB,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;AACtE,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACpF,gBAAgB,MAAM,eAAe,GAAG,aAAa,GAAG,WAAW,CAAC;AACpE;AACA;AACA,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACpE,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAClH,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACnF,gBAAgB,CAAC;AACjB,gBAAgB,cAAc,IAAI,eAAe,CAAC;AAClD,gBAAgB,IAAI,WAAW,IAAI,aAAa,CAAC,OAAO,IAAI,cAAc,GAAG,CAAC,EAAE;AAChF,oBAAoB,SAAS,GAAE;AAC/B,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,MAAM;AAC1B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClF,YAAY,MAAM,YAAY,GAAG,KAAK,GAAG,cAAc,CAAC;AACxD,YAAY,MAAM,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AAC3D;AACA;AACA,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvG;AACA;AACA,gBAAgB,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrD,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,KAAK,CAAC;AACnC,QAAQ,IAAI,YAAY,GAAG,CAAC,CAAC;AAC7B,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAClF;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACnE,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAClF,YAAY,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAC;AAChE,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7E,YAAY,MAAM,eAAe,GAAG,YAAY,GAAG,UAAU,CAAC;AAC9D;AACA;AACA,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvG,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;AACxE,YAAY,CAAC;AACb,YAAY,YAAY,IAAI,eAAe,CAAC;AAC5C,YAAY,cAAc,IAAI,eAAe,CAAC;AAC9C,QAAQ,CAAC;AACT;AACA;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,CAAC,EAAE;AAChC,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACnD,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,EAAC;AAClE,YAAY,OAAO,cAAc,GAAG,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE;AACzD,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACnE,gBAAgB,IAAI,CAAC,aAAa,EAAE,MAAM;AAC1C;AACA,gBAAgB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9E,gBAAgB,IAAI,aAAa,KAAK,SAAS,EAAE,MAAM;AACvD;AACA,gBAAgB,MAAM,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;AACtE,gBAAgB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AACpF,gBAAgB,MAAM,eAAe,GAAG,aAAa,GAAG,WAAW,CAAC;AACpE;AACA;AACA,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACpE,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAClH,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AACnF,gBAAgB,CAAC;AACjB,gBAAgB,YAAY,IAAI,eAAe,CAAC;AAChD,gBAAgB,cAAc,IAAI,eAAe,CAAC;AAClD;AACA,gBAAgB,IAAI,WAAW,IAAI,aAAa,CAAC,OAAO,IAAI,cAAc,GAAG,CAAC,EAAE;AAChF,oBAAoB,SAAS,EAAE,CAAC;AAChC,gBAAgB,CAAC,MAAM;AACvB,oBAAoB,MAAM;AAC1B,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb,QAAQ,CAAC;AACT;AACA;AACA,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrE,QAAQ,IAAI,aAAa,EAAE;AAC3B,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpF,YAAY,MAAM,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAC7D;AACA;AACA,YAAY,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAChE,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzG;AACA;AACA,gBAAgB,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrD,YAAY,CAAC,MAAM;AACnB,gBAAgB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;AAC1E,YAAY,CAAC;AACb,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;AACA;AACA;AACA;AACA,IAAI,6BAA6B,GAAG;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO;AACrE;AACA;AACA;AACA,QAAQ,MAAM,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5E,QAAQ,IAAI,eAAe,GAAG,kBAAkB,CAAC;AACjD;AACA,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AACtB,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,OAAO,SAAS,EAAE;AAC1B,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrE;AACA,YAAY,IAAI,QAAQ,KAAK,SAAS,EAAE;AACxC;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5F,gBAAgB,IAAI,SAAS,EAAE;AAC/B;AACA,oBAAoB,IAAI,KAAK,KAAK,CAAC,EAAE;AACrC,wBAAwB,eAAe,GAAG,QAAQ,CAAC;AACnD,oBAAoB,CAAC,MAAM;AAC3B;AACA;AACA,wBAAwB,eAAe,GAAG,kBAAkB,CAAC;AAC7D,wBAAwB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;AACxD,4BAA4B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAClE,4BAA4B,IAAI,QAAQ,EAAE;AAC1C,gCAAgC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACzG,gCAAgC,IAAI,OAAO,EAAE;AAC7C,oCAAoC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY;AACpF,0CAA0C,OAAO,CAAC,WAAW;AAC7D,0CAA0C,OAAO,CAAC,YAAY,CAAC;AAC/D,oCAAoC,eAAe,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;AAClF,gCAAgC,CAAC;AACjC,4BAA4B,CAAC;AAC7B,wBAAwB,CAAC;AACzB,oBAAoB,CAAC;AACrB;AACA;AACA,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1H,gBAAgB,CAAC;AACjB,YAAY,CAAC;AACb;AACA,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACjD,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,OAAO,CAAC,EAAE,EAAE;AAChB,QAAQ,OAAO,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC;AAClF,IAAI,CAAC;AACL,IAAI,WAAW,CAAC,EAAE,EAAE;AACpB;AACA,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,EAAE;AAC7C,YAAY,OAAO,EAAE,CAAC,UAAU,CAAC;AACjC,QAAQ,CAAC,MAAM;AACf,YAAY,OAAO,EAAE,CAAC,SAAS,CAAC;AAChC,QAAQ,CAAC;AACT,IAAI,CAAC;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC;AACA,QAAQ,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC5D;AACA,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AACtF;AACA;AACA,YAAY,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK;AACnE,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3D,gBAAgB,IAAI,CAAC,SAAS,EAAE,OAAO;AACvC;AACA,gBAAgB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5F,gBAAgB,IAAI,SAAS,EAAE;AAC/B,oBAAoB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,YAAY;AACrE,0BAA0B,SAAS,CAAC,WAAW;AAC/C,0BAA0B,SAAS,CAAC,YAAY,CAAC;AACjD;AACA;AACA,oBAAoB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAC1D,oBAAoB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7E,gBAAgB,CAAC;AACjB,YAAY,CAAC,CAAC,CAAC;AACf;AACA;AACA,YAAY,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;AAC5D,QAAQ,CAAC;AACT;AACA,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACzC,IAAI,CAAC;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB;AACA,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAC9C,QAAQ,CAAC;AACT,IAAI,CAAC;AACL;;AC/VA,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAS1C;AACC,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,aAAa,EAAE,MAAM,CAAC;AACtB,IAAA,eAAe,EAAE,MAAK,EAAE,CAAC;AACzB,IAAA,YAAY,EAAE,MAAM,IAAI;AACxB,IAAA,aAAa,EAAE,MAAM,EAAE;AACvB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;AACpC,CAAA,CAAC;MAEW,oBAAoB,GAM5B,CAAC,EACF,QAAQ,EACR,SAAS,GAAG,YAAY,EACxB,KAAK,EACL,OAAO,GAAG,KAAK,EACf,aAAa,GAAG,EAAE,GACrB,KAAI;AACD,IAAA,MAAM,UAAU,GAAG,MAAM,CAAc,EAAE,CAAC;AAC1C,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErD,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAoB,EAAE,OAAe,KAAY;AACtF,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM;QACvC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7C,QAAA,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,oBAAoB,CAAC;AACrD,QAAA,OAAO,KAAK;IAChB,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAoB,KAAI;AAC/D,QAAA,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AAChF,QAAA,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,CAAC,KAAa,KAAsB;QACrD,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI;AAC5C,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,OAAoB,KAAY;AACnD,QAAA,OAAO,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC;AACzE,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,iBAAiB,GAAsB,EAAE;IAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC;IAE/D,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACnC,QAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;QAG7B,IAAI,KAAK,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,iBAAiB,CAAC,IAAI,CAClBA,GAAA,CAAC,YAAY,IAET,aAAa,EAAE,KAAK,EACpB,cAAc,EAAE,KAAK,GAAG,CAAC,EACzB,SAAS,EAAE,SAAS,EAAA,EAHf,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAIxB,CACL;QACL;AACJ,IAAA,CAAC,CAAC;;AAGF,IAAA,MAAM,mBAAmB,GAAkB;AACvC,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,GAAG,aAAa;KACnB;AAED,IAAA,QACIA,GAAA,CAAC,iBAAiB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE;AAC/B,YAAA,UAAU,EAAE,UAAU;YACtB,aAAa;YACb,eAAe;YACf,YAAY;YACZ,aAAa;YACb,SAAS;YACT,UAAU,EAAE,UAAU,CAAC,OAAO;AAC9B,YAAA,aAAa,EAAE,mBAAmB;SACrC,EAAA,QAAA,EACGA,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE;AACJ,gBAAA,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE,SAAS,KAAK,YAAY,GAAG,KAAK,GAAG,QAAQ;AAC5D,gBAAA,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,UAAU;AACpB,gBAAA,GAAG,KAAK;AACf,aAAA,EAAA,QAAA,EACI,iBAAiB,EAAA,CAChB,EAAA,CACmB;AAErC;AAGO,MAAM,eAAe,GAIvB,CAAC,EACF,QAAQ,EACR,OAAO,GAAG,GAAG;AACb;AACH,EAAA,KAAI;AACD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC;AAC7C,IAAA,MAAM,aAAa,GAAG,MAAM,CAAS,EAAE,CAAC;AACxC,IAAA,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAEnF,SAAS,CAAC,MAAK;QACX,IAAG,CAAC,QAAQ,CAAC,OAAO;YAAE;AACtB,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO;QAChC,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AACvD,QAAA,OAAO,MAAK;YACR,eAAe,CAAC,OAAO,CAAC;AAC5B,QAAA,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAE7C,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EACI,GAAG,EAAI,QAAQ,EACf,KAAK,EAAE;AACH,YAAA,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,SAAS,KAAK,YAAY,GAAG,OAAO,GAAG,SAAS;YAC1D,SAAS,EAAE,SAAS,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS;AACzD,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,UAAU;AACvB,SAAA,EAAA,QAAA,EAEDA,aAAK,KAAK,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAC,EAAA,QAAA,EACpC,QAAQ,EAAA,CACP,EAAA,CACJ;AAEd;AAEA,MAAM,YAAY,GAIb,CAAC,EACF,aAAa,EACb,cAAc,EACd,SAAS,GACZ,KAAI;AACD,IAAA,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC;AAC9C,IAAA,MAAM,eAAe,GAAG,MAAM,CAA6C,IAAI,CAAC;AAChF,IAAA,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAEjF,SAAS,CAAC,MAAK;;;QAGX,IAAI,UAAU,IAAI,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YACpD;QACJ;AAEA,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC;AAChD,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,cAAc,CAAC;AAClD,QAAA,IAAG,CAAC,YAAY,IAAI,CAAC,aAAa;YAAE;;AAGpC,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC;AACzB,eAAG,SAAS,KAAK;AACb,kBAAE,SAAS,CAAC,OAAO,CAAC;AACpB,kBAAE,SAAS,CAAC,OAAO,CAAC,YAAY;AACpC,eAAG,SAAS,KAAK,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAE7C,QAAA,eAAe,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC;YACzC,UAAU,EAAE,YAAY,CAAC,OAAO;YAChC,WAAW,EAAE,aAAa,CAAC,OAAO;YAClC,YAAY;YACZ,aAAa;YACb,cAAc;YACd,SAAS;AACT,YAAA,cAAc,EAAE,aAAa,CAAC,OAAO,IAAI,KAAK;AAC9C,YAAA,aAAa,EAAE;gBACX,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,SAAS,EAAE,aAAa,CAAC,SAAS;AACrC,aAAA;AACD,YAAA,UAAU;AACb,SAAA,CAAC;;AAGF,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO;QAClC,IAAI,UAAU,GAAG,KAAK;QACtB,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,MAAM,WAAW,GAAG,CAAC,CAAa,KAAI;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,cAAc,EAAE;YAClB,UAAU,GAAG,IAAI;AACjB,YAAA,QAAQ,GAAG,SAAS,KAAK,YAAY,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AAC7D,YAAA,IAAI,eAAe,CAAC,OAAO,EAAE;AACzB,gBAAA,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE;YACzC;AACJ,QAAA,CAAC;AACD,QAAA,MAAM,YAAY,GAAG,CAAC,CAAa,KAAI;AACnC,YAAA,IAAG,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,OAAO;gBAAE;AAC5C,YAAA,MAAM,UAAU,GAAG,SAAS,KAAK,YAAY,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;AACrE,YAAA,MAAM,KAAK,GAAG,UAAU,GAAG,QAAQ;AACnC,YAAA,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3C,QAAA,CAAC;QACD,MAAM,SAAS,GAAG,MAAK;AACnB,YAAA,IAAG,UAAU,IAAI,eAAe,CAAC,OAAO,EAAE;gBACtC,UAAU,GAAG,KAAK;AAClB,gBAAA,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE;YACvC;AACJ,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,CAAC;AACpD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;AAC/C,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AACtD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC;AACvD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AAClD,YAAA,IAAG,eAAe,CAAC,OAAO,EAAE;AACxB,gBAAA,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE;YACrC;AACJ,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAGvF,IAAA,MAAM,YAAY,GAAG,SAAS,KAAK,YAAY;AAC/C,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EACI,GAAG,EAAE,SAAS,EACd,KAAK,EAAE;AACH,YAAA,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM;YACrC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM;AACtC,YAAA,eAAe,EAAE,MAAM;YACvB,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW;AAChD,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,UAAU,EAAE,CAAC;AAChB,SAAA,EAAA,CACH;AAEV,CAAC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
@@ -1,5 +0,0 @@
1
- /**
2
- * 示例工具函数
3
- */
4
- export declare const exampleUtil: (value: string) => string;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAE3C,CAAC"}