| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | import format from "./format.js";import { modifierPhases } from "../enums.js";var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s';var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available';var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];export default function validateModifiers(modifiers) {  modifiers.forEach(function (modifier) {    [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)`    .filter(function (value, index, self) {      return self.indexOf(value) === index;    }).forEach(function (key) {      switch (key) {        case 'name':          if (typeof modifier.name !== 'string') {            console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\""));          }          break;        case 'enabled':          if (typeof modifier.enabled !== 'boolean') {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\""));          }          break;        case 'phase':          if (modifierPhases.indexOf(modifier.phase) < 0) {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\""));          }          break;        case 'fn':          if (typeof modifier.fn !== 'function') {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\""));          }          break;        case 'effect':          if (modifier.effect != null && typeof modifier.effect !== 'function') {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\""));          }          break;        case 'requires':          if (modifier.requires != null && !Array.isArray(modifier.requires)) {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\""));          }          break;        case 'requiresIfExists':          if (!Array.isArray(modifier.requiresIfExists)) {            console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\""));          }          break;        case 'options':        case 'data':          break;        default:          console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) {            return "\"" + s + "\"";          }).join(', ') + "; but \"" + key + "\" was provided.");      }      modifier.requires && modifier.requires.forEach(function (requirement) {        if (modifiers.find(function (mod) {          return mod.name === requirement;        }) == null) {          console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));        }      });    });  });}
 |