Dashboard sipadu mbip
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.umd.js 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. (function (global, factory) {
  2. typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('create-react-context'), require('popper.js'), require('warning')) :
  3. typeof define === 'function' && define.amd ? define(['exports', 'react', 'create-react-context', 'popper.js', 'warning'], factory) :
  4. (factory((global.ReactPopper = {}),global.React,null,global.Popper,null));
  5. }(this, (function (exports,React,createContext,PopperJS,warning) { 'use strict';
  6. createContext = createContext && createContext.hasOwnProperty('default') ? createContext['default'] : createContext;
  7. PopperJS = PopperJS && PopperJS.hasOwnProperty('default') ? PopperJS['default'] : PopperJS;
  8. warning = warning && warning.hasOwnProperty('default') ? warning['default'] : warning;
  9. function _defineProperty(obj, key, value) {
  10. if (key in obj) {
  11. Object.defineProperty(obj, key, {
  12. value: value,
  13. enumerable: true,
  14. configurable: true,
  15. writable: true
  16. });
  17. } else {
  18. obj[key] = value;
  19. }
  20. return obj;
  21. }
  22. function _extends() {
  23. _extends = Object.assign || function (target) {
  24. for (var i = 1; i < arguments.length; i++) {
  25. var source = arguments[i];
  26. for (var key in source) {
  27. if (Object.prototype.hasOwnProperty.call(source, key)) {
  28. target[key] = source[key];
  29. }
  30. }
  31. }
  32. return target;
  33. };
  34. return _extends.apply(this, arguments);
  35. }
  36. function _inheritsLoose(subClass, superClass) {
  37. subClass.prototype = Object.create(superClass.prototype);
  38. subClass.prototype.constructor = subClass;
  39. subClass.__proto__ = superClass;
  40. }
  41. function _objectWithoutPropertiesLoose(source, excluded) {
  42. if (source == null) return {};
  43. var target = {};
  44. var sourceKeys = Object.keys(source);
  45. var key, i;
  46. for (i = 0; i < sourceKeys.length; i++) {
  47. key = sourceKeys[i];
  48. if (excluded.indexOf(key) >= 0) continue;
  49. target[key] = source[key];
  50. }
  51. return target;
  52. }
  53. function _assertThisInitialized(self) {
  54. if (self === void 0) {
  55. throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  56. }
  57. return self;
  58. }
  59. var ManagerReferenceNodeContext = createContext();
  60. var ManagerReferenceNodeSetterContext = createContext();
  61. var Manager =
  62. /*#__PURE__*/
  63. function (_React$Component) {
  64. _inheritsLoose(Manager, _React$Component);
  65. function Manager() {
  66. var _this;
  67. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  68. args[_key] = arguments[_key];
  69. }
  70. _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
  71. _defineProperty(_assertThisInitialized(_this), "referenceNode", void 0);
  72. _defineProperty(_assertThisInitialized(_this), "setReferenceNode", function (newReferenceNode) {
  73. if (newReferenceNode && _this.referenceNode !== newReferenceNode) {
  74. _this.referenceNode = newReferenceNode;
  75. _this.forceUpdate();
  76. }
  77. });
  78. return _this;
  79. }
  80. var _proto = Manager.prototype;
  81. _proto.componentWillUnmount = function componentWillUnmount() {
  82. this.referenceNode = null;
  83. };
  84. _proto.render = function render() {
  85. return React.createElement(ManagerReferenceNodeContext.Provider, {
  86. value: this.referenceNode
  87. }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {
  88. value: this.setReferenceNode
  89. }, this.props.children));
  90. };
  91. return Manager;
  92. }(React.Component);
  93. /**
  94. * Takes an argument and if it's an array, returns the first item in the array,
  95. * otherwise returns the argument. Used for Preact compatibility.
  96. */
  97. var unwrapArray = function unwrapArray(arg) {
  98. return Array.isArray(arg) ? arg[0] : arg;
  99. };
  100. /**
  101. * Takes a maybe-undefined function and arbitrary args and invokes the function
  102. * only if it is defined.
  103. */
  104. var safeInvoke = function safeInvoke(fn) {
  105. if (typeof fn === "function") {
  106. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  107. args[_key - 1] = arguments[_key];
  108. }
  109. return fn.apply(void 0, args);
  110. }
  111. };
  112. /**
  113. * Does a shallow equality check of two objects by comparing the reference
  114. * equality of each value.
  115. */
  116. var shallowEqual = function shallowEqual(objA, objB) {
  117. var aKeys = Object.keys(objA);
  118. var bKeys = Object.keys(objB);
  119. if (bKeys.length !== aKeys.length) {
  120. return false;
  121. }
  122. for (var i = 0; i < bKeys.length; i++) {
  123. var key = aKeys[i];
  124. if (objA[key] !== objB[key]) {
  125. return false;
  126. }
  127. }
  128. return true;
  129. };
  130. /**
  131. * Sets a ref using either a ref callback or a ref object
  132. */
  133. var setRef = function setRef(ref, node) {
  134. // if its a function call it
  135. if (typeof ref === "function") {
  136. return safeInvoke(ref, node);
  137. } // otherwise we should treat it as a ref object
  138. else if (ref != null) {
  139. ref.current = node;
  140. }
  141. };
  142. var initialStyle = {
  143. position: 'absolute',
  144. top: 0,
  145. left: 0,
  146. opacity: 0,
  147. pointerEvents: 'none'
  148. };
  149. var initialArrowStyle = {};
  150. var InnerPopper =
  151. /*#__PURE__*/
  152. function (_React$Component) {
  153. _inheritsLoose(InnerPopper, _React$Component);
  154. function InnerPopper() {
  155. var _this;
  156. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  157. args[_key] = arguments[_key];
  158. }
  159. _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
  160. _defineProperty(_assertThisInitialized(_this), "state", {
  161. data: undefined,
  162. placement: undefined
  163. });
  164. _defineProperty(_assertThisInitialized(_this), "popperInstance", void 0);
  165. _defineProperty(_assertThisInitialized(_this), "popperNode", null);
  166. _defineProperty(_assertThisInitialized(_this), "arrowNode", null);
  167. _defineProperty(_assertThisInitialized(_this), "setPopperNode", function (popperNode) {
  168. if (!popperNode || _this.popperNode === popperNode) return;
  169. setRef(_this.props.innerRef, popperNode);
  170. _this.popperNode = popperNode;
  171. _this.updatePopperInstance();
  172. });
  173. _defineProperty(_assertThisInitialized(_this), "setArrowNode", function (arrowNode) {
  174. _this.arrowNode = arrowNode;
  175. });
  176. _defineProperty(_assertThisInitialized(_this), "updateStateModifier", {
  177. enabled: true,
  178. order: 900,
  179. fn: function fn(data) {
  180. var placement = data.placement;
  181. _this.setState({
  182. data: data,
  183. placement: placement
  184. });
  185. return data;
  186. }
  187. });
  188. _defineProperty(_assertThisInitialized(_this), "getOptions", function () {
  189. return {
  190. placement: _this.props.placement,
  191. eventsEnabled: _this.props.eventsEnabled,
  192. positionFixed: _this.props.positionFixed,
  193. modifiers: _extends({}, _this.props.modifiers, {
  194. arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {
  195. enabled: !!_this.arrowNode,
  196. element: _this.arrowNode
  197. }),
  198. applyStyle: {
  199. enabled: false
  200. },
  201. updateStateModifier: _this.updateStateModifier
  202. })
  203. };
  204. });
  205. _defineProperty(_assertThisInitialized(_this), "getPopperStyle", function () {
  206. return !_this.popperNode || !_this.state.data ? initialStyle : _extends({
  207. position: _this.state.data.offsets.popper.position
  208. }, _this.state.data.styles);
  209. });
  210. _defineProperty(_assertThisInitialized(_this), "getPopperPlacement", function () {
  211. return !_this.state.data ? undefined : _this.state.placement;
  212. });
  213. _defineProperty(_assertThisInitialized(_this), "getArrowStyle", function () {
  214. return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;
  215. });
  216. _defineProperty(_assertThisInitialized(_this), "getOutOfBoundariesState", function () {
  217. return _this.state.data ? _this.state.data.hide : undefined;
  218. });
  219. _defineProperty(_assertThisInitialized(_this), "destroyPopperInstance", function () {
  220. if (!_this.popperInstance) return;
  221. _this.popperInstance.destroy();
  222. _this.popperInstance = null;
  223. });
  224. _defineProperty(_assertThisInitialized(_this), "updatePopperInstance", function () {
  225. _this.destroyPopperInstance();
  226. var _assertThisInitialize = _assertThisInitialized(_this),
  227. popperNode = _assertThisInitialize.popperNode;
  228. var referenceElement = _this.props.referenceElement;
  229. if (!referenceElement || !popperNode) return;
  230. _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());
  231. });
  232. _defineProperty(_assertThisInitialized(_this), "scheduleUpdate", function () {
  233. if (_this.popperInstance) {
  234. _this.popperInstance.scheduleUpdate();
  235. }
  236. });
  237. return _this;
  238. }
  239. var _proto = InnerPopper.prototype;
  240. _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
  241. // If the Popper.js options have changed, update the instance (destroy + create)
  242. if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || this.props.modifiers !== prevProps.modifiers) {
  243. // develop only check that modifiers isn't being updated needlessly
  244. {
  245. if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {
  246. console.warn("'modifiers' prop reference updated even though all values appear the same.\nConsider memoizing the 'modifiers' object to avoid needless rendering.");
  247. }
  248. }
  249. this.updatePopperInstance();
  250. } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {
  251. this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();
  252. } // A placement difference in state means popper determined a new placement
  253. // apart from the props value. By the time the popper element is rendered with
  254. // the new position Popper has already measured it, if the place change triggers
  255. // a size change it will result in a misaligned popper. So we schedule an update to be sure.
  256. if (prevState.placement !== this.state.placement) {
  257. this.scheduleUpdate();
  258. }
  259. };
  260. _proto.componentWillUnmount = function componentWillUnmount() {
  261. setRef(this.props.innerRef, null);
  262. this.destroyPopperInstance();
  263. };
  264. _proto.render = function render() {
  265. return unwrapArray(this.props.children)({
  266. ref: this.setPopperNode,
  267. style: this.getPopperStyle(),
  268. placement: this.getPopperPlacement(),
  269. outOfBoundaries: this.getOutOfBoundariesState(),
  270. scheduleUpdate: this.scheduleUpdate,
  271. arrowProps: {
  272. ref: this.setArrowNode,
  273. style: this.getArrowStyle()
  274. }
  275. });
  276. };
  277. return InnerPopper;
  278. }(React.Component);
  279. _defineProperty(InnerPopper, "defaultProps", {
  280. placement: 'bottom',
  281. eventsEnabled: true,
  282. referenceElement: undefined,
  283. positionFixed: false
  284. });
  285. var placements = PopperJS.placements;
  286. function Popper(_ref) {
  287. var referenceElement = _ref.referenceElement,
  288. props = _objectWithoutPropertiesLoose(_ref, ["referenceElement"]);
  289. return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {
  290. return React.createElement(InnerPopper, _extends({
  291. referenceElement: referenceElement !== undefined ? referenceElement : referenceNode
  292. }, props));
  293. });
  294. }
  295. var InnerReference =
  296. /*#__PURE__*/
  297. function (_React$Component) {
  298. _inheritsLoose(InnerReference, _React$Component);
  299. function InnerReference() {
  300. var _this;
  301. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  302. args[_key] = arguments[_key];
  303. }
  304. _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
  305. _defineProperty(_assertThisInitialized(_this), "refHandler", function (node) {
  306. setRef(_this.props.innerRef, node);
  307. safeInvoke(_this.props.setReferenceNode, node);
  308. });
  309. return _this;
  310. }
  311. var _proto = InnerReference.prototype;
  312. _proto.componentWillUnmount = function componentWillUnmount() {
  313. setRef(this.props.innerRef, null);
  314. };
  315. _proto.render = function render() {
  316. warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');
  317. return unwrapArray(this.props.children)({
  318. ref: this.refHandler
  319. });
  320. };
  321. return InnerReference;
  322. }(React.Component);
  323. function Reference(props) {
  324. return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {
  325. return React.createElement(InnerReference, _extends({
  326. setReferenceNode: setReferenceNode
  327. }, props));
  328. });
  329. }
  330. // Public components
  331. // Public types
  332. exports.Popper = Popper;
  333. exports.placements = placements;
  334. exports.Manager = Manager;
  335. exports.Reference = Reference;
  336. Object.defineProperty(exports, '__esModule', { value: true });
  337. })));