{"version":3,"file":"tippy_utils.cjs","sources":["../../../components/popover/tippy_utils.js"],"sourcesContent":["import tippy, { sticky } from 'tippy.js';\n\nexport const BASE_TIPPY_DIRECTIONS = [\n  'bottom', 'bottom-start', 'bottom-end',\n  'right', 'right-start', 'right-end',\n  'left', 'left-start', 'left-end',\n  'top', 'top-start', 'top-end',\n];\n\nexport const TIPPY_STICKY_VALUES = [true, false, 'reference', 'popper'];\nexport const createTippyPopover = (anchorElement, options) => {\n  const { contentElement } = { ...options };\n  delete options.contentElement;\n  return tippy(anchorElement, {\n    ...options,\n    plugins: [sticky],\n    render: () => getContentWrapper(contentElement),\n  });\n};\n\nexport const createTippy = (anchorElement, options) => {\n  return tippy(anchorElement, {\n    ...options,\n    plugins: [sticky],\n  });\n};\n\nexport const getPopperOptions = ({\n  boundary = 'clippingParents',\n  fallbackPlacements = [],\n  onChangePlacement = () => {},\n  hasHideModifierEnabled = false,\n  // If set to false the dialog will display over top of the anchor when there is insufficient space.\n  // if set to true it will never move from its position relative to the anchor and will clip instead.\n  tether = true,\n} = {}) => {\n  return {\n    modifiers: [\n      {\n        name: 'flip',\n        options: {\n          fallbackPlacements,\n          boundary,\n        },\n      },\n      {\n        name: 'hide',\n        enabled: hasHideModifierEnabled,\n      },\n      {\n        name: 'preventOverflow',\n        options: {\n          altAxis: !tether,\n          tether,\n        },\n      },\n    ],\n  };\n};\n\nconst createAnchor = (anchorWrapper) => {\n  const span = document.createElement('span');\n  span.innerText = anchorWrapper.innerText || '';\n  anchorWrapper.innerText = '';\n  anchorWrapper.appendChild(span);\n  return span;\n};\n\nexport const getAnchor = (anchorWrapper) => {\n  const anchor = anchorWrapper?.children[0];\n  if (!anchor) return createAnchor(anchorWrapper);\n  return anchor;\n};\n\nexport const getContentWrapper = content => {\n  // The recommended structure is to use the popper as an outer wrapper\n  const popper = document.createElement('div');\n  popper.className = 'tippy-box d-ps-absolute';\n  popper.appendChild(content);\n  return {\n    popper,\n  };\n};\n"],"names":["sticky"],"mappings":";;;AAEY,MAAC,wBAAwB;AAAA,EACnC;AAAA,EAAU;AAAA,EAAgB;AAAA,EAC1B;AAAA,EAAS;AAAA,EAAe;AAAA,EACxB;AAAA,EAAQ;AAAA,EAAc;AAAA,EACtB;AAAA,EAAO;AAAA,EAAa;AACtB;AAEY,MAAC,sBAAsB,CAAC,MAAM,OAAO,aAAa,QAAQ;AAC1D,MAAC,qBAAqB,CAAC,eAAe,YAAY;AAC5D,QAAM,EAAE,eAAc,IAAK,EAAE,GAAG,QAAO;AACvC,SAAO,QAAQ;AACf,SAAO,MAAM,eAAe;AAAA,IAC1B,GAAG;AAAA,IACH,SAAS,CAACA,MAAAA,MAAM;AAAA,IAChB,QAAQ,MAAM,kBAAkB,cAAc;AAAA,EAClD,CAAG;AACH;AAEY,MAAC,cAAc,CAAC,eAAe,YAAY;AACrD,SAAO,MAAM,eAAe;AAAA,IAC1B,GAAG;AAAA,IACH,SAAS,CAACA,MAAAA,MAAM;AAAA,EACpB,CAAG;AACH;AAEY,MAAC,mBAAmB,CAAC;AAAA,EAC/B,WAAW;AAAA,EACX,qBAAqB,CAAE;AAAA,EACvB,oBAAoB,MAAM;AAAA,EAAE;AAAA,EAC5B,yBAAyB;AAAA;AAAA;AAAA,EAGzB,SAAS;AACX,IAAI,OAAO;AACT,SAAO;AAAA,IACL,WAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP;AAAA,UACA;AAAA,QACD;AAAA,MACF;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,MACV;AAAA,MACD;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,UACP,SAAS,CAAC;AAAA,UACV;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,EACL;AACA;AAEA,MAAM,eAAe,CAAC,kBAAkB;AACtC,QAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,YAAY,cAAc,aAAa;AAC5C,gBAAc,YAAY;AAC1B,gBAAc,YAAY,IAAI;AAC9B,SAAO;AACT;AAEY,MAAC,YAAY,CAAC,kBAAkB;AAC1C,QAAM,SAAS,+CAAe,SAAS;AACvC,MAAI,CAAC,OAAQ,QAAO,aAAa,aAAa;AAC9C,SAAO;AACT;AAEY,MAAC,oBAAoB,aAAW;AAE1C,QAAM,SAAS,SAAS,cAAc,KAAK;AAC3C,SAAO,YAAY;AACnB,SAAO,YAAY,OAAO;AAC1B,SAAO;AAAA,IACL;AAAA,EACJ;AACA;;;;;;;;"}