{"version":3,"file":"usitsdasdesign-dds-ng-core-popup.mjs","sources":["../../src/app/dds/core/popup/constants.ts","../../src/app/dds/core/popup/directions.ts","../../src/app/dds/core/popup/windowLimits.ts","../../src/app/dds/core/popup/conditions.ts","../../src/app/dds/core/popup/dialog-list.service.ts","../../src/app/dds/core/popup/typings.ts","../../src/app/dds/core/popup/popup.service.ts","../../src/app/dds/core/popup/positions.ts","../../src/app/dds/core/popup/usitsdasdesign-dds-ng-core-popup.ts"],"sourcesContent":["export const HALF_DIVIDER = 2;\nexport const WINDOW_TOP_LIMIT = 0;\nexport const INDENT = 8;\nexport const SHIFT = 0;\nexport const POPUP_ELEMENT_COUNT = 0;\nexport const POPUP_Z_INDEX = 1001;\nexport const BACKDROP_Z_INDEX = 1000;\n","import { PositionState } from '@usitsdasdesign/dds-ng/shared';\nimport { HALF_DIVIDER } from './constants';\nimport { Coordinates, DirectionPositions, PopupLocationConfig } from './typings';\n\n// Function to calculate the coordinates for a popup positioned at the top\nexport function top({ elRect, popupRect, beakRect, indent }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTopBottomPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width / HALF_DIVIDER - popupWidth / HALF_DIVIDER,\n    top: elRect.top + window.scrollY - popupRect.height - indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    beakPositionCoords = {\n      left: popupWidth / HALF_DIVIDER - beakRect.width / HALF_DIVIDER,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.top };\n}\n\n// Function to calculate the coordinates for a popup positioned at the top-left\nexport function topLeft({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTBLeftPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + shift,\n    top: elRect.top + window.scrollY - popupRect.height - indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupLeft = beakRect.width;\n    const beakContentCenter = elRect.width / HALF_DIVIDER - beakRect.width / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: elRect.width > popupWidth ? beakPopupLeft : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.topLeft };\n}\n\n// Function to calculate the coordinates for a popup positioned at the top-right\nexport function topRight({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTBRightPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width - popupWidth + shift,\n    top: elRect.top + window.scrollY - popupRect.height - indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupRight = popupWidth - beakRect.width * HALF_DIVIDER;\n    const beakContentCenter = popupWidth - elRect.width / HALF_DIVIDER - beakRect.width / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: elRect.width > popupWidth ? beakPopupRight : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.topRight };\n}\n\n// Function to calculate the coordinates for a popup positioned at the bottom\nexport function bottom({ elRect, popupRect, beakRect, indent }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTopBottomPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width / HALF_DIVIDER - popupWidth / HALF_DIVIDER,\n    top: elRect.top + elRect.height + window.scrollY + indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    beakPositionCoords = {\n      left: popupWidth / HALF_DIVIDER - beakRect.width / HALF_DIVIDER,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.bottom };\n}\n\n// Function to calculate the coordinates for a popup positioned at the bottom-left\nexport function bottomLeft({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTBLeftPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + shift,\n    top: elRect.top + elRect.height + window.scrollY + indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupLeft = beakRect.width;\n    const beakContentCenter = elRect.width / HALF_DIVIDER - beakRect.width / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: elRect.width > popupWidth ? beakPopupLeft : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.bottomLeft };\n}\n\n// Function to calculate the coordinates for a popup positioned at the bottom-right\nexport function bottomRight({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthTBRightPos(elRect, popupRect);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width - popupWidth + shift,\n    top: elRect.top + elRect.height + window.scrollY + indent,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupRight = popupWidth - beakRect.width * HALF_DIVIDER;\n    const beakContentCenter = popupWidth - elRect.width / HALF_DIVIDER - beakRect.width / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: elRect.width > popupWidth ? beakPopupRight : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.bottomRight };\n}\n\n// Function to calculate the coordinates for a popup positioned at the left\nexport function left({ elRect, popupRect, beakRect, indent }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthLeftPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX - popupWidth - indent,\n    top: elRect.top + window.scrollY + elRect.height / HALF_DIVIDER - popupRect.height / HALF_DIVIDER,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    beakPositionCoords = {\n      top: popupRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.left };\n}\n\n// Function to calculate the coordinates for a popup positioned at the left-top\nexport function leftTop({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthLeftPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX - popupWidth - indent,\n    top: elRect.top + window.scrollY + shift,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupTop = beakRect.height;\n    const beakContentCenter = elRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      top: elRect.height > popupRect.height ? beakPopupTop : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.leftTop };\n}\n\n// Function to calculate the coordinates for a popup positioned at the left-bottom\nexport function leftBottom({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthLeftPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX - popupWidth - indent,\n    top: elRect.top + window.scrollY + elRect.height - popupRect.height + shift,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupBottom = popupRect.height - beakRect.height * HALF_DIVIDER;\n    const beakContentCenter = popupRect.height - elRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      top: elRect.height > popupRect.height ? beakPopupBottom : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.leftBottom };\n}\n\n// Function to calculate the coordinates for a popup positioned at the right\nexport function right({ elRect, popupRect, beakRect, indent }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthRightPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width + indent,\n    top: elRect.top + window.scrollY + elRect.height / HALF_DIVIDER - popupRect.height / HALF_DIVIDER,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    beakPositionCoords = {\n      left: -beakRect.width,\n      top: popupRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.right };\n}\n\n// Function to calculate the coordinates for a popup positioned at the right-top\nexport function rightTop({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthRightPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width + indent,\n    top: elRect.top + window.scrollY + shift,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupTop = beakRect.height;\n    const beakContentCenter = elRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: -beakRect.width,\n      top: elRect.height > popupRect.height ? beakPopupTop : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.rightTop };\n}\n\n// Function to calculate the coordinates for a popup positioned at the right-bottom\nexport function rightBottom({ elRect, popupRect, beakRect, indent, shift }: PopupLocationConfig): Coordinates {\n  let beakPositionCoords: DirectionPositions;\n\n  const popupWidth = getPopupWidthRightPos(elRect, popupRect, indent);\n  const positionCoords: DirectionPositions = {\n    left: elRect.left + window.scrollX + elRect.width + indent,\n    top: elRect.top + window.scrollY + elRect.height - popupRect.height + shift,\n    maxWidth: popupWidth,\n  };\n\n  if (beakRect) {\n    const beakPopupBottom = popupRect.height - beakRect.height * HALF_DIVIDER;\n    const beakContentCenter = popupRect.height - elRect.height / HALF_DIVIDER - beakRect.height / HALF_DIVIDER - shift;\n\n    beakPositionCoords = {\n      left: -beakRect.width,\n      top: elRect.height > popupRect.height ? beakPopupBottom : beakContentCenter,\n    };\n  }\n\n  return { popupCoords: positionCoords, beakCoords: beakPositionCoords, beakPosition: PositionState.rightBottom };\n}\n\n// Function to apply the calculated position to the popup element\nexport function addPosition(el: HTMLElement, position: DirectionPositions, setMaxWidth = false): void {\n  for (const prop in position) {\n    if (prop === 'maxWidth' && !setMaxWidth) return;\n\n    if (position.hasOwnProperty(prop) && el.style) {\n      el.style[prop] = `${position[prop]}px`;\n    }\n  }\n}\n\n// Function to calculate the width of the popup for top and bottom positions\nfunction getPopupWidthTopBottomPos(elRect: ClientRect, popupRect: ClientRect): number {\n  const leftEmptyPlace = elRect.left + elRect.width / HALF_DIVIDER;\n  const rightEmptyPlace = window.innerWidth - leftEmptyPlace;\n  const smallerPlace = leftEmptyPlace < rightEmptyPlace ? leftEmptyPlace : rightEmptyPlace;\n  const emptyPlace = smallerPlace * 2;\n  const popupWidth = popupRect.width > emptyPlace ? emptyPlace : popupRect.width;\n\n  return popupWidth;\n}\n\n// Function to calculate the width of the popup for top-left and bottom-left positions\nfunction getPopupWidthTBLeftPos(elRect: ClientRect, popupRect: ClientRect): number {\n  const emptyPlace = window.innerWidth - elRect.left + elRect.width;\n  const popupWidth = popupRect.width > emptyPlace ? emptyPlace : popupRect.width;\n\n  return popupWidth;\n}\n\n// Function to calculate the width of the popup for top-right and bottom-right positions\nfunction getPopupWidthTBRightPos(elRect: ClientRect, popupRect: ClientRect): number {\n  const emptyPlace = elRect.left + elRect.width;\n  const popupWidth = popupRect.width > emptyPlace ? emptyPlace : popupRect.width;\n\n  return popupWidth;\n}\n\n// Function to calculate the width of the popup for left positions\nfunction getPopupWidthLeftPos(elRect: ClientRect, popupRect: ClientRect, indent: number): number {\n  const emptyPlace = elRect.left - indent;\n  const popupWidth = popupRect.width > emptyPlace ? emptyPlace : popupRect.width;\n\n  return popupWidth;\n}\n\n// Function to calculate the width of the popup for right positions\nfunction getPopupWidthRightPos(elRect: ClientRect, popupRect: ClientRect, indent: number): number {\n  const emptyPlace = window.innerWidth - elRect.left + elRect.width - indent;\n  const popupWidth = popupRect.width > emptyPlace ? emptyPlace : popupRect.width;\n\n  return popupWidth;\n}\n","import { HALF_DIVIDER, WINDOW_TOP_LIMIT } from './constants';\nimport { PopupLocationConfig, WindowLimits } from './typings';\n\nexport function checkWindowLimits(config: PopupLocationConfig): WindowLimits {\n  const elRect: DOMRect = config.elRect;\n  const stickerWidth: number = config.popupRect.width;\n  const stickerHeight: number = config.popupRect.height;\n  const indent: number = config.indent;\n\n  return {\n    topLimit: elRect.top - stickerHeight - indent < WINDOW_TOP_LIMIT,\n    topHalfLimit: elRect.top + elRect.height / HALF_DIVIDER - stickerHeight / HALF_DIVIDER < WINDOW_TOP_LIMIT,\n    topCornerLimit: elRect.top + elRect.height - stickerHeight < WINDOW_TOP_LIMIT,\n    bottomLimit: window.innerHeight < elRect.top + elRect.height + stickerHeight + indent,\n    bottomHalfLimit: window.innerHeight < elRect.top + elRect.height / HALF_DIVIDER + stickerHeight / HALF_DIVIDER,\n    bottomCornerLimit: window.innerHeight < elRect.top + stickerHeight,\n    leftLimit: elRect.left < stickerWidth + indent,\n    leftHalfLimit: elRect.left < stickerWidth / HALF_DIVIDER - elRect.width / HALF_DIVIDER,\n    leftCornerLimit: window.innerWidth < elRect.left + stickerWidth,\n    rightLimit: window.innerWidth < elRect.right + stickerWidth + indent,\n    rightHalfLimit: window.innerWidth < elRect.right + stickerWidth / HALF_DIVIDER - elRect.width / HALF_DIVIDER,\n    rightCornerLimit: elRect.left < stickerWidth - elRect.width,\n  };\n}\n","import {\n  bottom,\n  bottomLeft,\n  bottomRight,\n  left,\n  leftBottom,\n  leftTop,\n  right,\n  rightBottom,\n  rightTop,\n  top,\n  topLeft,\n  topRight,\n} from './directions';\nimport { Coordinates, PopupLocationConfig } from './typings';\nimport { checkWindowLimits } from './windowLimits';\n\n// Function to determine the top position condition\nexport function topPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.topLimit && limits.leftHalfLimit:\n        return topLeft(config);\n      case !limits.topLimit && limits.rightHalfLimit:\n        return topRight(config);\n      case limits.topLimit && limits.leftHalfLimit:\n        return bottomLeft(config);\n      case limits.topLimit && limits.rightHalfLimit:\n        return bottomRight(config);\n      case limits.topLimit:\n        return bottom(config);\n      default:\n        return top(config);\n    }\n  } else {\n    return top(config);\n  }\n}\n\n// Function to determine the top-left position condition\nexport function topLeftPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.topLimit && limits.leftCornerLimit:\n        return topRight(config);\n      case limits.topLimit && limits.leftCornerLimit:\n        return bottomRight(config);\n      case limits.topLimit:\n        return bottomLeft(config);\n      default:\n        return topLeft(config);\n    }\n  } else {\n    return topLeft(config);\n  }\n}\n\n// Function to determine the top-right position condition\nexport function topRightCondtion(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.topLimit && limits.rightCornerLimit:\n        return topLeft(config);\n      case limits.topLimit && limits.rightCornerLimit:\n        return bottomLeft(config);\n      case limits.topLimit:\n        return bottomRight(config);\n      default:\n        return topRight(config);\n    }\n  } else {\n    return topRight(config);\n  }\n}\n\n// Function to determine the bottom position condition\nexport function bottomPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.bottomLimit && limits.leftHalfLimit:\n        return bottomLeft(config);\n      case !limits.bottomLimit && limits.rightHalfLimit:\n        return bottomRight(config);\n      case limits.bottomLimit && limits.leftHalfLimit:\n        return topLeft(config);\n      case limits.bottomLimit && limits.rightHalfLimit:\n        return topRight(config);\n      case limits.bottomLimit && !limits.topLimit:\n        return top(config);\n      default:\n        return bottom(config);\n    }\n  } else {\n    return bottom(config);\n  }\n}\n\n// Function to determine the bottom-left position condition\nexport function bottomLeftPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.bottomLimit && !limits.leftCornerLimit:\n        return bottomLeft(config);\n      case !limits.bottomLimit && limits.leftCornerLimit:\n        return bottomRight(config);\n      case limits.bottomLimit && !limits.topLimit && !limits.leftCornerLimit:\n        return topLeft(config);\n      case limits.bottomLimit && !limits.topLimit && limits.leftCornerLimit:\n        return topRight(config);\n      default:\n        return bottomLeft(config);\n    }\n  } else {\n    return bottomLeft(config);\n  }\n}\n\n// Function to determine the bottom-right position condition\nexport function bottomRightCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.bottomLimit && !limits.rightCornerLimit:\n        return bottomRight(config);\n      case !limits.bottomLimit && limits.rightCornerLimit:\n        return bottomLeft(config);\n      case limits.bottomLimit && !limits.topLimit && !limits.rightCornerLimit:\n        return topRight(config);\n      case limits.bottomLimit && !limits.topLimit && limits.rightCornerLimit:\n        return topLeft(config);\n      default:\n        return bottomRight(config);\n    }\n  } else {\n    return bottomRight(config);\n  }\n}\n\n// Function to determine the left position condition\nexport function leftPosCondtion(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.bottomLimit && !limits.leftLimit && limits.topLimit:\n        return leftTop(config);\n      case !limits.topLimit && !limits.leftLimit && limits.bottomLimit:\n        return leftBottom(config);\n      case !limits.rightLimit && limits.topLimit:\n        return rightTop(config);\n      case !limits.topLimit && !limits.rightLimit && limits.bottomLimit:\n        return rightBottom(config);\n      case limits.leftLimit && !limits.bottomLimit:\n        return bottomLeft(config);\n      case limits.rightLimit && !limits.bottomLimit:\n        return bottomRight(config);\n      case limits.leftLimit && limits.bottomLimit && !limits.topLimit:\n        return topLeft(config);\n      case limits.rightLimit && limits.bottomLimit && !limits.topLimit:\n        return topRight(config);\n      default:\n        return left(config);\n    }\n  } else {\n    return left(config);\n  }\n}\n\n// Function to determine the left-top position condition\nexport function leftTopPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.leftLimit && !limits.bottomLimit:\n        return leftTop(config);\n      case !limits.leftLimit && !limits.topLimit:\n        return leftBottom(config);\n      case !limits.rightLimit && !limits.bottomLimit:\n        return rightTop(config);\n      case !limits.rightLimit && !limits.topLimit:\n        return rightBottom(config);\n      case !limits.topLimit && !limits.rightLimit:\n        return topLeft(config);\n      case !limits.topLimit && !limits.leftLimit:\n        return topRight(config);\n      default:\n        return leftTop(config);\n    }\n  } else {\n    return leftTop(config);\n  }\n}\n\n// Function to determine the left-bottom position condition\nexport function leftBottomPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.leftLimit && !limits.topLimit:\n        return leftBottom(config);\n      case !limits.leftLimit && !limits.bottomLimit:\n        return leftTop(config);\n      case !limits.rightLimit && !limits.bottomLimit:\n        return rightTop(config);\n      case !limits.rightLimit && !limits.topLimit:\n        return rightBottom(config);\n      case !limits.topLimit && !limits.rightLimit:\n        return topLeft(config);\n      case !limits.topLimit && !limits.leftLimit:\n        return topRight(config);\n      case !limits.rightLimit:\n        return bottomLeft(config);\n      case !limits.leftLimit:\n        return bottomRight(config);\n      case limits.topLimit:\n        return bottom(config);\n      default:\n        return leftBottom(config);\n    }\n  } else {\n    return leftBottom(config);\n  }\n}\n\n// Function to determine the right position condition\nexport function rightPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.bottomLimit && !limits.topLimit && !limits.rightLimit:\n        return right(config);\n      case !limits.bottomLimit && !limits.rightLimit && limits.topLimit:\n        return rightTop(config);\n      case !limits.topLimit && !limits.rightLimit && limits.bottomLimit:\n        return rightBottom(config);\n      case !limits.bottomLimit && !limits.leftLimit && limits.topLimit:\n        return leftTop(config);\n      case !limits.topLimit && !limits.leftLimit && limits.bottomLimit:\n        return leftBottom(config);\n      case limits.leftLimit && !limits.bottomLimit:\n        return bottomLeft(config);\n      case limits.rightLimit && !limits.bottomLimit:\n        return bottomRight(config);\n      case limits.leftLimit && limits.bottomLimit && !limits.topLimit:\n        return topLeft(config);\n      case limits.rightLimit && limits.bottomLimit && !limits.topLimit:\n        return topRight(config);\n      default:\n        return right(config);\n    }\n  } else {\n    return right(config);\n  }\n}\n\n// Function to determine the right-top position condition\nexport function rightTopPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.rightLimit && !limits.bottomLimit:\n        return rightTop(config);\n      case !limits.rightLimit && !limits.topLimit:\n        return rightBottom(config);\n      case !limits.leftLimit && !limits.bottomLimit:\n        return leftTop(config);\n      case !limits.leftLimit && !limits.topLimit:\n        return leftBottom(config);\n      case !limits.topLimit && !limits.rightLimit:\n        return topLeft(config);\n      case !limits.topLimit && !limits.leftLimit:\n        return topRight(config);\n      default:\n        return rightTop(config);\n    }\n  } else {\n    return rightTop(config);\n  }\n}\n\n// Function to determine the right-bottom position condition\nexport function rightBottomPosCondition(config: PopupLocationConfig): Coordinates {\n  const limits = checkWindowLimits(config);\n\n  if (config.isDynamic) {\n    switch (true) {\n      case !limits.rightLimit && !limits.topLimit:\n        return rightBottom(config);\n      case !limits.rightLimit:\n        return rightTop(config);\n      case !limits.leftLimit && !limits.topLimit:\n        return leftBottom(config);\n      case !limits.leftLimit && !limits.bottomLimit:\n        return leftTop(config);\n      case !limits.topLimit && !limits.leftLimit:\n        return topRight(config);\n      case !limits.leftLimit:\n        return bottomRight(config);\n      case limits.topLimit:\n        return bottom(config);\n      default:\n        return rightBottom(config);\n    }\n  } else {\n    return rightBottom(config);\n  }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DialogListService {\n  public dialogList: any[] = [];\n  constructor() { }\n}\n","import { ComponentRef, ViewRef } from '@angular/core';\nimport { PositionState } from '@usitsdasdesign/dds-ng/shared';\n\nexport interface DirectionPositions {\n  top?: number;\n  left?: number;\n  maxWidth?: number;\n}\n\nexport interface WindowLimits {\n  topLimit: boolean;\n  topHalfLimit: boolean;\n  topCornerLimit: boolean;\n  bottomLimit: boolean;\n  bottomHalfLimit: boolean;\n  bottomCornerLimit: boolean;\n  leftLimit: boolean;\n  leftHalfLimit: boolean;\n  leftCornerLimit: boolean;\n  rightLimit: boolean;\n  rightHalfLimit: boolean;\n  rightCornerLimit: boolean;\n}\n\nexport interface PopupLocationConfig {\n  elRect: ClientRect;\n  popupRect: ClientRect;\n  beakRect?: ClientRect;\n  indent: number;\n  shift: number;\n  isDynamic: boolean;\n}\n\nexport interface Coordinates {\n  popupCoords: DirectionPositions;\n  beakCoords: DirectionPositions;\n  beakPosition: PositionState;\n}\n\nexport enum BeakClass {\n  beak = 'beak',\n  top = 'beak_top',\n  bottom = 'beak_bottom',\n  left = 'beak_left',\n  right = 'beak_right',\n}\n\nexport interface PopupList {\n  component: ComponentRef<unknown>;\n  componentViewRef: ViewRef;\n  backdrop?: HTMLElement;\n  backdropListener?: () => void;\n}\n\nexport enum InvokeType {\n  click = 'click',\n  hover = 'hover',\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  EmbeddedViewRef,\n  Inject,\n  Injectable,\n  Injector,\n  NgZone,\n  Renderer2,\n  RendererFactory2,\n  TemplateRef,\n  Type,\n  ViewRef,\n  DOCUMENT\n} from '@angular/core';\nimport { KeyCodes, PopupClass } from '@usitsdasdesign/dds-ng/shared';\nimport { Subject } from 'rxjs';\nimport { BACKDROP_Z_INDEX, POPUP_ELEMENT_COUNT, POPUP_Z_INDEX } from './constants';\nimport { DialogListService } from './dialog-list.service';\nimport { InvokeType, PopupList } from './typings';\n\n// @dynamic\n@Injectable({\n  providedIn: 'root'\n})\nexport class PopupService {\n  // Subject to notify when a popup is closed\n  public closedPopup = new Subject();\n\n  // List to keep track of open popups\n  private popupList: PopupList[] = [];\n  private render: Renderer2;\n  private popupElementCount = POPUP_ELEMENT_COUNT;\n\n  constructor(\n    private resolver: ComponentFactoryResolver,\n    private appRef: ApplicationRef,\n    private injector: Injector,\n    private ngZone: NgZone,\n    private rendererFactory: RendererFactory2,\n    private dialogListService: DialogListService,\n    @Inject(DOCUMENT) private document: Document\n  ) {\n    // Create a renderer instance\n    this.render = rendererFactory.createRenderer(null, null);\n  }\n\n  // Method to open a popup\n  public open<T>(\n    component: Type<unknown>,\n    content: TemplateRef<T>,\n    inputs?: unknown,\n    invokeType: InvokeType | string = InvokeType.click,\n    hasBackdrop = true,\n    stickerBackdropClass = ''\n  ): HTMLElement {\n    // Create component factory and resolve ng-content\n    const factory = this.resolver.resolveComponentFactory(component);\n    const [viewRef, ngContent] = this.resolveNgContent(content);\n    const componentRef = ngContent ? factory.create(this.injector, ngContent) : factory.create(this.injector);\n    const domElem = componentRef.location.nativeElement;\n\n    // Set inputs to the component instance\n    if (inputs) {\n      Object.keys(inputs).forEach((key) => {\n        componentRef.instance[key] = inputs[key];\n      });\n    }\n    // Append the component to the document body\n    this.render.appendChild(this.document.body, domElem);\n\n    // Detect changes in the component\n    componentRef.hostView.detectChanges();\n\n    // Handle backdrop if required\n    if (invokeType === InvokeType.click && hasBackdrop) {\n      const backdrop = this.render.createElement('div');\n      const backdropListener = this.render.listen(backdrop, 'click', (e) => this.close(e));\n      this.render.addClass(backdrop, PopupClass.popupBackdrop);\n      if (stickerBackdropClass) this.render.addClass(backdrop, stickerBackdropClass);\n      this.render.appendChild(this.document.body, backdrop);\n\n      // Add popup and backdrop to the list\n      this.popupList.push({\n        component: componentRef,\n        componentViewRef: viewRef,\n        backdrop: backdrop,\n        backdropListener: backdropListener,\n      });\n      this.dialogListService.dialogList.push({\n        component: componentRef,\n        componentViewRef: viewRef,\n        backdrop: backdrop,\n        backdropListener: backdropListener,\n      });\n    } else {\n      // Add popup without backdrop to the list\n      this.popupList.push({\n        component: componentRef,\n        componentViewRef: viewRef,\n      });\n      this.dialogListService.dialogList.push({\n        component: componentRef,\n        componentViewRef: viewRef,\n      });\n    }\n\n    // Increment element count and set order position\n    this.incrementElementCount();\n    this.setOrderPosition();\n\n    return domElem;\n  }\n\n  // Method to close the popup\n  public close(event: Event): void {\n    if (event) {\n      event.stopPropagation();\n    }\n\n    // Remove the last popup from the list\n    const popupComponent = this.popupList.pop();\n    this.dialogListService.dialogList.pop();\n\n    if (popupComponent) {\n      // Detach and destroy the component view\n      this.appRef.detachView(popupComponent.component.hostView);\n\n      if (popupComponent.componentViewRef) {\n        popupComponent.componentViewRef.destroy();\n      }\n\n      popupComponent.component.destroy();\n\n      // Remove backdrop if exists\n      if (popupComponent.backdrop && popupComponent.backdropListener) {\n        this.render.removeChild(this.document.body, popupComponent.backdrop);\n        popupComponent.backdropListener();\n      }\n\n      // Decrement element count and notify about the closed popup\n      this.decrementElementCount();\n      this.closedPopup.next(popupComponent.component.location.nativeElement);\n    }\n  }\n\n  // Resolve ng-content for the component\n  private resolveNgContent<T>(content: TemplateRef<T>): [ViewRef, any[]] {\n    if (!content) {\n      return [null, null];\n    }\n\n    const viewRef = content.createEmbeddedView(null);\n    this.appRef.attachView(viewRef);\n\n    return [viewRef, [(viewRef as EmbeddedViewRef<T>).rootNodes]];\n  }\n\n  // Increment the count of popup elements\n  private incrementElementCount(): void {\n    if (++this.popupElementCount === 1) {\n      this.ngZone.runOutsideAngular(() => {\n        const doc = this.document || document;\n        doc.addEventListener('keyup', this.documentKeydownListener);\n      });\n    }\n  }\n\n  // Decrement the count of popup elements\n  private decrementElementCount(): void {\n    if (!--this.popupElementCount) {\n      const doc = this.document || document;\n      doc.removeEventListener('keyup', this.documentKeydownListener);\n    }\n  }\n\n  // Listener for keydown events to close the popup on ESC key press\n  private documentKeydownListener = (e: KeyboardEvent) => {\n    const popup = this.popupList.at(-1)?.component?.location?.nativeElement;\n    const lastDialog = this.dialogListService.dialogList.at(-1)?.component?.location?.nativeElement;\n    const isCurrentPopup = popup === lastDialog;\n\n    if (e.keyCode === KeyCodes.ESC && isCurrentPopup) {\n      this.close(e);\n    }\n  };\n\n  // Set the z-index order for popups and backdrops\n  private setOrderPosition(): void {\n    this.popupList.forEach((popup, index) => {\n      const backdropEl = popup.backdrop;\n      const popupEl = popup.component.instance['el'].nativeElement;\n\n      if (backdropEl) backdropEl.style.zIndex = `${BACKDROP_Z_INDEX + index}`;\n      if (popupEl) popupEl.style.zIndex = `${POPUP_Z_INDEX + index}`;\n    });\n  }\n}\n","import { PositionState } from '@usitsdasdesign/dds-ng/shared';\nimport {\n  bottomLeftPosCondition,\n  bottomPosCondition,\n  bottomRightCondition,\n  leftBottomPosCondition,\n  leftPosCondtion,\n  leftTopPosCondition,\n  rightBottomPosCondition,\n  rightPosCondition,\n  rightTopPosCondition,\n  topLeftPosCondition,\n  topPosCondition,\n  topRightCondtion,\n} from './conditions';\nimport { Coordinates, PopupLocationConfig } from './typings';\n\n/**\n * Function to check the position of the popup and return the corresponding coordinates.\n */\nexport function checkPosition(position: string, config: PopupLocationConfig): Coordinates {\n  switch (position) {\n    case PositionState.top:\n      // Return coordinates for the top position\n      return topPosCondition(config);\n    case PositionState.topLeft:\n      // Return coordinates for the top-left position\n      return topLeftPosCondition(config);\n    case PositionState.topRight:\n      // Return coordinates for the top-right position\n      return topRightCondtion(config);\n    case PositionState.bottom:\n      // Return coordinates for the bottom position\n      return bottomPosCondition(config);\n    case PositionState.bottomLeft:\n      // Return coordinates for the bottom-left position\n      return bottomLeftPosCondition(config);\n    case PositionState.bottomRight:\n      // Return coordinates for the bottom-right position\n      return bottomRightCondition(config);\n    case PositionState.left:\n      // Return coordinates for the left position\n      return leftPosCondtion(config);\n    case PositionState.leftTop:\n      // Return coordinates for the left-top position\n      return leftTopPosCondition(config);\n    case PositionState.leftBottom:\n      // Return coordinates for the left-bottom position\n      return leftBottomPosCondition(config);\n    case PositionState.right:\n      // Return coordinates for the right position\n      return rightPosCondition(config);\n    case PositionState.rightTop:\n      // Return coordinates for the right-top position\n      return rightTopPosCondition(config);\n    case PositionState.rightBottom:\n      // Return coordinates for the right-bottom position\n      return rightBottomPosCondition(config);\n    default:\n      // Default to top position coordinates if no match is found\n      return topPosCondition(config);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}