"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = _default;

var _transformThemeValue = _interopRequireDefault(require("../util/transformThemeValue"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

let transformValue = (0, _transformThemeValue.default)('boxShadow');
let shadowReset = {
  '*': {
    '--tw-shadow': '0 0 #0000'
  }
};
let defaultBoxShadow = [`var(--tw-ring-offset-shadow, 0 0 #0000)`, `var(--tw-ring-shadow, 0 0 #0000)`, `var(--tw-shadow)`].join(', ');

function _default() {
  return function ({
    config,
    matchUtilities,
    addBase,
    addUtilities,
    theme,
    variants
  }) {
    if (config('mode') === 'jit') {
      addBase(shadowReset);
    } else {
      addUtilities(shadowReset, {
        respectImportant: false
      });
    }

    matchUtilities({
      shadow: value => {
        value = transformValue(value);
        return {
          '--tw-shadow': value === 'none' ? '0 0 #0000' : value,
          'box-shadow': defaultBoxShadow
        };
      }
    }, {
      values: theme('boxShadow'),
      variants: variants('boxShadow'),
      type: 'lookup'
    });
  };
}