/*! bxs-vue-ui v3.3.0 */
'use strict';

var normalizeComponent = require('./normalize-component.js');
var aFunction = require('./a-function.js');

var SPECIES = normalizeComponent.wellKnownSymbol('species');

// `SpeciesConstructor` abstract operation
// https://tc39.github.io/ecma262/#sec-speciesconstructor
var speciesConstructor = function (O, defaultConstructor) {
  var C = normalizeComponent.anObject(O).constructor;
  var S;
  return C === undefined || (S = normalizeComponent.anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction.aFunction(S);
};

exports.speciesConstructor = speciesConstructor;
