{"version":3,"file":"period-year-norway-ngx-bootstrap-positioning.mjs","sources":["../../../../src/positioning/models/index.ts","../../../../src/positioning/utils/getStyleComputedProperty.ts","../../../../src/positioning/utils/getOffsetParent.ts","../../../../src/positioning/utils/isOffsetContainer.ts","../../../../src/positioning/utils/getRoot.ts","../../../../src/positioning/utils/findCommonOffsetParent.ts","../../../../src/positioning/utils/getFixedPositionOffsetParent.ts","../../../../src/positioning/utils/getBordersSize.ts","../../../../src/positioning/utils/getWindowSizes.ts","../../../../src/positioning/utils/getClientRect.ts","../../../../src/positioning/utils/isNumeric.ts","../../../../src/positioning/utils/getBoundingClientRect.ts","../../../../src/positioning/utils/getOffsetRectRelativeToArbitraryNode.ts","../../../../src/positioning/utils/getParentNode.ts","../../../../src/positioning/utils/getScrollParent.ts","../../../../src/positioning/utils/getScroll.ts","../../../../src/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.ts","../../../../src/positioning/utils/isFixed.ts","../../../../src/positioning/utils/getBoundaries.ts","../../../../src/positioning/utils/computeAutoPlacement.ts","../../../../src/positioning/utils/getOffsets.ts","../../../../src/positioning/utils/getOppositePlacement.ts","../../../../src/positioning/utils/getOppositeVariation.ts","../../../../src/positioning/utils/getOuterSizes.ts","../../../../src/positioning/utils/getReferenceOffsets.ts","../../../../src/positioning/utils/getTargetOffsets.ts","../../../../src/positioning/utils/isModifierEnabled.ts","../../../../src/positioning/utils/checkMargin.ts","../../../../src/positioning/utils/updateContainerClass.ts","../../../../src/positioning/utils/setStyles.ts","../../../../src/positioning/modifiers/arrow.ts","../../../../src/positioning/modifiers/flip.ts","../../../../src/positioning/modifiers/initData.ts","../../../../src/positioning/modifiers/preventOverflow.ts","../../../../src/positioning/modifiers/shift.ts","../../../../src/positioning/ng-positioning.ts","../../../../src/positioning/positioning.service.ts","../../../../src/positioning/period-year-norway-ngx-bootstrap-positioning.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-duplicate-enum-values */\r\nexport interface Offsets {\r\n  width: number;\r\n  height: number;\r\n  bottom?: number;\r\n  left?: number;\r\n  right?: number;\r\n  top?: number;\r\n  marginTop?: number;\r\n  marginLeft?: number;\r\n}\r\n\r\nexport interface Data {\r\n  options: Options;\r\n  instance: {\r\n    target: HTMLElement;\r\n    host: HTMLElement;\r\n    arrow?: HTMLElement;\r\n  };\r\n  offsets: {\r\n    target: Offsets;\r\n    host: Offsets;\r\n    arrow?: Record<string, string | number | HTMLElement>;\r\n  };\r\n  positionFixed: boolean;\r\n  placement: string;\r\n  placementAuto: boolean;\r\n}\r\n\r\nexport interface Options {\r\n  placement?: string;\r\n  modifiers: {\r\n    flip?: {\r\n      enabled: boolean;\r\n    };\r\n    preventOverflow?: {\r\n      enabled: boolean;\r\n      boundariesElement?: string;\r\n    };\r\n  };\r\n  allowedPositions?: string[];\r\n}\r\n\r\nexport enum MapPlacementInToRL {\r\n  top = 'top',\r\n  bottom = 'bottom',\r\n  left = 'left',\r\n  right = 'right',\r\n  auto = 'auto',\r\n  end = 'right',\r\n  start = 'left',\r\n  'top left' = 'top left',\r\n  'top right' = 'top right',\r\n  'right top' = 'right top',\r\n  'right bottom' = 'right bottom',\r\n  'bottom right' = 'bottom right',\r\n  'bottom left' = 'bottom left',\r\n  'left bottom' = 'left bottom',\r\n  'left top' = 'left top',\r\n  'top start' = 'top left',\r\n  'top end' = 'top right',\r\n  'end top' = 'right top',\r\n  'end bottom' = 'right bottom',\r\n  'bottom end' = 'bottom right',\r\n  'bottom start' = 'bottom left',\r\n  'start bottom' = 'start bottom',\r\n  'start top' = 'left top',\r\n}\r\n\r\nexport enum PlacementForBs5 {\r\n  top = 'top',\r\n  bottom = 'bottom',\r\n  left = 'start',\r\n  right = 'end',\r\n  auto = 'auto',\r\n  end = 'end',\r\n  start = 'start',\r\n  'top left' = 'top start',\r\n  'top right' = 'top end',\r\n  'right top' = 'end top',\r\n  'right bottom' = 'end bottom',\r\n  'bottom right' = 'bottom end',\r\n  'bottom left' = 'bottom start',\r\n  'left bottom' = 'start bottom',\r\n  'left top' = 'start top',\r\n  'top start' = 'top start',\r\n  'top end' = 'top end',\r\n  'end top' = 'end top',\r\n  'end bottom' = 'end bottom',\r\n  'bottom end' = 'bottom end',\r\n  'bottom start' = 'bottom start',\r\n  'start bottom' = 'start bottom',\r\n  'start top' = 'start top',\r\n}\r\n\r\nexport type AvailbleBSPositions = 'top' | 'bottom' | 'left' | 'right' | 'auto' | 'top left' | 'top right' | 'right top' | 'right bottom' | 'bottom right' | 'bottom left' | 'left bottom' | 'left top' | 'start' | 'end' | 'top start' | 'top end' | 'end top' | 'end bottom' | 'bottom end' | 'bottom start' | 'start bottom' | 'start top';\r\n\r\n","/**\r\n * Get CSS computed property of the given element\r\n */\r\nexport function getStyleComputedProperty(element: Element): CSSStyleDeclaration;\r\nexport function getStyleComputedProperty(element: Element, property?: string): string | string[];\r\nexport function getStyleComputedProperty(element: Element, property?: string): string | string[] | CSSStyleDeclaration {\r\n  if (element.nodeType !== 1) {\r\n    return [];\r\n  }\r\n  // NOTE: 1 DOM access here\r\n  const window = element.ownerDocument.defaultView;\r\n  const css = window?.getComputedStyle(element, null);\r\n\r\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n  // @ts-ignore\r\n  return property ? css && css[property] : css;\r\n}\r\n","/**\r\n * Returns the offset parent of the given element\r\n */\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\n\r\nexport function getOffsetParent(element: HTMLElement): HTMLElement {\r\n  if (!element) {\r\n    return document.documentElement;\r\n  }\r\n\r\n  const noOffsetParent = null;\r\n\r\n  // NOTE: 1 DOM access here\r\n  let offsetParent = element?.offsetParent;\r\n\r\n  // Skip hidden elements which don't have an offsetParent\r\n  let sibling: HTMLElement | undefined = void 0;\r\n\r\n  while (offsetParent === noOffsetParent\r\n         && element.nextElementSibling\r\n         && sibling !== element.nextElementSibling) {\r\n\r\n      // todo: valorkin fix\r\n      sibling = element.nextElementSibling as HTMLElement;\r\n      offsetParent = sibling.offsetParent;\r\n    }\r\n\r\n  const nodeName = offsetParent && offsetParent.nodeName;\r\n\r\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\r\n    return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\r\n  }\r\n\r\n  // .offsetParent will return the closest TH, TD or TABLE in case\r\n  if (\r\n    offsetParent &&\r\n    ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\r\n    getStyleComputedProperty(offsetParent, 'position') === 'static'\r\n  ) {\r\n    return getOffsetParent(offsetParent as HTMLElement);\r\n  }\r\n\r\n  return offsetParent as HTMLElement;\r\n}\r\n","import { getOffsetParent } from './getOffsetParent';\r\n\r\n// todo: valorkin fix\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function isOffsetContainer(element: any) {\r\n  const { nodeName } = element;\r\n  if (nodeName === 'BODY') {\r\n    return false;\r\n  }\r\n\r\n  return (\r\n    nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\r\n  );\r\n}\r\n","/**\r\n * Finds the root node (document, shadowDOM root) of the given element\r\n */\r\nexport function getRoot(node: Node|ShadowRoot): Node|ShadowRoot {\r\n  if (node.parentNode !== null) {\r\n    return getRoot(node.parentNode);\r\n  }\r\n\r\n  return node;\r\n}\r\n","/**\r\n * Finds the offset parent common to the two provided nodes\r\n */\r\nimport { isOffsetContainer } from './isOffsetContainer';\r\nimport { getRoot } from './getRoot';\r\nimport { getOffsetParent } from './getOffsetParent';\r\n\r\nexport function findCommonOffsetParent(element1: HTMLElement, element2: HTMLElement): HTMLElement {\r\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\r\n    return document.documentElement;\r\n  }\r\n\r\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\r\n    const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\r\n\r\n  const start = order ? element1 : element2;\r\n  const end = order ? element2 : element1;\r\n\r\n  // Get common ancestor container\r\n  const range = document.createRange();\r\n  range.setStart(start, 0);\r\n  range.setEnd(end, 0);\r\n\r\n  // todo: valorkin fix\r\n  const commonAncestorContainer = range.commonAncestorContainer as unknown as HTMLElement;\r\n\r\n  // Both nodes are inside #document\r\n  if (\r\n    (element1 !== commonAncestorContainer &&\r\n      element2 !== commonAncestorContainer) ||\r\n    start.contains(end)\r\n  ) {\r\n    if (isOffsetContainer(commonAncestorContainer)) {\r\n      return commonAncestorContainer;\r\n    }\r\n\r\n    return getOffsetParent(commonAncestorContainer);\r\n  }\r\n\r\n  // one of the nodes is inside shadowDOM, find which one\r\n  const element1root = getRoot(element1) as ShadowRoot;\r\n  if (element1root.host) {\r\n    return findCommonOffsetParent(element1root.host as HTMLElement, element2);\r\n  } else {\r\n    return findCommonOffsetParent(element1, (getRoot(element2) as ShadowRoot).host as HTMLElement);\r\n  }\r\n}\r\n","/**\r\n * Finds the first parent of an element that has a transformed property defined\r\n */\r\n\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\n\r\nexport function getFixedPositionOffsetParent(element: HTMLElement): HTMLElement {\r\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\r\n  if (!element || !element.parentElement) {\r\n   return document.documentElement;\r\n  }\r\n\r\n  let el = element.parentElement;\r\n\r\n  while (el?.parentElement && getStyleComputedProperty(el, 'transform') === 'none') {\r\n    el = el.parentElement;\r\n  }\r\n\r\n  return el || document.documentElement;\r\n}\r\n","/**\r\n * Helper to detect borders of a given element\r\n */\r\n\r\nexport function getBordersSize(styles: CSSStyleDeclaration, axis: string): number {\r\n  const sideA = axis === 'x' ? 'Left' : 'Top';\r\n  const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\r\n\r\n  return (\r\n    parseFloat((styles as never)[`border${sideA}Width`]) +\r\n    parseFloat((styles as never)[`border${sideB}Width`])\r\n  );\r\n}\r\n","function getSize(axis: string, body: HTMLElement, html: HTMLElement) {\r\n  const _body = body as unknown as Record<string, number>;\r\n  const _html = html as never;\r\n\r\n  return Math.max(\r\n    _body[`offset${axis}`],\r\n    _body[`scroll${axis}`],\r\n    _html[`client${axis}`],\r\n    _html[`offset${axis}`],\r\n    _html[`scroll${axis}`],\r\n    0\r\n  );\r\n}\r\n\r\nexport function getWindowSizes(document: Document) {\r\n  const body = document.body;\r\n  const html = document.documentElement;\r\n\r\n  return {\r\n    height: getSize('Height', body, html),\r\n    width: getSize('Width', body, html)\r\n  };\r\n}\r\n","/**\r\n * Given element offsets, generate an output similar to getBoundingClientRect\r\n */\r\nimport { Offsets } from '../models';\r\n\r\nexport function getClientRect(offsets: Offsets): Offsets {\r\n  return {\r\n    ...offsets,\r\n    right: (offsets.left || 0) + offsets.width,\r\n    bottom: (offsets.top || 0) + offsets.height\r\n  };\r\n}\r\n","/**\r\n * Tells if a given input is a number\r\n */\r\nexport function isNumeric(n: string): boolean {\r\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(Number(n));\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function isNumber(value?: any): value is number {\r\n  return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\r\n}\r\n","/**\r\n * Get bounding client rect of given element\r\n */\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\nimport { getBordersSize } from './getBordersSize';\r\nimport { getWindowSizes } from './getWindowSizes';\r\nimport { getClientRect } from './getClientRect';\r\nimport { Offsets } from '../models';\r\nimport { isNumber } from './isNumeric';\r\n\r\nexport function getBoundingClientRect(element: HTMLElement): Offsets {\r\n  const rect: Offsets = element.getBoundingClientRect();\r\n\r\n  // IE10 10 FIX: Please, don't ask, the element isn't\r\n  // considered in DOM in some circumstances...\r\n  // This isn't reproducible in IE10 compatibility mode of IE11\r\n  // try {\r\n  //   if (isIE(10)) {\r\n  //     const scrollTop = getScroll(element, 'top');\r\n  //     const scrollLeft = getScroll(element, 'left');\r\n  //     if (rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right)) {\r\n  //       rect.top += scrollTop;\r\n  //       rect.left += scrollLeft;\r\n  //       rect.bottom += scrollTop;\r\n  //       rect.right += scrollLeft;\r\n  //     }\r\n  //   }\r\n  // } catch (e) {\r\n  //   return rect;\r\n  // }\r\n\r\n  if (!(rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right))) {\r\n    return rect;\r\n  }\r\n\r\n  const result: Offsets = {\r\n    left: rect.left,\r\n    top: rect.top,\r\n    width: rect.right - rect.left,\r\n    height: rect.bottom - rect.top\r\n  };\r\n\r\n  // subtract scrollbar size from sizes\r\n  const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : undefined;\r\n  const width = sizes?.width || element.clientWidth\r\n    || isNumber(rect.right) && isNumber(result.left) && rect.right - result.left || 0;\r\n  const height = sizes?.height || element.clientHeight\r\n    || isNumber(rect.bottom) && isNumber(result.top) && rect.bottom - result.top || 0;\r\n\r\n  let horizScrollbar = element.offsetWidth - width;\r\n  let vertScrollbar = element.offsetHeight - height;\r\n\r\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\r\n  // we make this check conditional for performance reasons\r\n  if (horizScrollbar || vertScrollbar) {\r\n    const styles = getStyleComputedProperty(element);\r\n    horizScrollbar -= getBordersSize(styles, 'x');\r\n    vertScrollbar -= getBordersSize(styles, 'y');\r\n\r\n    result.width -= horizScrollbar;\r\n    result.height -= vertScrollbar;\r\n  }\r\n\r\n  return getClientRect(result);\r\n}\r\n","import { getBoundingClientRect } from './getBoundingClientRect';\r\nimport { getClientRect } from './getClientRect';\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\nimport { Offsets } from '../models';\r\nimport { isNumber } from './isNumeric';\r\n\r\nexport function getOffsetRectRelativeToArbitraryNode(\r\n  children: HTMLElement,\r\n  parent: HTMLElement,\r\n  fixedPosition = false\r\n): Offsets {\r\n  const isHTML = parent.nodeName === 'HTML';\r\n  const childrenRect = getBoundingClientRect(children);\r\n  const parentRect = getBoundingClientRect(parent);\r\n\r\n  const styles = getStyleComputedProperty(parent);\r\n  const borderTopWidth = parseFloat(styles.borderTopWidth);\r\n  const borderLeftWidth = parseFloat(styles.borderLeftWidth);\r\n\r\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\r\n  if (fixedPosition && isHTML) {\r\n    parentRect.top = Math.max(parentRect.top ?? 0, 0);\r\n    parentRect.left = Math.max(parentRect.left ?? 0, 0);\r\n  }\r\n\r\n  const offsets: Offsets = getClientRect({\r\n    top: (childrenRect.top ?? 0) - (parentRect.top ?? 0) - borderTopWidth,\r\n    left: (childrenRect.left ?? 0) - (parentRect.left ?? 0) - borderLeftWidth,\r\n    width: childrenRect.width,\r\n    height: childrenRect.height\r\n  });\r\n\r\n  offsets.marginTop = 0;\r\n  offsets.marginLeft = 0;\r\n\r\n  // Subtract margins of documentElement in case it's being used as parent\r\n  // we do this only on HTML because it's the only element that behaves\r\n  // differently when margins are applied to it. The margins are included in\r\n  // the box of the documentElement, in the other cases not.\r\n  if (isHTML) {\r\n    const marginTop = parseFloat(styles.marginTop);\r\n    const marginLeft = parseFloat(styles.marginLeft);\r\n\r\n    if (isNumber(offsets.top)) {\r\n      offsets.top -= borderTopWidth - marginTop;\r\n    }\r\n    if (isNumber(offsets.bottom)) {\r\n      offsets.bottom -= borderTopWidth - marginTop;\r\n    }\r\n    if (isNumber(offsets.left)) {\r\n      offsets.left -= borderLeftWidth - marginLeft;\r\n    }\r\n    if (isNumber(offsets.right)) {\r\n      offsets.right -= borderLeftWidth - marginLeft;\r\n    }\r\n\r\n    // Attach marginTop and marginLeft because in some circumstances we may need them\r\n    offsets.marginTop = marginTop;\r\n    offsets.marginLeft = marginLeft;\r\n  }\r\n\r\n  return offsets;\r\n}\r\n","/**\r\n * Returns the parentNode or the host of the element\r\n */\r\n// todo: valorkin fix\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function getParentNode(element: any): any {\r\n  if (element.nodeName === 'HTML') {\r\n    return element;\r\n  }\r\n\r\n  return element.parentNode || element.host;\r\n}\r\n","/**\r\n * Returns the scrolling parent of the given element\r\n */\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\nimport { getParentNode } from './getParentNode';\r\n\r\n// todo: valorkin fix\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport function getScrollParent(element: any): any {\r\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\r\n  if (!element) {\r\n    return document.body;\r\n  }\r\n\r\n  switch (element.nodeName) {\r\n    case 'HTML':\r\n    case 'BODY':\r\n      return element.ownerDocument.body;\r\n    case '#document':\r\n      return element.body;\r\n    default:\r\n  }\r\n\r\n  // Firefox want us to check `-x` and `-y` variations as well\r\n  const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\r\n  if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\r\n    return element;\r\n  }\r\n\r\n  return getScrollParent(getParentNode(element));\r\n}\r\n","/**\r\n * Gets the scroll value of the given element in the given side (top and left)\r\n */\r\nexport function getScroll(element: HTMLElement, side = 'top') {\r\n  const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\r\n  const nodeName = element.nodeName;\r\n\r\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n    const html = element.ownerDocument.documentElement;\r\n    const scrollingElement = element.ownerDocument.scrollingElement || html;\r\n\r\n    return scrollingElement[upperSide];\r\n  }\r\n\r\n  return element[upperSide];\r\n}\r\n","import { getClientRect } from './getClientRect';\r\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\r\nimport { getScroll } from './getScroll';\r\nimport { Offsets } from '../models';\r\n\r\nexport function getViewportOffsetRectRelativeToArtbitraryNode(element: HTMLElement, excludeScroll = false): Offsets {\r\n  const html = element.ownerDocument.documentElement;\r\n  const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\r\n  const width = Math.max(html.clientWidth, window.innerWidth || 0);\r\n  const height = Math.max(html.clientHeight, window.innerHeight || 0);\r\n\r\n  const scrollTop = !excludeScroll ? getScroll(html) : 0;\r\n  const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\r\n\r\n  const offset = {\r\n    top: scrollTop - Number(relativeOffset?.top) + Number(relativeOffset?.marginTop),\r\n    left: scrollLeft - Number(relativeOffset?.left) + Number(relativeOffset?.marginLeft),\r\n    width,\r\n    height\r\n  };\r\n\r\n  return getClientRect(offset);\r\n}\r\n","/**\r\n * Check if the given element is fixed or is inside a fixed parent\r\n */\r\nimport { getStyleComputedProperty } from './getStyleComputedProperty';\r\nimport { getParentNode } from './getParentNode';\r\n\r\nexport function isFixed(element: HTMLElement): boolean {\r\n  const nodeName = element.nodeName;\r\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\r\n    return false;\r\n  }\r\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\r\n    return true;\r\n  }\r\n\r\n  return isFixed(getParentNode(element));\r\n}\r\n","/**\r\n * Computed the boundaries limits and return them\r\n */\r\nimport { Offsets } from '../models';\r\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\r\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\r\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\r\nimport { getParentNode } from './getParentNode';\r\nimport { getScrollParent } from './getScrollParent';\r\nimport { getViewportOffsetRectRelativeToArtbitraryNode } from './getViewportOffsetRectRelativeToArtbitraryNode';\r\nimport { getWindowSizes } from './getWindowSizes';\r\nimport { isFixed } from './isFixed';\r\nimport { isNumber } from './isNumeric';\r\n\r\nexport function getBoundaries(\r\n  target: HTMLElement,\r\n  host: HTMLElement,\r\n  padding = 0,\r\n  boundariesElement: string,\r\n  fixedPosition = false\r\n): Partial<Offsets> {\r\n  // NOTE: 1 DOM access here\r\n\r\n  let boundaries: Partial<Offsets> = { top: 0, left: 0 };\r\n  const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\r\n\r\n  // Handle viewport case\r\n  if (boundariesElement === 'viewport') {\r\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\r\n  } else {\r\n    // Handle other cases based on DOM element used as boundaries\r\n    let boundariesNode;\r\n    if (boundariesElement === 'scrollParent') {\r\n      boundariesNode = getScrollParent(getParentNode(host));\r\n      if (boundariesNode.nodeName === 'BODY') {\r\n        boundariesNode = target.ownerDocument.documentElement;\r\n      }\r\n    } else if (boundariesElement === 'window') {\r\n      boundariesNode = target.ownerDocument.documentElement;\r\n    } else {\r\n      boundariesNode = boundariesElement;\r\n    }\r\n\r\n    const offsets = getOffsetRectRelativeToArbitraryNode(\r\n      boundariesNode,\r\n      offsetParent,\r\n      fixedPosition\r\n    );\r\n\r\n    // In case of HTML, we need a different computation\r\n    if (offsets && boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\r\n      const { height, width } = getWindowSizes(target.ownerDocument);\r\n      if (isNumber(boundaries.top) && isNumber(offsets.top) && isNumber(offsets.marginTop)) {\r\n        boundaries.top += offsets.top - offsets.marginTop;\r\n      }\r\n      if (isNumber(boundaries.top)) {\r\n        boundaries.bottom = Number(height) + Number(offsets.top);\r\n      }\r\n      if (isNumber(boundaries.left) && isNumber(offsets.left) && isNumber(offsets.marginLeft)) {\r\n        boundaries.left += offsets.left - offsets.marginLeft;\r\n      }\r\n      if (isNumber(boundaries.top)) {\r\n        boundaries.right = Number(width) + Number(offsets.left);\r\n      }\r\n    } else if (offsets) {\r\n      // for all the other DOM elements, this one is good\r\n      boundaries = offsets;\r\n    }\r\n  }\r\n\r\n  // Add paddings\r\n  if (isNumber(boundaries.left)) {\r\n    boundaries.left += padding;\r\n  }\r\n  if (isNumber(boundaries.top)) {\r\n    boundaries.top += padding;\r\n  }\r\n  if (isNumber(boundaries.right)) {\r\n    boundaries.right -= padding;\r\n  }\r\n  if (isNumber(boundaries.bottom)) {\r\n    boundaries.bottom -= padding;\r\n  }\r\n\r\n  return boundaries;\r\n}\r\n","/**\r\n * Utility used to transform the `auto` placement to the placement with more\r\n * available space.\r\n */\r\nimport { getBoundaries } from './getBoundaries';\r\nimport { Offsets, PlacementForBs5 } from '../models';\r\nimport { getBsVer } from '@period-year-norway/ngx-bootstrap/utils';\r\n\r\nfunction getArea({ width, height }: { width: number; height: number }) {\r\n  return width * height;\r\n}\r\n\r\nexport function computeAutoPlacement(\r\n  placement: string,\r\n  refRect: Offsets,\r\n  target: HTMLElement,\r\n  host: HTMLElement,\r\n  allowedPositions = ['top', 'bottom', 'right', 'left'],\r\n  boundariesElement = 'viewport',\r\n  padding = 0\r\n) {\r\n  if (placement.indexOf('auto') === -1) {\r\n    return placement;\r\n  }\r\n\r\n  const boundaries = getBoundaries(target, host, padding, boundariesElement);\r\n\r\n  type Rects = { top: Offsets; right: Offsets; bottom: Offsets; left: Offsets };\r\n  const rects: Rects = {\r\n    top: {\r\n      width: boundaries?.width ?? 0,\r\n      height: (refRect?.top ?? 0) - (boundaries?.top ?? 0)\r\n    },\r\n    right: {\r\n      width: (boundaries?.right ?? 0) - (refRect?.right ?? 0),\r\n      height: boundaries?.height ?? 0\r\n    },\r\n    bottom: {\r\n      width: boundaries?.width ?? 0,\r\n      height: (boundaries?.bottom ?? 0) - (refRect?.bottom ?? 0)\r\n    },\r\n    left: {\r\n      width: (refRect.left ?? 0) - (boundaries?.left ?? 0),\r\n      height: boundaries?.height ?? 0\r\n    }\r\n  };\r\n\r\n  const sortedAreas = Object.keys(rects)\r\n    .map((key) => ({\r\n      position: key,\r\n      ...rects[key as keyof Rects],\r\n      area: getArea(rects[key as keyof Rects] as { width: number; height: number })\r\n    }))\r\n    .sort((a, b) => b.area - a.area);\r\n\r\n  let filteredAreas = sortedAreas.filter(({ width, height }) => {\r\n    return width >= target.clientWidth && height >= target.clientHeight;\r\n  });\r\n\r\n  filteredAreas = filteredAreas.filter(({ position }) => {\r\n    return allowedPositions.some((allowedPosition: string) => {\r\n      return allowedPosition === position;\r\n    });\r\n  });\r\n\r\n  const computedPlacement: string = filteredAreas.length > 0 ? filteredAreas[0].position : sortedAreas[0].position;\r\n\r\n  const variation = placement.split(' ')[1];\r\n  // for tooltip on auto position\r\n  target.className = target.className.replace(\r\n    /bs-tooltip-auto/g,\r\n    `bs-tooltip-${\r\n      getBsVer().isBs5 ? PlacementForBs5[computedPlacement as keyof typeof PlacementForBs5] : computedPlacement\r\n    }`\r\n  );\r\n\r\n  return computedPlacement + (variation ? `-${variation}` : '');\r\n}\r\n","import { Data, Offsets } from '../models';\r\n\r\nexport function getOffsets(data: Data): Offsets {\r\n  return {\r\n    width: data.offsets.target.width,\r\n    height: data.offsets.target.height,\r\n    left: Math.floor(data.offsets.target.left ?? 0),\r\n    top: Math.round(data.offsets.target.top ?? 0),\r\n    bottom: Math.round(data.offsets.target.bottom ?? 0),\r\n    right: Math.floor(data.offsets.target.right ?? 0)\r\n  };\r\n}\r\n","/**\r\n * Get the opposite placement of the given one\r\n */\r\nexport function getOppositePlacement(placement: string): string {\r\n  const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\r\n\r\n  return placement.replace(/left|right|bottom|top/g, matched => hash[matched as keyof typeof hash]);\r\n}\r\n","/**\r\n * Get the opposite placement variation of the given one\r\n */\r\nexport function getOppositeVariation(variation: string) {\r\n  if (variation === 'right') {\r\n    return 'left';\r\n  } else if (variation === 'left') {\r\n    return 'right';\r\n  }\r\n\r\n  return variation;\r\n}\r\n","/**\r\n * Get the outer sizes of the given element (offset size + margins)\r\n */\r\nimport { Offsets } from '../models';\r\n\r\nconst parse = (value?: string, def = 0) => value ? parseFloat(value) : def;\r\nexport function getOuterSizes(element: HTMLElement): Offsets {\r\n  const window = element.ownerDocument.defaultView;\r\n  const styles = window?.getComputedStyle(element);\r\n  const x = parse(styles?.marginTop) + parse(styles?.marginBottom);\r\n  const y = parse(styles?.marginLeft) + parse(styles?.marginRight);\r\n\r\n  return {\r\n    width: Number(element.offsetWidth) + y,\r\n    height: Number(element.offsetHeight) + x\r\n  };\r\n}\r\n","/**\r\n * Get offsets to the reference element\r\n */\r\nimport { findCommonOffsetParent } from './findCommonOffsetParent';\r\nimport { getOffsetRectRelativeToArbitraryNode } from './getOffsetRectRelativeToArbitraryNode';\r\nimport { getFixedPositionOffsetParent } from './getFixedPositionOffsetParent';\r\nimport { Offsets } from '../models';\r\n\r\nexport function getReferenceOffsets(\r\n  target: HTMLElement,\r\n  host: HTMLElement,\r\n  fixedPosition?: boolean\r\n): Offsets {\r\n  const commonOffsetParent = fixedPosition\r\n    ? getFixedPositionOffsetParent(target)\r\n    : findCommonOffsetParent(target, host);\r\n\r\n  return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\r\n}\r\n","/**\r\n * Get offsets to the target\r\n */\r\nimport { getOppositePlacement } from './getOppositePlacement';\r\nimport { getOuterSizes } from './getOuterSizes';\r\nimport { Offsets } from '../models';\r\n\r\n\r\nexport function getTargetOffsets(\r\n  target: HTMLElement,\r\n  hostOffsets: Offsets,\r\n  position: string\r\n): Offsets {\r\n  const placement = position.split(' ')[0];\r\n  // Get target node sizes\r\n  const targetRect = getOuterSizes(target);\r\n\r\n  // Add position, width and height to our offsets object\r\n  const targetOffsets = {\r\n    width: targetRect.width,\r\n    height: targetRect.height\r\n  };\r\n\r\n  // depending by the target placement we have to compute its offsets slightly differently\r\n  const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\r\n  const mainSide = isHoriz ? 'top' : 'left';\r\n  const secondarySide = isHoriz ? 'left' : 'top';\r\n  const measurement = isHoriz ? 'height' : 'width';\r\n  const secondaryMeasurement = !isHoriz ? 'height' : 'width';\r\n\r\n  targetOffsets[mainSide as keyof typeof targetOffsets] =\r\n    (hostOffsets[mainSide] ?? 0) +\r\n    hostOffsets[measurement] / 2 -\r\n    targetRect[measurement] / 2;\r\n\r\n  targetOffsets[secondarySide as keyof typeof targetOffsets] = placement === secondarySide\r\n    ? (hostOffsets[secondarySide] ?? 0)- targetRect[secondaryMeasurement]\r\n    : hostOffsets[getOppositePlacement(secondarySide) as keyof typeof hostOffsets] ?? 0;\r\n\r\n  return targetOffsets;\r\n}\r\n","/**\r\n * Helper used to know if the given modifier is enabled.\r\n */\r\nimport { Options } from '../models';\r\n\r\nexport function isModifierEnabled(options: Options, modifierName: string): boolean {\r\n  return !!options.modifiers[modifierName as keyof typeof options.modifiers]?.enabled;\r\n}\r\n","import { getBsVer } from '@period-year-norway/ngx-bootstrap/utils';\r\nimport { AvailbleBSPositions } from '../models';\r\n\r\nconst availablePositions = {\r\n  top: ['top', 'top start', 'top end'],\r\n  bottom: ['bottom', 'bottom start', 'bottom end'],\r\n  start: ['start', 'start top', 'start bottom'],\r\n  end: ['end', 'end top', 'end bottom']\r\n};\r\n\r\nexport function checkPopoverMargin(placement: AvailbleBSPositions, checkPosition: 'top' | 'bottom' | 'start' | 'end'): boolean {\r\n  if (!getBsVer().isBs5) {\r\n    return false;\r\n  }\r\n\r\n  return availablePositions[checkPosition].includes(placement);\r\n}\r\n\r\nexport function checkMargins(placement: any): string {\r\n  if (!getBsVer().isBs5) {\r\n    return '';\r\n  }\r\n\r\n  if (checkPopoverMargin(placement, 'end')) {\r\n    return 'ms-2';\r\n  }\r\n\r\n  if (checkPopoverMargin(placement, 'start')) {\r\n    return 'me-2';\r\n  }\r\n\r\n  if (checkPopoverMargin(placement, 'top')) {\r\n    return 'mb-2';\r\n  }\r\n\r\n  if (checkPopoverMargin(placement, 'bottom')) {\r\n    return 'mt-2';\r\n  }\r\n\r\n  return '';\r\n}\r\n","/**\r\n * Update class for the given popper\r\n */\r\nimport { Renderer2 } from '@angular/core';\r\nimport { Data, PlacementForBs5 } from '../models';\r\nimport { checkMargins } from './checkMargin';\r\nimport { getBsVer } from '@period-year-norway/ngx-bootstrap/utils';\r\n\r\nexport function updateContainerClass(data: Data, renderer?: Renderer2): void {\r\n  const target = data.instance.target;\r\n\r\n  let containerClass = target.className;\r\n\r\n  const dataPlacement = getBsVer().isBs5 ? PlacementForBs5[data.placement as keyof typeof PlacementForBs5] : data.placement;\r\n  if (data.placementAuto) {\r\n    containerClass = containerClass.replace(/bs-popover-auto/g, `bs-popover-${dataPlacement}`);\r\n    containerClass = containerClass.replace(/ms-2|me-2|mb-2|mt-2/g, '');\r\n    containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${dataPlacement}`);\r\n    containerClass = containerClass.replace(/\\sauto/g, ` ${dataPlacement}`);\r\n\r\n    if (containerClass.indexOf('popover') !== -1) {\r\n      containerClass = containerClass + ' ' + checkMargins(dataPlacement);\r\n    }\r\n\r\n    if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\r\n      containerClass += ' popover-auto';\r\n    }\r\n\r\n    if (containerClass.indexOf('tooltip') !== -1  && containerClass.indexOf('tooltip-auto') === -1) {\r\n      containerClass += ' tooltip-auto';\r\n    }\r\n  }\r\n  containerClass = containerClass.replace(/left|right|top|bottom|end|start/g, `${dataPlacement.split(' ')[0]}`);\r\n\r\n  if (renderer) {\r\n    renderer.setAttribute(target, 'class', containerClass);\r\n\r\n    return;\r\n  }\r\n\r\n  target.className = containerClass;\r\n}\r\n","/**\r\n * Set the style to the given popper\r\n */\r\nimport { Renderer2 } from '@angular/core';\r\n\r\nimport { isNumeric } from './isNumeric';\r\n\r\nexport function setStyles(element: HTMLElement | null, styles?: Record<string, string|number|HTMLElement>, renderer?: Renderer2) {\r\n  if (!element || !styles) {\r\n    return;\r\n  }\r\n  Object.keys(styles).forEach((prop) => {\r\n    let unit = '';\r\n    // add unit if the value is numeric and is one of the following\r\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 &&\r\n      isNumeric(styles[prop] as string)) {\r\n      unit = 'px';\r\n    }\r\n\r\n    if (renderer) {\r\n      renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\r\n\r\n      return;\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    (element.style as any)[prop] = String(styles[prop]) + unit;\r\n  });\r\n}\r\n","import { getClientRect, getOuterSizes, getStyleComputedProperty } from '../utils';\r\nimport { Data } from '../models';\r\n\r\nexport function arrow(data: Data) {\r\n  let targetOffsets = data.offsets.target;\r\n  // if arrowElement is a string, suppose it's a CSS selector\r\n  const arrowElement: HTMLElement | null = data.instance.target.querySelector('.arrow');\r\n\r\n  // if arrowElement is not found, don't run the modifier\r\n  if (!arrowElement) {\r\n    return data;\r\n  }\r\n\r\n  const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\r\n\r\n  const len = isVertical ? 'height' : 'width';\r\n  const sideCapitalized = isVertical ? 'Top' : 'Left';\r\n  const side = sideCapitalized.toLowerCase() as keyof typeof targetOffsets;\r\n  const altSide = isVertical ? 'left' : 'top';\r\n  const opSide = isVertical ? 'bottom' : 'right';\r\n  const arrowElementSize = getOuterSizes(arrowElement)[len];\r\n  const placementVariation = data.placement.split(' ')[1];\r\n\r\n  // top/left side\r\n  if ((data.offsets.host[opSide] ?? 0) - arrowElementSize < (targetOffsets[side] ?? 0)) {\r\n    (targetOffsets)[side] -=\r\n      (targetOffsets[side] ?? 0) - ((data.offsets.host[opSide] ?? 0) - arrowElementSize);\r\n  }\r\n  // bottom/right side\r\n  if (Number((data).offsets.host[side]) + Number(arrowElementSize) > (targetOffsets[opSide] ?? 0)) {\r\n    (targetOffsets)[side] +=\r\n      Number((data).offsets.host[side]) + Number(arrowElementSize) - Number((targetOffsets)[opSide]);\r\n  }\r\n  targetOffsets = getClientRect(targetOffsets);\r\n\r\n  // Compute the sideValue using the updated target offsets\r\n  // take target margin in account because we don't have this info available\r\n  const css = getStyleComputedProperty(data.instance.target) as unknown as Record<string, string>;\r\n  const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]) || 0;\r\n  const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]) || 0;\r\n\r\n  // compute center of the target\r\n  let center: number;\r\n  if (!placementVariation) {\r\n    center = Number((data).offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\r\n  } else {\r\n    const targetBorderRadius = parseFloat(css[\"borderRadius\"]) || 0;\r\n    const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\r\n    center = side === placementVariation ?\r\n      Number((data).offsets.host[side]) + targetSideArrowOffset :\r\n      Number((data).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\r\n  }\r\n\r\n  let sideValue =\r\n    center - (targetOffsets[side] ?? 0) - targetMarginSide - targetBorderSide;\r\n\r\n  // prevent arrowElement from being placed not contiguously to its target\r\n  sideValue = Math.max(Math.min(targetOffsets[len] - (arrowElementSize + 5), sideValue), 0);\r\n  data.offsets.arrow = {\r\n    [side]: Math.round(sideValue),\r\n    [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\r\n  };\r\n\r\n  data.instance.arrow = arrowElement;\r\n\r\n  return data;\r\n}\r\n","import { Data } from '../models';\r\nimport {\r\n  computeAutoPlacement,\r\n  getBoundaries,\r\n  getClientRect,\r\n  getOppositeVariation,\r\n  getTargetOffsets,\r\n  isModifierEnabled\r\n} from '../utils';\r\n\r\nexport function flip(data: Data): Data {\r\n  data.offsets.target = getClientRect(data.offsets.target);\r\n\r\n  if (!isModifierEnabled(data.options, 'flip')) {\r\n\r\n    data.offsets.target = {\r\n      ...data.offsets.target,\r\n      ...getTargetOffsets(\r\n        data.instance.target,\r\n        data.offsets.host,\r\n        data.placement\r\n      )\r\n    };\r\n\r\n    return data;\r\n  }\r\n\r\n  const boundaries = getBoundaries(\r\n    data.instance.target,\r\n    data.instance.host,\r\n    0, // padding\r\n    'viewport',\r\n    false // positionFixed\r\n  );\r\n\r\n  let placement = data.placement.split(' ')[0];\r\n  let variation = data.placement.split(' ')[1] || '';\r\n\r\n  const offsetsHost = data.offsets.host;\r\n  const target = data.instance.target;\r\n  const host = data.instance.host;\r\n\r\n  const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\r\n  const flipOrder = [placement, adaptivePosition];\r\n\r\n  flipOrder.forEach((step, index) => {\r\n    if (placement !== step || flipOrder.length === index + 1) {\r\n      return;\r\n    }\r\n\r\n    placement = data.placement.split(' ')[0];\r\n\r\n    // using floor because the host offsets may contain decimals we are not going to consider here\r\n    const overlapsRef =\r\n      (placement === 'left' &&\r\n        Math.floor(data.offsets.target.right ?? 0) > Math.floor(data.offsets.host.left ?? 0)) ||\r\n      (placement === 'right' &&\r\n        Math.floor(data.offsets.target.left ?? 0) < Math.floor(data.offsets.host.right ?? 0)) ||\r\n      (placement === 'top' &&\r\n        Math.floor(data.offsets.target.bottom ?? 0) > Math.floor(data.offsets.host.top ?? 0)) ||\r\n      (placement === 'bottom' &&\r\n        Math.floor(data.offsets.target.top ?? 0) < Math.floor(data.offsets.host.bottom ?? 0));\r\n\r\n    const overflowsLeft = Math.floor(data.offsets.target.left ?? 0) < Math.floor(boundaries.left ?? 0);\r\n    const overflowsRight = Math.floor(data.offsets.target.right ?? 0) > Math.floor(boundaries.right ?? 0);\r\n    const overflowsTop = Math.floor(data.offsets.target.top ?? 0) < Math.floor(boundaries.top ?? 0);\r\n    const overflowsBottom = Math.floor(data.offsets.target.bottom ?? 0) > Math.floor(boundaries.bottom ?? 0);\r\n\r\n    const overflowsBoundaries =\r\n      (placement === 'left' && overflowsLeft) ||\r\n      (placement === 'right' && overflowsRight) ||\r\n      (placement === 'top' && overflowsTop) ||\r\n      (placement === 'bottom' && overflowsBottom);\r\n\r\n    // flip the variation if required\r\n    const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\r\n    const flippedVariation =\r\n      ((isVertical && variation === 'left' && overflowsLeft) ||\r\n        (isVertical && variation === 'right' && overflowsRight) ||\r\n        (!isVertical && variation === 'left' && overflowsTop) ||\r\n        (!isVertical && variation === 'right' && overflowsBottom));\r\n\r\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\r\n      if (overlapsRef || overflowsBoundaries) {\r\n        placement = flipOrder[index + 1];\r\n      }\r\n\r\n      if (flippedVariation) {\r\n        variation = getOppositeVariation(variation);\r\n      }\r\n\r\n      data.placement = placement + (variation ? ` ${variation}` : '');\r\n\r\n      data.offsets.target = {\r\n        ...data.offsets.target,\r\n        ...getTargetOffsets(\r\n          data.instance.target,\r\n          data.offsets.host,\r\n          data.placement\r\n        )\r\n      };\r\n    }\r\n  });\r\n\r\n  return data;\r\n}\r\n","import {\r\n  computeAutoPlacement,\r\n  getReferenceOffsets,\r\n  getTargetOffsets\r\n} from '../utils';\r\n\r\nimport { Data, Options } from '../models';\r\n\r\nexport function initData(\r\n  targetElement: HTMLElement|null, hostElement: HTMLElement|null, position: string, options?: Options\r\n): Data|undefined {\r\n\r\n  if (!targetElement || !hostElement) {\r\n    return ;\r\n  }\r\n\r\n  const hostElPosition = getReferenceOffsets(targetElement, hostElement);\r\n\r\n  if (!position.match(/^(auto)*\\s*(left|right|top|bottom|start|end)*$/)\r\n    && !position.match(/^(left|right|top|bottom|start|end)*(?: (left|right|top|bottom|start|end))*$/)) {\r\n            position = 'auto';\r\n    }\r\n\r\n  const placementAuto = !!position.match(/auto/g);\r\n\r\n  // support old placements 'auto left|right|top|bottom'\r\n  let placement = position.match(/auto\\s(left|right|top|bottom|start|end)/)\r\n    ? position.split(' ')[1] || 'auto'\r\n    : position;\r\n\r\n  // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\r\n  const matches = placement.match(/^(left|right|top|bottom|start|end)* ?(?!\\1)(left|right|top|bottom|start|end)?/);\r\n  if (matches) {\r\n    placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\r\n  }\r\n\r\n  // \"left right\", \"top bottom\" etc. placements also considered incorrect.\r\n  if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\r\n    placement = 'auto';\r\n  }\r\n\r\n  placement = computeAutoPlacement(\r\n    placement,\r\n    hostElPosition,\r\n    targetElement,\r\n    hostElement,\r\n    options ? options.allowedPositions : undefined\r\n  );\r\n\r\n  const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\r\n\r\n  return {\r\n    options: options || {modifiers: {}},\r\n    instance: {\r\n      target: targetElement,\r\n      host: hostElement,\r\n      arrow: void 0\r\n    },\r\n    offsets: {\r\n      target: targetOffset,\r\n      host: hostElPosition,\r\n      arrow: void 0\r\n    },\r\n    positionFixed: false,\r\n    placement,\r\n    placementAuto\r\n  };\r\n}\r\n","import { getBoundaries, isModifierEnabled } from '../utils';\r\nimport { Data, Offsets } from '../models';\r\n\r\nexport function preventOverflow(data: Data) {\r\n  if (!isModifierEnabled(data.options, 'preventOverflow')) {\r\n    return data;\r\n  }\r\n\r\n  // NOTE: DOM access here\r\n  // resets the target Offsets's position so that the document size can be calculated excluding\r\n  // the size of the targetOffsets element itself\r\n  const transformProp = 'transform';\r\n  const targetStyles = data.instance.target.style; // assignment to help minification\r\n  const { top, left, [transformProp]: transform } = targetStyles;\r\n  targetStyles.top = '';\r\n  targetStyles.left = '';\r\n  targetStyles[transformProp] = '';\r\n\r\n  const boundaries = getBoundaries(\r\n    data.instance.target,\r\n    data.instance.host,\r\n    0, // padding\r\n    data.options.modifiers.preventOverflow?.boundariesElement || 'scrollParent',\r\n    false // positionFixed\r\n  );\r\n\r\n  // NOTE: DOM access here\r\n  // restores the original style properties after the offsets have been computed\r\n  targetStyles.top = top;\r\n  targetStyles.left = left;\r\n  targetStyles[transformProp] = transform;\r\n\r\n  const order = ['left', 'right', 'top', 'bottom'];\r\n\r\n  const check = {\r\n    primary(placement: keyof Offsets) {\r\n      let value = data.offsets.target[placement];\r\n      // options.escapeWithReference\r\n      if ((data.offsets.target[placement] ?? 0) < (boundaries[placement] ?? 0)) {\r\n        value = Math.max(data.offsets.target[placement] ?? 0, boundaries[placement] ?? 0);\r\n      }\r\n\r\n      return { [placement]: value };\r\n    },\r\n    secondary(placement: keyof Offsets) {\r\n      const isPlacementHorizontal = placement === 'right';\r\n      const mainSide = isPlacementHorizontal ? 'left' : 'top';\r\n      const measurement = isPlacementHorizontal ? 'width' : 'height';\r\n      let value = data.offsets.target[mainSide];\r\n\r\n      // escapeWithReference\r\n      if ((data.offsets.target[placement] ?? 0) > (boundaries[placement] ?? 0)) {\r\n        value = Math.min(\r\n          data.offsets.target[mainSide] ?? 0,\r\n          (boundaries[placement] ?? 0) - data.offsets.target[measurement]\r\n        );\r\n      }\r\n\r\n      return { [mainSide]: value };\r\n    }\r\n  };\r\n\r\n  order.forEach((placement) => {\r\n    const side = ['left', 'top', 'start'].indexOf(placement) !== -1 ? check['primary'] : check['secondary'];\r\n\r\n    data.offsets.target = {\r\n      ...data.offsets.target,\r\n      ...side(placement as keyof Offsets)\r\n    };\r\n  });\r\n\r\n  return data;\r\n}\r\n","import { Data } from '../models';\r\n\r\nexport function shift(data: Data): Data {\r\n  const placement = data.placement;\r\n  const basePlacement = placement.split(' ')[0];\r\n  const shiftVariation = placement.split(' ')[1];\r\n\r\n  if (shiftVariation) {\r\n    const { host, target } = data.offsets;\r\n    const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\r\n    const side = isVertical ? 'left' : 'top';\r\n    const measurement = isVertical ? 'width' : 'height';\r\n\r\n    const shiftOffsets = {\r\n      start: { [side]: host[side] },\r\n      end: {\r\n        [side]: (host[side] ?? 0) + host[measurement] - target[measurement]\r\n      }\r\n    };\r\n\r\n    data.offsets.target = {\r\n      ...target, ...{\r\n        [side]: (side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side])\r\n      }\r\n    };\r\n  }\r\n\r\n  return data;\r\n}\r\n","/**\r\n * @copyright Valor Software\r\n * @copyright Federico Zivolo and contributors\r\n */\r\nimport { Renderer2 } from '@angular/core';\r\nimport { Data, Offsets, Options, MapPlacementInToRL } from './models';\r\n\r\nimport { arrow, flip, initData, preventOverflow, shift } from './modifiers';\r\n\r\nimport { getOffsets, getReferenceOffsets, setStyles, updateContainerClass } from './utils';\r\n\r\n\r\nexport class Positioning {\r\n  position(hostElement: HTMLElement, targetElement: HTMLElement/*, round = true*/): Offsets | undefined {\r\n    return this.offset(hostElement, targetElement/*, false*/);\r\n  }\r\n\r\n  offset(hostElement: HTMLElement, targetElement: HTMLElement/*, round = true*/): Offsets | undefined {\r\n    return getReferenceOffsets(targetElement, hostElement);\r\n  }\r\n\r\n  positionElements(\r\n    hostElement: HTMLElement | null,\r\n    targetElement: HTMLElement | null,\r\n    position: string,\r\n    appendToBody?: boolean,\r\n    options?: Options\r\n  ): Data | undefined {\r\n    const chainOfModifiers = [flip, shift, preventOverflow, arrow];\r\n    const _position = MapPlacementInToRL[position as keyof typeof MapPlacementInToRL];\r\n    const data = initData(targetElement, hostElement, _position, options);\r\n    if (!data) {\r\n      return;\r\n    }\r\n\r\n    return chainOfModifiers.reduce(\r\n      (modifiedData, modifier) => modifier(modifiedData),\r\n      data\r\n    );\r\n  }\r\n}\r\n\r\nconst positionService = new Positioning();\r\n\r\nexport function positionElements(\r\n  hostElement: HTMLElement | null,\r\n  targetElement: HTMLElement | null,\r\n  placement: string,\r\n  appendToBody?: boolean,\r\n  options?: Options,\r\n  renderer?: Renderer2\r\n): void {\r\n\r\n  const data = positionService.positionElements(\r\n    hostElement,\r\n    targetElement,\r\n    placement,\r\n    appendToBody,\r\n    options\r\n  );\r\n\r\n  if (!data) {\r\n    return;\r\n  }\r\n\r\n  const offsets = getOffsets(data);\r\n\r\n  setStyles(targetElement, {\r\n    'will-change': 'transform',\r\n    top: '0px',\r\n    left: '0px',\r\n    transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\r\n  }, renderer);\r\n\r\n  if (data.instance.arrow) {\r\n    setStyles(data.instance.arrow, data.offsets.arrow, renderer);\r\n  }\r\n\r\n  updateContainerClass(data, renderer);\r\n}\r\n","import { Injectable, ElementRef, RendererFactory2, Inject, PLATFORM_ID, NgZone } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nimport { positionElements } from './ng-positioning';\r\n\r\nimport { fromEvent, merge, of, animationFrameScheduler, Subject, Observable } from 'rxjs';\r\nimport { Options } from './models';\r\n\r\n\r\nexport interface PositioningOptions {\r\n  /** The DOM element, ElementRef, or a selector string of an element which will be moved */\r\n  element?: HTMLElement | ElementRef | string;\r\n\r\n  /** The DOM element, ElementRef, or a selector string of an element which the element will be attached to  */\r\n  target?: HTMLElement | ElementRef | string;\r\n\r\n  /**\r\n   * A string of the form 'vert-attachment horiz-attachment' or 'placement'\r\n   * - placement can be \"top\", \"bottom\", \"left\", \"right\"\r\n   * not yet supported:\r\n   * - vert-attachment can be any of 'top', 'middle', 'bottom'\r\n   * - horiz-attachment can be any of 'left', 'center', 'right'\r\n   */\r\n  attachment?: string;\r\n\r\n  /** A string similar to `attachment`. The one difference is that, if it's not provided,\r\n   * `targetAttachment` will assume the mirror image of `attachment`.\r\n   */\r\n  targetAttachment?: string;\r\n\r\n  /** A string of the form 'vert-offset horiz-offset'\r\n   * - vert-offset and horiz-offset can be of the form \"20px\" or \"55%\"\r\n   */\r\n  offset?: string;\r\n\r\n  /** A string similar to `offset`, but referring to the offset of the target */\r\n  targetOffset?: string;\r\n\r\n  /** If true component will be attached to body */\r\n  appendToBody?: boolean;\r\n}\r\n\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class PositioningService {\r\n  private options?: Options;\r\n  private update$$ = new Subject<null>();\r\n  private positionElements = new Map();\r\n  private triggerEvent$?: Observable<number|Event|null>;\r\n  private isDisabled = false;\r\n\r\n  constructor(\r\n    ngZone: NgZone,\r\n    rendererFactory: RendererFactory2,\r\n    @Inject(PLATFORM_ID) platformId: number\r\n  ) {\r\n\r\n    if (isPlatformBrowser(platformId)) {\r\n      ngZone.runOutsideAngular(() => {\r\n        this.triggerEvent$ = merge(\r\n          fromEvent(window, 'scroll', { passive: true }),\r\n          fromEvent(window, 'resize', { passive: true }),\r\n                    of(0, animationFrameScheduler),\r\n          this.update$$\r\n        );\r\n\r\n        this.triggerEvent$.subscribe(() => {\r\n          if (this.isDisabled) {\r\n            return;\r\n          }\r\n\r\n          this.positionElements\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            .forEach((positionElement: any) => {\r\n              positionElements(\r\n                _getHtmlElement(positionElement.target),\r\n                _getHtmlElement(positionElement.element),\r\n                positionElement.attachment,\r\n                positionElement.appendToBody,\r\n                this.options,\r\n                rendererFactory.createRenderer(null, null)\r\n              );\r\n            });\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  position(options: PositioningOptions): void {\r\n    this.addPositionElement(options);\r\n  }\r\n\r\n  get event$(): Observable<number|Event|null>|undefined {\r\n    return this.triggerEvent$;\r\n  }\r\n\r\n  disable(): void {\r\n    this.isDisabled = true;\r\n  }\r\n\r\n  enable(): void {\r\n    this.isDisabled = false;\r\n  }\r\n\r\n  addPositionElement(options: PositioningOptions): void {\r\n    this.positionElements.set(_getHtmlElement(options.element), options);\r\n  }\r\n\r\n  calcPosition(): void {\r\n    this.update$$.next(null);\r\n  }\r\n\r\n  deletePositionElement(elRef: ElementRef): void {\r\n    this.positionElements.delete(_getHtmlElement(elRef));\r\n  }\r\n\r\n  setOptions(options: Options) {\r\n    this.options = options;\r\n  }\r\n}\r\n\r\nfunction _getHtmlElement(element?: HTMLElement | ElementRef | string): HTMLElement | null {\r\n  // it means that we got a selector\r\n  if (typeof element === 'string') {\r\n    return document.querySelector(element);\r\n  }\r\n\r\n  if (element instanceof ElementRef) {\r\n    return element.nativeElement;\r\n  }\r\n\r\n  return element ?? null;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}