{"version":3,"sources":["jsdelivr-header.js","/npm/react-muuri-official@3.1.7/dist/muuri-react.cjs.js"],"names":[],"mappings":"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","file":"/npm/react-muuri-official@3.1.7/dist/muuri-react.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/react-muuri-official@3.1.7/dist/muuri-react.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n* Muuri-react v3.1.7\n* https://paol-imi.github.io/muuri-react\n* Copyright (c) 2020-present, Paol-imi\n* Released under the MIT license\n* https://github.com/Paol-imi/muuri-react/blob/master/LICENSE\n* @license MIT\n*/\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar Muuri = require('muuri');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nvar _extends = require('@babel/runtime/helpers/extends');\nvar _typeof = require('@babel/runtime/helpers/typeof');\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');\nvar _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');\nvar _slicedToArray = require('@babel/runtime/helpers/slicedToArray');\nvar _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar Muuri__default = /*#__PURE__*/_interopDefaultLegacy(Muuri);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\nvar React__default = /*#__PURE__*/_interopDefaultLegacy(React);\nvar PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _wrapNativeSuper__default = /*#__PURE__*/_interopDefaultLegacy(_wrapNativeSuper);\nvar _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);\nvar _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\nvar _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);\n\nvar key = '_component';\n\n/**\n * Return if the instance is decorated.\n *\n * @param instance - The instance.\n * @returns - If the instance is decorated.\n */\nfunction isDecorated(instance) {\n  return !!instance[key];\n}\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/**\n * Add a decoration to the instance.\n *\n * @param instance - The instance to decorate.\n * @param decoration - The decoration.\n */\nfunction addDecoration(instance, decoration) {\n  if (isDecorated(instance)) {\n    Object.assign(instance[key], decoration);\n  } else {\n    instance[key] = _objectSpread$2({}, decoration);\n  }\n}\n\n/**\n * Add a decoration to the instance.\n *\n * @param instance - The instance to decorate.\n * @param decoration - The decoration.\n */\nfunction getDecoration(instance) {\n  return instance[key];\n}\n\n/**\n * Remove the decoration from the instance.\n *\n * @param decorated - The instance.\n */\nfunction removeDecorations(decorated) {\n  decorated._component = null;\n}\n\n/**\n * Muuri id getter.\n *\n * @returns - The id of the instance.\n */\nMuuri__default[\"default\"].prototype.getId = function getId() {\n  return getDecoration(this).id;\n};\n/**\n * Muuri group ids getter.\n *\n * @returns - The group ids of the instance.\n */\nMuuri__default[\"default\"].prototype.getGroupIds = function getGroupIds() {\n  return getDecoration(this).groupIds;\n};\n/**\n * Muuri size element getter.\n *\n * @returns - The group ids of the instance.\n */\nMuuri__default[\"default\"].prototype.getSizerElement = function getSizerElement() {\n  return getDecoration(this).sizerElement;\n};\n\n/**\n * Item key getter.\n *\n * @returns - The item component key.\n */\nMuuri__default[\"default\"].Item.prototype.getKey = function getKey() {\n  return getDecoration(this).key;\n};\n/**\n * Item props getter.\n *\n * @returns - The item component props.\n */\nMuuri__default[\"default\"].Item.prototype.getProps = function getProps() {\n  return getDecoration(this).props;\n};\n/**\n * Item data getter.\n *\n * @returns - The item component data.\n */\nMuuri__default[\"default\"].Item.prototype.getData = function getData() {\n  return getDecoration(this).data;\n};\n/**\n * Item data setter.\n *\n * @param data - The data.\n */\nMuuri__default[\"default\"].Item.prototype.setData = function setData(data) {\n  getDecoration(this).data = data;\n};\n\n// Grid context.\nvar GridContext = /*#__PURE__*/React.createContext({});\n// Grid provider.\nvar GridProvider = GridContext.Provider;\n// Grid context hook.\nvar useGridContext = function useGridContext() {\n  return React.useContext(GridContext);\n};\n// Grid provider display name.\nGridContext.displayName = 'GridProvider';\n\n// Item context.\nvar ItemContext = /*#__PURE__*/React.createContext({});\n// Item provider.\nvar ItemProvider = ItemContext.Provider;\n// Item context hook.\nvar useItemContext = function useItemContext() {\n  return React.useContext(ItemContext);\n};\n// Item provider display name.\nItemContext.displayName = 'ItemProvider';\n\n/**\n * CONTROLLER: ITEM\n *\n * The purpose of this controller is to manage the\n * events trigger to the specific item the controller is assigned to.\n * This controllers is used by the hooks to re-render the components.\n */\nvar EventController = /*#__PURE__*/function () {\n  function EventController() {\n    _classCallCheck__default[\"default\"](this, EventController);\n    _defineProperty__default[\"default\"](this, \"_eventsMap\", new Map());\n    _defineProperty__default[\"default\"](this, \"_payloadsMap\", new Map());\n  }\n  _createClass__default[\"default\"](EventController, [{\n    key: \"enableEvent\",\n    value:\n    /**\n     * Enable an event, it can be emitted.\n     *\n     * @param event - The event name.\n     * @param emitter - The callback.\n     */\n    function enableEvent(event, emitter) {\n      this._eventsMap.set(event, emitter);\n    }\n\n    /**\n     * Set an event payload and emit it the event.\n     *\n     * @param event - The event name.\n     * @param payload - The payload.\n     */\n  }, {\n    key: \"emitEvent\",\n    value: function emitEvent(event, payload) {\n      if (this.isEnabled(event)) {\n        this._payloadsMap.set(event, payload);\n        // @ts-ignore\n        this._eventsMap.get(event)();\n      }\n    }\n\n    /**\n     * Get the payload of the event.\n     *\n     * @param event - The event.\n     * @returns - The payload.\n     */\n  }, {\n    key: \"getPayload\",\n    value: function getPayload(event) {\n      return this._payloadsMap.get(event);\n    }\n\n    /**\n     * Returns if at least an event is enabled.\n     *\n     * @param event - The event.\n     * @returns - If at least an event is enabled.\n     */\n  }, {\n    key: \"isEnabled\",\n    value: function isEnabled(event) {\n      return this._eventsMap.has(event);\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._eventsMap.clear();\n      this._payloadsMap.clear();\n    }\n  }]);\n  return EventController;\n}();\n\n/**\n * CONTROLLER: GRID -> ITEM\n *\n * The purpose of this controller is to pass to the\n * ItemComponents the items instances.\n * This can be done without knowing the added items and\n * relying only on the useEffect call order of the added items.\n */\nvar ItemAddController = /*#__PURE__*/function () {\n  function ItemAddController() {\n    _classCallCheck__default[\"default\"](this, ItemAddController);\n    _defineProperty__default[\"default\"](this, \"_requests\", []);\n  }\n  _createClass__default[\"default\"](ItemAddController, [{\n    key: \"useInit\",\n    value:\n    /**\n     * Clear the requests.\n     */\n    function useInit() {\n      this._requests = [];\n    }\n\n    /**\n     * Emit the new items to the\n     * components that made a request.\n     *\n     * @param items - The items.\n     */\n  }, {\n    key: \"emit\",\n    value: function emit(items) {\n      for (var i = 0; i < this._requests.length; i++) {\n        this._requests[i](items[i]);\n      }\n    }\n\n    /**\n     * Request an item.\n     *\n     * @param cb - The callback.\n     */\n  }, {\n    key: \"requestItem\",\n    value: function requestItem(cb) {\n      this._requests.push(cb);\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._requests = [];\n    }\n  }]);\n  return ItemAddController;\n}();\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default[\"default\"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default[\"default\"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default[\"default\"](this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\n\n// Invarianto instance\nvar Invariant = /*#__PURE__*/function (_Error) {\n  _inherits__default[\"default\"](Invariant, _Error);\n  var _super = _createSuper(Invariant);\n  function Invariant(message) {\n    var _this;\n    _classCallCheck__default[\"default\"](this, Invariant);\n    _this = _super.call(this, message);\n    _this.name = 'Invariant';\n    return _this;\n  }\n  return _createClass__default[\"default\"](Invariant);\n}( /*#__PURE__*/_wrapNativeSuper__default[\"default\"](Error));\n\n// Throw an error if the condition fails\nfunction invariant(condition, message) {\n  if (condition) {\n    return;\n  }\n  if (isProduction) {\n    // In production we strip the message but still throw\n    throw new Invariant(prefix);\n  } else {\n    // When not in production we allow the message to pass through\n    // *This block will be removed in production builds*\n    throw new Invariant(\"\".concat(prefix, \": \").concat(message || ''));\n  }\n}\n\n/*\n * CONTROLLER: ITEM\n *\n * The purpose of this controller is to make possible\n * to set data in the item also if\n * it has not been created yet.\n */\nvar ItemRefController = /*#__PURE__*/function () {\n  function ItemRefController() {\n    _classCallCheck__default[\"default\"](this, ItemRefController);\n    _defineProperty__default[\"default\"](this, \"_item\", null);\n    _defineProperty__default[\"default\"](this, \"_instance\", {});\n  }\n  _createClass__default[\"default\"](ItemRefController, [{\n    key: \"set\",\n    value:\n    /**\n     * Set a decoration in the item.\n     *\n     * @param key - The decoration key.\n     * @param value - The decoration.\n     */\n    function set(key, value) {\n      if (this._item) {\n        addDecoration(this._item, _defineProperty__default[\"default\"]({}, key, value));\n      } else {\n        this._instance[key] = value;\n      }\n    }\n\n    /**\n     * Get a decoration value from the item.\n     *\n     * @param key - The decoration key.\n     * @returns - The decoration value.\n     */\n  }, {\n    key: \"get\",\n    value: function get(key) {\n      if (this._item) {\n        return getDecoration(this._item)[key];\n      } else {\n        return this._instance[key];\n      }\n    }\n\n    /**\n     * Remove all the decorations from the item.\n     */\n  }, {\n    key: \"delete\",\n    value: function _delete() {\n      if (this._item) removeDecorations(this._item);\n    }\n\n    /**\n     * Set the item in the controller.\n     *\n     * @param item - The item.\n     */\n  }, {\n    key: \"setItem\",\n    value: function setItem(item) {\n      this._item = item;\n      addDecoration(this._item, this._instance);\n      this._instance = {};\n    }\n\n    /**\n     * Item getter.\n     *\n     * @returns - The item.\n     */\n  }, {\n    key: \"getItem\",\n    value: function getItem() {\n      invariant(this._item !== null, 'The item has not been setted yet');\n      return this._item;\n    }\n\n    /**\n     * Returns if the item has been setted.\n     *\n     * @returns - If the item has been setted.\n     */\n  }, {\n    key: \"hasItem\",\n    value: function hasItem() {\n      return this._item !== null;\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._item = null;\n      this._instance = {};\n    }\n  }]);\n  return ItemRefController;\n}();\n\n/**\n * CONTROLLER: GRID -> ITEM\n *\n * The purpose of this controller is to find the items to remove\n * based only on the unmount of the ItemComponents.\n */\nvar ItemRemoveController = /*#__PURE__*/function () {\n  function ItemRemoveController() {\n    _classCallCheck__default[\"default\"](this, ItemRemoveController);\n    _defineProperty__default[\"default\"](this, \"_itemsToRemove\", []);\n  }\n  _createClass__default[\"default\"](ItemRemoveController, [{\n    key: \"useInit\",\n    value:\n    /**\n     * Initialize.\n     */\n    function useInit() {\n      this._itemsToRemove = [];\n    }\n\n    /**\n     * Request an item to be removed.\n     *\n     * @param item - The item to be removed.\n     */\n  }, {\n    key: \"removeItem\",\n    value: function removeItem(item) {\n      this._itemsToRemove.push(item);\n    }\n\n    /**\n     * Return all the items to remove.\n     */\n  }, {\n    key: \"getItemsToRemove\",\n    value: function getItemsToRemove() {\n      return this._itemsToRemove;\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._itemsToRemove = [];\n    }\n  }]);\n  return ItemRemoveController;\n}();\n\n/**\n * CONTROLLER: GRID -> ITEMCONTEXT\n *\n * The purpose of this controller is to synchronize the calculation\n * of the layout following changes that have occurred within an item.\n * If the GridComponent is re-rendering allow to calculate a\n * single layout and greatly optimize the performance.\n */\nvar LayoutController = /*#__PURE__*/function () {\n  /** The items to refresh. */\n\n  /** The items to show. */\n\n  /** The items to hide. */\n\n  /** If the MuuriComponent parent is rendering. */\n\n  /** Constructor. */\n  function LayoutController() {\n    _classCallCheck__default[\"default\"](this, LayoutController);\n    _defineProperty__default[\"default\"](this, \"_itemsToRefresh\", void 0);\n    _defineProperty__default[\"default\"](this, \"_itemsToShow\", void 0);\n    _defineProperty__default[\"default\"](this, \"_itemsToHide\", void 0);\n    _defineProperty__default[\"default\"](this, \"_isRendering\", void 0);\n    this._itemsToRefresh = [];\n    this._itemsToShow = [];\n    this._itemsToHide = [];\n    this._isRendering = false;\n  }\n\n  /**\n   * Init.\n   */\n  _createClass__default[\"default\"](LayoutController, [{\n    key: \"useInit\",\n    value: function useInit() {\n      var _this = this;\n      // Items.\n      this._itemsToRefresh = [];\n      this._itemsToShow = [];\n      this._itemsToHide = [];\n      // State.\n      this._isRendering = true;\n      // Change state.\n      // eslint-disable-next-line\n      React.useEffect(function () {\n        _this._isRendering = false;\n      });\n    }\n\n    /**\n     * Refresh an item.\n     *\n     * @param item - The item to refresh.\n     */\n  }, {\n    key: \"refreshItem\",\n    value: function refreshItem(item) {\n      // If the component is rendering within the MuuriComponent.\n      if (this._isRendering) {\n        // The layout is managed by the MuuriComponent\n        // (Performance purpose).\n        this._itemsToRefresh.push(item);\n      } else {\n        // If the item is changing parent this\n        // will get the right parent.\n        var grid = item.getGrid();\n        // The layout is managed here.\n        grid.refreshItems([item]);\n        grid.layout();\n      }\n    }\n\n    /**\n     * Set an item visibility.\n     *\n     * @param item - The item.\n     * @param visible - The visibility.\n     * @param instant - If the visibility change should happen without animations.\n     */\n  }, {\n    key: \"setItemVisibility\",\n    value: function setItemVisibility(item, visible, instant) {\n      // If the component is rendering within the MuuriComponent.\n      if (this._isRendering) {\n        // The layout is managed by the MuuriComponent\n        // (Performance purpose).\n        if (visible) this._itemsToShow.push(item);else this._itemsToHide.push(item);\n      } else {\n        // If the item is changing parent this\n        // will get the right parent.\n        var grid = item.getGrid();\n        // The layout is managed here.\n        if (visible) grid.show([item], {\n          instant: instant\n        });else grid.hide([item], {\n          instant: instant\n        });\n      }\n    }\n\n    /**\n     * Get the items that have to be refreshed.\n     *\n     * @returns - The items.\n     */\n  }, {\n    key: \"getItemsToRefresh\",\n    value: function getItemsToRefresh() {\n      return this._itemsToRefresh;\n    }\n\n    /**\n     * Get the items that have to be shown.\n     *\n     * @returns - The items.\n     */\n  }, {\n    key: \"getItemsToShow\",\n    value: function getItemsToShow() {\n      return this._itemsToShow;\n    }\n\n    /**\n     * Get the items that have to be hidden.\n     *\n     * @returns - The items.\n     */\n  }, {\n    key: \"getItemsToHide\",\n    value: function getItemsToHide() {\n      return this._itemsToHide;\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this._itemsToRefresh = [];\n      this._itemsToShow = [];\n      this._itemsToHide = [];\n    }\n  }]);\n  return LayoutController;\n}();\n\n/**\n * CONTROLLER: GRID\n *\n * The purpose of this controller is to manage the fiber node of the GridElements.\n * The Fiber nodes allow to manage reparenting and easily access new added items elements.\n */\nvar FiberController = /*#__PURE__*/function () {\n  function FiberController() {\n    _classCallCheck__default[\"default\"](this, FiberController);\n    _defineProperty__default[\"default\"](this, \"_fiber\", void 0);\n    _defineProperty__default[\"default\"](this, \"_flag\", '0');\n  }\n  _createClass__default[\"default\"](FiberController, [{\n    key: \"useInit\",\n    value:\n    /**\n     * Init the controller given the grid Element ref.\n     *\n     * @param gridElementRef - the ref of the grid element.\n     */\n    function useInit(gridElementRef) {\n      var _this = this;\n      this.updateFlag();\n      // eslint-disable-next-line\n      React.useEffect(function () {\n        invariant(gridElementRef.current !== null);\n        _this._fiber = getFiber(gridElementRef.current);\n      }, []); // eslint-disable-line\n    }\n\n    /**\n     * Return the DOM elements in the chosen positions.\n     *\n     * @param orderedIndices - The positions.\n     * @returns - The elements.\n     */\n  }, {\n    key: \"getStateNodes\",\n    value: function getStateNodes(orderedIndices) {\n      var stateNodes = [];\n      // If there aren't indices retun an empty array.\n      if (orderedIndices.length === 0) return stateNodes;\n\n      // The first child.\n      var child = getCurrentFiber(this._fiber, this._flag).child;\n\n      // Fill the state nodes array.\n      // We trust that the user input.\n      orderedIndices.forEach(function (index) {\n        // @ts-ignore\n        while (child.index !== index) {\n          // @ts-ignore\n          child = child.sibling;\n        }\n\n        // @ts-ignore\n        stateNodes.push(getStateNode(child));\n      });\n      return stateNodes;\n    }\n\n    /**\n     * Append an itemComponent fiber\n     * (the same is done for the alternate if exists).\n     *\n     * @param child - The item.\n     */\n  }, {\n    key: \"append\",\n    value: function append(itemComponentFiber) {\n      // Get the current fiber.\n      var fiber = getCurrentFiber(this._fiber, this._flag);\n      // Append the fiber.\n      appendFiber(fiber, itemComponentFiber);\n      if (fiber.alternate) {\n        if (itemComponentFiber.alternate) {\n          // Append the alternate.\n          appendFiber(fiber.alternate, itemComponentFiber.alternate);\n        }\n      }\n    }\n\n    /**\n     * Remove an itemComponent fiber given the key of its Item\n     * (The same is done for the alternate if exists).\n     *\n     * @param key - The key of the item.\n     * @returns - The removed item.\n     */\n  }, {\n    key: \"remove\",\n    value: function remove(key) {\n      // Get the current fiber.\n      var fiber = getCurrentFiber(this._fiber, this._flag);\n      // Remove the fiber.\n      var removedChild = removeChild(fiber, key);\n      if (fiber.alternate) {\n        if (removedChild.alternate) {\n          // Remove the alternate.\n          removeChild(fiber.alternate, key);\n        }\n      }\n      return removedChild;\n    }\n\n    /**\n     * Return the props containing the flag value to add in the grid element.\n     *\n     * @returns - The props.\n     */\n  }, {\n    key: \"getFlagProp\",\n    value: function getFlagProp() {\n      return _defineProperty__default[\"default\"]({}, FlagProp, this._flag);\n    }\n\n    /**\n     * Update the flag value.\n     */\n  }, {\n    key: \"updateFlag\",\n    value: function updateFlag() {\n      if (this._flag === '0') this._flag = '1';else this._flag = '0';\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      // @ts-ignore\n      this._fiber = null;\n    }\n  }]);\n  return FiberController;\n}();\n\n/**\n * The flag prop name.\n */\nvar FlagProp = 'muuri-react-flag';\n\n/**\n * Get the fiber of the given grid element.\n *\n * @param grid - The element.\n * @return - The fiber node.\n */\nfunction getFiber(grid) {\n  var key = Object.keys(grid).find(function (key) {\n    return key.startsWith('__reactInternalInstance$') || key.startsWith('__reactFiber$');\n  });\n  invariant(typeof key === 'string', 'Cannot find the __reactInternalInstance$');\n\n  // @ts-ignore\n  return grid[key];\n}\n\n/**\n * Return the current fiber.\n * Try to use the prop flag for the search first,\n * if this is not possible try the RootFiber.\n * The research on the flag is carried out because it is more\n * performing than the second and because if the React team\n * decides to change the functioning of the RootFiber,\n * not all features will stop working.\n * (It is rare for this to happen in the current version 16.x.x,\n * but if it does, it would not be a breacking change.)\n *\n * @param fiber - The fiber.\n * @param flag - the flag.\n * @returns - The current fiber.\n */\nfunction getCurrentFiber(fiber, currentFlag) {\n  if (!fiber.alternate) return fiber;\n\n  // Flags.\n  var fiberFlag = fiber.memoizedProps[FlagProp];\n  var alternateFlag = fiber.alternate.memoizedProps[FlagProp];\n\n  // If the two flags are the same it should mean that\n  // in at least one of the items there has been a re-render\n  // from the last render of the GridComponent.\n  // We can no longer trust the flag prop and we have\n  // to look for the RootFiber and check which\n  // fiber is in the current tree.\n  if (fiberFlag === alternateFlag) {\n    var topFiber = fiber;\n\n    // Get the top fiber\n    // (Not the RootFiber).\n    while (topFiber[\"return\"]) {\n      topFiber = topFiber[\"return\"];\n    }\n\n    // Fibers.\n    var rootFiber = topFiber.stateNode;\n    var topCurrentFiber = rootFiber.current;\n\n    // The current fiber.\n    return topCurrentFiber === topFiber ? fiber : fiber.alternate;\n  }\n\n  // If we got here we can trust the flag prop to find the current Fiber.\n  return fiberFlag === currentFlag ? fiber : fiber.alternate;\n}\n\n/**\n * Returns the first stateNode among the descendants\n * of the given itemComponent Fiber.\n *\n * @param itemComponentFiber - The fiber.\n * @returns - The element.\n */\nfunction getStateNode(itemComponentFiber) {\n  // ItemComponent -> ItemProvider -> Item.\n  var itemFiber = itemComponentFiber.child.child;\n  // @ts-ignore\n  while (!(itemFiber.stateNode instanceof HTMLElement)) {\n    // @ts-ignore\n    itemFiber = itemFiber.child;\n  }\n  return itemFiber.stateNode;\n}\n\n/**\n * Append the child fiber in the last position among the children of the parent fiber.\n *\n * @param parent - The parent fiber.\n * @param child - The child fiber.\n */\nfunction appendFiber(parent, child) {\n  var _parent$return;\n  if (!parent.child) {\n    // If it has no child.\n    parent.child = child;\n    child.index = 0;\n  } else {\n    var c = parent.child;\n    while (c.sibling) {\n      c = c.sibling;\n    }\n    child.index = c.index + 1;\n    // Inserted as last child.\n    c.sibling = child;\n  }\n\n  // Update the references.\n  child[\"return\"] = parent;\n  // If we are in development.\n  if (child._debugOwner) child._debugOwner = (_parent$return = parent[\"return\"]) === null || _parent$return === void 0 ? void 0 : _parent$return[\"return\"];\n}\n\n/**\n * Remove a child with the given key from the fiber.\n *\n * @param parent - The fiber.\n * @param key - The key of the item.\n * @return - The removed fiber.\n */\nfunction removeChild(parent, key) {\n  var child = parent.child;\n  var removedChild;\n\n  // @ts-ignore\n  if (hasNot(child, key)) {\n    // @ts-ignore\n    while (hasNot(child.sibling, key)) {\n      // @ts-ignore\n      child = child.sibling;\n    }\n    // @ts-ignore\n    removedChild = removeSibling(child);\n    // @ts-ignore\n    adjustIndices(child);\n  } else {\n    removedChild = removeFirstChild(parent);\n    // @ts-ignore\n    child = child.sibling;\n    if (child) adjustIndices(child);\n  }\n  removedChild.sibling = null;\n  return removedChild;\n}\n\n/**\n * Remove the first itemComponent fiber of a gridELement fiber and return it.\n *\n * @param GridElementFiber - The gridELement fiber.\n * @return - The removed itemComponent fiber.\n */\nfunction removeFirstChild(gridElementFiber) {\n  var removed = gridElementFiber.child;\n  // @ts-ignore\n  gridElementFiber.child = gridElementFiber.child.sibling;\n  // @ts-ignore\n  return removed;\n}\n\n/**\n * Remove the first sibling from a itemComponent fiber and return it.\n *\n * @param fiber - The fiber.\n * @return - The removed sibling.\n */\nfunction removeSibling(fiber) {\n  var removed = fiber.sibling;\n  // @ts-ignore\n  fiber.sibling = fiber.sibling.sibling;\n  // @ts-ignore\n  return removed;\n}\n\n/**\n * Adjust the indices of the siblings of an itemComponent fiber.\n *\n * @param itemComponentFiber - The itemComponent fiber.\n */\nfunction adjustIndices(itemComponentFiber) {\n  while (itemComponentFiber.sibling) {\n    itemComponentFiber.sibling.index = itemComponentFiber.index + 1;\n    itemComponentFiber = itemComponentFiber.sibling;\n  }\n}\n\n/**\n * Returns if the itemComponent fiber is not the parent of the item with the given key.\n *\n * @param itemComponentFiber - The itemComponent fiber.\n * @param key - The key of the item.\n * @return - If the itemComponent fiber is not the parent of the item with the given key.\n */\nfunction hasNot(itemComponentFiber, key) {\n  // ItemComponent -> ItemProvider -> Item.\n  return itemComponentFiber.child.child.key !== key;\n}\n\n/**\n * CONTROLLER: GRID\n *\n * The purpose of this controller is to manage children\n * during each render of the component, and provide\n * the indexes of the new children added.\n */\nvar ChildrenController = /*#__PURE__*/function () {\n  function ChildrenController() {\n    _classCallCheck__default[\"default\"](this, ChildrenController);\n    _defineProperty__default[\"default\"](this, \"_oldChildrenArray\", []);\n    _defineProperty__default[\"default\"](this, \"_children\", []);\n    _defineProperty__default[\"default\"](this, \"_indicesToAdd\", []);\n    _defineProperty__default[\"default\"](this, \"_dragCounter\", 0);\n  }\n  _createClass__default[\"default\"](ChildrenController, [{\n    key: \"useInit\",\n    value:\n    /**\n     * Init all the settings given the new children.\n     *\n     * @param newChildren - the new children.\n     */\n    function useInit(newChildren) {\n      // @ts-ignore\n      // We need to ensure that the children are in an array.\n      var newChildrenArray = React.Children.toArray(newChildren);\n\n      // The indices to add.\n      this._indicesToAdd = getIndicesToAdd(newChildrenArray, this._oldChildrenArray);\n\n      // The _children will be used to map all\n      // the child in the render method.\n      // We can't use the ChildrenArray because we need the users\n      // key provided in the components and not the escaped one (e.g. .$1).\n      this._children = newChildren || [];\n      this._oldChildrenArray = newChildrenArray;\n    }\n\n    /**\n     * Remove a child in the given position and return it.\n     *\n     * @param index - The index of the child to remove.\n     * @returns - The removed child.\n     */\n  }, {\n    key: \"remove\",\n    value: function remove(index) {\n      return this._oldChildrenArray.splice(index, 1)[0];\n    }\n\n    /**\n     * Append a child in the children array.\n     *\n     * @param child - The child to append.\n     */\n  }, {\n    key: \"append\",\n    value: function append(child) {\n      this._oldChildrenArray.push(child);\n    }\n\n    /**\n     * Returns the ordered array of indices of the added children.\n     */\n  }, {\n    key: \"getIndicesToAdd\",\n    value: function getIndicesToAdd() {\n      return this._indicesToAdd;\n    }\n\n    /**\n     * Map all the children.\n     *\n     * @param cb - The callback.\n     * @returns - The mapped children.\n     */\n  }, {\n    key: \"render\",\n    value: function render(cb) {\n      var children = React.Children.map(this._children, function (child) {\n        // @ts-ignore\n        // there are rare cases where the keys are not indispensable,\n        // the user may not choose to use at his own risk.\n        return cb(child, child.key);\n      });\n\n      // Flush the children.\n      this.flush();\n      return children;\n\n      /**\n      // If an item is being dragged we need to ensure\n      // that no child is inserted before it.\n      return this._dragCounter === 0\n        ? children\n        : getChildrenInSafePositions(children, this._indicesToAdd);\n         */\n    }\n\n    /**\n     * Increment the drag counter.\n     */\n  }, {\n    key: \"incrementDragCounter\",\n    value: function incrementDragCounter() {\n      this._dragCounter += 1;\n    }\n\n    /**\n     * Decrement the drag counter.\n     */\n  }, {\n    key: \"decrementDragCounter\",\n    value: function decrementDragCounter() {\n      this._dragCounter -= 1;\n    }\n\n    /**\n     * Remove the current children so they can be garbage collected.\n     */\n  }, {\n    key: \"flush\",\n    value: function flush() {\n      this._children = [];\n    }\n\n    /**\n     * Destroy the instance.\n     */\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      this.flush();\n    }\n  }]);\n  return ChildrenController;\n}();\n\n/**\n * Return an array of positions of the added children.\n * The algorithm is optimized for cases where the order of\n * the items does not change during re-renders (about 100% of cases).\n * The positions are in ascending order.\n *\n * @param newChildren - The new children.\n * @param oldChildren - The old children.\n * @return - The indices.\n */\nfunction getIndicesToAdd(newChildren, oldChildren) {\n  var indicesToAdd = [];\n  var oIndex = 0;\n  for (var nIndex = 0; nIndex < newChildren.length; nIndex++) {\n    // Finde the index.\n    var index = findIndex(oldChildren, newChildren[nIndex], oIndex);\n    if (index === -1) {\n      // If it is not present is a new Child.\n      indicesToAdd.push(nIndex);\n    } else {\n      // If it is present restart the research\n      // from the given index.\n      oIndex = index;\n    }\n  }\n  return indicesToAdd;\n}\n\n/**\n * Returns the index of the child in the children array,\n * if it is not present returns -1.\n * The research start from the given 'fromIndex'.\n *\n * @param child - The child to search.\n * @param children - The children.\n * @param fromIndex - The initial index.\n * @returns - The index of the child.\n */\nfunction findIndex(children, child, fromIndex) {\n  fromIndex = fromIndex > children.length ? children.length : fromIndex;\n\n  // If the heuristics are respected the child will be here.\n  for (var index = fromIndex; index < children.length; index++) {\n    if (is(child, children[index])) return index;\n  }\n\n  // If the child is here the heuristics are not respected.\n  for (var _index = 0; _index < fromIndex; _index++) {\n    if (is(child, children[_index])) return _index;\n  }\n\n  // The child is not present.\n  return -1;\n}\n\n/**\n * There would be the risk that a component will be inserted before\n * an item that is being dragged (and that is placed in a drag\n * container that is not the grid element). React would use\n * insertBefore to add the elements and this would cause an error.\n * To avoid this problem, if any item is being dragged,\n * all new components are added at the end so that\n * React uses appendChild to add the elements in the DOM.\n *\n * @param children - The new children to set.\n * @param indicesToAdd - The indices of the added children.\n * @returns - The children in safe postions.\n *\nfunction getChildrenInSafePositions(\n  newChildren: ReactElement[],\n  indicesToAdd: number[]\n): ReactElement[] {\n  // Check if there are dragged items.\n  if (indicesToAdd.length === 0) return newChildren;\n\n  const addedChildren: ReactElement[] = [];\n\n  // Set the added children.\n  indicesToAdd.reverse().forEach((index) => {\n    const [newChild] = newChildren.splice(index, 1);\n    addedChildren.push(newChild);\n  });\n\n  return newChildren.concat(addedChildren);\n}\n\n/**\n * Return if the components have the same key.\n *\n * @param componentA - The first component.\n * @param componentB - The second component.\n * @returns - If they have the same key.\n */\nfunction is(componentA, componentB) {\n  return componentA.key === componentB.key;\n}\n\n/**\n * Fill a grid instance:\n *  - Add the sizer element.\n *\n * @param grid - The Muuri instance.\n */\nfunction fillGrid(grid) {\n  var sizerElement = document.createElement('div');\n\n  // Keep the element hidden.\n  sizerElement.style.visibility = 'hidden';\n  sizerElement.style.position = 'absolute';\n  // Add the class.\n  sizerElement.classList.add('grid-sizer');\n\n  // Set the element.\n  addDecoration(grid, {\n    sizerElement: sizerElement\n  });\n  var gridElement = grid.getElement();\n\n  // Insert as first child.\n  if (gridElement.children.length === 0) {\n    gridElement.appendChild(sizerElement);\n  } else {\n    gridElement.insertBefore(sizerElement, gridElement.children[0]);\n  }\n}\n\n// Allowed position values.\nvar positions = ['relative', 'absolute', 'fixed'];\n\n/**\n * Fill a grid element:\n * - If it is not position the style.position is setted to \"relative\".\n * - The CSS \"containerClass\" is added.\n *\n * It also wrap the className setter to\n * avoid React to remove the standard class\n * of Muuri from the grid.\n *\n * @param gridElement - The element to fill.\n * @param gridClass - The Css class of the grid element.\n */\nfunction fillGridElement(gridElement, gridClass) {\n  var position = getComputedStyle(gridElement).position;\n\n  // Set the default position.\n  if (!positions.includes(position)) {\n    gridElement.style.position = positions[0];\n  }\n\n  // Set the grid class.\n  gridElement.classList.add(gridClass);\n\n  // Ensure that the grid class can't be removed.\n  var defaultSetAttribute = gridElement.setAttribute.bind(gridElement);\n  gridElement.setAttribute = function setAttribute(attribute, value) {\n    if (attribute === 'class') {\n      var classNames = (gridElement.getAttribute('class') || '').split(' ');\n      // Add the grid class.\n      if (!classNames.includes(gridClass)) value = \"\".concat(value, \" \").concat(gridClass);\n    }\n    defaultSetAttribute(attribute, value);\n  };\n}\n\n/**\n * Fill an item:\n * - Add the _component decoration.\n * - Re-define the _sortData property.\n *\n * @param item - The item to fill.\n */\nfunction fillItem(item) {\n  addDecoration(item, {\n    props: {},\n    data: {}\n  });\n  // Change the sort data.\n  Object.defineProperty(item, '_sortData', {\n    get: function get() {\n      return this.getData();\n    },\n    set: function set() {\n      // nothing to do here.\n    }\n  });\n}\n\n/**\n * Fill an Item (outer) element:\n * - style.position setted to \"absolute\".\n *\n * It also wrap the className setter to\n * avoid React to remove the standard classes\n * of Muuri from the item.\n *\n * @param itemElement - The item element to fill.\n * @param itemClasses - The Css classes of the items.\n */\nfunction fillItemElement(itemElement, itemClasses) {\n  itemElement.style.position = 'absolute';\n\n  // Ensure that the Css item classes are not removed.\n  var defaultSetAttribute = itemElement.setAttribute.bind(itemElement);\n  itemElement.setAttribute = function setAttribute(attribute, value) {\n    if (attribute === 'class') {\n      var classNames = (itemElement.getAttribute('class') || '').split(' ');\n      var classNamesToAdd = classNames.filter(function (className) {\n        return itemClasses.includes(className);\n      });\n\n      // Add the Css items classes.\n      value = \"\".concat(value, \" \").concat(classNamesToAdd.join(' '));\n    }\n    defaultSetAttribute(attribute, value);\n  };\n}\n\n/**\n * Replacement for useCallback use case with empty array,\n * it memoize only the first function passed.\n * https://github.com/facebook/react/issues/15278.\n *\n * @param callback - The function to memoize.\n * @returns - The memoized function.\n */\nfunction useFunction(callback) {\n  return React.useRef(callback).current;\n}\n\n/**\n * Accept a dependencyList and return if it has changed from\n * the previous render.\n *\n * @param dependencyList - The dependencyList.\n * @returns - If the dependencyList is changed from the previous render.\n */\nfunction useReference(dependencyList) {\n  var ref = React.useRef(dependencyList);\n\n  // If it is the first call return true.\n  if (ref.current === dependencyList) return true;\n\n  // Compare the dependencyLists.\n  var didUpdate = compare(ref.current, dependencyList);\n  // Keep the reference of the new one.\n  ref.current = dependencyList;\n  return didUpdate;\n}\n\n/**\n * Compare two dependencyLists and return if they are different.\n *\n * @param a - The first dependencyList to compare.\n * @param b - The second dependencyList to compare.\n * @returns - If the 2 dependencyLists are different.\n */\nfunction compare(a, b) {\n  if (a.length !== b.length) return true;\n  for (var i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) return true;\n  }\n  return false;\n}\n\n/**\n * Like useEffect but run instantly.\n *\n * @param didUpdate - The method to run.\n * @param deps - The dependecies.\n */\nfunction useInstantEffect(didUpdate, deps) {\n  // Deps check.\n  var needUpdate = useReference(deps);\n  var cleanUpRef = React.useRef();\n\n  // Run.\n  if (needUpdate) {\n    if (cleanUpRef.current) cleanUpRef.current();\n    cleanUpRef.current = didUpdate();\n  }\n\n  // Catch unmount.\n  React.useEffect(function () {\n    return function () {\n      if (cleanUpRef.current) cleanUpRef.current();\n    };\n  }, []);\n}\n\n/**\n * Replacement for useMemo use case with empty array,\n * it memoize only the first computed value.\n * https://github.com/facebook/react/issues/15278.\n *\n * @param factory - The factory method.\n * @returns - The memoized value.\n */\nfunction useMemoized(factory) {\n  var valueRef = React.useRef();\n  if (!valueRef.current) {\n    valueRef.current = factory();\n  }\n  return valueRef.current;\n}\n\n/**\n * Returns a (memoized) function to re-render\n * the component in which the hook has been called.\n *\n * @returns - The re-render method.\n */\nfunction useRerender() {\n  var setState = React.useState()[1];\n  return useFunction(function () {\n    setState(Object.create(null));\n  });\n}\n\n/** Interfaces */\n\n// Item component.\nfunction ItemComponent(_ref) {\n  var child = _ref.children,\n    itemClasses = _ref.itemClasses,\n    itemAddController = _ref.itemAddController,\n    itemRemoveController = _ref.itemRemoveController,\n    propsToData = _ref.propsToData,\n    itemKey = _ref.itemKey,\n    grid = _ref.grid;\n  // The store provided doesn't change the reference.\n  var store = useMemoized(function () {\n    // Create the controllers.\n    var eventController = new EventController();\n    var itemRefController = new ItemRefController();\n    // Add the data that won't change.\n    itemRefController.set('key', itemKey);\n    itemRefController.set('eventController', eventController);\n    // Return the controllers.\n    return {\n      eventController: eventController,\n      itemRefController: itemRefController,\n      itemRemoveController: itemRemoveController,\n      grid: grid\n    };\n  });\n\n  // Set the props.\n  store.itemRefController.set('props', child.props);\n  store.itemRemoveController = itemRemoveController;\n  store.grid = grid;\n\n  // Set the data.\n  if (propsToData) {\n    // Get the data.\n    var data = propsToData(child.props);\n\n    // Must be an object.\n    invariant(_typeof__default[\"default\"](data) === 'object', \"The data returned by 'propsToData' must be an object, founded \".concat(_typeof__default[\"default\"](data)));\n\n    // Set the data.\n    store.itemRefController.set('data', data);\n  }\n\n  // On mount.\n  React.useEffect(function () {\n    // Request the item.\n    itemAddController.requestItem(function (item) {\n      fillItem(item);\n      // @ts-ignore\n      fillItemElement(item.getElement(), itemClasses);\n      store.itemRefController.setItem(item);\n    });\n    return function () {\n      // The item.\n      var item = store.itemRefController.getItem();\n      invariant(item !== null);\n\n      // The element.\n      var element = item.getElement();\n      invariant(element !== undefined);\n\n      // If the item is going to be unmounted\n      // and it is being dragged it have to end the event\n      // (Because it could be child of a different DOM element).\n      if (item.isDragging()) {\n        element.style.display = 'none';\n        element.style.visibility = 'hidden';\n\n        // @ts-ignore\n        if (item._drag) item._drag.destroy();\n        store.grid.getElement().appendChild(element);\n      }\n\n      // Remove the item.\n      store.itemRefController[\"delete\"]();\n      store.itemRemoveController.removeItem(item);\n\n      // Destroy the controllers instances.\n      store.itemRefController.destroy();\n      store.eventController.destroy();\n    };\n  }, []); // eslint-disable-line\n\n  // Render.\n  return /*#__PURE__*/React__default[\"default\"].createElement(ItemProvider, {\n    value: store\n  }, child);\n}\n\n// PropTypes.\nItemComponent.propTypes = {\n  itemAddController: PropTypes__default[\"default\"].object.isRequired,\n  itemClasses: PropTypes__default[\"default\"].arrayOf(PropTypes__default[\"default\"].string.isRequired).isRequired,\n  propsToData: PropTypes__default[\"default\"].func,\n  children: PropTypes__default[\"default\"].element.isRequired,\n  grid: PropTypes__default[\"default\"].instanceOf(Muuri__default[\"default\"]).isRequired\n};\n\n// Display name.\nItemComponent.displayName = 'ItemComponent';\n\n/**\n * Add the given items in the given positions.\n *\n * @param grid - The grid instance.\n * @param addedDOMItems - The added DOM items.\n * @param indicesToAdd - the positions in which to add the items.\n * @param addOptions - The add options.\n * @param filter - The filter.\n */\nfunction addItems(grid, addedDOMItems, indicesToAdd, addOptions, filter) {\n  for (var i = 0; i < addedDOMItems.length; i++) {\n    // Add the items.\n    grid.add(addedDOMItems[i], {\n      index: indicesToAdd[i],\n      layout: false\n    });\n  }\n\n  // Show the added items (usefull just if the items are\n  // hidden by default and the filter is not setted).\n  if (!filter && addOptions !== null && addOptions !== void 0 && addOptions.show) {\n    grid.show(grid.getItems(indicesToAdd), {\n      layout: false\n    });\n  }\n}\n\n/**\n * Filter the items with the given predicate.\n *\n * @param grid - The grid instance.\n * @param predicate - The filter predicate.\n */\nfunction filterItems(grid, predicate) {\n  grid.filter(function (item) {\n    return predicate(item.getData(), item);\n  }, {\n    layout: false\n  });\n}\n\n/** Class name. */\nvar gridClassName = 'containerClass';\n\n/**\n * Returns the Css class of the grid element.\n *\n * @param grid - The Muuri instance.\n * @returns - The class.\n */\nfunction getGridClass(grid) {\n  // @ts-ignore\n  return grid._settings[gridClassName];\n}\n\n/** Class names. */\nvar itemClassNames = ['itemClass', 'itemVisibleClass', 'itemHiddenClass', 'itemPositioningClass', 'itemDraggingClass', 'itemReleasingClass', 'itemPlaceholderClass'];\n\n/**\n * Returns the items classes.\n *\n * @param grid - The Muuri instance.\n * @returns - The classes.\n */\nfunction getItemClasses(grid) {\n  // @ts-ignore\n  return itemClassNames.map(function (className) {\n    return grid._settings[className];\n  });\n}\n\n/**\n * Hide the given items.\n *\n * @param grid - The grid instance.\n * @param items - The items to hide.\n */\nfunction hideItems(grid, items) {\n  grid.hide(items, {\n    layout: false\n  });\n}\n\n/**\n * Remove the given items.\n *\n * @param grid - The grid instance.\n * @param itemsToRemove - The items to remove.\n */\nfunction removeItems(grid, itemsToRemove) {\n  grid.remove(itemsToRemove, {\n    layout: false,\n    removeElements: false\n  });\n}\n\n/**\n * Show the given items.\n *\n * @param grid - The grid instance.\n * @param items - The items to show.\n */\nfunction showItems(grid, items) {\n  grid.show(items, {\n    layout: false\n  });\n}\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n/**\n * Sort the items.\n *\n * @param grid - The grid instance.\n * @param predicate - The sort predicate.\n * @param sortOptions - The sort options.\n */\nfunction sortItems(grid, predicate, sortOptions) {\n  // Disable the layout.\n  // @ts-ignore\n  sortOptions = _objectSpread$1(_objectSpread$1({}, sortOptions || {}), {}, {\n    layout: false\n  });\n\n  // Handle a function.\n  if (typeof predicate === 'function') {\n    handleFunction(grid, predicate, sortOptions);\n  }\n\n  // Handle a string.\n  if (typeof predicate === 'string') {\n    handleString(grid, predicate, sortOptions);\n  }\n\n  // Hanndle an array of keys.\n  if (Array.isArray(predicate)) {\n    handleArray(grid, predicate, sortOptions);\n  }\n}\n\n/**\n * Sort the items given a predicate function.\n *\n * @param grid - The grid instance.\n * @param predicate - The predicate function.\n * @param sortOptions - The sort options.\n */\nfunction handleFunction(grid, predicate, sortOptions) {\n  grid.sort(function (itemA, itemB) {\n    return predicate(itemA.getData(), itemB.getData(), itemA, itemB);\n  }, sortOptions);\n}\n\n/**\n * Sort the items given a predicate string.\n *\n * @param grid - The grid instance.\n * @param predicate - The predicate string.\n * @param sortOptions - The sort options.\n */\nfunction handleString(grid, predicate, sortOptions) {\n  grid.sort(predicate, sortOptions);\n}\n\n/**\n * Sort the items given an array of keys.\n * If the key has a match, the item is inserted in that position, otherwise at the bottom.\n *\n * @param grid - The grid instance.\n * @param predicate - The array of keys.\n * @param sortOptions - The sort options.\n */\nfunction handleArray(grid, predicate, sortOptions) {\n  var items = grid.getItems();\n  // Items that can be sorted.\n  var sortedItems = [];\n  // Items that can't be sorted.\n  var otherItems = [];\n\n  // Fills the arrays.\n  items.forEach(function (item) {\n    var itemKey = item._component.key;\n    var index = predicate.findIndex(function (key) {\n      return key === itemKey;\n    });\n    if (index > -1) {\n      sortedItems[index] = item;\n    } else {\n      otherItems.push(item);\n    }\n  });\n\n  // Sort.\n  grid.sort(Array.prototype.concat(\n  // Some position can be empty.\n  sortedItems.filter(function (item) {\n    return !!item;\n  }), otherItems), sortOptions);\n}\n\n/* Interfaces */\n\n// Grid component.\nfunction GridComponent(_ref) {\n  var children = _ref.children,\n    gridProps = _ref.gridProps,\n    grid = _ref.grid,\n    filter = _ref.filter,\n    sort = _ref.sort,\n    sortOptions = _ref.sortOptions,\n    addOptions = _ref.addOptions,\n    propsToData = _ref.propsToData,\n    onSend = _ref.onSend,\n    onDragStart = _ref.onDragStart,\n    onDragEnd = _ref.onDragEnd,\n    onFilter = _ref.onFilter,\n    onSort = _ref.onSort,\n    onMount = _ref.onMount,\n    onUnmount = _ref.onUnmount,\n    forceSync = _ref.forceSync,\n    dragFixed = _ref.dragFixed,\n    dragEnabled = _ref.dragEnabled,\n    instantLayout = _ref.instantLayout;\n  /* ------------------ */\n  /* ----- STORES ----- */\n  /* ------------------ */\n\n  // Store references of objects\n  // generated in previous renders.\n  var store = useMemoized(function () {\n    return {\n      // Grid and items data.\n      gridRef:\n      /*#__PURE__*/\n      /*      */\n      React.createRef(),\n      gridClass: /*    */getGridClass(grid),\n      itemClasses: /*  */getItemClasses(grid),\n      // Controllers.\n      childrenController: /*    */new ChildrenController(),\n      fiberController: /*       */new FiberController(),\n      itemAddController: /*     */new ItemAddController(),\n      itemRemoveController: /*  */new ItemRemoveController(),\n      layoutController: /*      */new LayoutController(),\n      // Events.\n      onUnmount: onUnmount,\n      onDragStart: onDragStart,\n      onDragEnd: onDragEnd,\n      onFilter: onFilter,\n      onSort: onSort,\n      onSend: onSend\n    };\n  });\n\n  // Store references of objects\n  // that are used inside useEffect.\n  // The references are flushed on each new render.\n  var vars = {\n    // Items data.\n    indicesToAdd: /*   */[],\n    addedDOMItems: /*  */[],\n    itemsToRemove: /*  */[],\n    itemsToRefresh: /* */[],\n    itemsToShow: /*    */[],\n    itemsToHide: /*    */[],\n    // Items flags.\n    hasAdded: /*      */false,\n    hasRemoved: /*    */false,\n    hasFiltered: /*   */false,\n    hasSorted: /*     */false,\n    hasRefreshed: /*  */false,\n    hasShown: /*      */false,\n    hasHidden: /*     */false\n  };\n\n  /* ----------------- */\n  /* ----- MOUNT ----- */\n  /* ----------------- */\n\n  // Initialize the grid on mount.\n  React.useEffect(function () {\n    /* ------------------ */\n    /* ----- EVENTS ----- */\n    /* ------------------ */\n\n    // Add all the event handlers.\n    grid\n    // \"Send\" and \"receive\" events.\n    .on('beforeSend', function (_ref2) {\n      var item = _ref2.item,\n        fromGrid = _ref2.fromGrid,\n        fromIndex = _ref2.fromIndex;\n      if (!getDecoration(item).sentPayload) {\n        // Generate the sentPayload.\n        var sentPayload = {\n          fromChildrenController: store.childrenController,\n          fromFiberController: store.fiberController,\n          fromGrid: fromGrid,\n          fromIndex: fromIndex\n        };\n\n        // Add the decoration.\n        addDecoration(item, {\n          sentPayload: sentPayload\n        });\n      }\n    }).on('receive', function (_ref3) {\n      var item = _ref3.item,\n        toGrid = _ref3.toGrid,\n        toIndex = _ref3.toIndex;\n      // Controllers.\n      var toChildrenController = store.childrenController;\n      var toFiberController = store.fiberController;\n\n      // If the method is activated by user interaction (the item is being dragged)\n      // the synchronization will be performed during the \"dragEnd\" event.\n      // If the method is called via Muuri's instance (the item is not being dragged)\n      // the synchronization takes place here, but the onSend callback is not fired.\n      if (item.isDragging()) {\n        // Generate the receivedPayload.\n        var receivedPayload = {\n          toChildrenController: toChildrenController,\n          toFiberController: toFiberController,\n          toGrid: toGrid,\n          toIndex: toIndex\n        };\n\n        // Add the decoration.\n        addDecoration(item, {\n          receivedPayload: receivedPayload\n        });\n      } else {\n        // Payloads data.\n        var sentPayload = getDecoration(item).sentPayload;\n        // The payload must have been created in the send method.\n        invariant(sentPayload !== null && _typeof__default[\"default\"](sentPayload) === 'object');\n        // Controllers.\n        var fromChildrenController = sentPayload.fromChildrenController,\n          fromFiberController = sentPayload.fromFiberController;\n\n        // Remove the payload.\n        addDecoration(item, {\n          sentPayload: null\n        });\n\n        // Remove the item instances from the old GridComponent.\n        var itemFiber = fromFiberController.remove(item.getKey());\n        var itemComponent = fromChildrenController.remove(itemFiber.index);\n\n        // Add the item instances to the new GridComponent.\n        toFiberController.append(itemFiber);\n        toChildrenController.append(itemComponent);\n      }\n\n      // Emit the \"send\" event.\n      getDecoration(item).eventController.emitEvent('send', grid);\n    })\n\n    // Drag events.\n    .on('dragInit', function (item, event) {\n      // The childrenController must change the positions of\n      // the newly added components if any items are being\n      // dragged to add the safely.\n      store.childrenController.incrementDragCounter();\n      // Emit the \"drag\" event.\n      // This event is used instead of \"dragStart\" to allow the\n      // reRender of the component when the item is not inside\n      // the dragContainer, this makes it possible to change\n      // the style of the element safely (e.g. using relative dimensions).\n      getDecoration(item).eventController.emitEvent('drag', true);\n      // \"onDragStart\" Callback.\n      if (store.onDragStart) store.onDragStart(item, event);\n    }).on('dragEnd', function (item) {\n      // Payloads.\n      var sentPayload = getDecoration(item).sentPayload;\n      var receivedPayload = getDecoration(item).receivedPayload;\n\n      // If an item was sent during the drag the\n      // GridComponents are synchronized.\n      if (sentPayload && receivedPayload) {\n        // SentPayload data.\n        var fromChildrenController = sentPayload.fromChildrenController,\n          fromFiberController = sentPayload.fromFiberController,\n          fromGrid = sentPayload.fromGrid,\n          fromIndex = sentPayload.fromIndex;\n\n        // ReceivedPayload data.\n        var toChildrenController = receivedPayload.toChildrenController,\n          toFiberController = receivedPayload.toFiberController,\n          toGrid = receivedPayload.toGrid,\n          toIndex = receivedPayload.toIndex;\n\n        // Reset the payloads.\n        addDecoration(item, {\n          sentPayload: null,\n          receivedPayload: null\n        });\n\n        // Check if the item has been sended.\n        if (fromGrid !== toGrid) {\n          // \"onSend\" will be called with the receive event.\n          invariant(typeof store.onSend === 'function', 'An item cannot be sent to another MuuriComponent if the ' + \"'onSend' property has not been passed to the MuuriComponent.\");\n\n          // Remove the item instances from the old GridComponent.\n          var itemFiber = fromFiberController.remove(item.getKey());\n          var itemComponent = fromChildrenController.remove(itemFiber.index);\n\n          // Add the item instances to the new GridComponent.\n          toFiberController.append(itemFiber);\n          toChildrenController.append(itemComponent);\n\n          // \"onSend\" callback.\n          // DragEnd is called in the grid where\n          // the drag start, so onSend.\n          store.onSend({\n            // The key the user has set.\n            key: getDecoration(item).key,\n            // From.\n            fromGrid: fromGrid,\n            fromIndex: fromIndex,\n            fromId: getDecoration(fromGrid).id,\n            fromGroupIds: getDecoration(fromGrid).groupIds,\n            // To.\n            toGrid: toGrid,\n            toIndex: toIndex,\n            toId: getDecoration(toGrid).id,\n            toGroupIds: getDecoration(toGrid).groupIds\n          });\n        }\n      }\n    }).on('dragReleaseEnd', function (item) {\n      // The childrenController must change the positions of\n      // the newly added components if any items are being\n      // dragged to add the safely.\n      store.childrenController.decrementDragCounter();\n      // Emit the event.\n      // This event is used instead of \"dragEnd\" to allow the\n      // reRender of the component when the item is not inside\n      // the dragContainer, this makes it possible to change\n      // the style of the element safely (e.g. using relative dimensions).\n      getDecoration(item).eventController.emitEvent('drag', false);\n      // Call the event.\n      if (store.onDragEnd) store.onDragEnd(item);\n    })\n\n    // Show and hide events.\n    .on('showStart', function (items) {\n      // The items could be shown before they are decorated.\n      if (!isDecorated(items[0])) return;\n      // Emit the event.\n      items.forEach(function (item) {\n        var eventController = getDecoration(item).eventController;\n        // The event is triggered also for items that have not\n        // changed their \"visibility\" state.\n        // This check is done to avoid useless re-rendering.\n        if (eventController.getPayload('show') !== true) {\n          eventController.emitEvent('show', true);\n        }\n      });\n    }).on('hideEnd', function (items) {\n      // Emit the event.\n      items.forEach(function (item) {\n        var eventController = getDecoration(item).eventController;\n        // The event is triggered also for items that have not\n        // changed their \"visibility\" state.\n        // This check is done to avoid useless re-rendering.\n        if (eventController.getPayload('show') !== false) {\n          eventController.emitEvent('show', false);\n        }\n      });\n    })\n\n    // Filter and sort events.\n    .on('filter', function (shownItems, hiddenItems) {\n      if (store.onFilter) store.onFilter(shownItems, hiddenItems);\n    }).on('sort', function (currentOrder, previousOrder) {\n      if (store.onSort) store.onSort(currentOrder, previousOrder);\n    });\n\n    // Fix the dimensions of the items when they are dragged.\n    if (dragFixed) {\n      grid.on('dragInit', function (item) {\n        // Let's set fixed widht/height to the dragged item\n        // so that it does not stretch unwillingly when\n        // it's appended to the document body for the\n        // duration of the drag.\n        var element = item.getElement();\n        // The element must exist.\n        invariant(element !== undefined);\n        // Get the computed dimensions.\n        var _getComputedStyle = getComputedStyle(element),\n          width = _getComputedStyle.width,\n          height = _getComputedStyle.height,\n          paddingTop = _getComputedStyle.paddingTop;\n        // Save the previous style in case it was setted.\n        addDecoration(item, {\n          dragWidth: element.style.width,\n          dragHeight: element.style.height,\n          dragPaddingTop: element.style.paddingTop\n        });\n        // Set the new style.\n        element.style.width = width;\n        element.style.height = height;\n        element.style.paddingTop = paddingTop;\n      }).on('dragReleaseEnd', function (item) {\n        // Let's remove the fixed width/height from the\n        // dragged item now that it is back in a grid\n        // column and can freely adjust to it's\n        // surroundings.\n        var element = item.getElement();\n        // The element must exist.\n        invariant(element !== undefined);\n        // Get the old style.\n        var _getDecoration = getDecoration(item),\n          dragWidth = _getDecoration.dragWidth,\n          dragHeight = _getDecoration.dragHeight,\n          dragPaddingTop = _getDecoration.dragPaddingTop;\n        // Restore the previous style in case it was setted.\n        element.style.width = dragWidth;\n        element.style.height = dragHeight;\n        element.style.paddingTop = dragPaddingTop;\n      });\n    }\n\n    /* ---------------- */\n    /* ----- GRID ----- */\n    /* -----------------*/\n\n    // Check .\n    invariant(store.gridRef.current !== null);\n\n    // Work with the grid.\n    // @ts-ignore\n    grid._element = store.gridRef.current;\n    fillGridElement(store.gridRef.current, store.gridClass);\n    fillGrid(grid);\n\n    // \"onMount\" Callback.\n    if (onMount) onMount(grid);\n\n    // Delete the instance from the global map.\n    return function () {\n      // Destroy the controllers.\n      store.childrenController.destroy();\n      store.fiberController.destroy();\n      store.itemRemoveController.destroy();\n      store.itemAddController.destroy();\n      store.layoutController.destroy();\n    };\n  }, []); // eslint-disable-line\n\n  /* ---------------- */\n  /* ----- INIT ----- */\n  /* -----------------*/\n\n  // Init the controllers.\n  store.childrenController.useInit(children);\n  store.fiberController.useInit(store.gridRef);\n  store.itemRemoveController.useInit();\n  store.itemAddController.useInit();\n  store.layoutController.useInit();\n\n  // IsChanged flags.\n  var isFilterChanged = useReference([filter]);\n  var isSortChanged = useReference([sort, sortOptions]);\n\n  // Get items to add/remove.\n  React.useEffect(function () {\n    // Set drag enabled option.\n    addDecoration(grid, {\n      dragEnabled: dragEnabled\n    });\n\n    // Set the items data.\n    vars.indicesToAdd = store.childrenController.getIndicesToAdd();\n    vars.addedDOMItems = store.fiberController.getStateNodes(vars.indicesToAdd);\n    vars.itemsToRemove = store.itemRemoveController.getItemsToRemove();\n    vars.itemsToRefresh = store.layoutController.getItemsToRefresh();\n    vars.itemsToShow = store.layoutController.getItemsToShow();\n    vars.itemsToHide = store.layoutController.getItemsToHide();\n\n    // This will remove lot of the implementation\n    // problems for the user.\n    store.onUnmount = onUnmount;\n    store.onDragStart = onDragStart;\n    store.onDragEnd = onDragEnd;\n    store.onFilter = onFilter;\n    store.onSort = onSort;\n    store.onSend = onSend;\n  });\n\n  /* ------------------- */\n  /* ----- ACTIONS ----- */\n  /* ------------------- */\n\n  React.useEffect(function () {\n    /* ---------------------- */\n    /* ---- ADD & REMOVE ---- */\n    /* ---------------------- */\n\n    // Remove items.\n    if (vars.itemsToRemove.length) {\n      removeItems(grid, vars.itemsToRemove);\n      // Set the flag.\n      vars.hasRemoved = true;\n    }\n\n    // Add items after the old ones are removed\n    // to add them in the right positions.\n    if (vars.indicesToAdd.length) {\n      addItems(grid, vars.addedDOMItems, vars.indicesToAdd, addOptions, filter);\n      // New Items.\n      var addedItems = grid.getItems(vars.indicesToAdd);\n      // Emit the new items to the itemComponents.\n      store.itemAddController.emit(addedItems);\n      // Set the flag.\n      vars.hasAdded = true;\n    }\n\n    /* ------------------------- */\n    /* ----- SORT & FILTER ----- */\n    /* ------------------------- */\n\n    // Filter items.\n    if (filter && (isFilterChanged || vars.hasAdded || forceSync)) {\n      filterItems(grid, filter);\n      // Set the flag.\n      vars.hasFiltered = true;\n    }\n\n    // Sort items.\n    if (sort && (isSortChanged || vars.hasAdded || forceSync)) {\n      sortItems(grid, sort, sortOptions);\n      // Set the flag.\n      vars.hasSorted = true;\n    }\n\n    /* ----------------------- */\n    /* ----- SHOW & HIDE ----- */\n    /* ----------------------- */\n\n    // Filter has priority on the items visibility.\n    if (!filter && vars.itemsToShow.length) {\n      showItems(grid, vars.itemsToShow);\n      // Set the flag.\n      vars.hasShown = true;\n    }\n\n    // Filter has priority on the items visibility.\n    if (!filter && vars.itemsToHide.length) {\n      hideItems(grid, vars.itemsToHide);\n      // Set the flag.\n      vars.hasHidden = true;\n    }\n\n    /* ------------------- */\n    /* ----- REFRESH ----- */\n    /* ------------------- */\n\n    // Items with dimensions to refresh.\n    if (vars.itemsToRefresh.length) {\n      grid.refreshItems(vars.itemsToRefresh);\n      // Set the flag.\n      vars.hasRefreshed = true;\n    }\n\n    /* ------------------ */\n    /* ----- LAYOUT ----- */\n    /* ------------------ */\n\n    // Layout is calculated only in the end.\n    // Check the previous flags.\n    if (vars.hasAdded || vars.hasRemoved || vars.hasSorted || vars.hasFiltered || vars.hasRefreshed || vars.hasShown || vars.hasHidden) {\n      grid.layout(instantLayout);\n    }\n  });\n\n  /* ------------------ */\n  /* ----- RENDER ----- */\n  /* ------------------ */\n\n  // Provided value doesn't change the reference.\n  var value = useMemoized(function () {\n    return {\n      layoutController: store.layoutController,\n      grid: grid\n    };\n  });\n\n  // render.\n  return /*#__PURE__*/React__default[\"default\"].createElement(GridProvider, {\n    value: value\n  }, /*#__PURE__*/React__default[\"default\"].createElement(\"div\", _extends__default[\"default\"]({}, gridProps, {\n    ref: store.gridRef\n  }, store.fiberController.getFlagProp()), store.childrenController.render(function (child, key) {\n    return /*#__PURE__*/React__default[\"default\"].createElement(ItemComponent, {\n      key: key,\n      itemKey: key,\n      grid: grid,\n      propsToData: propsToData,\n      itemClasses: store.itemClasses,\n      itemAddController: store.itemAddController,\n      itemRemoveController: store.itemRemoveController\n    }, child);\n  })));\n}\n\n// Proptypes.\nGridComponent.propTypes = {\n  grid: PropTypes__default[\"default\"].object.isRequired,\n  gridProps: PropTypes__default[\"default\"].object,\n  filter: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string, PropTypes__default[\"default\"].func]),\n  sort: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string, PropTypes__default[\"default\"].func, PropTypes__default[\"default\"].arrayOf(PropTypes__default[\"default\"].string)]),\n  sortOptions: PropTypes__default[\"default\"].exact({\n    descending: PropTypes__default[\"default\"].bool\n  }),\n  addOptions: PropTypes__default[\"default\"].exact({\n    show: PropTypes__default[\"default\"].bool\n  }),\n  onSend: PropTypes__default[\"default\"].func,\n  onDragStart: PropTypes__default[\"default\"].func,\n  onDragEnd: PropTypes__default[\"default\"].func,\n  onFilter: PropTypes__default[\"default\"].func,\n  onSort: PropTypes__default[\"default\"].func,\n  onMount: PropTypes__default[\"default\"].func,\n  onUnmount: PropTypes__default[\"default\"].func,\n  forceSync: PropTypes__default[\"default\"].bool,\n  dragFixed: PropTypes__default[\"default\"].bool,\n  dragEnabled: PropTypes__default[\"default\"].bool,\n  instantLayout: PropTypes__default[\"default\"].bool\n};\n\n// Default props.\nGridComponent.defaultProps = {\n  gridProps: {},\n  addOptions: {\n    show: true\n  },\n  sortOptions: {\n    descending: false\n  },\n  forceSync: false,\n  dragFixed: false,\n  dragEnabled: false,\n  instantLayout: false\n};\n\n// Display name.\nGridComponent.displayName = 'GridComponent';\n\n/**\n * Map that links the Muuri instances to\n * their id and group ids.\n */\nvar MuuriMap = /*#__PURE__*/function () {\n  function MuuriMap() {\n    _classCallCheck__default[\"default\"](this, MuuriMap);\n    _defineProperty__default[\"default\"](this, \"_idMap\", new Map());\n    _defineProperty__default[\"default\"](this, \"_groupMap\", new Map());\n  }\n  _createClass__default[\"default\"](MuuriMap, [{\n    key: \"get\",\n    value:\n    /**\n     * Get the grid instance with the chosen id.\n     *\n     * @param id - The id.\n     * @returns - The grid instance.\n     */\n    function get(id) {\n      return this._idMap.get(id) || null;\n    }\n\n    /**\n     * Get all the grid instances in the group of the given id.\n     * The reference of the group array never changes.\n     *\n     * @param groupId - The group id.\n     * @returns - The array of grid instances.\n     */\n  }, {\n    key: \"getGroup\",\n    value: function getGroup(groupId) {\n      var group = this._groupMap.get(groupId);\n      if (!group) {\n        var newGroup = [];\n        this._groupMap.set(groupId, newGroup);\n        return newGroup;\n      } else {\n        return group;\n      }\n    }\n\n    /**\n     * Get all the grid instances in the map.\n     *\n     * @returns - The grid instances.\n     */\n  }, {\n    key: \"getAll\",\n    value: function getAll() {\n      return Array.from(this._idMap.values());\n    }\n\n    /**\n     * Set the grid instance with the given id.\n     *\n     * @param grid - The grid instance.\n     * @param id - The id of the instance.\n     * @returns - The muuriMap.\n     */\n  }, {\n    key: \"set\",\n    value: function set(grid, id) {\n      this._idMap.set(id, grid);\n      return this;\n    }\n\n    /**\n     * Set the grid instance in the group of the given id.\n     *\n     * @param grid - The grid instance.\n     * @param groupId - The id of the group.\n     * @returns - The muuriMap.\n     */\n  }, {\n    key: \"setGroup\",\n    value: function setGroup(grid, groupId) {\n      var group = this._groupMap.get(groupId);\n      if (group) {\n        group.push(grid);\n      } else {\n        this._groupMap.set(groupId, [grid]);\n      }\n      return this;\n    }\n\n    /**\n     * Delete the grid instance with the given id.\n     *\n     * @param id - The id of the instance.\n     * @returns - The muuriMap.\n     */\n  }, {\n    key: \"delete\",\n    value: function _delete(id) {\n      this._idMap[\"delete\"](id);\n      return this;\n    }\n\n    /**\n     * Delete the instance from the group with the given id.\n     *\n     * @param grid - The grid instance.\n     * @param groupIds - The group ids of the instance.\n     */\n  }, {\n    key: \"deleteGroup\",\n    value: function deleteGroup(grid, groupId) {\n      var group = this._groupMap.get(groupId);\n      if (group) {\n        var index = group.indexOf(grid);\n        if (index > -1) group.splice(index, 1);\n      }\n      return this;\n    }\n\n    /**\n     * Clear the maps.\n     */\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this._idMap.clear();\n      this._groupMap.clear();\n      return this;\n    }\n  }]);\n  return MuuriMap;\n}();\nvar muuriMap = new MuuriMap();\n\n/**\n * Generate and returns a muuri instance with the given options.\n *\n * @param options - The options.\n * @returns - The muuri instance.\n */\nfunction getInstance(options) {\n  var el = document.createElement('div');\n  // The element won't be visible.\n  el.style.display = 'none';\n  // Muuri (0.8.0) need an element in the DOM to be instanciated.\n  document.body.appendChild(el);\n\n  // Generate the instance.\n  var grid = new Muuri__default[\"default\"](el, options);\n\n  // Remove the element.\n  document.body.removeChild(el);\n  return grid;\n}\n\n/**\n * Set the value in the ref.\n *\n * @param ref - The ref.\n * @param value - The value\n */\nfunction handleRef(ref, value) {\n  if (!ref) return;\n  if (typeof ref === 'function') ref(value);\n  // @ts-ignore\n  else if ('current' in ref) ref.current = value;\n}\n\n/**\n * Wrap the 'dragAutoScroll' option.\n * Allow the target element to be a ref.\n *\n * @param options - The grid options.\n */\nfunction setDragAutoScroll(options) {\n  var dragAutoScroll = options.dragAutoScroll;\n\n  // Wrap the options only if it is setted.\n  if (!dragAutoScroll || !Array.isArray(dragAutoScroll.targets)) return;\n  dragAutoScroll.targets.forEach(function (target) {\n    // Check if it is an object to wrap.\n    if (isTargetElement(target)) return;\n    invariant('element' in target, 'You must provide an element in each scroll target');\n\n    // Scroll target element.\n    var element = target.element;\n    // The element ref.\n    var ref = {\n      current: null\n    };\n\n    // Define the element property.\n    Object.defineProperty(target, 'element', {\n      get: function get() {\n        return ref.current;\n      },\n      set: function set(element) {\n        if (isTargetElement(element)) {\n          ref.current = element;\n        } else {\n          ref = element;\n        }\n      }\n    });\n\n    // Set the element.\n    target.element = element;\n  });\n}\n\n/**\n * Returns if the target is a valid element.\n *\n * @param element - The target.\n * @returns - If the target is a valid element.\n */\nfunction isTargetElement(target) {\n  return (\n    // A DOM element.\n    target instanceof HTMLElement ||\n    // The window.\n    target instanceof window.constructor\n  );\n}\n\n/**\n * Wrap the 'dragContainer' option.\n * Allow it to be a ref.\n *\n * @param options - The grid options.\n */\nfunction setDragContainer(options) {\n  var dragContainer = options.dragContainer;\n  // The drag container ref.\n  var ref = {\n    current: null\n  };\n\n  // Define the property.\n  Object.defineProperty(options, 'dragContainer', {\n    get: function get() {\n      return ref.current;\n    },\n    set: function set(value) {\n      if (!value || value instanceof Element) {\n        ref.current = value;\n      } else {\n        ref = value;\n      }\n    }\n  });\n\n  // Set the drag container.\n  options.dragContainer = dragContainer;\n}\n\n/**\n * Wrap the 'dragSort' option.\n * Allow it to be an object containing the groupId of the chosen MuuriComponents.\n *\n * @param options - The grid options.\n * @param globalMap - The globalMap.\n */\nfunction setDragSort(options, globalMap) {\n  var dragSort = options.dragSort;\n  // Parse this options only if it is an object.\n  if (!dragSort || _typeof__default[\"default\"](dragSort) !== 'object') return;\n  // Check the options.\n  invariant(typeof dragSort.groupId === 'string', 'You must provide a string as groupId');\n\n  // The group, its reference doesn't change.\n  var group = globalMap.getGroup(dragSort.groupId);\n\n  // dragSort method.\n  options.dragSort = function () {\n    return group;\n  };\n}\n\n/**\n * Wrap the 'dragStartPredicate' option.\n * To allow the drag:\n * - The global drag must be enabled.\n * - The item must be draggable.\n *\n * @param options - The grid options.\n */\nfunction setDragStartPredicate(options) {\n  var dragStartPredicate = options.dragStartPredicate;\n\n  // Default predicate.\n  var defaultStartPredicate = getDefaultStartPredicate(dragStartPredicate);\n\n  // Wrap the method.\n  options.dragStartPredicate = function (item, event) {\n    if (!getDecoration(item.getGrid()).dragEnabled) return false;\n    if (isDecorated(item) && getDecoration(item).draggable === false) return false;\n    return defaultStartPredicate(item, event);\n  };\n}\n\n/**\n * Given the dragStartPredicate option return the default method.\n *\n * @param dragStartPredicate - The dragStartPredicate option.\n * @returns - The defaultStartPredicate method.\n */\nfunction getDefaultStartPredicate(dragStartPredicate) {\n  return typeof dragStartPredicate === 'function' ? dragStartPredicate : function (item, event) {\n    return Muuri__default[\"default\"].ItemDrag.defaultStartPredicate(item, event, dragStartPredicate);\n  };\n}\n\nvar _excluded = [\"children\", \"id\", \"groupIds\", \"gridProps\", \"filter\", \"sort\", \"sortOptions\", \"addOptions\", \"propsToData\", \"onSend\", \"onDragStart\", \"onDragEnd\", \"onFilter\", \"onSort\", \"onMount\", \"onUnmount\", \"forceSync\", \"dragFixed\", \"dragEnabled\", \"instantLayout\"];\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default[\"default\"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\n// Muuri component.\nvar MuuriComponent = /*#__PURE__*/React.forwardRef(function MuuriComponent(_ref, muuriRef) {\n  var children = _ref.children,\n    id = _ref.id,\n    groupIds = _ref.groupIds,\n    gridProps = _ref.gridProps,\n    filter = _ref.filter,\n    sort = _ref.sort,\n    sortOptions = _ref.sortOptions,\n    addOptions = _ref.addOptions,\n    propsToData = _ref.propsToData,\n    onSend = _ref.onSend,\n    onDragStart = _ref.onDragStart,\n    onDragEnd = _ref.onDragEnd,\n    onFilter = _ref.onFilter,\n    onSort = _ref.onSort,\n    onMount = _ref.onMount,\n    onUnmount = _ref.onUnmount,\n    forceSync = _ref.forceSync,\n    dragFixed = _ref.dragFixed,\n    dragEnabled = _ref.dragEnabled,\n    instantLayout = _ref.instantLayout,\n    options = _objectWithoutProperties__default[\"default\"](_ref, _excluded);\n  // Generate the Muuri instance.\n  var grid = useMemoized(function () {\n    // Remove the standard option '*'.\n    // @ts-ignore\n    options.items = [];\n    // Muuri (0.9.0) generate the \"ItemDrag\" instances only if\n    // drag is enabled. These instances do not handle scrolling well on touch devices,\n    // so we only create these instances if drag-and-drop have to be used\n    // (assuming that a boolean is passed to the prop instead of the default value \"null\").\n    // The enabling / disabling of the drag is managed in dragStartPredicate.\n    // @ts-ignore\n    options.dragEnabled = dragEnabled !== null;\n\n    // Allow the drag container to be a React.Ref<HTMLElement>.\n    setDragContainer(options);\n    // Allow the option to be an object ({ groupId }).\n    setDragSort(options, muuriMap);\n    // Allow the target elements to be React.Ref<HTMLElement>.\n    setDragAutoScroll(options);\n    // Allow enabling / disabling the drag-and-drop.\n    setDragStartPredicate(options);\n\n    // Generate the instance.\n    var grid = getInstance(options);\n\n    // Add the instance to the map.\n    if (id) muuriMap.set(grid, id);\n    // Add the decoration.\n    addDecoration(grid, {\n      id: id\n    });\n    // Set the ref.\n    handleRef(muuriRef, grid);\n    return grid;\n  }); // eslint-disable-line\n\n  // On unmount effect.\n  React.useEffect(function () {\n    // Clean-up.\n    return function () {\n      // Unset the ref.\n      handleRef(muuriRef, null);\n      // Remove the decorations.\n      removeDecorations(grid);\n      // Remove the instance from the map.\n      if (id) muuriMap[\"delete\"](id);\n      // Destroy the instace\n      grid.destroy();\n    };\n  }, []); // eslint-disable-line\n\n  // Allow the groupIds to be changed.\n  useInstantEffect(function () {\n    // decorate the instance\n    addDecoration(grid, {\n      groupIds: groupIds\n    });\n    // Add the instance to the groups.\n    if (groupIds) {\n      groupIds.forEach(function (groupId) {\n        muuriMap.setGroup(grid, groupId);\n      });\n    }\n\n    // Clean-up.\n    return function () {\n      // Remove the instance from the groups.\n      if (groupIds) {\n        groupIds.forEach(function (groupId) {\n          muuriMap.deleteGroup(grid, groupId);\n        });\n      }\n    };\n  }, groupIds || []);\n\n  // Render.\n  return /*#__PURE__*/React__default[\"default\"].createElement(GridComponent, {\n    grid: grid,\n    gridProps: gridProps,\n    filter: filter,\n    sort: sort,\n    sortOptions: sortOptions,\n    addOptions: addOptions,\n    propsToData: propsToData,\n    onSend: onSend,\n    onDragStart: onDragStart,\n    onDragEnd: onDragEnd,\n    onFilter: onFilter,\n    onSort: onSort,\n    onMount: onMount,\n    onUnmount: onUnmount,\n    forceSync: forceSync,\n    dragFixed: dragFixed,\n    dragEnabled: dragEnabled,\n    instantLayout: instantLayout\n  }, children);\n});\n\n// Proptypes.\nMuuriComponent.propTypes = {\n  id: PropTypes__default[\"default\"].string,\n  groupIds: PropTypes__default[\"default\"].arrayOf(PropTypes__default[\"default\"].string.isRequired),\n  showDuration: PropTypes__default[\"default\"].number,\n  showEasing: PropTypes__default[\"default\"].string,\n  hideDuration: PropTypes__default[\"default\"].number,\n  hideEasing: PropTypes__default[\"default\"].string,\n  visibleStyles: PropTypes__default[\"default\"].shape({}),\n  hiddenStyles: PropTypes__default[\"default\"].shape({}),\n  // @ts-ignore\n  layout: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func, PropTypes__default[\"default\"].exact({\n    fillGaps: PropTypes__default[\"default\"].bool,\n    horizontal: PropTypes__default[\"default\"].bool,\n    alignRight: PropTypes__default[\"default\"].bool,\n    alignBottom: PropTypes__default[\"default\"].bool,\n    rounding: PropTypes__default[\"default\"].bool\n  })]),\n  layoutOnResize: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].bool, PropTypes__default[\"default\"].number]),\n  layoutDuration: PropTypes__default[\"default\"].number,\n  layoutEasing: PropTypes__default[\"default\"].string,\n  dragContainer: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].instanceOf(HTMLElement), PropTypes__default[\"default\"].shape({\n    current: PropTypes__default[\"default\"].instanceOf(HTMLElement).isRequired\n  })]),\n  // @ts-ignore\n  dragStartPredicate: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func, PropTypes__default[\"default\"].exact({\n    distance: PropTypes__default[\"default\"].number,\n    delay: PropTypes__default[\"default\"].number,\n    handle: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].string, PropTypes__default[\"default\"].bool])\n  })]),\n  dragAxis: PropTypes__default[\"default\"].oneOf(['x', 'y', 'xy']),\n  dragSort: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].bool, PropTypes__default[\"default\"].func, PropTypes__default[\"default\"].exact({\n    groupId: PropTypes__default[\"default\"].string.isRequired\n  })]),\n  // @ts-ignore\n  dragSortHeuristics: PropTypes__default[\"default\"].exact({\n    sortInterval: PropTypes__default[\"default\"].number,\n    minDragDistance: PropTypes__default[\"default\"].number,\n    minBounceBackAngle: PropTypes__default[\"default\"].number\n  }),\n  // @ts-ignore\n  dragSortPredicate: PropTypes__default[\"default\"].oneOfType([PropTypes__default[\"default\"].func, PropTypes__default[\"default\"].exact({\n    action: PropTypes__default[\"default\"].oneOf(['move', 'swap']),\n    migrateAction: PropTypes__default[\"default\"].oneOf(['move', 'swap']),\n    threshold: PropTypes__default[\"default\"].number\n  })]),\n  // @ts-ignore\n  dragRelease: PropTypes__default[\"default\"].exact({\n    duration: PropTypes__default[\"default\"].number,\n    easing: PropTypes__default[\"default\"].string,\n    useDragContainer: PropTypes__default[\"default\"].bool\n  }),\n  // @ts-ignore\n  dragCssProps: PropTypes__default[\"default\"].exact({\n    touchAction: PropTypes__default[\"default\"].string,\n    userSelect: PropTypes__default[\"default\"].string,\n    userDrag: PropTypes__default[\"default\"].string,\n    tapHighlightColor: PropTypes__default[\"default\"].string,\n    touchCallout: PropTypes__default[\"default\"].string,\n    contentZooming: PropTypes__default[\"default\"].string\n  }),\n  // @ts-ignore\n  dragPlaceholder: PropTypes__default[\"default\"].exact({\n    enabled: PropTypes__default[\"default\"].bool,\n    createElement: PropTypes__default[\"default\"].func,\n    onCreate: PropTypes__default[\"default\"].func,\n    onRemove: PropTypes__default[\"default\"].func,\n    easing: PropTypes__default[\"default\"].string,\n    duration: PropTypes__default[\"default\"].number\n  }),\n  containerClass: PropTypes__default[\"default\"].string,\n  itemClass: PropTypes__default[\"default\"].string,\n  itemVisibleClass: PropTypes__default[\"default\"].string,\n  itemHiddenClass: PropTypes__default[\"default\"].string,\n  itemPositioningClass: PropTypes__default[\"default\"].string,\n  itemDraggingClass: PropTypes__default[\"default\"].string,\n  itemReleasingClass: PropTypes__default[\"default\"].string,\n  itemPlaceholderClass: PropTypes__default[\"default\"].string\n};\n\n// Default props.\nMuuriComponent.defaultProps = _objectSpread(_objectSpread({}, Muuri__default[\"default\"].defaultOptions), {}, {\n  dragEnabled: null\n});\n\n// Display name.\nMuuriComponent.displayName = 'MuuriComponent';\n\n// The method return by the hook.\n\n/**\n * The useData hook allow to set the data to the item in which the hook has been called.\n * It also returns the setter method.\n *\n * @param initialData - The data.\n * @param options - The options.\n * @returns - The setter method.\n */\nfunction useData(initialData, options) {\n  var _useItemContext = useItemContext(),\n    itemRefController = _useItemContext.itemRefController;\n\n  // Check if the hook is called inside an item.\n  invariant(itemRefController !== undefined, 'The useData hook can be used only inside an Item');\n\n  // Because of memoization, The identity of the function is guaranteed\n  // to be stable so it will be safe to omit them as a dependency.\n  var setData = useFunction(function (data, options) {\n    // Check if the data is an object.\n    invariant(_typeof__default[\"default\"](data) === 'object', \"The data must be an object, founded: \".concat(_typeof__default[\"default\"](data)));\n\n    // Default options.\n    options = options || useData.defaultOptions;\n    // Set the data.\n    if (options.merge) {\n      // Merge.\n      var currentData = itemRefController.get('data') || {};\n      itemRefController.set('data', Object.assign(currentData, data));\n    } else {\n      // Set.\n      itemRefController.set('data', data);\n    }\n  });\n\n  // Set the inital data.\n  if (_typeof__default[\"default\"](initialData) === 'object') {\n    setData(initialData, options);\n  }\n  return setData;\n}\n\n// Default options.\nuseData.defaultOptions = {\n  merge: false\n};\n\n/**\n * The useDrag hook re-render item (in which the hook has been called)\n * Every time it is dragged/released.\n * The hook returns if the item is being dragged.\n *\n * @returns - If the item is being dragged.\n */\nfunction useDrag() {\n  var _useItemContext = useItemContext(),\n    eventController = _useItemContext.eventController;\n  var reRender = useRerender();\n\n  // Check if the hook is called inside an item.\n  invariant(eventController !== undefined, 'The useDrag hook can be used only inside an Item');\n\n  // Enable the event.\n  React.useEffect(function () {\n    eventController.enableEvent('drag', reRender);\n  }, [eventController, reRender]);\n  return eventController.getPayload('drag') || false;\n}\n\n// The method returned by the hook.\n\n/**\n * The useDraggable hook allow to decide if the item (in which the hook has been called)\n * can be dragged or not.\n * It returns the setter method.\n *\n * @returns - The setter method.\n */\nfunction useDraggable() {\n  var _useItemContext = useItemContext(),\n    itemRefController = _useItemContext.itemRefController;\n\n  // Check if the hook is called inside an item.\n  invariant(itemRefController !== undefined, 'The useDraggable hook can be used only inside an Item');\n  var setDraggable = useFunction(function (draggable) {\n    // Set if the item can be dragged.\n    itemRefController.set('draggable', !!draggable);\n  });\n  return setDraggable;\n}\n\n/**\n * The useGrid hook return the data of the MuuriComponent parent of the\n * item (in which the hook has been called).\n *\n * @returns - The data of the MuuriComponent.\n */\nfunction useGrid() {\n  var _useItemContext = useItemContext(),\n    eventController = _useItemContext.eventController;\n  var gridContext = useGridContext();\n  var reRender = useRerender();\n\n  // Check if the hook is called inside an item.\n  invariant(eventController !== undefined && gridContext.grid !== undefined, 'The useGrid hook can be used only inside an Item');\n\n  // The context is not updated when the hook is trigger\n  // so we need to get the updated instance from the eventController.\n  var grid = eventController.getPayload('send') || gridContext.grid;\n\n  // Enable the event.\n  React.useEffect(function () {\n    eventController.enableEvent('send', reRender);\n  }, [eventController, reRender]);\n  return {\n    id: grid._component.id,\n    groupIds: grid._component.groupIds,\n    grid: grid\n  };\n}\n\n// The method returned by the hook.\n\n/**\n * The useRefresh hook allow to notify the MuuriComponent that the\n * item dimensions are changed, so that it can update the layout.\n *\n * @param deps - The dependencies.\n * @returns - The refresh method.\n */\nfunction useRefresh() {\n  var deps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var _useGridContext = useGridContext(),\n    layoutController = _useGridContext.layoutController;\n  var _useItemContext = useItemContext(),\n    itemRefController = _useItemContext.itemRefController;\n\n  // Check if the hook is called inside an item.\n  invariant(itemRefController !== undefined && layoutController !== undefined, 'The useRefresh hook can be used only inside an Item');\n\n  // Because of memoization, The identity of the function is guaranteed\n  // to be stable so it will be safe to omit it as a dependency.\n  var refresh = React.useCallback(function () {\n    if (!itemRefController.hasItem()) return;\n    // Get the item.\n    var item = itemRefController.getItem();\n    // If the component is rendering within the MuuriComponent.\n    layoutController.refreshItem(item);\n  }, [layoutController, itemRefController]);\n  React.useEffect(function () {\n    refresh();\n  }, deps.concat(refresh)); // eslint-disable-line\n\n  return refresh;\n}\n\n/**\n * The useShow hook allow you to know if the item is showing.\n * The item will re-render each time its visibility change.\n *\n * @returns - If the item is showing.\n */\nfunction useShow() {\n  var _useItemContext = useItemContext(),\n    eventController = _useItemContext.eventController;\n  var reRender = useRerender();\n\n  // Check if the hook is called inside an item.\n  invariant(eventController !== undefined, 'The useShow hook can be used only inside an Item');\n\n  // Enable the event.\n  React.useEffect(function () {\n    eventController.enableEvent('show', reRender);\n  }, [eventController, reRender]);\n  return eventController.getPayload('show');\n}\n\n// The method returned by the hook.\n\n/**\n * The useVisibility hook allow you to show/hide the item in which the hook has been called.\n *\n * @returns - The setter method.\n */\nfunction useVisibility() {\n  var _useGridContext = useGridContext(),\n    layoutController = _useGridContext.layoutController;\n  var _useItemContext = useItemContext(),\n    eventController = _useItemContext.eventController,\n    itemRefController = _useItemContext.itemRefController;\n\n  // Check if the hook is called inside an item.\n  invariant(itemRefController !== undefined && layoutController !== undefined && eventController !== undefined, 'The useVisibility hook can be used only inside an Item');\n\n  // Set visibility.\n  var setVisibility = useFunction(function (visible, options) {\n    if (!itemRefController.hasItem()) return;\n    if (!!visible === eventController.getPayload('show')) return;\n\n    // Default options.\n    options = options || useVisibility.defaultOptions;\n\n    // Set the visibility.\n    layoutController.setItemVisibility(itemRefController.getItem(), visible, options.instant === true);\n  });\n  return setVisibility;\n}\n\n// Default options.\nuseVisibility.defaultOptions = {\n  instant: false\n};\n\nvar hooks = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  useData: useData,\n  useDrag: useDrag,\n  useDraggable: useDraggable,\n  useGrid: useGrid,\n  useRefresh: useRefresh,\n  useShow: useShow,\n  useVisibility: useVisibility\n});\n\n/** Responsive style options. */\n\n/**\n * Get the responsive style.\n *\n * @param options - The options.\n * @returns - The style.\n */\nfunction getResponsiveStyle(options) {\n  // Check options.\n  invariant(_typeof__default[\"default\"](options) === 'object', 'You must define options');\n\n  // Check columns.\n  invariant(typeof options.columns === 'number' && options.columns > 0 && options.columns <= 1, 'options.columns must be a number between 0 (excluded) and 1 (included)');\n\n  // Check height and ratio.\n  invariant(typeof options.ratio === 'number' || typeof options.height === 'number' || typeof options.height === 'string', 'You must provide at least one option between height and ratio');\n\n  // Check that the height and the ratio options are not setted togheter.\n  invariant(typeof options.ratio !== 'number' || typeof options.height !== 'number' && typeof options.height !== 'string', 'You cannot provide both the height and the ratio options');\n\n  // The margin values.\n  var _getResponsiveMargin = getResponsiveMargin(options.margin || '0px'),\n    margin = _getResponsiveMargin.margin,\n    mStatic = _getResponsiveMargin.mStatic,\n    mDynamic = _getResponsiveMargin.mDynamic;\n  // The item width.\n  var _getResponsiveWidth = getResponsiveWidth(options.columns, mStatic, mDynamic),\n    needCalc = _getResponsiveWidth.needCalc,\n    width = _getResponsiveWidth.width;\n\n  // If ratio is used set The paddingTop\n  // instad of the heght, the child element must\n  // have \"display: absolute\".\n  return options.ratio ? {\n    width: needCalc ? \"calc(\".concat(width, \")\") : width,\n    paddingTop: getResponsivePaddingTop(width, options.ratio, needCalc),\n    height: \"0px\",\n    borderWidth: '0px',\n    margin: margin\n  } : {\n    width: needCalc ? \"calc(\".concat(width, \")\") : width,\n    paddingTop: \"0px\",\n    // @ts-ignore\n    height: getFixedHeight(options.height),\n    borderWidth: '0px',\n    margin: margin\n  };\n}\n\n/**\n * Get the responsive width.\n *\n * @param columns - The percentage.\n * @param mStatic - The static margin.\n * @param mDynamic - The dynamic margin.\n * @returns - The width.\n */\nfunction getResponsiveWidth(columns, mStatic, mDynamic) {\n  var needCalc = mStatic !== 0;\n  var rawWidth = columns * 100 - mDynamic;\n  var width = needCalc ? \"\".concat(rawWidth, \"% - \").concat(mStatic, \"px\") : \"\".concat(rawWidth, \"%\");\n  return {\n    needCalc: needCalc,\n    width: width\n  };\n}\n\n/**\n * Get the responsive paddingTop.\n *\n * @param width - The width.\n * @param ratio - The width/height ratio.\n * @param needCalc - If the width need to be surrounded by calc().\n * @returns - The paddingTop.\n */\nfunction getResponsivePaddingTop(width, ratio, needCalc) {\n  return needCalc ? \"calc((\".concat(width, \") / \").concat(ratio, \")\") : \"\".concat(parseFloat(width) / ratio, \"%\");\n}\n\n/**\n * Get the fixed height.\n *\n * @param height - The mixed height.\n * @returns - The height string.\n */\nfunction getFixedHeight(height) {\n  return typeof height === 'number' ? \"\".concat(height, \"px\") : height;\n}\n\n/**\n * The responsive margin.\n *\n * @param margin - The margin.\n * @returns - The responsive margin.\n */\nfunction getResponsiveMargin(margin) {\n  if (typeof margin === 'number') margin = \"\".concat(margin, \"px\");\n  var margins = margin.trim().split(' ');\n\n  // Margin default values.\n  var leftMargin = '0px';\n  var rightMargin = '0px';\n  var mDynamic = 0;\n  var mStatic = 0;\n\n  // Get the values from the input.\n  if (margins.length === 1) {\n    leftMargin = rightMargin = margins[0];\n  } else if (margins.length === 2) {\n    leftMargin = rightMargin = margins[1];\n  } else if (margins.length === 3) {\n    leftMargin = rightMargin = margins[1];\n  } else if (margins.length === 4) {\n    leftMargin = margins[3];\n    rightMargin = margins[1];\n  }\n\n  // Set dynamic/static margins.\n  if (leftMargin.indexOf('%') === -1) mStatic += parseFloat(leftMargin);else mDynamic += parseFloat(leftMargin);\n  if (rightMargin.indexOf('%') === -1) mStatic += parseFloat(rightMargin);else mDynamic += parseFloat(rightMargin);\n  return {\n    margin: margin,\n    mStatic: mStatic,\n    mDynamic: mDynamic\n  };\n}\n\n/**\n * Get the static style.\n *\n * @param options - The options.\n * @returns - The style.\n */\nfunction getStaticStyle(options) {\n  var style = getResponsiveStyle(options);\n\n  // Check the options.\n  invariant('grid' in options, 'You mast pass the grid instance to get the static style.');\n\n  // The sizer element.\n  var sizerElement = options.grid.getSizerElement();\n\n  // Set the style in the sizer.\n  Object.assign(sizerElement.style, style);\n\n  // Get the style from the sizer.\n  var _window$getComputedSt = window.getComputedStyle(sizerElement),\n    width = _window$getComputedSt.width,\n    height = _window$getComputedSt.height,\n    paddingTop = _window$getComputedSt.paddingTop,\n    margin = _window$getComputedSt.margin;\n  return {\n    width: width,\n    height: height,\n    paddingTop: paddingTop,\n    margin: margin\n  };\n}\n\n// Hook names.\nvar hooksNames = ['useData', 'useDrag', 'useDraggable', 'useGrid', 'useRefresh', 'useShow', 'useVisibility'];\n\n// Handler type.\n\n// Hook handlers.\nvar HooksHandlers = [['useData', /*       */getHandler('setData')], ['useDrag', /*       */getHandler('isDragging')], ['useDraggable', /*  */getHandler('setDraggable')], ['useGrid', /*       */getHandler('gridData')], ['useRefresh', /*    */getHandler('refresh')], ['useShow', /*       */getHandler('isShowing')], ['useVisibility', /* */getHandler('setVisibility')]];\n\n/**\n * Return the handler with the given key.\n *\n * @param key - The key.\n * @returns - The method.\n */\nfunction getHandler(key) {\n  return function handler(payload) {\n    return _defineProperty__default[\"default\"]({}, key, payload);\n  };\n}\n\n/**\n * Run all the handlers and merge all the payloads.\n *\n * @param hooksHandlers - The handlers.\n * @returns - The merged payload.\n */\nfunction getMerged(hooksHandlers) {\n  return Object.assign.apply(Object, [{}].concat(_toConsumableArray__default[\"default\"](hooksHandlers.map(function (_ref2) {\n    var _ref3 = _slicedToArray__default[\"default\"](_ref2, 2),\n      hookName = _ref3[0],\n      handler = _ref3[1];\n    var payload = hooks[hookName]();\n    return handler(payload);\n  }))));\n}\n\n/**\n * Item HOC for hooks.\n *\n * @param Component - The component to wrap.\n * @param enabledHooks - The hooks to enable.\n * @returns - The wrapped component.\n */\nfunction withHooks(Component, enabledHooks) {\n  // There must be an array of hooks to enable.\n  invariant(Array.isArray(enabledHooks), 'An array of hooks name must be provided to wrap an item.');\n\n  // All the hooks must be valid.\n  enabledHooks.forEach(function (hookName) {\n    invariant(hooksNames.includes(hookName), \"Invalid item hook: \".concat(hookName));\n  });\n\n  // There must be at least one hook to enable.\n  invariant(enabledHooks.length !== 0, 'To wrap an item at least one hook must be provided.');\n\n  // Get the handlers array of the enabled hook.\n  var hooksHandlers = HooksHandlers.filter(function (_ref4) {\n    var _ref5 = _slicedToArray__default[\"default\"](_ref4, 1),\n      hookName = _ref5[0];\n    return enabledHooks.includes(hookName);\n  });\n\n  // Return the HOC.\n  return function WrappedItem(props) {\n    // The hooks will run in the 'getMerged' method.\n    return /*#__PURE__*/React__default[\"default\"].createElement(Component, _extends__default[\"default\"]({}, props, getMerged(hooksHandlers)));\n  };\n}\n\n// Muuri-exports.\nvar AutoScroller = Muuri__default[\"default\"].AutoScroller;\nvar ItemDrag = Muuri__default[\"default\"].ItemDrag;\n\nexports.AutoScroller = AutoScroller;\nexports.ChildrenController = ChildrenController;\nexports.EventController = EventController;\nexports.FiberController = FiberController;\nexports.FlagProp = FlagProp;\nexports.GridComponent = GridComponent;\nexports.GridContext = GridContext;\nexports.GridProvider = GridProvider;\nexports.ItemAddController = ItemAddController;\nexports.ItemComponent = ItemComponent;\nexports.ItemContext = ItemContext;\nexports.ItemDrag = ItemDrag;\nexports.ItemProvider = ItemProvider;\nexports.ItemRefController = ItemRefController;\nexports.ItemRemoveController = ItemRemoveController;\nexports.LayoutController = LayoutController;\nexports.MuuriComponent = MuuriComponent;\nexports.MuuriMap = MuuriMap;\nexports.getHandler = getHandler;\nexports.getIndicesToAdd = getIndicesToAdd;\nexports.getResponsiveStyle = getResponsiveStyle;\nexports.getStaticStyle = getStaticStyle;\nexports.muuriMap = muuriMap;\nexports.useData = useData;\nexports.useDrag = useDrag;\nexports.useDraggable = useDraggable;\nexports.useGrid = useGrid;\nexports.useGridContext = useGridContext;\nexports.useItemContext = useItemContext;\nexports.useRefresh = useRefresh;\nexports.useShow = useShow;\nexports.useVisibility = useVisibility;\nexports.withHooks = withHooks;\n"]}