"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.Banner = void 0;

var _components = require("@looker/components");

var _react = _interopRequireWildcard(require("react"));

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }

function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }

var LOCAL_STORAGE_KEY = 'api-40-ga-apix-banner';
var LOCAL_STORAGE_VALUE = 'dismissed';

var Banner = _ref => {
  var {
    adaptor,
    specs
  } = _ref;
  var [isOpen, setOpen] = (0, _react.useState)(false);
  (0, _react.useEffect)(onLoad, []);

  if (isOpen) {
    return _react.default.createElement(_components.MessageBar, {
      intent: "inform",
      onPrimaryClick: onClose,
      secondaryAction: _react.default.createElement(_components.Link, {
        href: "https://developers.looker.com/api/advanced-usage/version-4-ga",
        target: "_blank"
      }, _react.default.createElement(_components.ButtonOutline, {
        size: "small"
      }, "Announcement"))
    }, "API 4.0 moves from Beta to General Availability in Looker 22.4 with additions and possible breaking changes. Read the announcement to see how this affects you.");
  } else {
    return null;
  }

  function onLoad() {
    function innerOnLoad() {
      return _innerOnLoad.apply(this, arguments);
    }

    function _innerOnLoad() {
      _innerOnLoad = _asyncToGenerator(function* () {
        var is40Stable = specs['4.0'].status === 'stable' || specs['4.0'].status === 'current';
        var wasDismissed = (yield adaptor.localStorageGetItem(LOCAL_STORAGE_KEY)) === LOCAL_STORAGE_VALUE;
        setOpen(!is40Stable && !wasDismissed && adaptor.isExtension());
      });
      return _innerOnLoad.apply(this, arguments);
    }

    innerOnLoad();
  }

  function onClose() {
    adaptor.localStorageSetItem(LOCAL_STORAGE_KEY, LOCAL_STORAGE_VALUE);
    setOpen(false);
  }
};

exports.Banner = Banner;
//# sourceMappingURL=Banner.js.map