floating-ui.dom.umd.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683
  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@floating-ui/core')) :
  3. typeof define === 'function' && define.amd ? define(['exports', '@floating-ui/core'], factory) :
  4. (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.FloatingUIDOM = {}, global.FloatingUICore));
  5. })(this, (function (exports, core) { 'use strict';
  6. function isWindow(value) {
  7. return value && value.document && value.location && value.alert && value.setInterval;
  8. }
  9. function getWindow(node) {
  10. if (node == null) {
  11. return window;
  12. }
  13. if (!isWindow(node)) {
  14. const ownerDocument = node.ownerDocument;
  15. return ownerDocument ? ownerDocument.defaultView || window : window;
  16. }
  17. return node;
  18. }
  19. function getComputedStyle(element) {
  20. return getWindow(element).getComputedStyle(element);
  21. }
  22. function getNodeName(node) {
  23. return isWindow(node) ? '' : node ? (node.nodeName || '').toLowerCase() : '';
  24. }
  25. function getUAString() {
  26. const uaData = navigator.userAgentData;
  27. if (uaData != null && uaData.brands) {
  28. return uaData.brands.map(item => item.brand + "/" + item.version).join(' ');
  29. }
  30. return navigator.userAgent;
  31. }
  32. function isHTMLElement(value) {
  33. return value instanceof getWindow(value).HTMLElement;
  34. }
  35. function isElement(value) {
  36. return value instanceof getWindow(value).Element;
  37. }
  38. function isNode(value) {
  39. return value instanceof getWindow(value).Node;
  40. }
  41. function isShadowRoot(node) {
  42. // Browsers without `ShadowRoot` support
  43. if (typeof ShadowRoot === 'undefined') {
  44. return false;
  45. }
  46. const OwnElement = getWindow(node).ShadowRoot;
  47. return node instanceof OwnElement || node instanceof ShadowRoot;
  48. }
  49. function isOverflowElement(element) {
  50. // Firefox wants us to check `-x` and `-y` variations as well
  51. const {
  52. overflow,
  53. overflowX,
  54. overflowY,
  55. display
  56. } = getComputedStyle(element);
  57. return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);
  58. }
  59. function isTableElement(element) {
  60. return ['table', 'td', 'th'].includes(getNodeName(element));
  61. }
  62. function isContainingBlock(element) {
  63. // TODO: Try and use feature detection here instead
  64. const isFirefox = /firefox/i.test(getUAString());
  65. const css = getComputedStyle(element); // This is non-exhaustive but covers the most common CSS properties that
  66. // create a containing block.
  67. // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
  68. return css.transform !== 'none' || css.perspective !== 'none' || isFirefox && css.willChange === 'filter' || isFirefox && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective'].some(value => css.willChange.includes(value)) || ['paint', 'layout', 'strict', 'content'].some( // TS 4.1 compat
  69. value => {
  70. const contain = css.contain;
  71. return contain != null ? contain.includes(value) : false;
  72. });
  73. }
  74. function isLayoutViewport() {
  75. // Not Safari
  76. return !/^((?!chrome|android).)*safari/i.test(getUAString()); // Feature detection for this fails in various ways
  77. // • Always-visible scrollbar or not
  78. // • Width of <html>, etc.
  79. // const vV = win.visualViewport;
  80. // return vV ? Math.abs(win.innerWidth / vV.scale - vV.width) < 0.5 : true;
  81. }
  82. function isLastTraversableNode(node) {
  83. return ['html', 'body', '#document'].includes(getNodeName(node));
  84. }
  85. const min = Math.min;
  86. const max = Math.max;
  87. const round = Math.round;
  88. function getBoundingClientRect(element, includeScale, isFixedStrategy) {
  89. var _win$visualViewport$o, _win$visualViewport, _win$visualViewport$o2, _win$visualViewport2;
  90. if (includeScale === void 0) {
  91. includeScale = false;
  92. }
  93. if (isFixedStrategy === void 0) {
  94. isFixedStrategy = false;
  95. }
  96. const clientRect = element.getBoundingClientRect();
  97. let scaleX = 1;
  98. let scaleY = 1;
  99. if (includeScale && isHTMLElement(element)) {
  100. scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
  101. scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
  102. }
  103. const win = isElement(element) ? getWindow(element) : window;
  104. const addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
  105. const x = (clientRect.left + (addVisualOffsets ? (_win$visualViewport$o = (_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) != null ? _win$visualViewport$o : 0 : 0)) / scaleX;
  106. const y = (clientRect.top + (addVisualOffsets ? (_win$visualViewport$o2 = (_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) != null ? _win$visualViewport$o2 : 0 : 0)) / scaleY;
  107. const width = clientRect.width / scaleX;
  108. const height = clientRect.height / scaleY;
  109. return {
  110. width,
  111. height,
  112. top: y,
  113. right: x + width,
  114. bottom: y + height,
  115. left: x,
  116. x,
  117. y
  118. };
  119. }
  120. function getDocumentElement(node) {
  121. return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;
  122. }
  123. function getNodeScroll(element) {
  124. if (isElement(element)) {
  125. return {
  126. scrollLeft: element.scrollLeft,
  127. scrollTop: element.scrollTop
  128. };
  129. }
  130. return {
  131. scrollLeft: element.pageXOffset,
  132. scrollTop: element.pageYOffset
  133. };
  134. }
  135. function getWindowScrollBarX(element) {
  136. // If <html> has a CSS width greater than the viewport, then this will be
  137. // incorrect for RTL.
  138. return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;
  139. }
  140. function isScaled(element) {
  141. const rect = getBoundingClientRect(element);
  142. return round(rect.width) !== element.offsetWidth || round(rect.height) !== element.offsetHeight;
  143. }
  144. function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  145. const isOffsetParentAnElement = isHTMLElement(offsetParent);
  146. const documentElement = getDocumentElement(offsetParent);
  147. const rect = getBoundingClientRect(element, // @ts-ignore - checked above (TS 4.1 compat)
  148. isOffsetParentAnElement && isScaled(offsetParent), strategy === 'fixed');
  149. let scroll = {
  150. scrollLeft: 0,
  151. scrollTop: 0
  152. };
  153. const offsets = {
  154. x: 0,
  155. y: 0
  156. };
  157. if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
  158. if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
  159. scroll = getNodeScroll(offsetParent);
  160. }
  161. if (isHTMLElement(offsetParent)) {
  162. const offsetRect = getBoundingClientRect(offsetParent, true);
  163. offsets.x = offsetRect.x + offsetParent.clientLeft;
  164. offsets.y = offsetRect.y + offsetParent.clientTop;
  165. } else if (documentElement) {
  166. offsets.x = getWindowScrollBarX(documentElement);
  167. }
  168. }
  169. return {
  170. x: rect.left + scroll.scrollLeft - offsets.x,
  171. y: rect.top + scroll.scrollTop - offsets.y,
  172. width: rect.width,
  173. height: rect.height
  174. };
  175. }
  176. function getParentNode(node) {
  177. if (getNodeName(node) === 'html') {
  178. return node;
  179. }
  180. return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
  181. // @ts-ignore
  182. node.assignedSlot || // step into the shadow DOM of the parent of a slotted node
  183. node.parentNode || ( // DOM Element detected
  184. isShadowRoot(node) ? node.host : null) || // ShadowRoot detected
  185. getDocumentElement(node) // fallback
  186. );
  187. }
  188. function getTrueOffsetParent(element) {
  189. if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {
  190. return null;
  191. }
  192. return element.offsetParent;
  193. }
  194. function getContainingBlock(element) {
  195. let currentNode = getParentNode(element);
  196. if (isShadowRoot(currentNode)) {
  197. currentNode = currentNode.host;
  198. }
  199. while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
  200. if (isContainingBlock(currentNode)) {
  201. return currentNode;
  202. } else {
  203. const parent = currentNode.parentNode;
  204. currentNode = isShadowRoot(parent) ? parent.host : parent;
  205. }
  206. }
  207. return null;
  208. } // Gets the closest ancestor positioned element. Handles some edge cases,
  209. // such as table ancestors and cross browser bugs.
  210. function getOffsetParent(element) {
  211. const window = getWindow(element);
  212. let offsetParent = getTrueOffsetParent(element);
  213. while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
  214. offsetParent = getTrueOffsetParent(offsetParent);
  215. }
  216. if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {
  217. return window;
  218. }
  219. return offsetParent || getContainingBlock(element) || window;
  220. }
  221. function getDimensions(element) {
  222. if (isHTMLElement(element)) {
  223. return {
  224. width: element.offsetWidth,
  225. height: element.offsetHeight
  226. };
  227. }
  228. const rect = getBoundingClientRect(element);
  229. return {
  230. width: rect.width,
  231. height: rect.height
  232. };
  233. }
  234. function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  235. let {
  236. rect,
  237. offsetParent,
  238. strategy
  239. } = _ref;
  240. const isOffsetParentAnElement = isHTMLElement(offsetParent);
  241. const documentElement = getDocumentElement(offsetParent);
  242. if (offsetParent === documentElement) {
  243. return rect;
  244. }
  245. let scroll = {
  246. scrollLeft: 0,
  247. scrollTop: 0
  248. };
  249. const offsets = {
  250. x: 0,
  251. y: 0
  252. };
  253. if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
  254. if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
  255. scroll = getNodeScroll(offsetParent);
  256. }
  257. if (isHTMLElement(offsetParent)) {
  258. const offsetRect = getBoundingClientRect(offsetParent, true);
  259. offsets.x = offsetRect.x + offsetParent.clientLeft;
  260. offsets.y = offsetRect.y + offsetParent.clientTop;
  261. } // This doesn't appear to be need to be negated.
  262. // else if (documentElement) {
  263. // offsets.x = getWindowScrollBarX(documentElement);
  264. // }
  265. }
  266. return { ...rect,
  267. x: rect.x - scroll.scrollLeft + offsets.x,
  268. y: rect.y - scroll.scrollTop + offsets.y
  269. };
  270. }
  271. function getViewportRect(element, strategy) {
  272. const win = getWindow(element);
  273. const html = getDocumentElement(element);
  274. const visualViewport = win.visualViewport;
  275. let width = html.clientWidth;
  276. let height = html.clientHeight;
  277. let x = 0;
  278. let y = 0;
  279. if (visualViewport) {
  280. width = visualViewport.width;
  281. height = visualViewport.height;
  282. const layoutViewport = isLayoutViewport();
  283. if (layoutViewport || !layoutViewport && strategy === 'fixed') {
  284. x = visualViewport.offsetLeft;
  285. y = visualViewport.offsetTop;
  286. }
  287. }
  288. return {
  289. width,
  290. height,
  291. x,
  292. y
  293. };
  294. }
  295. // of the `<html>` and `<body>` rect bounds if horizontally scrollable
  296. function getDocumentRect(element) {
  297. var _element$ownerDocumen;
  298. const html = getDocumentElement(element);
  299. const scroll = getNodeScroll(element);
  300. const body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
  301. const width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
  302. const height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
  303. let x = -scroll.scrollLeft + getWindowScrollBarX(element);
  304. const y = -scroll.scrollTop;
  305. if (getComputedStyle(body || html).direction === 'rtl') {
  306. x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
  307. }
  308. return {
  309. width,
  310. height,
  311. x,
  312. y
  313. };
  314. }
  315. function getNearestOverflowAncestor(node) {
  316. const parentNode = getParentNode(node);
  317. if (isLastTraversableNode(parentNode)) {
  318. // @ts-ignore assume body is always available
  319. return node.ownerDocument.body;
  320. }
  321. if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
  322. return parentNode;
  323. }
  324. return getNearestOverflowAncestor(parentNode);
  325. }
  326. function getOverflowAncestors(node, list) {
  327. var _node$ownerDocument;
  328. if (list === void 0) {
  329. list = [];
  330. }
  331. const scrollableAncestor = getNearestOverflowAncestor(node);
  332. const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);
  333. const win = getWindow(scrollableAncestor);
  334. const target = isBody ? [win].concat(win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []) : scrollableAncestor;
  335. const updatedList = list.concat(target);
  336. return isBody ? updatedList : // @ts-ignore: isBody tells us target will be an HTMLElement here
  337. updatedList.concat(getOverflowAncestors(target));
  338. }
  339. function contains(parent, child) {
  340. const rootNode = child.getRootNode == null ? void 0 : child.getRootNode(); // First, attempt with faster native method
  341. if (parent.contains(child)) {
  342. return true;
  343. } // then fallback to custom implementation with Shadow DOM support
  344. else if (rootNode && isShadowRoot(rootNode)) {
  345. let next = child;
  346. do {
  347. // use `===` replace node.isSameNode()
  348. if (next && parent === next) {
  349. return true;
  350. } // @ts-ignore: need a better way to handle this...
  351. next = next.parentNode || next.host;
  352. } while (next);
  353. }
  354. return false;
  355. }
  356. function getNearestParentCapableOfEscapingClipping(element, clippingAncestors) {
  357. let currentNode = element;
  358. while (currentNode && !isLastTraversableNode(currentNode) && // @ts-expect-error
  359. !clippingAncestors.includes(currentNode)) {
  360. if (isElement(currentNode) && ['absolute', 'fixed'].includes(getComputedStyle(currentNode).position)) {
  361. break;
  362. }
  363. const parentNode = getParentNode(currentNode);
  364. currentNode = isShadowRoot(parentNode) ? parentNode.host : parentNode;
  365. }
  366. return currentNode;
  367. }
  368. function getInnerBoundingClientRect(element, strategy) {
  369. const clientRect = getBoundingClientRect(element, false, strategy === 'fixed');
  370. const top = clientRect.top + element.clientTop;
  371. const left = clientRect.left + element.clientLeft;
  372. return {
  373. top,
  374. left,
  375. x: left,
  376. y: top,
  377. right: left + element.clientWidth,
  378. bottom: top + element.clientHeight,
  379. width: element.clientWidth,
  380. height: element.clientHeight
  381. };
  382. }
  383. function getClientRectFromClippingAncestor(element, clippingParent, strategy) {
  384. if (clippingParent === 'viewport') {
  385. return core.rectToClientRect(getViewportRect(element, strategy));
  386. }
  387. if (isElement(clippingParent)) {
  388. return getInnerBoundingClientRect(clippingParent, strategy);
  389. }
  390. return core.rectToClientRect(getDocumentRect(getDocumentElement(element)));
  391. } // A "clipping ancestor" is an overflowable container with the characteristic of
  392. // clipping (or hiding) overflowing elements with a position different from
  393. // `initial`
  394. function getClippingAncestors(element) {
  395. const clippingAncestors = getOverflowAncestors(element);
  396. const nearestEscapableParent = getNearestParentCapableOfEscapingClipping(element, clippingAncestors);
  397. let clipperElement = null;
  398. if (nearestEscapableParent && isHTMLElement(nearestEscapableParent)) {
  399. const offsetParent = getOffsetParent(nearestEscapableParent);
  400. if (isOverflowElement(nearestEscapableParent)) {
  401. clipperElement = nearestEscapableParent;
  402. } else if (isHTMLElement(offsetParent)) {
  403. clipperElement = offsetParent;
  404. }
  405. }
  406. if (!isElement(clipperElement)) {
  407. return [];
  408. } // @ts-ignore isElement check ensures we return Array<Element>
  409. return clippingAncestors.filter(clippingAncestors => clipperElement && isElement(clippingAncestors) && contains(clippingAncestors, clipperElement) && getNodeName(clippingAncestors) !== 'body');
  410. } // Gets the maximum area that the element is visible in due to any number of
  411. // clipping ancestors
  412. function getClippingRect(_ref) {
  413. let {
  414. element,
  415. boundary,
  416. rootBoundary,
  417. strategy
  418. } = _ref;
  419. const mainClippingAncestors = boundary === 'clippingAncestors' ? getClippingAncestors(element) : [].concat(boundary);
  420. const clippingAncestors = [...mainClippingAncestors, rootBoundary];
  421. const firstClippingAncestor = clippingAncestors[0];
  422. const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
  423. const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
  424. accRect.top = max(rect.top, accRect.top);
  425. accRect.right = min(rect.right, accRect.right);
  426. accRect.bottom = min(rect.bottom, accRect.bottom);
  427. accRect.left = max(rect.left, accRect.left);
  428. return accRect;
  429. }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
  430. return {
  431. width: clippingRect.right - clippingRect.left,
  432. height: clippingRect.bottom - clippingRect.top,
  433. x: clippingRect.left,
  434. y: clippingRect.top
  435. };
  436. }
  437. const platform = {
  438. getClippingRect,
  439. convertOffsetParentRelativeRectToViewportRelativeRect,
  440. isElement,
  441. getDimensions,
  442. getOffsetParent,
  443. getDocumentElement,
  444. getElementRects: _ref => {
  445. let {
  446. reference,
  447. floating,
  448. strategy
  449. } = _ref;
  450. return {
  451. reference: getRectRelativeToOffsetParent(reference, getOffsetParent(floating), strategy),
  452. floating: { ...getDimensions(floating),
  453. x: 0,
  454. y: 0
  455. }
  456. };
  457. },
  458. getClientRects: element => Array.from(element.getClientRects()),
  459. isRTL: element => getComputedStyle(element).direction === 'rtl'
  460. };
  461. /**
  462. * Automatically updates the position of the floating element when necessary.
  463. * @see https://floating-ui.com/docs/autoUpdate
  464. */
  465. function autoUpdate(reference, floating, update, options) {
  466. if (options === void 0) {
  467. options = {};
  468. }
  469. const {
  470. ancestorScroll: _ancestorScroll = true,
  471. ancestorResize = true,
  472. elementResize = true,
  473. animationFrame = false
  474. } = options;
  475. const ancestorScroll = _ancestorScroll && !animationFrame;
  476. const ancestors = ancestorScroll || ancestorResize ? [...(isElement(reference) ? getOverflowAncestors(reference) : []), ...getOverflowAncestors(floating)] : [];
  477. ancestors.forEach(ancestor => {
  478. ancestorScroll && ancestor.addEventListener('scroll', update, {
  479. passive: true
  480. });
  481. ancestorResize && ancestor.addEventListener('resize', update);
  482. });
  483. let observer = null;
  484. if (elementResize) {
  485. let initialUpdate = true;
  486. observer = new ResizeObserver(() => {
  487. if (!initialUpdate) {
  488. update();
  489. }
  490. initialUpdate = false;
  491. });
  492. isElement(reference) && !animationFrame && observer.observe(reference);
  493. observer.observe(floating);
  494. }
  495. let frameId;
  496. let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
  497. if (animationFrame) {
  498. frameLoop();
  499. }
  500. function frameLoop() {
  501. const nextRefRect = getBoundingClientRect(reference);
  502. if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
  503. update();
  504. }
  505. prevRefRect = nextRefRect;
  506. frameId = requestAnimationFrame(frameLoop);
  507. }
  508. update();
  509. return () => {
  510. var _observer;
  511. ancestors.forEach(ancestor => {
  512. ancestorScroll && ancestor.removeEventListener('scroll', update);
  513. ancestorResize && ancestor.removeEventListener('resize', update);
  514. });
  515. (_observer = observer) == null ? void 0 : _observer.disconnect();
  516. observer = null;
  517. if (animationFrame) {
  518. cancelAnimationFrame(frameId);
  519. }
  520. };
  521. }
  522. /**
  523. * Computes the `x` and `y` coordinates that will place the floating element
  524. * next to a reference element when it is given a certain CSS positioning
  525. * strategy.
  526. */
  527. const computePosition = (reference, floating, options) => core.computePosition(reference, floating, {
  528. platform,
  529. ...options
  530. });
  531. Object.defineProperty(exports, 'arrow', {
  532. enumerable: true,
  533. get: function () { return core.arrow; }
  534. });
  535. Object.defineProperty(exports, 'autoPlacement', {
  536. enumerable: true,
  537. get: function () { return core.autoPlacement; }
  538. });
  539. Object.defineProperty(exports, 'detectOverflow', {
  540. enumerable: true,
  541. get: function () { return core.detectOverflow; }
  542. });
  543. Object.defineProperty(exports, 'flip', {
  544. enumerable: true,
  545. get: function () { return core.flip; }
  546. });
  547. Object.defineProperty(exports, 'hide', {
  548. enumerable: true,
  549. get: function () { return core.hide; }
  550. });
  551. Object.defineProperty(exports, 'inline', {
  552. enumerable: true,
  553. get: function () { return core.inline; }
  554. });
  555. Object.defineProperty(exports, 'limitShift', {
  556. enumerable: true,
  557. get: function () { return core.limitShift; }
  558. });
  559. Object.defineProperty(exports, 'offset', {
  560. enumerable: true,
  561. get: function () { return core.offset; }
  562. });
  563. Object.defineProperty(exports, 'shift', {
  564. enumerable: true,
  565. get: function () { return core.shift; }
  566. });
  567. Object.defineProperty(exports, 'size', {
  568. enumerable: true,
  569. get: function () { return core.size; }
  570. });
  571. exports.autoUpdate = autoUpdate;
  572. exports.computePosition = computePosition;
  573. exports.getOverflowAncestors = getOverflowAncestors;
  574. exports.platform = platform;
  575. Object.defineProperty(exports, '__esModule', { value: true });
  576. }));