"use strict";

Liferay.Loader.define("@product-navigation-control-menu$clayui/provider@3.128.0/lib/Provider", ['module', 'exports', 'require', '@frontend-taglib-clay$clayui/icon', 'frontend-js-react-web$react', './DataClient', './useReducedMotion'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    function _typeof(o) {
      "@babel/helpers - typeof";
      return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
        return typeof o;
      } : function (o) {
        return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
      }, _typeof(o);
    }
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports.useProvider = exports.Provider = void 0;
    var _icon = require("@frontend-taglib-clay$clayui/icon");
    var _react = _interopRequireWildcard(require("frontend-js-react-web$react"));
    var _DataClient = require("./DataClient");
    var _useReducedMotion = require("./useReducedMotion");
    var _excluded = ["children", "reducedMotion", "spritemap", "storageMaxSize", "theme"];
    /**
     * SPDX-FileCopyrightText: © 2021 Liferay, Inc. <https://liferay.com>
     * SPDX-License-Identifier: BSD-3-Clause
     */
    function _getRequireWildcardCache(e) {
      if ("function" != typeof WeakMap) return null;var r = new WeakMap(),
          t = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
        return e ? t : r;
      })(e);
    }
    function _interopRequireWildcard(e, r) {
      if (!r && e && e.__esModule) return e;if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },
          a = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var u in e) {
        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
          var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
        }
      }return n.default = e, t && t.set(e, n), n;
    }
    function ownKeys(e, r) {
      var t = Object.keys(e);if (Object.getOwnPropertySymbols) {
        var o = Object.getOwnPropertySymbols(e);r && (o = o.filter(function (r) {
          return Object.getOwnPropertyDescriptor(e, r).enumerable;
        })), t.push.apply(t, o);
      }return t;
    }
    function _objectSpread(e) {
      for (var r = 1; r < arguments.length; r++) {
        var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
          _defineProperty(e, r, t[r]);
        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
          Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
        });
      }return e;
    }
    function _defineProperty(e, r, t) {
      return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;
    }
    function _toPropertyKey(t) {
      var i = _toPrimitive(t, "string");return "symbol" == _typeof(i) ? i : i + "";
    }
    function _toPrimitive(t, r) {
      if ("object" != _typeof(t) || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {
        var i = e.call(t, r || "default");if ("object" != _typeof(i)) return i;throw new TypeError("@@toPrimitive must return a primitive value.");
      }return ("string" === r ? String : Number)(t);
    }
    function _objectWithoutProperties(e, t) {
      if (null == e) return {};var o,
          r,
          i = _objectWithoutPropertiesLoose(e, t);if (Object.getOwnPropertySymbols) {
        var s = Object.getOwnPropertySymbols(e);for (r = 0; r < s.length; r++) {
          o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
        }
      }return i;
    }
    function _objectWithoutPropertiesLoose(r, e) {
      if (null == r) return {};var t = {};for (var n in r) {
        if ({}.hasOwnProperty.call(r, n)) {
          if (e.includes(n)) continue;t[n] = r[n];
        }
      }return t;
    }
    var Context = /*#__PURE__*/_react.default.createContext({});
    Context.displayName = 'ClayProviderContext';
    var Provider = exports.Provider = function Provider(_ref) {
      var children = _ref.children,
          _ref$reducedMotion = _ref.reducedMotion,
          reducedMotion = _ref$reducedMotion === void 0 ? 'user' : _ref$reducedMotion,
          spritemap = _ref.spritemap,
          _ref$storageMaxSize = _ref.storageMaxSize,
          storageMaxSize = _ref$storageMaxSize === void 0 ? 20 : _ref$storageMaxSize,
          theme = _ref.theme,
          otherProps = _objectWithoutProperties(_ref, _excluded);
      // Use `useMemo` to instantiate the DataClient only once and when
      // updating the property.
      var client = (0, _react.useMemo)(function () {
        return new _DataClient.DataClient({
          storageMaxSize: storageMaxSize
        });
      }, [storageMaxSize]);
      var isReducedMotion = (0, _useReducedMotion.useReducedMotion)(reducedMotion);
      return (/*#__PURE__*/_react.default.createElement(Context.Provider, {
          value: _objectSpread({
            client: client,
            prefersReducedMotion: isReducedMotion,
            theme: theme
          }, otherProps)
        }, /*#__PURE__*/_react.default.createElement(_icon.ClayIconSpriteContext.Provider, {
          value: spritemap
        }, theme ? /*#__PURE__*/_react.default.createElement("div", {
          className: theme
        }, children) : children))
      );
    };
    var useProvider = exports.useProvider = function useProvider() {
      return (0, _react.useContext)(Context);
    };
  }
});
//# sourceMappingURL=Provider.js.map