text: /*!
   * FilePondPluginImageCrop 2.0.3
   * Licensed under MIT, https://opensource.org/licenses/MIT/
   * Please visit https://pqina.nl/filepond/ for details.
   */
  
  /* eslint-disable */
  
  (function(global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined'
      ? (module.exports = factory())
      : typeof define === 'function' && define.amd
      ? define(factory)
      : ((global = global || self), (global.FilePondPluginImageCrop = factory()));
  })(this, function() {
    'use strict';
  
    var isImage = function isImage(file) {
      return /^image/.test(file.type);
    };
  
    /**
     * Image Auto Crop Plugin
     */
    var plugin = function plugin(_ref) {
      var addFilter = _ref.addFilter,
        utils = _ref.utils;
      var Type = utils.Type,
        isFile = utils.isFile,
        getNumericAspectRatioFromString = utils.getNumericAspectRatioFromString;
  
      // tests if crop is allowed on this item
      var allowCrop = function allowCrop(item, query) {
        return !(!isImage(item.file) || !query('GET_ALLOW_IMAGE_CROP'));
      };
  
      var isObject = function isObject(value) {
        return typeof value === 'object';
      };
  
      var isNumber = function isNumber(value) {
        return typeof value === 'number';
      };
  
      var updateCrop = function updateCrop(item, obj) {
        return item.setMetadata(
          'crop',
          Object.assign({}, item.getMetadata('crop'), obj)
        );
      };
  
      // extend item methods
      addFilter('DID_CREATE_ITEM', function(item, _ref2) {
        var query = _ref2.query;
  
        item.extend('setImageCrop', function(crop) {
          if (!allowCrop(item, query) || !isObject(center)) return;
          item.setMetadata('crop', crop);
          return crop;
        });
  
        item.extend('setImageCropCenter', function(center) {
          if (!allowCrop(item, query) || !isObject(center)) return;
          return updateCrop(item, { center: center });
        });
  
        item.extend('setImageCropZoom', function(zoom) {
          if (!allowCrop(item, query) || !isNumber(zoom)) return;
          return updateCrop(item, { zoom: Math.max(1, zoom) });
        });
  
        item.extend('setImageCropRotation', function(rotation) {
          if (!allowCrop(item, query) || !isNumber(rotation)) return;
          return updateCrop(item, { rotation: rotation });
        });
  
        item.extend('setImageCropFlip', function(flip) {
          if (!allowCrop(item, query) || !isObject(flip)) return;
          return updateCrop(item, { flip: flip });
        });
  
        item.extend('setImageCropAspectRatio', function(newAspectRatio) {
          if (!allowCrop(item, query) || typeof newAspectRatio === 'undefined')
            return;
  
          var currentCrop = item.getMetadata('crop');
  
          var aspectRatio = getNumericAspectRatioFromString(newAspectRatio);
  
          var newCrop = {
            center: {
              x: 0.5,
              y: 0.5
            },
  
            flip: currentCrop
              ? Object.assign({}, currentCrop.flip)
              : {
                  horizontal: false,
                  vertical: false
                },
  
            rotation: 0,
            zoom: 1,
            aspectRatio: aspectRatio
          };
  
          item.setMetadata('crop', newCrop);
  
          return newCrop;
        });
      });
  
      // subscribe to file transformations
      addFilter('DID_LOAD_ITEM', function(item, _ref3) {
        var query = _ref3.query;
        return new Promise(function(resolve, reject) {
          // get file reference
          var file = item.file;
  
          // if this is not an image we do not have any business cropping it and we'll continue with the unaltered dataset
          if (!isFile(file) || !isImage(file) || !query('GET_ALLOW_IMAGE_CROP')) {
            return resolve(item);
          }
  
          // already has crop metadata set?
          var crop = item.getMetadata('crop');
          if (crop) {
            return resolve(item);
          }
  
          // get the required aspect ratio and exit if it's not set
          var humanAspectRatio = query('GET_IMAGE_CROP_ASPECT_RATIO');
  
          // set default crop rectangle
          item.setMetadata('crop', {
            center: {
              x: 0.5,
              y: 0.5
            },
  
            flip: {
              horizontal: false,
              vertical: false
            },
  
            rotation: 0,
            zoom: 1,
            aspectRatio: humanAspectRatio
              ? getNumericAspectRatioFromString(humanAspectRatio)
              : null
          });
  
          // we done!
          resolve(item);
        });
      });
  
      // Expose plugin options
      return {
        options: {
          // enable or disable image cropping
          allowImageCrop: [true, Type.BOOLEAN],
  
          // the aspect ratio of the crop ('1:1', '16:9', etc)
          imageCropAspectRatio: [null, Type.STRING]
        }
      };
    };
  
    // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags
    var isBrowser =
      typeof window !== 'undefined' && typeof window.document !== 'undefined';
    if (isBrowser) {
      document.dispatchEvent(
        new CustomEvent('FilePond:pluginloaded', { detail: plugin })
      );
    }
  
    return plugin;
  });