{"version":3,"file":"layout.mjs","names":["useResizeObserver","computed","inject","onActivated","onBeforeUnmount","onDeactivated","onMounted","provide","reactive","ref","shallowRef","convertToUnit","findChildrenWithProvide","getCurrentInstance","getUid","propsFactory","UntitledLayoutKey","Symbol","UntitledLayoutItemKey","ROOT_ZINDEX","makeLayoutProps","overlaps","type","Array","_default","fullHeight","Boolean","makeLayoutItemProps","name","String","order","Number","absolute","useLayout","layout","Error","getLayoutItem","mainRect","mainStyles","useLayoutItem","options","_options$id","id","concat","vm","isKeptAlive","value","_layout$register","register","_objectSpread","active","layoutItemStyles","layoutItemScrimStyles","unregister","layoutRect","generateLayers","positions","layoutSizes","activeItems","previousLayer","top","left","right","bottom","layers","layer","_iterator","_createForOfIteratorHelper","_step","s","n","done","position","get","amount","_defineProperty","parseInt","push","err","e","f","createLayout","props","parentLayout","rootZIndex","registered","Map","priorities","disabledTransitions","_useResizeObserver","resizeRef","contentRect","computedOverlaps","_props$overlaps","map","_iterator2","filter","item","includes","_step2","overlap","_overlap$split","split","_overlap$split2","_slicedToArray","topPosition","bottomPosition","topAmount","bottomAmount","set","uniquePriorities","_toConsumableArray","Set","values","p","sort","a","b","_iterator3","_step3","_loop","items","_priorities$get","apply","transitionsEnabled","from","some","length","undefined","transition","slice","_ref","index","size","find","rootVm","isMounted","_ref2","layoutSize","elementSize","disableTransitions","instances","vnode","instanceIndex","indexOf","splice","findIndex","i","zIndex","_objectSpread3","isHorizontal","isOppositeHorizontal","isOppositeVertical","styles","height","width","v","layoutClasses","layoutStyles","overflow","layoutRef"],"sources":["../../src/composables/layout.ts"],"sourcesContent":["// Composables\nimport { useResizeObserver } from '@/composables/resizeObserver'\n\n// Utilities\nimport {\n  computed,\n  inject,\n  onActivated,\n  onBeforeUnmount,\n  onDeactivated,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  shallowRef,\n} from 'vue'\nimport {\n  convertToUnit,\n  findChildrenWithProvide,\n  getCurrentInstance,\n  getUid,\n  propsFactory,\n} from '@/utils'\n\n// Types\nimport type {\n  ComponentInternalInstance,\n  CSSProperties,\n  InjectionKey,\n  Prop,\n  Ref,\n} from 'vue'\n\ntype Position = 'top' | 'left' | 'right' | 'bottom'\n\ninterface Layer {\n  top: number\n  bottom: number\n  left: number\n  right: number\n}\n\ninterface LayoutItem extends Layer {\n  id: string\n  size: number\n  position: Position\n}\n\nexport interface LayoutProvide {\n  register: (\n    vm: ComponentInternalInstance,\n    options: {\n      id: string\n      order: Ref<number>\n      position: Ref<Position>\n      layoutSize: Ref<number | string>\n      elementSize: Ref<number | string | undefined>\n      active: Ref<boolean>\n      disableTransitions?: Ref<boolean>\n      absolute: Ref<boolean | undefined>\n    }\n  ) => {\n    layoutItemStyles: Ref<CSSProperties>\n    layoutItemScrimStyles: Ref<CSSProperties>\n    zIndex: Ref<number>\n  }\n  unregister: (id: string) => void\n  mainRect: Ref<Layer>\n  mainStyles: Ref<CSSProperties>\n  getLayoutItem: (id: string) => LayoutItem | undefined\n  items: Ref<LayoutItem[]>\n  layoutRect: Ref<DOMRectReadOnly | undefined>\n  rootZIndex: Ref<number>\n}\n\nexport const UntitledLayoutKey: InjectionKey<LayoutProvide> =\n  Symbol.for('untitled:layout')\nexport const UntitledLayoutItemKey: InjectionKey<{ id: string }> = Symbol.for(\n  'untitled:layout-item'\n)\n\nconst ROOT_ZINDEX = 1000\n\nexport const makeLayoutProps = propsFactory(\n  {\n    overlaps: {\n      type: Array,\n      default: () => [],\n    } as Prop<string[]>,\n    fullHeight: Boolean,\n  },\n  'layout'\n)\n\n// Composables\nexport const makeLayoutItemProps = propsFactory(\n  {\n    name: {\n      type: String,\n    },\n    order: {\n      type: [Number, String],\n      default: 0,\n    },\n    absolute: Boolean,\n  },\n  'layout-item'\n)\n\nexport function useLayout() {\n  const layout = inject(UntitledLayoutKey)\n\n  if (!layout) throw new Error('[Untitled] Could not find injected layout')\n\n  return {\n    getLayoutItem: layout.getLayoutItem,\n    mainRect: layout.mainRect,\n    mainStyles: layout.mainStyles,\n  }\n}\n\nexport function useLayoutItem(options: {\n  id: string | undefined\n  order: Ref<number>\n  position: Ref<Position>\n  layoutSize: Ref<number | string>\n  elementSize: Ref<number | string | undefined>\n  active: Ref<boolean>\n  disableTransitions?: Ref<boolean>\n  absolute: Ref<boolean | undefined>\n}) {\n  const layout = inject(UntitledLayoutKey)\n\n  if (!layout) throw new Error('[Untitled] Could not find injected layout')\n\n  const id = options.id ?? `layout-item-${getUid()}`\n\n  const vm = getCurrentInstance('useLayoutItem')\n\n  provide(UntitledLayoutItemKey, { id })\n\n  const isKeptAlive = shallowRef(false)\n  onDeactivated(() => (isKeptAlive.value = true))\n  onActivated(() => (isKeptAlive.value = false))\n\n  const { layoutItemStyles, layoutItemScrimStyles } = layout.register(vm, {\n    ...options,\n    active: computed(() => (isKeptAlive.value ? false : options.active.value)),\n    id,\n  })\n\n  onBeforeUnmount(() => layout.unregister(id))\n\n  return {\n    layoutItemStyles,\n    layoutRect: layout.layoutRect,\n    layoutItemScrimStyles,\n  }\n}\n\nconst generateLayers = (\n  layout: string[],\n  positions: Map<string, Ref<Position>>,\n  layoutSizes: Map<string, Ref<number | string>>,\n  activeItems: Map<string, Ref<boolean>>\n): { id: string; layer: Layer }[] => {\n  let previousLayer: Layer = { top: 0, left: 0, right: 0, bottom: 0 }\n  const layers = [{ id: '', layer: { ...previousLayer } }]\n  for (const id of layout) {\n    const position = positions.get(id)\n    const amount = layoutSizes.get(id)\n    const active = activeItems.get(id)\n    if (!position || !amount || !active) continue\n\n    const layer = {\n      ...previousLayer,\n      [position.value]:\n        parseInt(previousLayer[position.value], 10) +\n        (active.value ? parseInt(amount.value, 10) : 0),\n    }\n\n    layers.push({\n      id,\n      layer,\n    })\n\n    previousLayer = layer\n  }\n\n  return layers\n}\n\nexport function createLayout(props: {\n  overlaps?: string[]\n  fullHeight?: boolean\n}) {\n  const parentLayout = inject(UntitledLayoutKey, null)\n  const rootZIndex = computed(() =>\n    parentLayout ? parentLayout.rootZIndex.value - 100 : ROOT_ZINDEX\n  )\n  const registered = ref<string[]>([])\n  const positions = reactive(new Map<string, Ref<Position>>())\n  const layoutSizes = reactive(new Map<string, Ref<number | string>>())\n  const priorities = reactive(new Map<string, Ref<number>>())\n  const activeItems = reactive(new Map<string, Ref<boolean>>())\n  const disabledTransitions = reactive(new Map<string, Ref<boolean>>())\n  const { resizeRef, contentRect: layoutRect } = useResizeObserver()\n\n  const computedOverlaps = computed(() => {\n    const map = new Map<string, { position: Position; amount: number }>()\n    const overlaps = props.overlaps ?? []\n    for (const overlap of overlaps.filter((item) => item.includes(':'))) {\n      const [top, bottom] = overlap.split(':')\n      if (!registered.value.includes(top) || !registered.value.includes(bottom))\n        continue\n\n      const topPosition = positions.get(top)\n      const bottomPosition = positions.get(bottom)\n      const topAmount = layoutSizes.get(top)\n      const bottomAmount = layoutSizes.get(bottom)\n\n      if (!topPosition || !bottomPosition || !topAmount || !bottomAmount)\n        continue\n\n      map.set(bottom, {\n        position: topPosition.value,\n        amount: parseInt(topAmount.value, 10),\n      })\n      map.set(top, {\n        position: bottomPosition.value,\n        amount: -parseInt(bottomAmount.value, 10),\n      })\n    }\n\n    return map\n  })\n\n  const layers = computed(() => {\n    const uniquePriorities = [\n      ...new Set([...priorities.values()].map((p) => p.value)),\n    ].sort((a, b) => a - b)\n    const layout = []\n    for (const p of uniquePriorities) {\n      const items = registered.value.filter(\n        (id) => priorities.get(id)?.value === p\n      )\n      layout.push(...items)\n    }\n    return generateLayers(layout, positions, layoutSizes, activeItems)\n  })\n\n  const transitionsEnabled = computed(() => {\n    return !Array.from(disabledTransitions.values()).some((ref) => ref.value)\n  })\n\n  const mainRect = computed(() => {\n    return layers.value[layers.value.length - 1].layer\n  })\n\n  const mainStyles = computed<CSSProperties>(() => {\n    return {\n      '--u-layout-left': convertToUnit(mainRect.value.left),\n      '--u-layout-right': convertToUnit(mainRect.value.right),\n      '--u-layout-top': convertToUnit(mainRect.value.top),\n      '--u-layout-bottom': convertToUnit(mainRect.value.bottom),\n      ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n    }\n  })\n\n  const items = computed(() => {\n    return layers.value.slice(1).map(({ id }, index) => {\n      const { layer } = layers.value[index]\n      const size = layoutSizes.get(id)\n      const position = positions.get(id)\n\n      return {\n        id,\n        ...layer,\n        size: Number(size!.value),\n        position: position!.value,\n      }\n    })\n  })\n\n  const getLayoutItem = (id: string) => {\n    return items.value.find((item) => item.id === id)\n  }\n\n  const rootVm = getCurrentInstance('createLayout')\n\n  const isMounted = shallowRef(false)\n  onMounted(() => {\n    isMounted.value = true\n  })\n\n  provide(UntitledLayoutKey, {\n    register: (\n      vm: ComponentInternalInstance,\n      {\n        id,\n        order,\n        position,\n        layoutSize,\n        elementSize,\n        active,\n        disableTransitions,\n        absolute,\n      }\n    ) => {\n      priorities.set(id, order)\n      positions.set(id, position)\n      layoutSizes.set(id, layoutSize)\n      activeItems.set(id, active)\n      disableTransitions && disabledTransitions.set(id, disableTransitions)\n\n      const instances = findChildrenWithProvide(\n        UntitledLayoutItemKey,\n        rootVm?.vnode\n      )\n      const instanceIndex = instances.indexOf(vm)\n\n      if (instanceIndex > -1) registered.value.splice(instanceIndex, 0, id)\n      else registered.value.push(id)\n\n      const index = computed(() => items.value.findIndex((i) => i.id === id))\n      const zIndex = computed(\n        () => rootZIndex.value + layers.value.length * 2 - index.value * 2\n      )\n\n      const layoutItemStyles = computed<CSSProperties>(() => {\n        const isHorizontal =\n          position.value === 'left' || position.value === 'right'\n        const isOppositeHorizontal = position.value === 'right'\n        const isOppositeVertical = position.value === 'bottom'\n\n        const styles = {\n          [position.value]: 0,\n          zIndex: zIndex.value,\n          transform: `translate${isHorizontal ? 'X' : 'Y'}(${\n            (active.value ? 0 : -110) *\n            (isOppositeHorizontal || isOppositeVertical ? -1 : 1)\n          }%)`,\n          position:\n            absolute.value || rootZIndex.value !== ROOT_ZINDEX\n              ? 'absolute'\n              : 'fixed',\n          ...(transitionsEnabled.value ? undefined : { transition: 'none' }),\n        } as const\n\n        if (!isMounted.value) return styles\n\n        const item = items.value[index.value]\n\n        if (!item)\n          throw new Error(`[Untitled] Could not find layout item \"${id}\"`)\n\n        const overlap = computedOverlaps.value.get(id)\n        if (overlap) {\n          item[overlap.position] += overlap.amount\n        }\n\n        return {\n          ...styles,\n          height: isHorizontal\n            ? `calc(100% - ${item.top}px - ${item.bottom}px)`\n            : elementSize.value\n            ? `${elementSize.value}px`\n            : undefined,\n          left: isOppositeHorizontal ? undefined : `${item.left}px`,\n          right: isOppositeHorizontal ? `${item.right}px` : undefined,\n          top: position.value !== 'bottom' ? `${item.top}px` : undefined,\n          bottom: position.value !== 'top' ? `${item.bottom}px` : undefined,\n          width: !isHorizontal\n            ? `calc(100% - ${item.left}px - ${item.right}px)`\n            : elementSize.value\n            ? `${elementSize.value}px`\n            : undefined,\n        }\n      })\n\n      const layoutItemScrimStyles = computed<CSSProperties>(() => ({\n        zIndex: zIndex.value - 1,\n      }))\n\n      return { layoutItemStyles, layoutItemScrimStyles, zIndex }\n    },\n    unregister: (id: string) => {\n      priorities.delete(id)\n      positions.delete(id)\n      layoutSizes.delete(id)\n      activeItems.delete(id)\n      disabledTransitions.delete(id)\n      registered.value = registered.value.filter((v) => v !== id)\n    },\n    mainRect,\n    mainStyles,\n    getLayoutItem,\n    items,\n    layoutRect,\n    rootZIndex,\n  })\n\n  const layoutClasses = computed(() => [\n    'u-layout',\n    { 'u-layout--full-height': props.fullHeight },\n  ])\n\n  const layoutStyles = computed(() => ({\n    zIndex: rootZIndex.value,\n    position: parentLayout ? ('relative' as const) : undefined,\n    overflow: parentLayout ? 'hidden' : undefined,\n  }))\n\n  return {\n    layoutClasses,\n    layoutStyles,\n    getLayoutItem,\n    items,\n    layoutRect,\n    layoutRef: resizeRef,\n  }\n}\n"],"mappings":"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"}