{"version":3,"sources":["../../src/index.ts","../../src/types.ts","../../src/utils/calculate-coordinate-offset.ts","../../src/utils/collect-size-related-info.ts","../../src/utils/is-valid-number.ts","../../src/utils/get-next-size-related-info.ts","../../src/utils/bar-store.ts","../../src/utils/column-events.ts","../../src/utils/column-items-cache.ts","../../src/utils/disable-passive.ts","../../src/utils/is-solid-item.ts","../../src/utils/is-disabled-responsive.ts","../../src/utils/is-valid-type.ts","../../src/utils/parse-resizer-items.ts","../../src/resizer.ts","../../src/column-items/column-instance.ts","../../src/column-items/column-bar.ts","../../src/column-items/column-section.ts","../../src/column-resizer.ts"],"sourcesContent":["export * from './resizer';\nexport * from './column-resizer';\nexport * from './types';\n","export type Coordinate = {\n  x: number;\n  y: number;\n};\n\nexport enum ItemType {\n  BAR = 'BAR',\n  SECTION = 'SECTION',\n}\n\nexport type Trend = -1 | 0 | 1;\n\nexport enum BarActionType {\n  ACTIVATE = 'activate',\n  MOVE = 'move',\n  DEACTIVATE = 'deactivate',\n}\n\nexport type BarAction = {\n  type: BarActionType;\n  coordinate: Coordinate;\n  barIndex: number;\n};\n\nexport type SizeInfo = {\n  elm: HTMLElement;\n  isSolid: boolean;\n  currentSize: number;\n  maxSize?: number;\n  minSize?: number;\n  disableResponsive?: boolean;\n};\n\nexport type SizeRelatedInfo = {\n  discard?: boolean;\n  sizeInfoArray: SizeInfo[];\n  flexGrowRatio: number;\n};\n\nexport type ColumnResizerEventMap = {\n  'bar:click': null;\n  'bar:status-change': { isActive: boolean };\n  'section:size-change': { size: number };\n  'column:activate': null;\n  'column:after-resizing': null;\n};\n","import { Coordinate } from '../types';\n\nexport const DEFAULT_COORDINATE_OFFSET: Coordinate = { x: 0, y: 0 };\n\nexport function calculateCoordinateOffset(\n  current: Coordinate,\n  previous: Coordinate | null,\n): Coordinate {\n  if (previous) {\n    return {\n      x: current.x - previous.x,\n      y: current.y - previous.y,\n    };\n  } else {\n    return DEFAULT_COORDINATE_OFFSET;\n  }\n}\n","import { SizeInfo, SizeRelatedInfo } from '../types';\n\nexport function collectSizeRelatedInfo() {\n  const sizeInfoArray: SizeInfo[] = [];\n  let responsiveChildCount = 0;\n  let responsiveContainerSize = 0;\n\n  return {\n    collect(sizeInfo: SizeInfo) {\n      sizeInfoArray.push(sizeInfo);\n\n      if (!sizeInfo.disableResponsive) {\n        responsiveChildCount += 1;\n        responsiveContainerSize += sizeInfo.currentSize;\n      }\n    },\n\n    getResult(): SizeRelatedInfo {\n      return {\n        sizeInfoArray,\n        flexGrowRatio: responsiveChildCount / responsiveContainerSize,\n      };\n    },\n  };\n}\n","export function isValidNumber(num?: unknown): num is number {\n  return Number.isFinite(num) && (num as number) > 0;\n}\n","import { SizeInfo, SizeRelatedInfo, Trend } from '../types';\n\nimport { collectSizeRelatedInfo } from './collect-size-related-info';\nimport { isValidNumber } from './is-valid-number';\n\nexport function getNextSizeRelatedInfo(\n  barIndex: number,\n  offset: number,\n  sizeInfoArray: SizeInfo[],\n  flipResizeMoveDirection: boolean | undefined,\n): SizeRelatedInfo {\n  const { collect, getResult } = collectSizeRelatedInfo();\n  const trend = flipResizeMoveDirection ? 1 : -1;\n\n  const leftResult = resize(barIndex, offset, trend, sizeInfoArray);\n  const rightResult = resize(barIndex, -offset, -trend as Trend, sizeInfoArray);\n\n  const leftUsedOffset = offset - leftResult.remainingOffset;\n  const rightUsedOffset = -offset - rightResult.remainingOffset;\n\n  function collectAll(left: SizeInfo[], right: SizeInfo[]) {\n    left.forEach(collect);\n    collect(sizeInfoArray[barIndex]);\n    right.forEach(collect);\n  }\n\n  if (leftUsedOffset === -rightUsedOffset) {\n    collectAll(leftResult.sizeInfoArray, rightResult.sizeInfoArray);\n  } else if (Math.abs(leftUsedOffset) < Math.abs(rightUsedOffset)) {\n    // left side sections was limited\n    const newRightResult = resize(barIndex, -leftUsedOffset, -trend as Trend, sizeInfoArray);\n    collectAll(leftResult.sizeInfoArray, newRightResult.sizeInfoArray);\n  } else {\n    // right side sections was limited\n    const newLeftResult = resize(barIndex, -rightUsedOffset, trend, sizeInfoArray);\n    collectAll(newLeftResult.sizeInfoArray, rightResult.sizeInfoArray);\n  }\n\n  return getResult();\n}\n\nfunction resize(\n  barIndex: number,\n  offset: number,\n  trend: Trend,\n  sizeInfoArray: SizeInfo[],\n): { sizeInfoArray: SizeInfo[]; remainingOffset: number } {\n  const newSizeInfoArray: SizeInfo[] = [];\n  let prevRemainingOffset = offset;\n\n  for (\n    let sectionIndex = barIndex + trend;\n    isValidSectionIndex(sectionIndex);\n    sectionIndex += trend\n  ) {\n    if (prevRemainingOffset) {\n      const { sizeInfo, remainingOffset } = doResize(\n        prevRemainingOffset,\n        sizeInfoArray[sectionIndex],\n      );\n\n      prevRemainingOffset = remainingOffset;\n      collect(sizeInfo);\n    } else {\n      collect(sizeInfoArray[sectionIndex]);\n    }\n  }\n\n  function collect(sizeInfo: SizeInfo) {\n    if (trend === -1) {\n      newSizeInfoArray.unshift(sizeInfo);\n    } else {\n      newSizeInfoArray.push(sizeInfo);\n    }\n  }\n\n  function isValidSectionIndex(sectionID: number): boolean {\n    if (trend === -1) {\n      return sectionID >= 0;\n    } else {\n      return sectionID <= sizeInfoArray.length - 1;\n    }\n  }\n\n  return {\n    sizeInfoArray: newSizeInfoArray,\n    remainingOffset: prevRemainingOffset,\n  };\n}\n\nfunction doResize(\n  offset: number,\n  sizeInfo: SizeInfo,\n): { remainingOffset: number; sizeInfo: SizeInfo } {\n  if (sizeInfo.isSolid) {\n    return {\n      remainingOffset: offset,\n      sizeInfo,\n    };\n  }\n\n  const { nextSize, remainingOffset } = filterSize(sizeInfo.currentSize + offset, sizeInfo);\n\n  return {\n    sizeInfo: { ...sizeInfo, currentSize: nextSize },\n    remainingOffset,\n  };\n}\n\nfunction filterSize(\n  nextSize: number,\n  { maxSize, minSize = 0 }: SizeInfo,\n): { nextSize: number; remainingOffset: number } {\n  if (nextSize < minSize) {\n    return {\n      nextSize: minSize,\n      remainingOffset: nextSize - minSize,\n    };\n  }\n\n  if (isValidNumber(maxSize) && nextSize > maxSize) {\n    return {\n      nextSize: maxSize,\n      remainingOffset: nextSize - maxSize,\n    };\n  }\n\n  return {\n    nextSize,\n    remainingOffset: 0,\n  };\n}\n","import { BarAction, BarActionType, Coordinate, SizeInfo, SizeRelatedInfo } from '../types';\n\nimport { DEFAULT_COORDINATE_OFFSET } from './calculate-coordinate-offset';\nimport { getNextSizeRelatedInfo } from './get-next-size-related-info';\n\nexport interface BarActionScanResult extends SizeRelatedInfo {\n  barIndex: number;\n  offset: number;\n  type: BarActionType;\n  originalCoordinate: Coordinate;\n  defaultSizeInfoArray: SizeInfo[];\n}\n\ninterface ScanBarActionConfig {\n  getSizeRelatedInfo: () => SizeRelatedInfo;\n  calculateOffset: (current: Coordinate, original: Coordinate) => number;\n  flipResizeMoveDirection?: boolean;\n}\n\nconst DEFAULT_BAR_ACTION_SCAN_RESULT: BarActionScanResult = {\n  barIndex: -1,\n  offset: 0,\n  type: BarActionType.DEACTIVATE,\n  originalCoordinate: DEFAULT_COORDINATE_OFFSET,\n  defaultSizeInfoArray: [],\n  sizeInfoArray: [],\n  discard: true,\n  flexGrowRatio: 0,\n};\n\ntype Callback = (state: BarActionScanResult) => void;\n\nexport function createBarStore(config: ScanBarActionConfig) {\n  let currentState = DEFAULT_BAR_ACTION_SCAN_RESULT;\n  const callbackSet = new Set<Callback>();\n\n  return {\n    dispatch(action: BarAction) {\n      currentState = (() => {\n        const result = {\n          barIndex: action.barIndex,\n          type: action.type,\n        };\n\n        switch (action.type) {\n          case BarActionType.ACTIVATE:\n            const { sizeInfoArray, flexGrowRatio } = config.getSizeRelatedInfo();\n\n            return {\n              ...DEFAULT_BAR_ACTION_SCAN_RESULT,\n              ...result,\n              originalCoordinate: action.coordinate,\n              defaultSizeInfoArray: sizeInfoArray,\n              sizeInfoArray,\n              flexGrowRatio,\n            };\n          case BarActionType.MOVE:\n            const offset = config.calculateOffset(\n              action.coordinate,\n              currentState.originalCoordinate,\n            );\n\n            return {\n              ...result,\n              ...getNextSizeRelatedInfo(\n                action.barIndex,\n                offset,\n                currentState.defaultSizeInfoArray,\n                config.flipResizeMoveDirection,\n              ),\n              offset,\n              originalCoordinate: currentState.originalCoordinate,\n              defaultSizeInfoArray: currentState.defaultSizeInfoArray,\n              discard: false,\n            };\n          case BarActionType.DEACTIVATE:\n            return DEFAULT_BAR_ACTION_SCAN_RESULT;\n        }\n      })();\n\n      callbackSet.forEach((callback) => callback(currentState));\n    },\n\n    subscribe(callback: Callback) {\n      callbackSet.add(callback);\n\n      return () => callbackSet.delete(callback);\n    },\n\n    unsubscribeAll() {\n      callbackSet.clear();\n    },\n  };\n}\n","import { ColumnResizerEventMap } from '../types';\n\ntype DisposeFn = () => void;\n\nexport function dispatchResizerEvent<E extends Element, K extends keyof ColumnResizerEventMap>(\n  elm: E | null,\n  key: K,\n  detail: ColumnResizerEventMap[K],\n) {\n  elm?.dispatchEvent(new CustomEvent(key, { detail }));\n}\n\nexport class ResizerEventHub {\n  private disposeFnSet = new Set<DisposeFn>();\n\n  watchResizerEvent = <E extends Element, K extends keyof ColumnResizerEventMap>(\n    elm: E | null,\n    key: K,\n    callback: (event: CustomEvent<ColumnResizerEventMap[K]>) => void,\n  ): DisposeFn => {\n    elm?.addEventListener(key, callback as EventListener);\n\n    const disposeFn = () => elm?.removeEventListener(key, callback as EventListener);\n\n    this.disposeFnSet.add(disposeFn);\n\n    return disposeFn;\n  };\n\n  reset = () => {\n    this.disposeFnSet.forEach((dispose) => dispose());\n    this.disposeFnSet.clear();\n  };\n}\n","import type { ColumnInstance } from '../column-items/column-instance';\n\nexport type ResizerItems = ReadonlyArray<ColumnInstance>;\n\nexport class ColumnItemsCache {\n  private infoMap = new Map<ColumnInstance['elm'], { item: ColumnInstance; index: number }>();\n  private items: ResizerItems = [];\n\n  update(items: ResizerItems) {\n    this.infoMap.clear();\n    this.items.forEach((item) => item.destroy());\n    this.items = items;\n\n    items.forEach((item, index) => {\n      this.infoMap.set(item.elm, { item, index });\n    });\n  }\n\n  reset() {\n    this.update([]);\n  }\n\n  getItems() {\n    return this.items;\n  }\n\n  getItem(elm: ColumnInstance['elm']): ColumnInstance | null {\n    return this.infoMap.get(elm)?.item ?? null;\n  }\n\n  getItemIndex(elm: ColumnInstance['elm']): number | null {\n    return this.infoMap.get(elm)?.index ?? null;\n  }\n}\n","export let DISABLE_PASSIVE: boolean | AddEventListenerOptions = true;\n\ntry {\n  // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#safely_detecting_option_support\n  window.addEventListener('test', null, {\n    get passive() {\n      DISABLE_PASSIVE = { passive: false };\n      return true;\n    },\n  });\n} catch {}\n","import { ColumnSectionConfig } from '../column-items';\n\nimport { isValidNumber } from './is-valid-number';\n\nexport function isSolidItem({ size }: ColumnSectionConfig): boolean {\n  return isValidNumber(size);\n}\n","import { ColumnSectionConfig } from '../column-items';\n\nimport { isSolidItem } from './is-solid-item';\n\nexport function isDisabledResponsive(config: ColumnSectionConfig): boolean {\n  const { disableResponsive } = config;\n\n  if (isSolidItem(config) && disableResponsive === undefined) {\n    return true;\n  } else {\n    return !!disableResponsive;\n  }\n}\n","import { ItemType } from '../types';\n\nexport function isValidType(type: string | null): type is ItemType {\n  return !!type && type in ItemType;\n}\n","import { ItemType } from '../types';\n\nimport { isValidType } from './is-valid-type';\n\nexport type ParsedResizerItem = {\n  type: ItemType;\n  elm: HTMLElement;\n};\n\nexport type ParsedResizerItems = ParsedResizerItem[];\n\nexport function resizerItemAttributes<T>(type: ItemType) {\n  return (config: T) => ({\n    'data-item-type': type,\n    'data-item-config': JSON.stringify(config),\n  });\n}\n\nexport function parseResizerItems(container: HTMLElement): ParsedResizerItems {\n  return Array.from(container.childNodes)\n    .map((elm) => {\n      if (!(elm instanceof HTMLElement)) return null;\n\n      const type = elm.getAttribute('data-item-type');\n\n      if (isValidType(type)) {\n        return { type, elm };\n      } else {\n        return null;\n      }\n    })\n    .filter(<T>(item: T): item is Exclude<T, null> => !!item);\n}\n\nexport function parseItemConfig({ elm }: { elm: HTMLElement }): Record<string, unknown> {\n  try {\n    const config = JSON.parse(elm.getAttribute('data-item-config') ?? '');\n    return config && typeof config === 'object' ? config : {};\n  } catch {\n    return {};\n  }\n}\n","import { SizeRelatedInfo } from './types';\nimport { BarActionScanResult, getNextSizeRelatedInfo } from './utils';\n\ntype ResizeResult = SizeRelatedInfo | BarActionScanResult;\n\nfunction getBarIndex(indexOfBar: number): number {\n  return indexOfBar * 2 + 1;\n}\n\nfunction getSectionIndex(indexOfSection: number): number {\n  return indexOfSection * 2;\n}\n\nexport class Resizer {\n  private isDiscarded = false;\n\n  constructor(private resizeResult: ResizeResult) {}\n\n  resizeSection(indexOfSection: number, config: { toSize: number; preferMoveLeftBar?: boolean }) {\n    if (this.isDiscarded) {\n      return;\n    }\n\n    const sectionID = getSectionIndex(indexOfSection);\n    const currentSize = this.getSize(sectionID);\n\n    if (currentSize >= 0 && config.toSize >= 0) {\n      const offset = config.toSize - currentSize;\n\n      if (sectionID === this.resizeResult.sizeInfoArray.length - 1 || config.preferMoveLeftBar) {\n        this.moveBar(indexOfSection - 1, { withOffset: -offset });\n      } else {\n        this.moveBar(indexOfSection, { withOffset: offset });\n      }\n    }\n  }\n\n  moveBar(indexOfBar: number, config: { withOffset: number }) {\n    if (this.isDiscarded) {\n      return;\n    }\n\n    this.resizeResult = getNextSizeRelatedInfo(\n      getBarIndex(indexOfBar),\n      config.withOffset,\n      this.resizeResult.sizeInfoArray,\n      undefined,\n    );\n  }\n\n  discard() {\n    this.isDiscarded = true;\n  }\n\n  isSectionResized(indexOfSection: number): boolean {\n    const sectionID = getSectionIndex(indexOfSection);\n\n    if ('defaultSizeInfoArray' in this.resizeResult) {\n      return (\n        this.getSize(sectionID) !== this.resizeResult.defaultSizeInfoArray[sectionID].currentSize\n      );\n    } else {\n      return false;\n    }\n  }\n\n  isBarActivated(indexOfBar: number): boolean {\n    if ('barIndex' in this.resizeResult) {\n      return this.resizeResult.barIndex === getBarIndex(indexOfBar);\n    } else {\n      return false;\n    }\n  }\n\n  getSectionSize(indexOfSection: number) {\n    return this.getSize(getSectionIndex(indexOfSection));\n  }\n\n  getResult(): SizeRelatedInfo {\n    return { ...this.resizeResult, discard: this.isDiscarded };\n  }\n\n  getTotalSize(): number {\n    return this.resizeResult.sizeInfoArray\n      .filter((sizeInfo, index) => sizeInfo && index % 2 === 0)\n      .reduce((total, { currentSize }) => total + currentSize, 0);\n  }\n\n  private getSize(index: number): number | -1 {\n    const sizeInfo = this.resizeResult.sizeInfoArray[index];\n    return sizeInfo ? sizeInfo.currentSize : -1;\n  }\n}\n","import { ItemType } from '../types';\n\nexport abstract class ColumnInstance<Config = unknown> {\n  private _config: Config;\n  private _observer: MutationObserver;\n\n  get config(): Config {\n    return this._config;\n  }\n\n  protected constructor(\n    public readonly type: ItemType,\n    public readonly elm: HTMLElement,\n    private readonly getConfig: () => Config,\n  ) {\n    this._config = this.getConfig();\n    this._observer = new MutationObserver(() => (this._config = this.getConfig()));\n    this._observer.observe(elm, { attributes: true, attributeFilter: ['data-item-config'] });\n  }\n\n  destroy() {\n    this._observer.disconnect();\n  }\n}\n","import { BarAction, BarActionType, Coordinate, ItemType } from '../types';\nimport {\n  DISABLE_PASSIVE,\n  ParsedResizerItem,\n  dispatchResizerEvent,\n  isValidNumber,\n  parseItemConfig,\n} from '../utils';\n\nimport { ColumnInstance } from './column-instance';\n\nexport type DispatchBarAction = (elm: HTMLElement, action: Omit<BarAction, 'barIndex'>) => void;\n\nexport type ColumnBarConfig = {\n  size: number;\n};\n\ntype ValidElmEventKey = {\n  [K in keyof HTMLElementEventMap]: K extends `${'touch' | 'mouse'}${string}` ? K : never;\n}[keyof HTMLElementEventMap];\n\ntype ValidElm = {\n  addEventListener<K extends ValidElmEventKey>(\n    type: K,\n    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,\n    options?: boolean | AddEventListenerOptions,\n  ): void;\n  removeEventListener<K extends ValidElmEventKey>(\n    type: K,\n    listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any,\n    options?: boolean | EventListenerOptions,\n  ): void;\n};\n\nexport class ColumnBar extends ColumnInstance<ColumnBarConfig> {\n  static getStyle({ size }: ColumnBarConfig) {\n    return {\n      flex: `0 0 ${size}px`,\n    };\n  }\n\n  private isActive = false;\n  private isValidClick = true;\n\n  constructor(\n    item: ParsedResizerItem,\n    private readonly dispatchBarAction: DispatchBarAction,\n  ) {\n    super(ItemType.BAR, item.elm, () => getConfig(item));\n\n    const disposeList = [\n      this.attachListener(this.elm, 'mousedown', BarActionType.ACTIVATE),\n      this.attachListener(document, 'mousemove', BarActionType.MOVE),\n      this.attachListener(document, 'mouseup', BarActionType.DEACTIVATE),\n\n      this.attachListener(this.elm, 'touchstart', BarActionType.ACTIVATE, DISABLE_PASSIVE),\n      this.attachListener(document, 'touchmove', BarActionType.MOVE, DISABLE_PASSIVE),\n      this.attachListener(document, 'touchend', BarActionType.DEACTIVATE),\n      this.attachListener(document, 'touchcancel', BarActionType.DEACTIVATE),\n    ];\n\n    this.destroy = () => {\n      super.destroy();\n      disposeList.forEach((dispose) => dispose());\n    };\n  }\n\n  private attachListener<K extends ValidElmEventKey>(\n    elm: ValidElm,\n    event: K,\n    type: BarActionType,\n    options?: boolean | AddEventListenerOptions,\n  ) {\n    const handler = (event: MouseEvent | TouchEvent) => {\n      this.disableUserSelectIfResizing(event, type);\n      const { clientX: x, clientY: y } = ('touches' in event ? event.touches[0] : event) || {\n        clientX: 0,\n        clientY: 0,\n      };\n      this.triggerAction(this.elm, type, { x, y });\n    };\n\n    elm.addEventListener(event, handler, options);\n\n    return () => elm.removeEventListener(event, handler, options);\n  }\n\n  private disableUserSelectIfResizing(event: MouseEvent | TouchEvent, type: BarActionType) {\n    if (this.isActive || type === BarActionType.ACTIVATE) {\n      event.preventDefault();\n    }\n  }\n\n  private triggerAction(elm: HTMLElement, type: BarActionType, coordinate: Coordinate) {\n    if (this.isActive || type === BarActionType.ACTIVATE) {\n      this.dispatchBarAction(elm, { type, coordinate });\n    }\n\n    if (this.isActive && this.isValidClick && type === BarActionType.DEACTIVATE) {\n      this.isValidClick = false; // avoid trigger twice on mobile.\n      // touch and click\n      dispatchResizerEvent(elm, 'bar:click', null);\n    }\n\n    this.updateStatusIfNeed(elm, type);\n    this.updateClickStatus(type);\n  }\n\n  private updateStatusIfNeed(elm: HTMLElement, type: BarActionType) {\n    const onStatusChanged = (isActive: boolean) => {\n      if (this.isActive !== isActive) {\n        this.isActive = isActive;\n        dispatchResizerEvent(elm, 'bar:status-change', { isActive });\n      }\n    };\n\n    if (type === BarActionType.ACTIVATE) {\n      onStatusChanged(true);\n    } else if (type === BarActionType.DEACTIVATE) {\n      onStatusChanged(false);\n    }\n  }\n\n  private updateClickStatus(type: BarActionType) {\n    if (this.isActive) {\n      if (type === BarActionType.ACTIVATE) {\n        this.isValidClick = true;\n      } else if (type === BarActionType.MOVE) {\n        this.isValidClick = false;\n      }\n    }\n  }\n}\n\nfunction getConfig(item: Pick<ParsedResizerItem, 'elm'>): ColumnBarConfig {\n  const { size } = parseItemConfig(item);\n\n  return {\n    size: isValidNumber(size) ? size : 10,\n  };\n}\n","import { ItemType, SizeInfo } from '../types';\nimport { ParsedResizerItem, dispatchResizerEvent, isValidNumber, parseItemConfig } from '../utils';\n\nimport { ColumnInstance } from './column-instance';\n\nexport type ColumnSectionConfig = {\n  size?: number;\n  defaultSize?: number;\n  maxSize?: number;\n  minSize?: number;\n  disableResponsive?: boolean;\n};\n\nexport class ColumnSection extends ColumnInstance<ColumnSectionConfig> {\n  static getStyle({ maxSize, minSize }: ColumnSectionConfig, vertical: boolean) {\n    const toCSSSize = (size?: number) => (isValidNumber(size) ? `${size}px` : undefined);\n\n    return {\n      overflow: 'hidden',\n      [vertical ? 'maxHeight' : 'maxWidth']: toCSSSize(maxSize),\n      [vertical ? 'minHeight' : 'minWidth']: toCSSSize(minSize),\n    };\n  }\n\n  private sizeInfo: SizeInfo | null = null;\n  private flexGrowRatio = 0;\n\n  constructor(item: ParsedResizerItem) {\n    super(ItemType.SECTION, item.elm, () => getConfig(item));\n\n    this.updateStyle();\n  }\n\n  update({ sizeInfo, flexGrowRatio }: { sizeInfo: SizeInfo; flexGrowRatio: number }) {\n    this.sizeInfo = sizeInfo;\n    this.flexGrowRatio = flexGrowRatio;\n\n    this.updateStyle();\n    dispatchResizerEvent(this.elm, 'section:size-change', { size: sizeInfo.currentSize });\n  }\n\n  private updateStyle() {\n    const { flexGrow, flexShrink, flexBasis } = this.getStyle();\n    this.elm.style.flexGrow = `${flexGrow}`;\n    this.elm.style.flexShrink = `${flexShrink}`;\n    this.elm.style.flexBasis = `${flexBasis}px`;\n  }\n\n  private getStyle() {\n    const flexShrink = isValidNumber(this.config.size) ? 0 : this.config.disableResponsive ? 1 : 0;\n\n    if (this.sizeInfo) {\n      const { disableResponsive, currentSize } = this.sizeInfo;\n\n      return {\n        flexShrink,\n        flexGrow: disableResponsive ? 0 : this.flexGrowRatio * currentSize,\n        flexBasis: disableResponsive ? currentSize : 0,\n      };\n    } else {\n      const size = this.config.size || this.config.defaultSize;\n\n      if (isValidNumber(size)) {\n        return { flexShrink, flexGrow: 0, flexBasis: size };\n      } else {\n        return { flexShrink, flexGrow: 1, flexBasis: 0 };\n      }\n    }\n  }\n}\n\nfunction getConfig(item: Pick<ParsedResizerItem, 'elm'>): ColumnSectionConfig {\n  const { size, defaultSize, maxSize, minSize, disableResponsive } = parseItemConfig(item);\n\n  return {\n    size: isValidNumber(size) ? size : undefined,\n    defaultSize: isValidNumber(defaultSize) ? defaultSize : undefined,\n    maxSize: isValidNumber(maxSize) ? maxSize : undefined,\n    minSize: isValidNumber(minSize) ? minSize : undefined,\n    disableResponsive: !!disableResponsive,\n  };\n}\n","import {\n  ColumnBar,\n  ColumnBarConfig,\n  ColumnSection,\n  ColumnSectionConfig,\n  DispatchBarAction,\n} from './column-items';\nimport { Resizer } from './resizer';\nimport { BarActionType, ItemType, SizeRelatedInfo } from './types';\nimport {\n  BarActionScanResult,\n  ColumnItemsCache,\n  ResizerEventHub,\n  ResizerItems,\n  calculateCoordinateOffset,\n  collectSizeRelatedInfo,\n  createBarStore,\n  dispatchResizerEvent,\n  isDisabledResponsive,\n  isSolidItem,\n  parseResizerItems,\n  resizerItemAttributes,\n} from './utils';\n\nexport type { ColumnSectionConfig, ColumnBarConfig };\n\nexport type ColumnResizerConfig = {\n  vertical: boolean;\n  rtl?: boolean;\n  beforeApplyResizer?: (resizer: Resizer) => void;\n};\n\nexport class ColumnResizer {\n  styles = {\n    container: <T>(style?: T) =>\n      ({\n        ...style,\n        display: 'flex',\n        flexDirection: this.direction,\n      }) as const,\n\n    section: <T>(config: ColumnSectionConfig, style?: T) => ({\n      ...style,\n      ...ColumnSection.getStyle(config, this.config.vertical),\n    }),\n\n    bar: <T>(config: ColumnBarConfig, style?: T) => ({\n      ...style,\n      ...ColumnBar.getStyle(config),\n    }),\n  };\n\n  attributes = {\n    bar: resizerItemAttributes(ItemType.BAR),\n    section: resizerItemAttributes(ItemType.SECTION),\n  };\n\n  private itemsCache = new ColumnItemsCache();\n  private eventHub = new ResizerEventHub();\n\n  private container: HTMLElement | null = null;\n\n  private barStore: ReturnType<typeof createBarStore>;\n\n  private get axis() {\n    return this.config.vertical ? 'y' : 'x';\n  }\n\n  private get dimension() {\n    return this.config.vertical ? 'height' : 'width';\n  }\n\n  private get direction() {\n    return this.config.vertical ? 'column' : 'row';\n  }\n\n  get on() {\n    return this.eventHub.watchResizerEvent;\n  }\n\n  constructor(public readonly config: Readonly<ColumnResizerConfig>) {\n    this.barStore = createBarStore({\n      calculateOffset: (current, original) =>\n        calculateCoordinateOffset(current, original)[this.axis],\n      getSizeRelatedInfo: () => this.makeSizeInfos(),\n      flipResizeMoveDirection: config.rtl && !config.vertical,\n    });\n  }\n\n  init(container: HTMLElement | null) {\n    this.dispose();\n    this.container = container;\n\n    if (container) {\n      this.itemsCache.update(\n        parseResizerItems(container).map((item) => {\n          switch (item.type) {\n            case ItemType.BAR:\n              return new ColumnBar(item, this.dispatchBarAction);\n            case ItemType.SECTION:\n              return new ColumnSection(item);\n          }\n        }),\n      );\n\n      this.initStyles(container, this.itemsCache.getItems());\n      this.sizeRelatedInfoChange(this.makeSizeInfos());\n\n      this.barStore.subscribe((state) => {\n        this.monitorBarStatusChanges(state);\n        this.sizeRelatedInfoChange(state);\n      });\n    }\n  }\n\n  dispose() {\n    this.container = null;\n    this.itemsCache.reset();\n    this.barStore.unsubscribeAll();\n    this.eventHub.reset();\n  }\n\n  getResizer(): Resizer {\n    return new Resizer(this.makeSizeInfos());\n  }\n\n  applyResizer(resizer: Resizer): void {\n    this.sizeRelatedInfoChange(resizer.getResult());\n  }\n\n  private dispatchBarAction: DispatchBarAction = (elm, action) => {\n    const barIndex = this.itemsCache.getItemIndex(elm);\n\n    if (barIndex) {\n      this.barStore.dispatch({ ...action, barIndex });\n    }\n  };\n\n  private sizeRelatedInfoChange(info: SizeRelatedInfo | BarActionScanResult) {\n    if (info.discard) return;\n\n    info = (() => {\n      if (typeof this.config.beforeApplyResizer === 'function') {\n        const resizer = new Resizer(info);\n        this.config.beforeApplyResizer(resizer);\n        return resizer.getResult();\n      } else {\n        return info;\n      }\n    })();\n\n    if (info.discard) return;\n\n    info.sizeInfoArray.forEach((sizeInfo) => {\n      const item = this.itemsCache.getItem(sizeInfo.elm);\n\n      if (item instanceof ColumnSection) {\n        item.update({ sizeInfo, flexGrowRatio: info.flexGrowRatio });\n      }\n    });\n  }\n\n  private monitorBarStatusChanges({ type }: BarActionScanResult) {\n    switch (type) {\n      case BarActionType.ACTIVATE:\n        return dispatchResizerEvent(this.container, 'column:activate', null);\n      case BarActionType.DEACTIVATE:\n        return dispatchResizerEvent(this.container, 'column:after-resizing', null);\n      default:\n        return;\n    }\n  }\n\n  private makeSizeInfos(): SizeRelatedInfo {\n    const { collect, getResult } = collectSizeRelatedInfo();\n\n    this.itemsCache.getItems().forEach((item) => {\n      if (item instanceof ColumnBar) {\n        collect({\n          elm: item.elm,\n          disableResponsive: true,\n          isSolid: true,\n          currentSize: item.elm.getBoundingClientRect()[this.dimension],\n        });\n      }\n\n      if (item instanceof ColumnSection) {\n        collect({\n          elm: item.elm,\n          maxSize: item.config.maxSize,\n          minSize: item.config.minSize,\n          disableResponsive: isDisabledResponsive(item.config),\n          isSolid: isSolidItem(item.config),\n          currentSize: item.elm.getBoundingClientRect()[this.dimension],\n        });\n      }\n    });\n\n    return getResult();\n  }\n\n  private initStyles(container: HTMLElement, items: ResizerItems) {\n    Object.assign(container.style, this.styles.container());\n\n    items.forEach((item) => {\n      if (item instanceof ColumnBar) {\n        Object.assign(item.elm.style, this.styles.bar(item.config));\n      }\n\n      if (item instanceof ColumnSection) {\n        Object.assign(item.elm.style, this.styles.section(item.config));\n      }\n    });\n  }\n}\n"],"mappings":"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","names":["src_exports","__export","BarActionType","ColumnResizer","ItemType","Resizer","__toCommonJS","ItemType","BarActionType","DEFAULT_COORDINATE_OFFSET","calculateCoordinateOffset","current","previous","collectSizeRelatedInfo","sizeInfoArray","responsiveChildCount","responsiveContainerSize","sizeInfo","isValidNumber","num","getNextSizeRelatedInfo","barIndex","offset","sizeInfoArray","flipResizeMoveDirection","collect","getResult","collectSizeRelatedInfo","trend","leftResult","resize","rightResult","leftUsedOffset","rightUsedOffset","collectAll","left","right","newRightResult","newLeftResult","newSizeInfoArray","prevRemainingOffset","sectionIndex","isValidSectionIndex","sizeInfo","remainingOffset","doResize","sectionID","nextSize","filterSize","__spreadProps","__spreadValues","maxSize","minSize","isValidNumber","DEFAULT_BAR_ACTION_SCAN_RESULT","DEFAULT_COORDINATE_OFFSET","createBarStore","config","currentState","callbackSet","action","result","sizeInfoArray","flexGrowRatio","__spreadProps","__spreadValues","offset","getNextSizeRelatedInfo","callback","dispatchResizerEvent","elm","key","detail","ResizerEventHub","__publicField","callback","disposeFn","dispose","ColumnItemsCache","__publicField","items","item","index","elm","_a","_b","DISABLE_PASSIVE","e","isSolidItem","size","isValidNumber","isDisabledResponsive","config","disableResponsive","isSolidItem","isValidType","type","ItemType","resizerItemAttributes","type","config","parseResizerItems","container","elm","isValidType","item","parseItemConfig","_a","e","getBarIndex","indexOfBar","getSectionIndex","indexOfSection","Resizer","resizeResult","__publicField","config","sectionID","currentSize","offset","getNextSizeRelatedInfo","__spreadProps","__spreadValues","sizeInfo","index","total","ColumnInstance","type","elm","getConfig","__publicField","ColumnBar","ColumnInstance","item","dispatchBarAction","getConfig","__publicField","disposeList","DISABLE_PASSIVE","dispose","size","elm","event","type","options","handler","x","y","coordinate","dispatchResizerEvent","onStatusChanged","isActive","parseItemConfig","isValidNumber","ColumnSection","ColumnInstance","item","getConfig","__publicField","maxSize","minSize","vertical","toCSSSize","size","isValidNumber","sizeInfo","flexGrowRatio","dispatchResizerEvent","flexGrow","flexShrink","flexBasis","disableResponsive","currentSize","defaultSize","parseItemConfig","ColumnResizer","config","__publicField","style","__spreadProps","__spreadValues","ColumnSection","ColumnBar","resizerItemAttributes","ColumnItemsCache","ResizerEventHub","elm","action","barIndex","createBarStore","current","original","calculateCoordinateOffset","container","parseResizerItems","item","state","Resizer","resizer","info","sizeInfo","type","dispatchResizerEvent","collect","getResult","collectSizeRelatedInfo","isDisabledResponsive","isSolidItem","items"]}