%PDF- %PDF-
Direktori : /var/www/html/node_modules/react-popper/lib/cjs/ |
Current File : /var/www/html/node_modules/react-popper/lib/cjs/usePopper.js |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.usePopper = void 0; var React = _interopRequireWildcard(require("react")); var _core = require("@popperjs/core"); var _reactFastCompare = _interopRequireDefault(require("react-fast-compare")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var EMPTY_MODIFIERS = []; var usePopper = function usePopper(referenceElement, popperElement, options) { if (options === void 0) { options = {}; } var prevOptions = React.useRef(null); var optionsWithDefaults = { onFirstUpdate: options.onFirstUpdate, placement: options.placement || 'bottom', strategy: options.strategy || 'absolute', modifiers: options.modifiers || EMPTY_MODIFIERS }; var _React$useState = React.useState({ styles: { popper: { position: optionsWithDefaults.strategy, left: '0', top: '0' }, arrow: { position: 'absolute' } }, attributes: {} }), state = _React$useState[0], setState = _React$useState[1]; var updateStateModifier = React.useMemo(function () { return { name: 'updateState', enabled: true, phase: 'write', fn: function fn(_ref) { var state = _ref.state; var elements = Object.keys(state.elements); setState({ styles: (0, _utils.fromEntries)(elements.map(function (element) { return [element, state.styles[element] || {}]; })), attributes: (0, _utils.fromEntries)(elements.map(function (element) { return [element, state.attributes[element]]; })) }); }, requires: ['computeStyles'] }; }, []); var popperOptions = React.useMemo(function () { var newOptions = { onFirstUpdate: optionsWithDefaults.onFirstUpdate, placement: optionsWithDefaults.placement, strategy: optionsWithDefaults.strategy, modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, { name: 'applyStyles', enabled: false }]) }; if ((0, _reactFastCompare["default"])(prevOptions.current, newOptions)) { return prevOptions.current || newOptions; } else { prevOptions.current = newOptions; return newOptions; } }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]); var popperInstanceRef = React.useRef(); (0, _utils.useIsomorphicLayoutEffect)(function () { if (popperInstanceRef.current) { popperInstanceRef.current.setOptions(popperOptions); } }, [popperOptions]); (0, _utils.useIsomorphicLayoutEffect)(function () { if (referenceElement == null || popperElement == null) { return; } var createPopper = options.createPopper || _core.createPopper; var popperInstance = createPopper(referenceElement, popperElement, popperOptions); popperInstanceRef.current = popperInstance; return function () { popperInstance.destroy(); popperInstanceRef.current = null; }; }, [referenceElement, popperElement, options.createPopper]); return { state: popperInstanceRef.current ? popperInstanceRef.current.state : null, styles: state.styles, attributes: state.attributes, update: popperInstanceRef.current ? popperInstanceRef.current.update : null, forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null }; }; exports.usePopper = usePopper;