{"version":3,"file":"component---src-templates-form-minor-topic-js-049cbfd30f1de3077296.js","mappings":"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S,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,kBACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,KAAQ,YACR,KAAQ,YACR,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,KAAQ,YACR,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","sources":["webpack://morrisons-help/./node_modules/@transloadit/prettier-bytes/prettierBytes.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/AuthError.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/Provider.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/RequestClient.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/SearchProvider.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/Socket.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/companion-client/lib/tokenStorage.js","webpack://morrisons-help/./node_modules/@uppy/core/lib/Plugin.js","webpack://morrisons-help/./node_modules/@uppy/core/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/core/lib/loggers.js","webpack://morrisons-help/./node_modules/@uppy/core/lib/supportsUploadProgress.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/AddFiles.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/Dashboard.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/EditorPanel.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileCard/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileItem/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FileList.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/FilePreview.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/Slide.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/components/VirtualList.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js","webpack://morrisons-help/./node_modules/@uppy/dashboard/lib/utils/trapFocus.js","webpack://morrisons-help/./node_modules/@uppy/drag-drop/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/file-input/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/informer/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/progress-bar/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/Dashboard.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/DashboardModal.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/DragDrop.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/FileInput.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/ProgressBar.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/StatusBar.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/getHTMLProps.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/propTypes.js","webpack://morrisons-help/./node_modules/@uppy/react/lib/useUppy.js","webpack://morrisons-help/./node_modules/@uppy/status-bar/lib/StatusBar.js","webpack://morrisons-help/./node_modules/@uppy/status-bar/lib/StatusBarStates.js","webpack://morrisons-help/./node_modules/@uppy/status-bar/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/store-default/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/thumbnail-generator/lib/index.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/EventTracker.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/NetworkError.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/ProgressTimeout.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/RateLimitedQueue.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/Translator.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/dataURItoBlob.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/emitSocketProgress.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/fetchWithNetworkError.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/findAllDOMElements.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/findDOMElement.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/findIndex.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/generateFileID.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getBytesRemaining.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getDroppedFiles/index.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getRelativePath.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getFileNameAndExtension.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getFileType.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getSocketHost.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getSpeed.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getTextDirection.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/getTimeStamp.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/hasProperty.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/isDOMElement.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/isDragDropSupported.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/isNetworkError.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/isObjectURL.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/isPreviewSupported.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/mimeTypes.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/prettyETA.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/secondsToTime.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/settle.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/toArray.js","webpack://morrisons-help/./node_modules/@uppy/utils/lib/truncateString.js","webpack://morrisons-help/./node_modules/@uppy/xhr-upload/lib/index.js","webpack://morrisons-help/./node_modules/cuid/index.js","webpack://morrisons-help/./node_modules/cuid/lib/fingerprint.browser.js","webpack://morrisons-help/./node_modules/cuid/lib/getRandomValue.browser.js","webpack://morrisons-help/./node_modules/cuid/lib/pad.js","webpack://morrisons-help/./node_modules/exifr/dist/mini.legacy.umd.js","webpack://morrisons-help/./node_modules/is-shallow-equal/index.js","webpack://morrisons-help/./node_modules/lodash.debounce/index.js","webpack://morrisons-help/./node_modules/lodash.throttle/index.js","webpack://morrisons-help/./node_modules/math-log2/index.js","webpack://morrisons-help/./node_modules/mime-match/index.js","webpack://morrisons-help/./node_modules/namespace-emitter/index.js","webpack://morrisons-help/./node_modules/preact/dist/preact.esm.js","webpack://morrisons-help/./node_modules/qs-stringify/index.js","webpack://morrisons-help/./node_modules/querystringify/index.js","webpack://morrisons-help/./node_modules/requires-port/index.js","webpack://morrisons-help/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://morrisons-help/./node_modules/url-parse/index.js","webpack://morrisons-help/./node_modules/wildcard/index.js","webpack://morrisons-help/./node_modules/core-js/internals/create-property.js","webpack://morrisons-help/./node_modules/core-js/internals/string-trim-forced.js","webpack://morrisons-help/./node_modules/core-js/internals/string-trim-start.js","webpack://morrisons-help/./node_modules/core-js/internals/string-trim.js","webpack://morrisons-help/./node_modules/core-js/internals/whitespaces.js","webpack://morrisons-help/./node_modules/core-js/modules/es.global-this.js","webpack://morrisons-help/./node_modules/core-js/modules/es.object.from-entries.js","webpack://morrisons-help/./node_modules/core-js/modules/es.string.trim-left.js","webpack://morrisons-help/./node_modules/core-js/modules/es.string.trim-start.js","webpack://morrisons-help/./node_modules/core-js/modules/esnext.global-this.js","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Form/index.jsx","webpack://morrisons-help/./src/components/Layout.jsx","webpack://morrisons-help/./src/components/Note.jsx","webpack://morrisons-help/./src/components/ContactForm/TopicNote.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ProductName.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ProductBarCode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ProductBatchCode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CustomerEmail.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CustomerLastName.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CustomerFirstName.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CustomerTelephone.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/MoreCardNumber.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressTown.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressPostcode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressFirstLine.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressSecondLine.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressTownPrevious.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressPostcodePrevious.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressFirstLinePrevious.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/AddressSecondLinePrevious.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/Message.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/MessageAndAddress.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/StoreFinder.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/GardeningLeisureProducts.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/Date.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DateTime.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DateBestBefore.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DateOfIssue.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DateOfDelivery.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/SupportingFiles.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/SubmitButton.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/RegionSelect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/OptionGroup.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/OptionGroupRedirect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/Confirmation.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CarParkingCompanySelect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CarParkingChargeRefNo.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CarRegistration.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/BoxOrderId.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ExternalOrderId.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/BoxSelect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ProductDetails.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ProductDetailsFoodBoxes.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/ScanShopSelect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/StaffName.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/CafeMealPurchased.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DynamicValuesCaseCategory.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DynamicValuesCaseType.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DynamicValuesCaseReason.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DynamicValuesDetailedReason.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/DynamicValuesSubject.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/SupportingFilesRequired.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/VoucherCode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Input/StaffDescription.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Groups/Customer.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Groups/Address.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/utils/Groups/Confirmations.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductInstoreOnlineRedirect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductForeignBodyForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductFoodOutOfDateForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductIllnessForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/StoresIncidentDamageForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithFoodBoxOrderID.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithEatFreshOrderID.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithScanAndShopReason.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithOrderID.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithOrderIDAndDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithImagesOrderID.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithBestBeforeDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithStore.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithStoreAndDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithDateButNoStore.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithStoreAndOnlineRedirect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/QuestionsYesNo.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithYesNo.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/QuestionsGoodToGrow.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryGoodToGrow.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/QuestionsChristmasSavers.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquirySaversYesNo.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryChristmasYesNo.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryChristmasYesNoStoreOnline.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryChristmasYesNoStartCollecting.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryFormWithReceipt.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithPreviousAddress.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductComplaintForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductRefundForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductAllegedAllergenForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductEnquiryWithBarcode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingEnquiryForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/Questions.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingWithProducts.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductOnlineInstoreRedirect.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingOutOfDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingSubstitute.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingMissingItem.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingWithProductsWithImages.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingWithProductsWithReceipt.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingWithSubstitutions.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/OnlineShoppingWithProductsOrderIDAndDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/PromotionPointsNotEarnedForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/CarParkingForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/BlankForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/FoodBoxGeneralEnquiry.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithFoodBox.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/EatFreshGeneralEnquiry.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/EatFreshWrongBoxEnquiry.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GardenInstructionsAndPartsForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ElectricalInstructionsAndPartsForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicEnquiryWithStore.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicEnquiryWithStoreAndDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicCafeEnquiryWithDateAndReceipt.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicOnlineShoppingEnquiryForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicOnlineShoppingEnquiryComplaintForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/DynamicOnlineShoppingWithDatesForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/CafeEnquiryWithDate.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/CafeEnquiryWithDateAndReceipt.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/PetrolEnquiryWithDateAndReceipt.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/TrolleywiseForm.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithMorrisonsDaily.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/ProductComplaintWithMorrisonsDaily.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithDateAndMorrisonsDaily.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily.jsx","webpack://morrisons-help/./src/components/ContactForm/forms/GeneralEnquiryJustStores.jsx","webpack://morrisons-help/./src/components/ContactForm/getFormComponent.js","webpack://morrisons-help/./src/config/fieldMapping.js","webpack://morrisons-help/./src/components/ContactForm/franchiseStoreList.js","webpack://morrisons-help/./node_modules/react-google-recaptcha/lib/esm/recaptcha.js","webpack://morrisons-help/./node_modules/react-async-script/lib/esm/async-script-loader.js","webpack://morrisons-help/./node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","webpack://morrisons-help/./node_modules/react-google-recaptcha/lib/esm/index.js","webpack://morrisons-help/./src/components/ContactForm/FormSection.jsx","webpack://morrisons-help/./src/templates/form/minorTopic.js","webpack://morrisons-help/./src/core/useRelatedFaqs.js","webpack://morrisons-help/./src/assets/icons/arrow_forward_24.svg","webpack://morrisons-help/./src/assets/icons/restart.svg"],"sourcesContent":["// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nmodule.exports = function prettierBytes(num) {\n  if (typeof num !== 'number' || isNaN(num)) {\n    throw new TypeError('Expected a number, got ' + typeof num);\n  }\n  var neg = num < 0;\n  var units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n  if (neg) {\n    num = -num;\n  }\n  if (num < 1) {\n    return (neg ? '-' : '') + num + ' B';\n  }\n  var exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1);\n  num = Number(num / Math.pow(1024, exponent));\n  var unit = units[exponent];\n  if (num >= 10 || num % 1 === 0) {\n    // Do not show decimals when the number is two-digit, or if the number has no\n    // decimal component.\n    return (neg ? '-' : '') + num.toFixed(0) + ' ' + unit;\n  } else {\n    return (neg ? '-' : '') + num.toFixed(1) + ' ' + unit;\n  }\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n      _cache.set(Class, Wrapper);\n    }\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n  return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n  return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\nvar AuthError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(AuthError, _Error);\n  function AuthError() {\n    var _this;\n    _this = _Error.call(this, 'Authorization required') || this;\n    _this.name = 'AuthError';\n    _this.isAuthError = true;\n    return _this;\n  }\n  return AuthError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nmodule.exports = AuthError;","'use strict';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar qsStringify = require('qs-stringify');\nvar URL = require('url-parse');\nvar RequestClient = require('./RequestClient');\nvar tokenStorage = require('./tokenStorage');\nvar _getName = function _getName(id) {\n  return id.split('-').map(function (s) {\n    return s.charAt(0).toUpperCase() + s.slice(1);\n  }).join(' ');\n};\nmodule.exports = /*#__PURE__*/function (_RequestClient) {\n  _inheritsLoose(Provider, _RequestClient);\n  function Provider(uppy, opts) {\n    var _this;\n    _this = _RequestClient.call(this, uppy, opts) || this;\n    _this.provider = opts.provider;\n    _this.id = _this.provider;\n    _this.name = _this.opts.name || _getName(_this.id);\n    _this.pluginId = _this.opts.pluginId;\n    _this.tokenKey = \"companion-\" + _this.pluginId + \"-auth-token\";\n    _this.companionKeysParams = _this.opts.companionKeysParams;\n    _this.preAuthToken = null;\n    return _this;\n  }\n  var _proto = Provider.prototype;\n  _proto.headers = function headers() {\n    var _this2 = this;\n    return Promise.all([_RequestClient.prototype.headers.call(this), this.getAuthToken()]).then(function (_ref) {\n      var headers = _ref[0],\n        token = _ref[1];\n      var authHeaders = {};\n      if (token) {\n        authHeaders['uppy-auth-token'] = token;\n      }\n      if (_this2.companionKeysParams) {\n        authHeaders['uppy-credentials-params'] = btoa(JSON.stringify({\n          params: _this2.companionKeysParams\n        }));\n      }\n      return _extends({}, headers, authHeaders);\n    });\n  };\n  _proto.onReceiveResponse = function onReceiveResponse(response) {\n    response = _RequestClient.prototype.onReceiveResponse.call(this, response);\n    var plugin = this.uppy.getPlugin(this.pluginId);\n    var oldAuthenticated = plugin.getPluginState().authenticated;\n    var authenticated = oldAuthenticated ? response.status !== 401 : response.status < 400;\n    plugin.setPluginState({\n      authenticated: authenticated\n    });\n    return response;\n  } // @todo(i.olarewaju) consider whether or not this method should be exposed\n  ;\n\n  _proto.setAuthToken = function setAuthToken(token) {\n    return this.uppy.getPlugin(this.pluginId).storage.setItem(this.tokenKey, token);\n  };\n  _proto.getAuthToken = function getAuthToken() {\n    return this.uppy.getPlugin(this.pluginId).storage.getItem(this.tokenKey);\n  };\n  _proto.authUrl = function authUrl(queries) {\n    if (queries === void 0) {\n      queries = {};\n    }\n    if (this.preAuthToken) {\n      queries.uppyPreAuthToken = this.preAuthToken;\n    }\n    var strigifiedQueries = qsStringify(queries);\n    strigifiedQueries = strigifiedQueries ? \"?\" + strigifiedQueries : strigifiedQueries;\n    return this.hostname + \"/\" + this.id + \"/connect\" + strigifiedQueries;\n  };\n  _proto.fileUrl = function fileUrl(id) {\n    return this.hostname + \"/\" + this.id + \"/get/\" + id;\n  };\n  _proto.fetchPreAuthToken = function fetchPreAuthToken() {\n    var _this3 = this;\n    if (!this.companionKeysParams) {\n      return Promise.resolve();\n    }\n    return this.post(this.id + \"/preauth/\", {\n      params: this.companionKeysParams\n    }).then(function (res) {\n      _this3.preAuthToken = res.token;\n    }).catch(function (err) {\n      _this3.uppy.log(\"[CompanionClient] unable to fetch preAuthToken \" + err, 'warning');\n    });\n  };\n  _proto.list = function list(directory) {\n    return this.get(this.id + \"/list/\" + (directory || ''));\n  };\n  _proto.logout = function logout() {\n    var _this4 = this;\n    return this.get(this.id + \"/logout\").then(function (response) {\n      return Promise.all([response, _this4.uppy.getPlugin(_this4.pluginId).storage.removeItem(_this4.tokenKey)]);\n    }).then(function (_ref2) {\n      var response = _ref2[0];\n      return response;\n    });\n  };\n  Provider.initPlugin = function initPlugin(plugin, opts, defaultOpts) {\n    plugin.type = 'acquirer';\n    plugin.files = [];\n    if (defaultOpts) {\n      plugin.opts = _extends({}, defaultOpts, opts);\n    }\n    if (opts.serverUrl || opts.serverPattern) {\n      throw new Error('`serverUrl` and `serverPattern` have been renamed to `companionUrl` and `companionAllowedHosts` respectively in the 0.30.5 release. Please consult the docs (for example, https://uppy.io/docs/instagram/ for the Instagram plugin) and use the updated options.`');\n    }\n    if (opts.companionAllowedHosts) {\n      var pattern = opts.companionAllowedHosts; // validate companionAllowedHosts param\n\n      if (typeof pattern !== 'string' && !Array.isArray(pattern) && !(pattern instanceof RegExp)) {\n        throw new TypeError(plugin.id + \": the option \\\"companionAllowedHosts\\\" must be one of string, Array, RegExp\");\n      }\n      plugin.opts.companionAllowedHosts = pattern;\n    } else {\n      // does not start with https://\n      if (/^(?!https?:\\/\\/).*$/i.test(opts.companionUrl)) {\n        plugin.opts.companionAllowedHosts = \"https://\" + opts.companionUrl.replace(/^\\/\\//, '');\n      } else {\n        plugin.opts.companionAllowedHosts = new URL(opts.companionUrl).origin;\n      }\n    }\n    plugin.storage = plugin.opts.storage || tokenStorage;\n  };\n  return Provider;\n}(RequestClient);","'use strict';\n\nvar _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\nvar AuthError = require('./AuthError');\nvar fetchWithNetworkError = require('@uppy/utils/lib/fetchWithNetworkError'); // Remove the trailing slash so we can always safely append /xyz.\n\nfunction stripSlash(url) {\n  return url.replace(/\\/$/, '');\n}\nmodule.exports = (_temp = _class = /*#__PURE__*/function () {\n  function RequestClient(uppy, opts) {\n    this.uppy = uppy;\n    this.opts = opts;\n    this.onReceiveResponse = this.onReceiveResponse.bind(this);\n    this.allowedHeaders = ['accept', 'content-type', 'uppy-auth-token'];\n    this.preflightDone = false;\n  }\n  var _proto = RequestClient.prototype;\n  _proto.headers = function headers() {\n    var userHeaders = this.opts.companionHeaders || this.opts.serverHeaders || {};\n    return Promise.resolve(_extends({}, this.defaultHeaders, userHeaders));\n  };\n  _proto._getPostResponseFunc = function _getPostResponseFunc(skip) {\n    var _this = this;\n    return function (response) {\n      if (!skip) {\n        return _this.onReceiveResponse(response);\n      }\n      return response;\n    };\n  };\n  _proto.onReceiveResponse = function onReceiveResponse(response) {\n    var state = this.uppy.getState();\n    var companion = state.companion || {};\n    var host = this.opts.companionUrl;\n    var headers = response.headers; // Store the self-identified domain name for the Companion instance we just hit.\n\n    if (headers.has('i-am') && headers.get('i-am') !== companion[host]) {\n      var _extends2;\n      this.uppy.setState({\n        companion: _extends({}, companion, (_extends2 = {}, _extends2[host] = headers.get('i-am'), _extends2))\n      });\n    }\n    return response;\n  };\n  _proto._getUrl = function _getUrl(url) {\n    if (/^(https?:|)\\/\\//.test(url)) {\n      return url;\n    }\n    return this.hostname + \"/\" + url;\n  };\n  _proto._json = function _json(res) {\n    if (res.status === 401) {\n      throw new AuthError();\n    }\n    if (res.status < 200 || res.status > 300) {\n      var errMsg = \"Failed request with status: \" + res.status + \". \" + res.statusText;\n      return res.json().then(function (errData) {\n        errMsg = errData.message ? errMsg + \" message: \" + errData.message : errMsg;\n        errMsg = errData.requestId ? errMsg + \" request-Id: \" + errData.requestId : errMsg;\n        throw new Error(errMsg);\n      }).catch(function () {\n        throw new Error(errMsg);\n      });\n    }\n    return res.json();\n  };\n  _proto.preflight = function preflight(path) {\n    var _this2 = this;\n    if (this.preflightDone) {\n      return Promise.resolve(this.allowedHeaders.slice());\n    }\n    return fetch(this._getUrl(path), {\n      method: 'OPTIONS'\n    }).then(function (response) {\n      if (response.headers.has('access-control-allow-headers')) {\n        _this2.allowedHeaders = response.headers.get('access-control-allow-headers').split(',').map(function (headerName) {\n          return headerName.trim().toLowerCase();\n        });\n      }\n      _this2.preflightDone = true;\n      return _this2.allowedHeaders.slice();\n    }).catch(function (err) {\n      _this2.uppy.log(\"[CompanionClient] unable to make preflight request \" + err, 'warning');\n      _this2.preflightDone = true;\n      return _this2.allowedHeaders.slice();\n    });\n  };\n  _proto.preflightAndHeaders = function preflightAndHeaders(path) {\n    var _this3 = this;\n    return Promise.all([this.preflight(path), this.headers()]).then(function (_ref) {\n      var allowedHeaders = _ref[0],\n        headers = _ref[1];\n      // filter to keep only allowed Headers\n      Object.keys(headers).forEach(function (header) {\n        if (allowedHeaders.indexOf(header.toLowerCase()) === -1) {\n          _this3.uppy.log(\"[CompanionClient] excluding unallowed header \" + header);\n          delete headers[header];\n        }\n      });\n      return headers;\n    });\n  };\n  _proto.get = function get(path, skipPostResponse) {\n    var _this4 = this;\n    return this.preflightAndHeaders(path).then(function (headers) {\n      return fetchWithNetworkError(_this4._getUrl(path), {\n        method: 'get',\n        headers: headers,\n        credentials: _this4.opts.companionCookiesRule || 'same-origin'\n      });\n    }).then(this._getPostResponseFunc(skipPostResponse)).then(function (res) {\n      return _this4._json(res);\n    }).catch(function (err) {\n      if (!err.isAuthError) {\n        err.message = \"Could not get \" + _this4._getUrl(path) + \". \" + err.message;\n      }\n      return Promise.reject(err);\n    });\n  };\n  _proto.post = function post(path, data, skipPostResponse) {\n    var _this5 = this;\n    return this.preflightAndHeaders(path).then(function (headers) {\n      return fetchWithNetworkError(_this5._getUrl(path), {\n        method: 'post',\n        headers: headers,\n        credentials: _this5.opts.companionCookiesRule || 'same-origin',\n        body: JSON.stringify(data)\n      });\n    }).then(this._getPostResponseFunc(skipPostResponse)).then(function (res) {\n      return _this5._json(res);\n    }).catch(function (err) {\n      if (!err.isAuthError) {\n        err.message = \"Could not post \" + _this5._getUrl(path) + \". \" + err.message;\n      }\n      return Promise.reject(err);\n    });\n  };\n  _proto.delete = function _delete(path, data, skipPostResponse) {\n    var _this6 = this;\n    return this.preflightAndHeaders(path).then(function (headers) {\n      return fetchWithNetworkError(_this6.hostname + \"/\" + path, {\n        method: 'delete',\n        headers: headers,\n        credentials: _this6.opts.companionCookiesRule || 'same-origin',\n        body: data ? JSON.stringify(data) : null\n      });\n    }).then(this._getPostResponseFunc(skipPostResponse)).then(function (res) {\n      return _this6._json(res);\n    }).catch(function (err) {\n      if (!err.isAuthError) {\n        err.message = \"Could not delete \" + _this6._getUrl(path) + \". \" + err.message;\n      }\n      return Promise.reject(err);\n    });\n  };\n  _createClass(RequestClient, [{\n    key: \"hostname\",\n    get: function get() {\n      var _this$uppy$getState = this.uppy.getState(),\n        companion = _this$uppy$getState.companion;\n      var host = this.opts.companionUrl;\n      return stripSlash(companion && companion[host] ? companion[host] : host);\n    }\n  }, {\n    key: \"defaultHeaders\",\n    get: function get() {\n      return {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Uppy-Versions': \"@uppy/companion-client=\" + RequestClient.VERSION\n      };\n    }\n  }]);\n  return RequestClient;\n}(), _class.VERSION = \"1.10.2\", _temp);","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar RequestClient = require('./RequestClient');\nvar _getName = function _getName(id) {\n  return id.split('-').map(function (s) {\n    return s.charAt(0).toUpperCase() + s.slice(1);\n  }).join(' ');\n};\nmodule.exports = /*#__PURE__*/function (_RequestClient) {\n  _inheritsLoose(SearchProvider, _RequestClient);\n  function SearchProvider(uppy, opts) {\n    var _this;\n    _this = _RequestClient.call(this, uppy, opts) || this;\n    _this.provider = opts.provider;\n    _this.id = _this.provider;\n    _this.name = _this.opts.name || _getName(_this.id);\n    _this.pluginId = _this.opts.pluginId;\n    return _this;\n  }\n  var _proto = SearchProvider.prototype;\n  _proto.fileUrl = function fileUrl(id) {\n    return this.hostname + \"/search/\" + this.id + \"/get/\" + id;\n  };\n  _proto.search = function search(text, queries) {\n    queries = queries ? \"&\" + queries : '';\n    return this.get(\"search/\" + this.id + \"/list?q=\" + encodeURIComponent(text) + queries);\n  };\n  return SearchProvider;\n}(RequestClient);","var ee = require('namespace-emitter');\nmodule.exports = /*#__PURE__*/function () {\n  function UppySocket(opts) {\n    this.opts = opts;\n    this._queued = [];\n    this.isOpen = false;\n    this.emitter = ee();\n    this._handleMessage = this._handleMessage.bind(this);\n    this.close = this.close.bind(this);\n    this.emit = this.emit.bind(this);\n    this.on = this.on.bind(this);\n    this.once = this.once.bind(this);\n    this.send = this.send.bind(this);\n    if (!opts || opts.autoOpen !== false) {\n      this.open();\n    }\n  }\n  var _proto = UppySocket.prototype;\n  _proto.open = function open() {\n    var _this = this;\n    this.socket = new WebSocket(this.opts.target);\n    this.socket.onopen = function (e) {\n      _this.isOpen = true;\n      while (_this._queued.length > 0 && _this.isOpen) {\n        var first = _this._queued[0];\n        _this.send(first.action, first.payload);\n        _this._queued = _this._queued.slice(1);\n      }\n    };\n    this.socket.onclose = function (e) {\n      _this.isOpen = false;\n    };\n    this.socket.onmessage = this._handleMessage;\n  };\n  _proto.close = function close() {\n    if (this.socket) {\n      this.socket.close();\n    }\n  };\n  _proto.send = function send(action, payload) {\n    // attach uuid\n    if (!this.isOpen) {\n      this._queued.push({\n        action: action,\n        payload: payload\n      });\n      return;\n    }\n    this.socket.send(JSON.stringify({\n      action: action,\n      payload: payload\n    }));\n  };\n  _proto.on = function on(action, handler) {\n    this.emitter.on(action, handler);\n  };\n  _proto.emit = function emit(action, payload) {\n    this.emitter.emit(action, payload);\n  };\n  _proto.once = function once(action, handler) {\n    this.emitter.once(action, handler);\n  };\n  _proto._handleMessage = function _handleMessage(e) {\n    try {\n      var message = JSON.parse(e.data);\n      this.emit(message.action, message.payload);\n    } catch (err) {\n      console.log(err);\n    }\n  };\n  return UppySocket;\n}();","'use strict';\n\n/**\n * Manages communications with Companion\n */\nvar RequestClient = require('./RequestClient');\nvar Provider = require('./Provider');\nvar SearchProvider = require('./SearchProvider');\nvar Socket = require('./Socket');\nmodule.exports = {\n  RequestClient: RequestClient,\n  Provider: Provider,\n  SearchProvider: SearchProvider,\n  Socket: Socket\n};","'use strict';\n\n/**\n * This module serves as an Async wrapper for LocalStorage\n */\nmodule.exports.setItem = function (key, value) {\n  return new Promise(function (resolve) {\n    localStorage.setItem(key, value);\n    resolve();\n  });\n};\nmodule.exports.getItem = function (key) {\n  return Promise.resolve(localStorage.getItem(key));\n};\nmodule.exports.removeItem = function (key) {\n  return new Promise(function (resolve) {\n    localStorage.removeItem(key);\n    resolve();\n  });\n};","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar preact = require('preact');\nvar findDOMElement = require('@uppy/utils/lib/findDOMElement');\n/**\n * Defer a frequent call to the microtask queue.\n */\n\nfunction debounce(fn) {\n  var calling = null;\n  var latestArgs = null;\n  return function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    latestArgs = args;\n    if (!calling) {\n      calling = Promise.resolve().then(function () {\n        calling = null; // At this point `args` may be different from the most\n        // recent state, if multiple calls happened since this task\n        // was queued. So we use the `latestArgs`, which definitely\n        // is the most recent call.\n\n        return fn.apply(void 0, latestArgs);\n      });\n    }\n    return calling;\n  };\n}\n/**\n * Boilerplate that all Plugins share - and should not be used\n * directly. It also shows which methods final plugins should implement/override,\n * this deciding on structure.\n *\n * @param {object} main Uppy core object\n * @param {object} object with plugin options\n * @returns {Array|string} files or success/fail message\n */\n\nmodule.exports = /*#__PURE__*/function () {\n  function Plugin(uppy, opts) {\n    this.uppy = uppy;\n    this.opts = opts || {};\n    this.update = this.update.bind(this);\n    this.mount = this.mount.bind(this);\n    this.install = this.install.bind(this);\n    this.uninstall = this.uninstall.bind(this);\n  }\n  var _proto = Plugin.prototype;\n  _proto.getPluginState = function getPluginState() {\n    var _this$uppy$getState = this.uppy.getState(),\n      plugins = _this$uppy$getState.plugins;\n    return plugins[this.id] || {};\n  };\n  _proto.setPluginState = function setPluginState(update) {\n    var _extends2;\n    var _this$uppy$getState2 = this.uppy.getState(),\n      plugins = _this$uppy$getState2.plugins;\n    this.uppy.setState({\n      plugins: _extends({}, plugins, (_extends2 = {}, _extends2[this.id] = _extends({}, plugins[this.id], update), _extends2))\n    });\n  };\n  _proto.setOptions = function setOptions(newOpts) {\n    this.opts = _extends({}, this.opts, newOpts);\n    this.setPluginState(); // so that UI re-renders with new options\n  };\n\n  _proto.update = function update(state) {\n    if (typeof this.el === 'undefined') {\n      return;\n    }\n    if (this._updateUI) {\n      this._updateUI(state);\n    }\n  } // Called after every state update, after everything's mounted. Debounced.\n  ;\n\n  _proto.afterUpdate = function afterUpdate() {}\n  /**\n   * Called when plugin is mounted, whether in DOM or into another plugin.\n   * Needed because sometimes plugins are mounted separately/after `install`,\n   * so this.el and this.parent might not be available in `install`.\n   * This is the case with @uppy/react plugins, for example.\n   */;\n\n  _proto.onMount = function onMount() {}\n  /**\n   * Check if supplied `target` is a DOM element or an `object`.\n   * If it’s an object — target is a plugin, and we search `plugins`\n   * for a plugin with same name and return its target.\n   *\n   * @param {string|object} target\n   *\n   */;\n\n  _proto.mount = function mount(target, plugin) {\n    var _this = this;\n    var callerPluginName = plugin.id;\n    var targetElement = findDOMElement(target);\n    if (targetElement) {\n      this.isTargetDOMEl = true; // API for plugins that require a synchronous rerender.\n\n      this.rerender = function (state) {\n        // plugin could be removed, but this.rerender is debounced below,\n        // so it could still be called even after uppy.removePlugin or uppy.close\n        // hence the check\n        if (!_this.uppy.getPlugin(_this.id)) return;\n        _this.el = preact.render(_this.render(state), targetElement, _this.el);\n        _this.afterUpdate();\n      };\n      this._updateUI = debounce(this.rerender);\n      this.uppy.log(\"Installing \" + callerPluginName + \" to a DOM element '\" + target + \"'\"); // clear everything inside the target container\n\n      if (this.opts.replaceTargetContent) {\n        targetElement.innerHTML = '';\n      }\n      this.el = preact.render(this.render(this.uppy.getState()), targetElement);\n      this.onMount();\n      return this.el;\n    }\n    var targetPlugin;\n    if (typeof target === 'object' && target instanceof Plugin) {\n      // Targeting a plugin *instance*\n      targetPlugin = target;\n    } else if (typeof target === 'function') {\n      // Targeting a plugin type\n      var Target = target; // Find the target plugin instance.\n\n      this.uppy.iteratePlugins(function (plugin) {\n        if (plugin instanceof Target) {\n          targetPlugin = plugin;\n          return false;\n        }\n      });\n    }\n    if (targetPlugin) {\n      this.uppy.log(\"Installing \" + callerPluginName + \" to \" + targetPlugin.id);\n      this.parent = targetPlugin;\n      this.el = targetPlugin.addTarget(plugin);\n      this.onMount();\n      return this.el;\n    }\n    this.uppy.log(\"Not installing \" + callerPluginName);\n    var message = \"Invalid target option given to \" + callerPluginName + \".\";\n    if (typeof target === 'function') {\n      message += ' The given target is not a Plugin class. ' + 'Please check that you\\'re not specifying a React Component instead of a plugin. ' + 'If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: ' + 'run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.';\n    } else {\n      message += 'If you meant to target an HTML element, please make sure that the element exists. ' + 'Check that the <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' + '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' + 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n    }\n    throw new Error(message);\n  };\n  _proto.render = function render(state) {\n    throw new Error('Extend the render method to add your plugin to a DOM element');\n  };\n  _proto.addTarget = function addTarget(plugin) {\n    throw new Error('Extend the addTarget method to add your plugin to another plugin\\'s target');\n  };\n  _proto.unmount = function unmount() {\n    if (this.isTargetDOMEl && this.el && this.el.parentNode) {\n      this.el.parentNode.removeChild(this.el);\n    }\n  };\n  _proto.install = function install() {};\n  _proto.uninstall = function uninstall() {\n    this.unmount();\n  };\n  return Plugin;\n}();","require(\"core-js/modules/esnext.aggregate-error.js\");\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n      _cache.set(Class, Wrapper);\n    }\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n  return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n  return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\n/* global AggregateError */\nvar Translator = require('@uppy/utils/lib/Translator');\nvar ee = require('namespace-emitter');\nvar cuid = require('cuid');\nvar throttle = require('lodash.throttle');\nvar prettierBytes = require('@transloadit/prettier-bytes');\nvar match = require('mime-match');\nvar DefaultStore = require('@uppy/store-default');\nvar getFileType = require('@uppy/utils/lib/getFileType');\nvar getFileNameAndExtension = require('@uppy/utils/lib/getFileNameAndExtension');\nvar generateFileID = require('@uppy/utils/lib/generateFileID');\nvar findIndex = require('@uppy/utils/lib/findIndex');\nvar supportsUploadProgress = require('./supportsUploadProgress');\nvar _require = require('./loggers'),\n  justErrorsLogger = _require.justErrorsLogger,\n  debugLogger = _require.debugLogger;\nvar Plugin = require('./Plugin'); // Exported from here.\n\nvar RestrictionError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(RestrictionError, _Error);\n  function RestrictionError() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _Error.call.apply(_Error, [this].concat(args)) || this;\n    _this.isRestriction = true;\n    return _this;\n  }\n  return RestrictionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nif (typeof AggregateError === 'undefined') {\n  // eslint-disable-next-line no-global-assign\n  AggregateError = /*#__PURE__*/function (_Error2) {\n    _inheritsLoose(AggregateError, _Error2);\n    function AggregateError(message, errors) {\n      var _this2;\n      _this2 = _Error2.call(this, message) || this;\n      _this2.errors = errors;\n      return _this2;\n    }\n    return AggregateError;\n  }( /*#__PURE__*/_wrapNativeSuper(Error));\n}\nvar AggregateRestrictionError = /*#__PURE__*/function (_AggregateError) {\n  _inheritsLoose(AggregateRestrictionError, _AggregateError);\n  function AggregateRestrictionError() {\n    var _this3;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    _this3 = _AggregateError.call.apply(_AggregateError, [this].concat(args)) || this;\n    _this3.isRestriction = true;\n    return _this3;\n  }\n  return AggregateRestrictionError;\n}(AggregateError);\n/**\n * Uppy Core module.\n * Manages plugins, state updates, acts as an event bus,\n * adds/removes files and metadata.\n */\n\nvar Uppy = /*#__PURE__*/function () {\n  // eslint-disable-next-line global-require\n\n  /**\n   * Instantiate Uppy\n   *\n   * @param {object} opts — Uppy options\n   */\n  function Uppy(opts) {\n    var _this4 = this;\n    this.defaultLocale = {\n      strings: {\n        addBulkFilesFailed: {\n          0: 'Failed to add %{smart_count} file due to an internal error',\n          1: 'Failed to add %{smart_count} files due to internal errors'\n        },\n        youCanOnlyUploadX: {\n          0: 'You can only upload %{smart_count} file',\n          1: 'You can only upload %{smart_count} files'\n        },\n        youHaveToAtLeastSelectX: {\n          0: 'You have to select at least %{smart_count} file',\n          1: 'You have to select at least %{smart_count} files'\n        },\n        missingRequiredMetaField: 'Missing required meta fields',\n        missingRequiredMetaFieldOnFile: 'Missing required meta fields in %{fileName}',\n        // The default `exceedsSize2` string only combines the `exceedsSize` string (%{backwardsCompat}) with the size.\n        // Locales can override `exceedsSize2` to specify a different word order. This is for backwards compat with\n        // Uppy 1.9.x and below which did a naive concatenation of `exceedsSize2 + size` instead of using a locale-specific\n        // substitution.\n        // TODO: In 2.0 `exceedsSize2` should be removed in and `exceedsSize` updated to use substitution.\n        exceedsSize2: '%{backwardsCompat} %{size}',\n        exceedsSize: '%{file} exceeds maximum allowed size of',\n        inferiorSize: 'This file is smaller than the allowed size of %{size}',\n        youCanOnlyUploadFileTypes: 'You can only upload: %{types}',\n        noNewAlreadyUploading: 'Cannot add new files: already uploading',\n        noDuplicates: 'Cannot add the duplicate file \\'%{fileName}\\', it already exists',\n        companionError: 'Connection with Companion failed',\n        companionUnauthorizeHint: 'To unauthorize to your %{provider} account, please go to %{url}',\n        failedToUpload: 'Failed to upload %{file}',\n        noInternetConnection: 'No Internet connection',\n        connectedToInternet: 'Connected to the Internet',\n        // Strings for remote providers\n        noFilesFound: 'You have no files or folders here',\n        selectX: {\n          0: 'Select %{smart_count}',\n          1: 'Select %{smart_count}'\n        },\n        selectAllFilesFromFolderNamed: 'Select all files from folder %{name}',\n        unselectAllFilesFromFolderNamed: 'Unselect all files from folder %{name}',\n        selectFileNamed: 'Select file %{name}',\n        unselectFileNamed: 'Unselect file %{name}',\n        openFolderNamed: 'Open folder %{name}',\n        cancel: 'Cancel',\n        logOut: 'Log out',\n        filter: 'Filter',\n        resetFilter: 'Reset filter',\n        loading: 'Loading...',\n        authenticateWithTitle: 'Please authenticate with %{pluginName} to select files',\n        authenticateWith: 'Connect to %{pluginName}',\n        searchImages: 'Search for images',\n        enterTextToSearch: 'Enter text to search for images',\n        backToSearch: 'Back to Search',\n        emptyFolderAdded: 'No files were added from empty folder',\n        folderAdded: {\n          0: 'Added %{smart_count} file from %{folder}',\n          1: 'Added %{smart_count} files from %{folder}'\n        }\n      }\n    };\n    var defaultOptions = {\n      id: 'uppy',\n      autoProceed: false,\n      allowMultipleUploads: true,\n      debug: false,\n      restrictions: {\n        maxFileSize: null,\n        minFileSize: null,\n        maxTotalFileSize: null,\n        maxNumberOfFiles: null,\n        minNumberOfFiles: null,\n        allowedFileTypes: null,\n        requiredMetaFields: []\n      },\n      meta: {},\n      onBeforeFileAdded: function onBeforeFileAdded(currentFile) {\n        return currentFile;\n      },\n      onBeforeUpload: function onBeforeUpload(files) {\n        return files;\n      },\n      store: DefaultStore(),\n      logger: justErrorsLogger,\n      infoTimeout: 5000\n    }; // Merge default options with the ones set by user,\n    // making sure to merge restrictions too\n\n    this.opts = _extends({}, defaultOptions, opts, {\n      restrictions: _extends({}, defaultOptions.restrictions, opts && opts.restrictions)\n    }); // Support debug: true for backwards-compatability, unless logger is set in opts\n    // opts instead of this.opts to avoid comparing objects — we set logger: justErrorsLogger in defaultOptions\n\n    if (opts && opts.logger && opts.debug) {\n      this.log('You are using a custom `logger`, but also set `debug: true`, which uses built-in logger to output logs to console. Ignoring `debug: true` and using your custom `logger`.', 'warning');\n    } else if (opts && opts.debug) {\n      this.opts.logger = debugLogger;\n    }\n    this.log(\"Using Core v\" + this.constructor.VERSION);\n    if (this.opts.restrictions.allowedFileTypes && this.opts.restrictions.allowedFileTypes !== null && !Array.isArray(this.opts.restrictions.allowedFileTypes)) {\n      throw new TypeError('`restrictions.allowedFileTypes` must be an array');\n    }\n    this.i18nInit(); // Container for different types of plugins\n\n    this.plugins = {};\n    this.getState = this.getState.bind(this);\n    this.getPlugin = this.getPlugin.bind(this);\n    this.setFileMeta = this.setFileMeta.bind(this);\n    this.setFileState = this.setFileState.bind(this);\n    this.log = this.log.bind(this);\n    this.info = this.info.bind(this);\n    this.hideInfo = this.hideInfo.bind(this);\n    this.addFile = this.addFile.bind(this);\n    this.removeFile = this.removeFile.bind(this);\n    this.pauseResume = this.pauseResume.bind(this);\n    this.validateRestrictions = this.validateRestrictions.bind(this); // ___Why throttle at 500ms?\n    //    - We must throttle at >250ms for superfocus in Dashboard to work well\n    //    (because animation takes 0.25s, and we want to wait for all animations to be over before refocusing).\n    //    [Practical Check]: if thottle is at 100ms, then if you are uploading a file,\n    //    and click 'ADD MORE FILES', - focus won't activate in Firefox.\n    //    - We must throttle at around >500ms to avoid performance lags.\n    //    [Practical Check] Firefox, try to upload a big file for a prolonged period of time. Laptop will start to heat up.\n\n    this.calculateProgress = throttle(this.calculateProgress.bind(this), 500, {\n      leading: true,\n      trailing: true\n    });\n    this.updateOnlineStatus = this.updateOnlineStatus.bind(this);\n    this.resetProgress = this.resetProgress.bind(this);\n    this.pauseAll = this.pauseAll.bind(this);\n    this.resumeAll = this.resumeAll.bind(this);\n    this.retryAll = this.retryAll.bind(this);\n    this.cancelAll = this.cancelAll.bind(this);\n    this.retryUpload = this.retryUpload.bind(this);\n    this.upload = this.upload.bind(this);\n    this.emitter = ee();\n    this.on = this.on.bind(this);\n    this.off = this.off.bind(this);\n    this.once = this.emitter.once.bind(this.emitter);\n    this.emit = this.emitter.emit.bind(this.emitter);\n    this.preProcessors = [];\n    this.uploaders = [];\n    this.postProcessors = [];\n    this.store = this.opts.store;\n    this.setState({\n      plugins: {},\n      files: {},\n      currentUploads: {},\n      allowNewUpload: true,\n      capabilities: {\n        uploadProgress: supportsUploadProgress(),\n        individualCancellation: true,\n        resumableUploads: false\n      },\n      totalProgress: 0,\n      meta: _extends({}, this.opts.meta),\n      info: {\n        isHidden: true,\n        type: 'info',\n        message: ''\n      },\n      recoveredState: null\n    });\n    this.storeUnsubscribe = this.store.subscribe(function (prevState, nextState, patch) {\n      _this4.emit('state-update', prevState, nextState, patch);\n      _this4.updateAll(nextState);\n    }); // Exposing uppy object on window for debugging and testing\n\n    if (this.opts.debug && typeof window !== 'undefined') {\n      window[this.opts.id] = this;\n    }\n    this.addListeners(); // Re-enable if we’ll need some capabilities on boot, like isMobileDevice\n    // this._setCapabilities()\n  } // _setCapabilities = () => {\n  //   const capabilities = {\n  //     isMobileDevice: isMobileDevice()\n  //   }\n  //   this.setState({\n  //     ...this.getState().capabilities,\n  //     capabilities\n  //   })\n  // }\n\n  var _proto = Uppy.prototype;\n  _proto.on = function on(event, callback) {\n    this.emitter.on(event, callback);\n    return this;\n  };\n  _proto.off = function off(event, callback) {\n    this.emitter.off(event, callback);\n    return this;\n  }\n  /**\n   * Iterate on all plugins and run `update` on them.\n   * Called each time state changes.\n   *\n   */;\n\n  _proto.updateAll = function updateAll(state) {\n    this.iteratePlugins(function (plugin) {\n      plugin.update(state);\n    });\n  }\n  /**\n   * Updates state with a patch\n   *\n   * @param {object} patch {foo: 'bar'}\n   */;\n\n  _proto.setState = function setState(patch) {\n    this.store.setState(patch);\n  }\n  /**\n   * Returns current state.\n   *\n   * @returns {object}\n   */;\n\n  _proto.getState = function getState() {\n    return this.store.getState();\n  }\n  /**\n   * Back compat for when uppy.state is used instead of uppy.getState().\n   * @deprecated\n   */;\n\n  /**\n   * Shorthand to set state for a specific file.\n   */\n  _proto.setFileState = function setFileState(fileID, state) {\n    var _extends2;\n    if (!this.getState().files[fileID]) {\n      throw new Error(\"Can\\u2019t set state for \" + fileID + \" (the file could have been removed)\");\n    }\n    this.setState({\n      files: _extends({}, this.getState().files, (_extends2 = {}, _extends2[fileID] = _extends({}, this.getState().files[fileID], state), _extends2))\n    });\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.opts.locale]);\n    this.locale = this.translator.locale;\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.i18nArray = this.translator.translateArray.bind(this.translator);\n  };\n  _proto.setOptions = function setOptions(newOpts) {\n    this.opts = _extends({}, this.opts, newOpts, {\n      restrictions: _extends({}, this.opts.restrictions, newOpts && newOpts.restrictions)\n    });\n    if (newOpts.meta) {\n      this.setMeta(newOpts.meta);\n    }\n    this.i18nInit();\n    if (newOpts.locale) {\n      this.iteratePlugins(function (plugin) {\n        plugin.setOptions();\n      });\n    } // Note: this is not the preact `setState`, it's an internal function that has the same name.\n\n    this.setState(); // so that UI re-renders with new options\n  };\n\n  _proto.resetProgress = function resetProgress() {\n    var defaultProgress = {\n      percentage: 0,\n      bytesUploaded: 0,\n      uploadComplete: false,\n      uploadStarted: null\n    };\n    var files = _extends({}, this.getState().files);\n    var updatedFiles = {};\n    Object.keys(files).forEach(function (fileID) {\n      var updatedFile = _extends({}, files[fileID]);\n      updatedFile.progress = _extends({}, updatedFile.progress, defaultProgress);\n      updatedFiles[fileID] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      totalProgress: 0\n    });\n    this.emit('reset-progress');\n  };\n  _proto.addPreProcessor = function addPreProcessor(fn) {\n    this.preProcessors.push(fn);\n  };\n  _proto.removePreProcessor = function removePreProcessor(fn) {\n    var i = this.preProcessors.indexOf(fn);\n    if (i !== -1) {\n      this.preProcessors.splice(i, 1);\n    }\n  };\n  _proto.addPostProcessor = function addPostProcessor(fn) {\n    this.postProcessors.push(fn);\n  };\n  _proto.removePostProcessor = function removePostProcessor(fn) {\n    var i = this.postProcessors.indexOf(fn);\n    if (i !== -1) {\n      this.postProcessors.splice(i, 1);\n    }\n  };\n  _proto.addUploader = function addUploader(fn) {\n    this.uploaders.push(fn);\n  };\n  _proto.removeUploader = function removeUploader(fn) {\n    var i = this.uploaders.indexOf(fn);\n    if (i !== -1) {\n      this.uploaders.splice(i, 1);\n    }\n  };\n  _proto.setMeta = function setMeta(data) {\n    var updatedMeta = _extends({}, this.getState().meta, data);\n    var updatedFiles = _extends({}, this.getState().files);\n    Object.keys(updatedFiles).forEach(function (fileID) {\n      updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n        meta: _extends({}, updatedFiles[fileID].meta, data)\n      });\n    });\n    this.log('Adding metadata:');\n    this.log(data);\n    this.setState({\n      meta: updatedMeta,\n      files: updatedFiles\n    });\n  };\n  _proto.setFileMeta = function setFileMeta(fileID, data) {\n    var updatedFiles = _extends({}, this.getState().files);\n    if (!updatedFiles[fileID]) {\n      this.log('Was trying to set metadata for a file that has been removed: ', fileID);\n      return;\n    }\n    var newMeta = _extends({}, updatedFiles[fileID].meta, data);\n    updatedFiles[fileID] = _extends({}, updatedFiles[fileID], {\n      meta: newMeta\n    });\n    this.setState({\n      files: updatedFiles\n    });\n  }\n  /**\n   * Get a file object.\n   *\n   * @param {string} fileID The ID of the file object to return.\n   */;\n\n  _proto.getFile = function getFile(fileID) {\n    return this.getState().files[fileID];\n  }\n  /**\n   * Get all files in an array.\n   */;\n\n  _proto.getFiles = function getFiles() {\n    var _this$getState = this.getState(),\n      files = _this$getState.files;\n    return Object.keys(files).map(function (fileID) {\n      return files[fileID];\n    });\n  }\n  /**\n   * A public wrapper for _checkRestrictions — checks if a file passes a set of restrictions.\n   * For use in UI pluigins (like Providers), to disallow selecting files that won’t pass restrictions.\n   *\n   * @param {object} file object to check\n   * @param {Array} [files] array to check maxNumberOfFiles and maxTotalFileSize\n   * @returns {object} { result: true/false, reason: why file didn’t pass restrictions }\n   */;\n\n  _proto.validateRestrictions = function validateRestrictions(file, files) {\n    try {\n      this.checkRestrictions(file, files);\n      return {\n        result: true\n      };\n    } catch (err) {\n      return {\n        result: false,\n        reason: err.message\n      };\n    }\n  }\n  /**\n   * Check if file passes a set of restrictions set in options: maxFileSize, minFileSize,\n   * maxNumberOfFiles and allowedFileTypes.\n   *\n   * @param {object} file object to check\n   * @param {Array} [files] array to check maxNumberOfFiles and maxTotalFileSize\n   * @private\n   */;\n\n  _proto.checkRestrictions = function checkRestrictions(file, files) {\n    if (files === void 0) {\n      files = this.getFiles();\n    }\n    var _this$opts$restrictio = this.opts.restrictions,\n      maxFileSize = _this$opts$restrictio.maxFileSize,\n      minFileSize = _this$opts$restrictio.minFileSize,\n      maxTotalFileSize = _this$opts$restrictio.maxTotalFileSize,\n      maxNumberOfFiles = _this$opts$restrictio.maxNumberOfFiles,\n      allowedFileTypes = _this$opts$restrictio.allowedFileTypes;\n    if (maxNumberOfFiles) {\n      if (files.length + 1 > maxNumberOfFiles) {\n        throw new RestrictionError(\"\" + this.i18n('youCanOnlyUploadX', {\n          smart_count: maxNumberOfFiles\n        }));\n      }\n    }\n    if (allowedFileTypes) {\n      var isCorrectFileType = allowedFileTypes.some(function (type) {\n        // check if this is a mime-type\n        if (type.indexOf('/') > -1) {\n          if (!file.type) return false;\n          return match(file.type.replace(/;.*?$/, ''), type);\n        } // otherwise this is likely an extension\n\n        if (type[0] === '.' && file.extension) {\n          return file.extension.toLowerCase() === type.substr(1).toLowerCase();\n        }\n        return false;\n      });\n      if (!isCorrectFileType) {\n        var allowedFileTypesString = allowedFileTypes.join(', ');\n        throw new RestrictionError(this.i18n('youCanOnlyUploadFileTypes', {\n          types: allowedFileTypesString\n        }));\n      }\n    } // We can't check maxTotalFileSize if the size is unknown.\n\n    if (maxTotalFileSize && file.size != null) {\n      var totalFilesSize = 0;\n      totalFilesSize += file.size;\n      files.forEach(function (f) {\n        totalFilesSize += f.size;\n      });\n      if (totalFilesSize > maxTotalFileSize) {\n        throw new RestrictionError(this.i18n('exceedsSize2', {\n          backwardsCompat: this.i18n('exceedsSize'),\n          size: prettierBytes(maxTotalFileSize),\n          file: file.name\n        }));\n      }\n    } // We can't check maxFileSize if the size is unknown.\n\n    if (maxFileSize && file.size != null) {\n      if (file.size > maxFileSize) {\n        throw new RestrictionError(this.i18n('exceedsSize2', {\n          backwardsCompat: this.i18n('exceedsSize'),\n          size: prettierBytes(maxFileSize),\n          file: file.name\n        }));\n      }\n    } // We can't check minFileSize if the size is unknown.\n\n    if (minFileSize && file.size != null) {\n      if (file.size < minFileSize) {\n        throw new RestrictionError(this.i18n('inferiorSize', {\n          size: prettierBytes(minFileSize)\n        }));\n      }\n    }\n  }\n  /**\n   * Check if minNumberOfFiles restriction is reached before uploading.\n   *\n   * @private\n   */;\n\n  _proto.checkMinNumberOfFiles = function checkMinNumberOfFiles(files) {\n    var minNumberOfFiles = this.opts.restrictions.minNumberOfFiles;\n    if (Object.keys(files).length < minNumberOfFiles) {\n      throw new RestrictionError(\"\" + this.i18n('youHaveToAtLeastSelectX', {\n        smart_count: minNumberOfFiles\n      }));\n    }\n  }\n  /**\n   * Check if requiredMetaField restriction is met before uploading.\n   *\n   * @private\n   */;\n\n  _proto.checkRequiredMetaFields = function checkRequiredMetaFields(files) {\n    var requiredMetaFields = this.opts.restrictions.requiredMetaFields;\n    var hasOwnProperty = Object.prototype.hasOwnProperty;\n    var errors = [];\n    var fileIDs = Object.keys(files);\n    for (var i = 0; i < fileIDs.length; i++) {\n      var file = this.getFile(fileIDs[i]);\n      for (var _i = 0; _i < requiredMetaFields.length; _i++) {\n        if (!hasOwnProperty.call(file.meta, requiredMetaFields[_i]) || file.meta[requiredMetaFields[_i]] === '') {\n          var err = new RestrictionError(\"\" + this.i18n('missingRequiredMetaFieldOnFile', {\n            fileName: file.name\n          }));\n          errors.push(err);\n          this.showOrLogErrorAndThrow(err, {\n            file: file,\n            throwErr: false\n          });\n        }\n      }\n    }\n    if (errors.length) {\n      throw new AggregateRestrictionError(\"\" + this.i18n('missingRequiredMetaField'), errors);\n    }\n  }\n  /**\n   * Logs an error, sets Informer message, then throws the error.\n   * Emits a 'restriction-failed' event if it’s a restriction error\n   *\n   * @param {object | string} err — Error object or plain string message\n   * @param {object} [options]\n   * @param {boolean} [options.showInformer=true] — Sometimes developer might want to show Informer manually\n   * @param {object} [options.file=null] — File object used to emit the restriction error\n   * @param {boolean} [options.throwErr=true] — Errors shouldn’t be thrown, for example, in `upload-error` event\n   * @private\n   */;\n\n  _proto.showOrLogErrorAndThrow = function showOrLogErrorAndThrow(err, _temp) {\n    var _ref = _temp === void 0 ? {} : _temp,\n      _ref$showInformer = _ref.showInformer,\n      showInformer = _ref$showInformer === void 0 ? true : _ref$showInformer,\n      _ref$file = _ref.file,\n      file = _ref$file === void 0 ? null : _ref$file,\n      _ref$throwErr = _ref.throwErr,\n      throwErr = _ref$throwErr === void 0 ? true : _ref$throwErr;\n    var message = typeof err === 'object' ? err.message : err;\n    var details = typeof err === 'object' && err.details ? err.details : ''; // Restriction errors should be logged, but not as errors,\n    // as they are expected and shown in the UI.\n\n    var logMessageWithDetails = message;\n    if (details) {\n      logMessageWithDetails += \" \" + details;\n    }\n    if (err.isRestriction) {\n      this.log(logMessageWithDetails);\n      this.emit('restriction-failed', file, err);\n    } else {\n      this.log(logMessageWithDetails, 'error');\n    } // Sometimes informer has to be shown manually by the developer,\n    // for example, in `onBeforeFileAdded`.\n\n    if (showInformer) {\n      this.info({\n        message: message,\n        details: details\n      }, 'error', this.opts.infoTimeout);\n    }\n    if (throwErr) {\n      throw typeof err === 'object' ? err : new Error(err);\n    }\n  };\n  _proto.assertNewUploadAllowed = function assertNewUploadAllowed(file) {\n    var _this$getState2 = this.getState(),\n      allowNewUpload = _this$getState2.allowNewUpload;\n    if (allowNewUpload === false) {\n      this.showOrLogErrorAndThrow(new RestrictionError(this.i18n('noNewAlreadyUploading')), {\n        file: file\n      });\n    }\n  }\n  /**\n   * Create a file state object based on user-provided `addFile()` options.\n   *\n   * Note this is extremely side-effectful and should only be done when a file state object will be added to state immediately afterward!\n   *\n   * The `files` value is passed in because it may be updated by the caller without updating the store.\n   */;\n\n  _proto.checkAndCreateFileStateObject = function checkAndCreateFileStateObject(files, f) {\n    var fileType = getFileType(f);\n    var file = f;\n    file.type = fileType;\n    var onBeforeFileAddedResult = this.opts.onBeforeFileAdded(file, files);\n    if (onBeforeFileAddedResult === false) {\n      // Don’t show UI info for this error, as it should be done by the developer\n      this.showOrLogErrorAndThrow(new RestrictionError('Cannot add the file because onBeforeFileAdded returned false.'), {\n        showInformer: false,\n        file: file\n      });\n    }\n    if (typeof onBeforeFileAddedResult === 'object' && onBeforeFileAddedResult) {\n      file = onBeforeFileAddedResult;\n    }\n    var fileName;\n    if (file.name) {\n      fileName = file.name;\n    } else if (fileType.split('/')[0] === 'image') {\n      fileName = fileType.split('/')[0] + \".\" + fileType.split('/')[1];\n    } else {\n      fileName = 'noname';\n    }\n    var fileExtension = getFileNameAndExtension(fileName).extension;\n    var isRemote = file.isRemote || false;\n    var fileID = generateFileID(file);\n    if (files[fileID] && !files[fileID].isGhost) {\n      this.showOrLogErrorAndThrow(new RestrictionError(this.i18n('noDuplicates', {\n        fileName: fileName\n      })), {\n        file: file\n      });\n    }\n    var meta = file.meta || {};\n    meta.name = fileName;\n    meta.type = fileType; // `null` means the size is unknown.\n\n    var size = isFinite(file.data.size) ? file.data.size : null;\n    var newFile = {\n      source: file.source || '',\n      id: fileID,\n      name: fileName,\n      extension: fileExtension || '',\n      meta: _extends({}, this.getState().meta, meta),\n      type: fileType,\n      data: file.data,\n      progress: {\n        percentage: 0,\n        bytesUploaded: 0,\n        bytesTotal: size,\n        uploadComplete: false,\n        uploadStarted: null\n      },\n      size: size,\n      isRemote: isRemote,\n      remote: file.remote || '',\n      preview: file.preview\n    };\n    try {\n      var filesArray = Object.keys(files).map(function (i) {\n        return files[i];\n      });\n      this.checkRestrictions(newFile, filesArray);\n    } catch (err) {\n      this.showOrLogErrorAndThrow(err, {\n        file: newFile\n      });\n    }\n    return newFile;\n  } // Schedule an upload if `autoProceed` is enabled.\n  ;\n\n  _proto.startIfAutoProceed = function startIfAutoProceed() {\n    var _this5 = this;\n    if (this.opts.autoProceed && !this.scheduledAutoProceed) {\n      this.scheduledAutoProceed = setTimeout(function () {\n        _this5.scheduledAutoProceed = null;\n        _this5.upload().catch(function (err) {\n          if (!err.isRestriction) {\n            _this5.log(err.stack || err.message || err);\n          }\n        });\n      }, 4);\n    }\n  }\n  /**\n   * Add a new file to `state.files`. This will run `onBeforeFileAdded`,\n   * try to guess file type in a clever way, check file against restrictions,\n   * and start an upload if `autoProceed === true`.\n   *\n   * @param {object} file object to add\n   * @returns {string} id for the added file\n   */;\n\n  _proto.addFile = function addFile(file) {\n    var _extends3;\n    this.assertNewUploadAllowed(file);\n    var _this$getState3 = this.getState(),\n      files = _this$getState3.files;\n    var newFile = this.checkAndCreateFileStateObject(files, file); // Users are asked to re-select recovered files without data,\n    // and to keep the progress, meta and everthing else, we only replace said data\n\n    if (files[newFile.id] && files[newFile.id].isGhost) {\n      newFile = _extends({}, files[newFile.id], {\n        data: file.data,\n        isGhost: false\n      });\n      this.log(\"Replaced the blob in the restored ghost file: \" + newFile.name + \", \" + newFile.id);\n    }\n    this.setState({\n      files: _extends({}, files, (_extends3 = {}, _extends3[newFile.id] = newFile, _extends3))\n    });\n    this.emit('file-added', newFile);\n    this.emit('files-added', [newFile]);\n    this.log(\"Added file: \" + newFile.name + \", \" + newFile.id + \", mime type: \" + newFile.type);\n    this.startIfAutoProceed();\n    return newFile.id;\n  }\n  /**\n   * Add multiple files to `state.files`. See the `addFile()` documentation.\n   *\n   * If an error occurs while adding a file, it is logged and the user is notified.\n   * This is good for UI plugins, but not for programmatic use.\n   * Programmatic users should usually still use `addFile()` on individual files.\n   */;\n\n  _proto.addFiles = function addFiles(fileDescriptors) {\n    var _this6 = this;\n    this.assertNewUploadAllowed(); // create a copy of the files object only once\n\n    var files = _extends({}, this.getState().files);\n    var newFiles = [];\n    var errors = [];\n    for (var i = 0; i < fileDescriptors.length; i++) {\n      try {\n        var newFile = this.checkAndCreateFileStateObject(files, fileDescriptors[i]); // Users are asked to re-select recovered files without data,\n        // and to keep the progress, meta and everthing else, we only replace said data\n\n        if (files[newFile.id] && files[newFile.id].isGhost) {\n          newFile = _extends({}, files[newFile.id], {\n            data: fileDescriptors[i].data,\n            isGhost: false\n          });\n          this.log(\"Replaced blob in a ghost file: \" + newFile.name + \", \" + newFile.id);\n        }\n        files[newFile.id] = newFile;\n        newFiles.push(newFile);\n      } catch (err) {\n        if (!err.isRestriction) {\n          errors.push(err);\n        }\n      }\n    }\n    this.setState({\n      files: files\n    });\n    newFiles.forEach(function (newFile) {\n      _this6.emit('file-added', newFile);\n    });\n    this.emit('files-added', newFiles);\n    if (newFiles.length > 5) {\n      this.log(\"Added batch of \" + newFiles.length + \" files\");\n    } else {\n      Object.keys(newFiles).forEach(function (fileID) {\n        _this6.log(\"Added file: \" + newFiles[fileID].name + \"\\n id: \" + newFiles[fileID].id + \"\\n type: \" + newFiles[fileID].type);\n      });\n    }\n    if (newFiles.length > 0) {\n      this.startIfAutoProceed();\n    }\n    if (errors.length > 0) {\n      var message = 'Multiple errors occurred while adding files:\\n';\n      errors.forEach(function (subError) {\n        message += \"\\n * \" + subError.message;\n      });\n      this.info({\n        message: this.i18n('addBulkFilesFailed', {\n          smart_count: errors.length\n        }),\n        details: message\n      }, 'error', this.opts.infoTimeout);\n      if (typeof AggregateError === 'function') {\n        throw new AggregateError(errors, message);\n      } else {\n        var err = new Error(message);\n        err.errors = errors;\n        throw err;\n      }\n    }\n  };\n  _proto.removeFiles = function removeFiles(fileIDs, reason) {\n    var _this7 = this;\n    var _this$getState4 = this.getState(),\n      files = _this$getState4.files,\n      currentUploads = _this$getState4.currentUploads;\n    var updatedFiles = _extends({}, files);\n    var updatedUploads = _extends({}, currentUploads);\n    var removedFiles = Object.create(null);\n    fileIDs.forEach(function (fileID) {\n      if (files[fileID]) {\n        removedFiles[fileID] = files[fileID];\n        delete updatedFiles[fileID];\n      }\n    }); // Remove files from the `fileIDs` list in each upload.\n\n    function fileIsNotRemoved(uploadFileID) {\n      return removedFiles[uploadFileID] === undefined;\n    }\n    Object.keys(updatedUploads).forEach(function (uploadID) {\n      var newFileIDs = currentUploads[uploadID].fileIDs.filter(fileIsNotRemoved); // Remove the upload if no files are associated with it anymore.\n\n      if (newFileIDs.length === 0) {\n        delete updatedUploads[uploadID];\n        return;\n      }\n      updatedUploads[uploadID] = _extends({}, currentUploads[uploadID], {\n        fileIDs: newFileIDs\n      });\n    });\n    var stateUpdate = {\n      currentUploads: updatedUploads,\n      files: updatedFiles\n    }; // If all files were removed - allow new uploads,\n    // and clear recoveredState\n\n    if (Object.keys(updatedFiles).length === 0) {\n      stateUpdate.allowNewUpload = true;\n      stateUpdate.error = null;\n      stateUpdate.recoveredState = null;\n    }\n    this.setState(stateUpdate);\n    this.calculateTotalProgress();\n    var removedFileIDs = Object.keys(removedFiles);\n    removedFileIDs.forEach(function (fileID) {\n      _this7.emit('file-removed', removedFiles[fileID], reason);\n    });\n    if (removedFileIDs.length > 5) {\n      this.log(\"Removed \" + removedFileIDs.length + \" files\");\n    } else {\n      this.log(\"Removed files: \" + removedFileIDs.join(', '));\n    }\n  };\n  _proto.removeFile = function removeFile(fileID, reason) {\n    if (reason === void 0) {\n      reason = null;\n    }\n    this.removeFiles([fileID], reason);\n  };\n  _proto.pauseResume = function pauseResume(fileID) {\n    if (!this.getState().capabilities.resumableUploads || this.getFile(fileID).uploadComplete) {\n      return undefined;\n    }\n    var wasPaused = this.getFile(fileID).isPaused || false;\n    var isPaused = !wasPaused;\n    this.setFileState(fileID, {\n      isPaused: isPaused\n    });\n    this.emit('upload-pause', fileID, isPaused);\n    return isPaused;\n  };\n  _proto.pauseAll = function pauseAll() {\n    var updatedFiles = _extends({}, this.getState().files);\n    var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(function (file) {\n      var updatedFile = _extends({}, updatedFiles[file], {\n        isPaused: true\n      });\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('pause-all');\n  };\n  _proto.resumeAll = function resumeAll() {\n    var updatedFiles = _extends({}, this.getState().files);\n    var inProgressUpdatedFiles = Object.keys(updatedFiles).filter(function (file) {\n      return !updatedFiles[file].progress.uploadComplete && updatedFiles[file].progress.uploadStarted;\n    });\n    inProgressUpdatedFiles.forEach(function (file) {\n      var updatedFile = _extends({}, updatedFiles[file], {\n        isPaused: false,\n        error: null\n      });\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles\n    });\n    this.emit('resume-all');\n  };\n  _proto.retryAll = function retryAll() {\n    var updatedFiles = _extends({}, this.getState().files);\n    var filesToRetry = Object.keys(updatedFiles).filter(function (file) {\n      return updatedFiles[file].error;\n    });\n    filesToRetry.forEach(function (file) {\n      var updatedFile = _extends({}, updatedFiles[file], {\n        isPaused: false,\n        error: null\n      });\n      updatedFiles[file] = updatedFile;\n    });\n    this.setState({\n      files: updatedFiles,\n      error: null\n    });\n    this.emit('retry-all', filesToRetry);\n    if (filesToRetry.length === 0) {\n      return Promise.resolve({\n        successful: [],\n        failed: []\n      });\n    }\n    var uploadID = this.createUpload(filesToRetry, {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n    });\n\n    return this.runUpload(uploadID);\n  };\n  _proto.cancelAll = function cancelAll() {\n    this.emit('cancel-all');\n    var _this$getState5 = this.getState(),\n      files = _this$getState5.files;\n    var fileIDs = Object.keys(files);\n    if (fileIDs.length) {\n      this.removeFiles(fileIDs, 'cancel-all');\n    }\n    this.setState({\n      totalProgress: 0,\n      error: null,\n      recoveredState: null\n    });\n  };\n  _proto.retryUpload = function retryUpload(fileID) {\n    this.setFileState(fileID, {\n      error: null,\n      isPaused: false\n    });\n    this.emit('upload-retry', fileID);\n    var uploadID = this.createUpload([fileID], {\n      forceAllowNewUpload: true // create new upload even if allowNewUpload: false\n    });\n\n    return this.runUpload(uploadID);\n  };\n  _proto.reset = function reset() {\n    this.cancelAll();\n  };\n  _proto.logout = function logout() {\n    this.iteratePlugins(function (plugin) {\n      if (plugin.provider && plugin.provider.logout) {\n        plugin.provider.logout();\n      }\n    });\n  };\n  _proto.calculateProgress = function calculateProgress(file, data) {\n    if (!this.getFile(file.id)) {\n      this.log(\"Not setting progress for a file that has been removed: \" + file.id);\n      return;\n    } // bytesTotal may be null or zero; in that case we can't divide by it\n\n    var canHavePercentage = isFinite(data.bytesTotal) && data.bytesTotal > 0;\n    this.setFileState(file.id, {\n      progress: _extends({}, this.getFile(file.id).progress, {\n        bytesUploaded: data.bytesUploaded,\n        bytesTotal: data.bytesTotal,\n        percentage: canHavePercentage // TODO(goto-bus-stop) flooring this should probably be the choice of the UI?\n        // we get more accurate calculations if we don't round this at all.\n        ? Math.round(data.bytesUploaded / data.bytesTotal * 100) : 0\n      })\n    });\n    this.calculateTotalProgress();\n  };\n  _proto.calculateTotalProgress = function calculateTotalProgress() {\n    // calculate total progress, using the number of files currently uploading,\n    // multiplied by 100 and the summ of individual progress of each file\n    var files = this.getFiles();\n    var inProgress = files.filter(function (file) {\n      return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n    });\n    if (inProgress.length === 0) {\n      this.emit('progress', 0);\n      this.setState({\n        totalProgress: 0\n      });\n      return;\n    }\n    var sizedFiles = inProgress.filter(function (file) {\n      return file.progress.bytesTotal != null;\n    });\n    var unsizedFiles = inProgress.filter(function (file) {\n      return file.progress.bytesTotal == null;\n    });\n    if (sizedFiles.length === 0) {\n      var progressMax = inProgress.length * 100;\n      var currentProgress = unsizedFiles.reduce(function (acc, file) {\n        return acc + file.progress.percentage;\n      }, 0);\n      var _totalProgress = Math.round(currentProgress / progressMax * 100);\n      this.setState({\n        totalProgress: _totalProgress\n      });\n      return;\n    }\n    var totalSize = sizedFiles.reduce(function (acc, file) {\n      return acc + file.progress.bytesTotal;\n    }, 0);\n    var averageSize = totalSize / sizedFiles.length;\n    totalSize += averageSize * unsizedFiles.length;\n    var uploadedSize = 0;\n    sizedFiles.forEach(function (file) {\n      uploadedSize += file.progress.bytesUploaded;\n    });\n    unsizedFiles.forEach(function (file) {\n      uploadedSize += averageSize * (file.progress.percentage || 0) / 100;\n    });\n    var totalProgress = totalSize === 0 ? 0 : Math.round(uploadedSize / totalSize * 100); // hot fix, because:\n    // uploadedSize ended up larger than totalSize, resulting in 1325% total\n\n    if (totalProgress > 100) {\n      totalProgress = 100;\n    }\n    this.setState({\n      totalProgress: totalProgress\n    });\n    this.emit('progress', totalProgress);\n  }\n  /**\n   * Registers listeners for all global actions, like:\n   * `error`, `file-removed`, `upload-progress`\n   */;\n\n  _proto.addListeners = function addListeners() {\n    var _this8 = this;\n\n    /**\n     * @param {Error} error\n     * @param {object} [file]\n     * @param {object} [response]\n     */\n    var errorHandler = function errorHandler(error, file, response) {\n      var errorMsg = error.message || 'Unknown error';\n      if (error.details) {\n        errorMsg += \" \" + error.details;\n      }\n      _this8.setState({\n        error: errorMsg\n      }); // When a file is also given, we store the error on the file object.\n\n      if (file != null && typeof file.id === 'string') {\n        _this8.setFileState(file.id, {\n          error: errorMsg,\n          response: response\n        });\n      }\n    };\n    this.on('error', errorHandler);\n    this.on('upload-error', function (file, error, response) {\n      errorHandler(error, file, response);\n      if (typeof error === 'object' && error.message) {\n        var newError = new Error(error.message);\n        newError.details = error.message;\n        if (error.details) {\n          newError.details += \" \" + error.details;\n        }\n        newError.message = _this8.i18n('failedToUpload', {\n          file: file.name\n        });\n        _this8.showOrLogErrorAndThrow(newError, {\n          throwErr: false\n        });\n      } else {\n        _this8.showOrLogErrorAndThrow(error, {\n          throwErr: false\n        });\n      }\n    });\n    this.on('upload', function () {\n      _this8.setState({\n        error: null\n      });\n    });\n    this.on('upload-started', function (file) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      _this8.setFileState(file.id, {\n        progress: {\n          uploadStarted: Date.now(),\n          uploadComplete: false,\n          percentage: 0,\n          bytesUploaded: 0,\n          bytesTotal: file.size\n        }\n      });\n    });\n    this.on('upload-progress', this.calculateProgress);\n    this.on('upload-success', function (file, uploadResp) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      var currentProgress = _this8.getFile(file.id).progress;\n      _this8.setFileState(file.id, {\n        progress: _extends({}, currentProgress, {\n          postprocess: _this8.postProcessors.length > 0 ? {\n            mode: 'indeterminate'\n          } : null,\n          uploadComplete: true,\n          percentage: 100,\n          bytesUploaded: currentProgress.bytesTotal\n        }),\n        response: uploadResp,\n        uploadURL: uploadResp.uploadURL,\n        isPaused: false\n      }); // Remote providers sometimes don't tell us the file size,\n      // but we can know how many bytes we uploaded once the upload is complete.\n\n      if (file.size == null) {\n        _this8.setFileState(file.id, {\n          size: uploadResp.bytesUploaded || currentProgress.bytesTotal\n        });\n      }\n      _this8.calculateTotalProgress();\n    });\n    this.on('preprocess-progress', function (file, progress) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      _this8.setFileState(file.id, {\n        progress: _extends({}, _this8.getFile(file.id).progress, {\n          preprocess: progress\n        })\n      });\n    });\n    this.on('preprocess-complete', function (file) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      var files = _extends({}, _this8.getState().files);\n      files[file.id] = _extends({}, files[file.id], {\n        progress: _extends({}, files[file.id].progress)\n      });\n      delete files[file.id].progress.preprocess;\n      _this8.setState({\n        files: files\n      });\n    });\n    this.on('postprocess-progress', function (file, progress) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      _this8.setFileState(file.id, {\n        progress: _extends({}, _this8.getState().files[file.id].progress, {\n          postprocess: progress\n        })\n      });\n    });\n    this.on('postprocess-complete', function (file) {\n      if (!_this8.getFile(file.id)) {\n        _this8.log(\"Not setting progress for a file that has been removed: \" + file.id);\n        return;\n      }\n      var files = _extends({}, _this8.getState().files);\n      files[file.id] = _extends({}, files[file.id], {\n        progress: _extends({}, files[file.id].progress)\n      });\n      delete files[file.id].progress.postprocess; // TODO should we set some kind of `fullyComplete` property on the file object\n      // so it's easier to see that the file is upload…fully complete…rather than\n      // what we have to do now (`uploadComplete && !postprocess`)\n\n      _this8.setState({\n        files: files\n      });\n    });\n    this.on('restored', function () {\n      // Files may have changed--ensure progress is still accurate.\n      _this8.calculateTotalProgress();\n    }); // show informer if offline\n\n    if (typeof window !== 'undefined' && window.addEventListener) {\n      window.addEventListener('online', function () {\n        return _this8.updateOnlineStatus();\n      });\n      window.addEventListener('offline', function () {\n        return _this8.updateOnlineStatus();\n      });\n      setTimeout(function () {\n        return _this8.updateOnlineStatus();\n      }, 3000);\n    }\n  };\n  _proto.updateOnlineStatus = function updateOnlineStatus() {\n    var online = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;\n    if (!online) {\n      this.emit('is-offline');\n      this.info(this.i18n('noInternetConnection'), 'error', 0);\n      this.wasOffline = true;\n    } else {\n      this.emit('is-online');\n      if (this.wasOffline) {\n        this.emit('back-online');\n        this.info(this.i18n('connectedToInternet'), 'success', 3000);\n        this.wasOffline = false;\n      }\n    }\n  };\n  _proto.getID = function getID() {\n    return this.opts.id;\n  }\n  /**\n   * Registers a plugin with Core.\n   *\n   * @param {object} Plugin object\n   * @param {object} [opts] object with options to be passed to Plugin\n   * @returns {object} self for chaining\n   */\n  // eslint-disable-next-line no-shadow\n  ;\n\n  _proto.use = function use(Plugin, opts) {\n    if (typeof Plugin !== 'function') {\n      var msg = \"Expected a plugin class, but got \" + (Plugin === null ? 'null' : typeof Plugin) + \".\" + ' Please verify that the plugin was imported and spelled correctly.';\n      throw new TypeError(msg);\n    } // Instantiate\n\n    var plugin = new Plugin(this, opts);\n    var pluginId = plugin.id;\n    this.plugins[plugin.type] = this.plugins[plugin.type] || [];\n    if (!pluginId) {\n      throw new Error('Your plugin must have an id');\n    }\n    if (!plugin.type) {\n      throw new Error('Your plugin must have a type');\n    }\n    var existsPluginAlready = this.getPlugin(pluginId);\n    if (existsPluginAlready) {\n      var _msg = \"Already found a plugin named '\" + existsPluginAlready.id + \"'. \" + (\"Tried to use: '\" + pluginId + \"'.\\n\") + 'Uppy plugins must have unique `id` options. See https://uppy.io/docs/plugins/#id.';\n      throw new Error(_msg);\n    }\n    if (Plugin.VERSION) {\n      this.log(\"Using \" + pluginId + \" v\" + Plugin.VERSION);\n    }\n    this.plugins[plugin.type].push(plugin);\n    plugin.install();\n    return this;\n  }\n  /**\n   * Find one Plugin by name.\n   *\n   * @param {string} id plugin id\n   * @returns {object|boolean}\n   */;\n\n  _proto.getPlugin = function getPlugin(id) {\n    var foundPlugin = null;\n    this.iteratePlugins(function (plugin) {\n      if (plugin.id === id) {\n        foundPlugin = plugin;\n        return false;\n      }\n    });\n    return foundPlugin;\n  }\n  /**\n   * Iterate through all `use`d plugins.\n   *\n   * @param {Function} method that will be run on each plugin\n   */;\n\n  _proto.iteratePlugins = function iteratePlugins(method) {\n    var _this9 = this;\n    Object.keys(this.plugins).forEach(function (pluginType) {\n      _this9.plugins[pluginType].forEach(method);\n    });\n  }\n  /**\n   * Uninstall and remove a plugin.\n   *\n   * @param {object} instance The plugin instance to remove.\n   */;\n\n  _proto.removePlugin = function removePlugin(instance) {\n    var _extends4;\n    this.log(\"Removing plugin \" + instance.id);\n    this.emit('plugin-remove', instance);\n    if (instance.uninstall) {\n      instance.uninstall();\n    }\n    var list = this.plugins[instance.type].slice(); // list.indexOf failed here, because Vue3 converted the plugin instance\n    // to a Proxy object, which failed the strict comparison test:\n    // obj !== objProxy\n\n    var index = findIndex(list, function (item) {\n      return item.id === instance.id;\n    });\n    if (index !== -1) {\n      list.splice(index, 1);\n      this.plugins[instance.type] = list;\n    }\n    var state = this.getState();\n    var updatedState = {\n      plugins: _extends({}, state.plugins, (_extends4 = {}, _extends4[instance.id] = undefined, _extends4))\n    };\n    this.setState(updatedState);\n  }\n  /**\n   * Uninstall all plugins and close down this Uppy instance.\n   */;\n\n  _proto.close = function close() {\n    var _this10 = this;\n    this.log(\"Closing Uppy instance \" + this.opts.id + \": removing all files and uninstalling plugins\");\n    this.reset();\n    this.storeUnsubscribe();\n    this.iteratePlugins(function (plugin) {\n      _this10.removePlugin(plugin);\n    });\n  }\n  /**\n   * Set info message in `state.info`, so that UI plugins like `Informer`\n   * can display the message.\n   *\n   * @param {string | object} message Message to be displayed by the informer\n   * @param {string} [type]\n   * @param {number} [duration]\n   */;\n\n  _proto.info = function info(message, type, duration) {\n    if (type === void 0) {\n      type = 'info';\n    }\n    if (duration === void 0) {\n      duration = 3000;\n    }\n    var isComplexMessage = typeof message === 'object';\n    this.setState({\n      info: {\n        isHidden: false,\n        type: type,\n        message: isComplexMessage ? message.message : message,\n        details: isComplexMessage ? message.details : null\n      }\n    });\n    this.emit('info-visible');\n    clearTimeout(this.infoTimeoutID);\n    if (duration === 0) {\n      this.infoTimeoutID = undefined;\n      return;\n    } // hide the informer after `duration` milliseconds\n\n    this.infoTimeoutID = setTimeout(this.hideInfo, duration);\n  };\n  _proto.hideInfo = function hideInfo() {\n    var newInfo = _extends({}, this.getState().info, {\n      isHidden: true\n    });\n    this.setState({\n      info: newInfo\n    });\n    this.emit('info-hidden');\n  }\n  /**\n   * Passes messages to a function, provided in `opts.logger`.\n   * If `opts.logger: Uppy.debugLogger` or `opts.debug: true`, logs to the browser console.\n   *\n   * @param {string|object} message to log\n   * @param {string} [type] optional `error` or `warning`\n   */;\n\n  _proto.log = function log(message, type) {\n    var logger = this.opts.logger;\n    switch (type) {\n      case 'error':\n        logger.error(message);\n        break;\n      case 'warning':\n        logger.warn(message);\n        break;\n      default:\n        logger.debug(message);\n        break;\n    }\n  }\n  /**\n   * Obsolete, event listeners are now added in the constructor.\n   */;\n\n  _proto.run = function run() {\n    this.log('Calling run() is no longer necessary.', 'warning');\n    return this;\n  }\n  /**\n   * Restore an upload by its ID.\n   */;\n\n  _proto.restore = function restore(uploadID) {\n    this.log(\"Core: attempting to restore upload \\\"\" + uploadID + \"\\\"\");\n    if (!this.getState().currentUploads[uploadID]) {\n      this.removeUpload(uploadID);\n      return Promise.reject(new Error('Nonexistent upload'));\n    }\n    return this.runUpload(uploadID);\n  }\n  /**\n   * Create an upload for a bunch of files.\n   *\n   * @param {Array<string>} fileIDs File IDs to include in this upload.\n   * @returns {string} ID of this upload.\n   */;\n\n  _proto.createUpload = function createUpload(fileIDs, opts) {\n    var _extends5;\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    // uppy.retryAll sets this to true — when retrying we want to ignore `allowNewUpload: false`\n    var _opts = opts,\n      _opts$forceAllowNewUp = _opts.forceAllowNewUpload,\n      forceAllowNewUpload = _opts$forceAllowNewUp === void 0 ? false : _opts$forceAllowNewUp;\n    var _this$getState6 = this.getState(),\n      allowNewUpload = _this$getState6.allowNewUpload,\n      currentUploads = _this$getState6.currentUploads;\n    if (!allowNewUpload && !forceAllowNewUpload) {\n      throw new Error('Cannot create a new upload: already uploading.');\n    }\n    var uploadID = cuid();\n    this.emit('upload', {\n      id: uploadID,\n      fileIDs: fileIDs\n    });\n    this.setState({\n      allowNewUpload: this.opts.allowMultipleUploads !== false,\n      currentUploads: _extends({}, currentUploads, (_extends5 = {}, _extends5[uploadID] = {\n        fileIDs: fileIDs,\n        step: 0,\n        result: {}\n      }, _extends5))\n    });\n    return uploadID;\n  };\n  _proto.getUpload = function getUpload(uploadID) {\n    var _this$getState7 = this.getState(),\n      currentUploads = _this$getState7.currentUploads;\n    return currentUploads[uploadID];\n  }\n  /**\n   * Add data to an upload's result object.\n   *\n   * @param {string} uploadID The ID of the upload.\n   * @param {object} data Data properties to add to the result object.\n   */;\n\n  _proto.addResultData = function addResultData(uploadID, data) {\n    var _extends6;\n    if (!this.getUpload(uploadID)) {\n      this.log(\"Not setting result for an upload that has been removed: \" + uploadID);\n      return;\n    }\n    var _this$getState8 = this.getState(),\n      currentUploads = _this$getState8.currentUploads;\n    var currentUpload = _extends({}, currentUploads[uploadID], {\n      result: _extends({}, currentUploads[uploadID].result, data)\n    });\n    this.setState({\n      currentUploads: _extends({}, currentUploads, (_extends6 = {}, _extends6[uploadID] = currentUpload, _extends6))\n    });\n  }\n  /**\n   * Remove an upload, eg. if it has been canceled or completed.\n   *\n   * @param {string} uploadID The ID of the upload.\n   */;\n\n  _proto.removeUpload = function removeUpload(uploadID) {\n    var currentUploads = _extends({}, this.getState().currentUploads);\n    delete currentUploads[uploadID];\n    this.setState({\n      currentUploads: currentUploads\n    });\n  }\n  /**\n   * Run an upload. This picks up where it left off in case the upload is being restored.\n   *\n   * @private\n   */;\n\n  _proto.runUpload = function runUpload(uploadID) {\n    var _this11 = this;\n    var uploadData = this.getState().currentUploads[uploadID];\n    var restoreStep = uploadData.step;\n    var steps = [].concat(this.preProcessors, this.uploaders, this.postProcessors);\n    var lastStep = Promise.resolve();\n    steps.forEach(function (fn, step) {\n      // Skip this step if we are restoring and have already completed this step before.\n      if (step < restoreStep) {\n        return;\n      }\n      lastStep = lastStep.then(function () {\n        var _extends7;\n        var _this11$getState = _this11.getState(),\n          currentUploads = _this11$getState.currentUploads;\n        var currentUpload = currentUploads[uploadID];\n        if (!currentUpload) {\n          return;\n        }\n        var updatedUpload = _extends({}, currentUpload, {\n          step: step\n        });\n        _this11.setState({\n          currentUploads: _extends({}, currentUploads, (_extends7 = {}, _extends7[uploadID] = updatedUpload, _extends7))\n        }); // TODO give this the `updatedUpload` object as its only parameter maybe?\n        // Otherwise when more metadata may be added to the upload this would keep getting more parameters\n        // eslint-disable-next-line consistent-return\n\n        return fn(updatedUpload.fileIDs, uploadID);\n      }).then(function () {\n        return null;\n      });\n    }); // Not returning the `catch`ed promise, because we still want to return a rejected\n    // promise from this method if the upload failed.\n\n    lastStep.catch(function (err) {\n      _this11.emit('error', err);\n      _this11.removeUpload(uploadID);\n    });\n    return lastStep.then(function () {\n      // Set result data.\n      var _this11$getState2 = _this11.getState(),\n        currentUploads = _this11$getState2.currentUploads;\n      var currentUpload = currentUploads[uploadID];\n      if (!currentUpload) {\n        return;\n      } // Mark postprocessing step as complete if necessary; this addresses a case where we might get\n      // stuck in the postprocessing UI while the upload is fully complete.\n      // If the postprocessing steps do not do any work, they may not emit postprocessing events at\n      // all, and never mark the postprocessing as complete. This is fine on its own but we\n      // introduced code in the @uppy/core upload-success handler to prepare postprocessing progress\n      // state if any postprocessors are registered. That is to avoid a \"flash of completed state\"\n      // before the postprocessing plugins can emit events.\n      //\n      // So, just in case an upload with postprocessing plugins *has* completed *without* emitting\n      // postprocessing completion, we do it instead.\n\n      currentUpload.fileIDs.forEach(function (fileID) {\n        var file = _this11.getFile(fileID);\n        if (file && file.progress.postprocess) {\n          _this11.emit('postprocess-complete', file);\n        }\n      });\n      var files = currentUpload.fileIDs.map(function (fileID) {\n        return _this11.getFile(fileID);\n      });\n      var successful = files.filter(function (file) {\n        return !file.error;\n      });\n      var failed = files.filter(function (file) {\n        return file.error;\n      });\n      _this11.addResultData(uploadID, {\n        successful: successful,\n        failed: failed,\n        uploadID: uploadID\n      });\n    }).then(function () {\n      // Emit completion events.\n      // This is in a separate function so that the `currentUploads` variable\n      // always refers to the latest state. In the handler right above it refers\n      // to an outdated object without the `.result` property.\n      var _this11$getState3 = _this11.getState(),\n        currentUploads = _this11$getState3.currentUploads;\n      if (!currentUploads[uploadID]) {\n        return;\n      }\n      var currentUpload = currentUploads[uploadID];\n      var result = currentUpload.result;\n      _this11.emit('complete', result);\n      _this11.removeUpload(uploadID); // eslint-disable-next-line consistent-return\n\n      return result;\n    }).then(function (result) {\n      if (result == null) {\n        _this11.log(\"Not setting result for an upload that has been removed: \" + uploadID);\n      }\n      return result;\n    });\n  }\n  /**\n   * Start an upload for all the files that are not currently being uploaded.\n   *\n   * @returns {Promise}\n   */;\n\n  _proto.upload = function upload() {\n    var _this12 = this;\n    if (!this.plugins.uploader) {\n      this.log('No uploader type plugins are used', 'warning');\n    }\n    var _this$getState9 = this.getState(),\n      files = _this$getState9.files;\n    var onBeforeUploadResult = this.opts.onBeforeUpload(files);\n    if (onBeforeUploadResult === false) {\n      return Promise.reject(new Error('Not starting the upload because onBeforeUpload returned false'));\n    }\n    if (onBeforeUploadResult && typeof onBeforeUploadResult === 'object') {\n      files = onBeforeUploadResult; // Updating files in state, because uploader plugins receive file IDs,\n      // and then fetch the actual file object from state\n\n      this.setState({\n        files: files\n      });\n    }\n    return Promise.resolve().then(function () {\n      _this12.checkMinNumberOfFiles(files);\n      _this12.checkRequiredMetaFields(files);\n    }).catch(function (err) {\n      _this12.showOrLogErrorAndThrow(err);\n    }).then(function () {\n      var _this12$getState = _this12.getState(),\n        currentUploads = _this12$getState.currentUploads; // get a list of files that are currently assigned to uploads\n\n      var currentlyUploadingFiles = Object.keys(currentUploads).reduce(function (prev, curr) {\n        return prev.concat(currentUploads[curr].fileIDs);\n      }, []);\n      var waitingFileIDs = [];\n      Object.keys(files).forEach(function (fileID) {\n        var file = _this12.getFile(fileID); // if the file hasn't started uploading and hasn't already been assigned to an upload..\n\n        if (!file.progress.uploadStarted && currentlyUploadingFiles.indexOf(fileID) === -1) {\n          waitingFileIDs.push(file.id);\n        }\n      });\n      var uploadID = _this12.createUpload(waitingFileIDs);\n      return _this12.runUpload(uploadID);\n    }).catch(function (err) {\n      _this12.showOrLogErrorAndThrow(err, {\n        showInformer: false\n      });\n    });\n  };\n  _createClass(Uppy, [{\n    key: \"state\",\n    get: function get() {\n      // Here, state is a non-enumerable property.\n      return this.getState();\n    }\n  }]);\n  return Uppy;\n}();\nUppy.VERSION = \"1.20.1\";\nmodule.exports = function core(opts) {\n  return new Uppy(opts);\n}; // Expose class constructor.\n\nmodule.exports.Uppy = Uppy;\nmodule.exports.Plugin = Plugin;\nmodule.exports.debugLogger = debugLogger;","var getTimeStamp = require('@uppy/utils/lib/getTimeStamp'); // Swallow all logs, except errors.\n// default if logger is not set or debug: false\n\nvar justErrorsLogger = {\n  debug: function debug() {},\n  warn: function warn() {},\n  error: function error() {\n    var _console;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    return (_console = console).error.apply(_console, [\"[Uppy] [\" + getTimeStamp() + \"]\"].concat(args));\n  }\n}; // Print logs to console with namespace + timestamp,\n// set by logger: Uppy.debugLogger or debug: true\n\nvar debugLogger = {\n  debug: function debug() {\n    // IE 10 doesn’t support console.debug\n    var debug = console.debug || console.log;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    debug.call.apply(debug, [console, \"[Uppy] [\" + getTimeStamp() + \"]\"].concat(args));\n  },\n  warn: function warn() {\n    var _console2;\n    for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      args[_key3] = arguments[_key3];\n    }\n    return (_console2 = console).warn.apply(_console2, [\"[Uppy] [\" + getTimeStamp() + \"]\"].concat(args));\n  },\n  error: function error() {\n    var _console3;\n    for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n      args[_key4] = arguments[_key4];\n    }\n    return (_console3 = console).error.apply(_console3, [\"[Uppy] [\" + getTimeStamp() + \"]\"].concat(args));\n  }\n};\nmodule.exports = {\n  justErrorsLogger: justErrorsLogger,\n  debugLogger: debugLogger\n};","// Edge 15.x does not fire 'progress' events on uploads.\n// See https://github.com/transloadit/uppy/issues/945\n// And https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12224510/\nmodule.exports = function supportsUploadProgress(userAgent) {\n  // Allow passing in userAgent for tests\n  if (userAgent == null) {\n    userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : null;\n  } // Assume it works because basically everything supports progress events.\n\n  if (!userAgent) return true;\n  var m = /Edge\\/(\\d+\\.\\d+)/.exec(userAgent);\n  if (!m) return true;\n  var edgeVersion = m[1];\n  var _edgeVersion$split = edgeVersion.split('.'),\n    major = _edgeVersion$split[0],\n    minor = _edgeVersion$split[1];\n  major = parseInt(major, 10);\n  minor = parseInt(minor, 10); // Worked before:\n  // Edge 40.15063.0.0\n  // Microsoft EdgeHTML 15.15063\n\n  if (major < 15 || major === 15 && minor < 15063) {\n    return true;\n  } // Fixed in:\n  // Microsoft EdgeHTML 18.18218\n\n  if (major > 18 || major === 18 && minor >= 18218) {\n    return true;\n  } // other versions don't work.\n\n  return false;\n};","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('preact'),\n  h = _require.h,\n  Component = _require.Component;\nvar AddFiles = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(AddFiles, _Component);\n  function AddFiles() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n    _this.triggerFileInputClick = function () {\n      _this.fileInput.click();\n    };\n    _this.triggerFolderInputClick = function () {\n      _this.folderInput.click();\n    };\n    _this.onFileInputChange = function (event) {\n      _this.props.handleInputChange(event); // We clear the input after a file is selected, because otherwise\n      // change event is not fired in Chrome and Safari when a file\n      // with the same name is selected.\n      // ___Why not use value=\"\" on <input/> instead?\n      //    Because if we use that method of clearing the input,\n      //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n      event.target.value = null;\n    };\n    _this.renderHiddenInput = function (isFolder, refCallback) {\n      return h(\"input\", {\n        className: \"uppy-Dashboard-input\",\n        hidden: true,\n        \"aria-hidden\": \"true\",\n        tabIndex: -1,\n        webkitdirectory: isFolder,\n        type: \"file\",\n        name: \"files[]\",\n        multiple: _this.props.maxNumberOfFiles !== 1,\n        onChange: _this.onFileInputChange,\n        accept: _this.props.allowedFileTypes,\n        ref: refCallback\n      });\n    };\n    _this.renderMyDeviceAcquirer = function () {\n      return h(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": \"MyDevice\"\n      }, h(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"data-uppy-super-focusable\": true,\n        onClick: _this.triggerFileInputClick\n      }, h(\"svg\", {\n        \"aria-hidden\": \"true\",\n        focusable: \"false\",\n        width: \"32\",\n        height: \"32\",\n        viewBox: \"0 0 32 32\"\n      }, h(\"g\", {\n        fill: \"none\",\n        fillRule: \"evenodd\"\n      }, h(\"rect\", {\n        className: \"uppy-ProviderIconBg\",\n        width: \"32\",\n        height: \"32\",\n        rx: \"16\",\n        fill: \"#2275D7\"\n      }), h(\"path\", {\n        d: \"M21.973 21.152H9.863l-1.108-5.087h14.464l-1.246 5.087zM9.935 11.37h3.958l.886 1.444a.673.673 0 0 0 .585.316h6.506v1.37H9.935v-3.13zm14.898 3.44a.793.793 0 0 0-.616-.31h-.978v-2.126c0-.379-.275-.613-.653-.613H15.75l-.886-1.445a.673.673 0 0 0-.585-.316H9.232c-.378 0-.667.209-.667.587V14.5h-.782a.793.793 0 0 0-.61.303.795.795 0 0 0-.155.663l1.45 6.633c.078.36.396.618.764.618h13.354c.36 0 .674-.246.76-.595l1.631-6.636a.795.795 0 0 0-.144-.675z\",\n        fill: \"#FFF\"\n      }))), h(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, _this.props.i18n('myDevice'))));\n    };\n    _this.renderBrowseButton = function (text, onClickFn) {\n      var numberOfAcquirers = _this.props.acquirers.length;\n      return h(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-Dashboard-browse\",\n        onClick: onClickFn,\n        \"data-uppy-super-focusable\": numberOfAcquirers === 0\n      }, text);\n    };\n    _this.renderDropPasteBrowseTagline = function () {\n      var numberOfAcquirers = _this.props.acquirers.length; // in order to keep the i18n CamelCase and options lower (as are defaults) we will want to transform a lower\n      // to Camel\n\n      var lowerFMSelectionType = _this.props.fileManagerSelectionType;\n      var camelFMSelectionType = lowerFMSelectionType.charAt(0).toUpperCase() + lowerFMSelectionType.slice(1); // For backwards compatibility, we need to support both 'browse' and 'browseFiles'/'browseFolders' as strings here.\n\n      var browseText = 'browse';\n      var browseFilesText = 'browse';\n      var browseFoldersText = 'browse';\n      if (lowerFMSelectionType === 'files') {\n        try {\n          browseText = _this.props.i18n('browse');\n          browseFilesText = _this.props.i18n('browse');\n          browseFoldersText = _this.props.i18n('browse');\n        } catch (_unused) {// Ignore, hopefully we can use the 'browseFiles' / 'browseFolders' strings\n        }\n      }\n      try {\n        browseFilesText = _this.props.i18n('browseFiles');\n        browseFoldersText = _this.props.i18n('browseFolders');\n      } catch (_unused2) {// Ignore, use the 'browse' string\n      }\n      var browse = _this.renderBrowseButton(browseText, _this.triggerFileInputClick);\n      var browseFiles = _this.renderBrowseButton(browseFilesText, _this.triggerFileInputClick);\n      var browseFolders = _this.renderBrowseButton(browseFoldersText, _this.triggerFolderInputClick); // Before the `fileManagerSelectionType` feature existed, we had two possible\n      // strings here, but now we have six. We use the new-style strings by default:\n\n      var titleText;\n      if (numberOfAcquirers > 0) {\n        titleText = _this.props.i18nArray(\"dropPasteImport\" + camelFMSelectionType, {\n          browseFiles: browseFiles,\n          browseFolders: browseFolders,\n          browse: browse\n        });\n      } else {\n        titleText = _this.props.i18nArray(\"dropPaste\" + camelFMSelectionType, {\n          browseFiles: browseFiles,\n          browseFolders: browseFolders,\n          browse: browse\n        });\n      } // We use the old-style strings if available: this implies that the user has\n      // manually specified them, so they should take precedence over the new-style\n      // defaults.\n\n      if (lowerFMSelectionType === 'files') {\n        try {\n          if (numberOfAcquirers > 0) {\n            titleText = _this.props.i18nArray('dropPasteImport', {\n              browse: browse\n            });\n          } else {\n            titleText = _this.props.i18nArray('dropPaste', {\n              browse: browse\n            });\n          }\n        } catch (_unused3) {// Ignore, the new-style strings will be used.\n        }\n      }\n      if (_this.props.disableLocalFiles) {\n        titleText = _this.props.i18n('importFiles');\n      }\n      return h(\"div\", {\n        className: \"uppy-Dashboard-AddFiles-title\"\n      }, titleText);\n    };\n    _this.renderAcquirer = function (acquirer) {\n      return h(\"div\", {\n        className: \"uppy-DashboardTab\",\n        role: \"presentation\",\n        \"data-uppy-acquirer-id\": acquirer.id\n      }, h(\"button\", {\n        type: \"button\",\n        className: \"uppy-u-reset uppy-c-btn uppy-DashboardTab-btn\",\n        role: \"tab\",\n        tabIndex: 0,\n        \"aria-controls\": \"uppy-DashboardContent-panel--\" + acquirer.id,\n        \"aria-selected\": _this.props.activePickerPanel.id === acquirer.id,\n        \"data-uppy-super-focusable\": true,\n        onClick: function onClick() {\n          return _this.props.showPanel(acquirer.id);\n        }\n      }, acquirer.icon(), h(\"div\", {\n        className: \"uppy-DashboardTab-name\"\n      }, acquirer.name)));\n    };\n    _this.renderAcquirers = function (acquirers, disableLocalFiles) {\n      // Group last two buttons, so we don’t end up with\n      // just one button on a new line\n      var acquirersWithoutLastTwo = [].concat(acquirers);\n      var lastTwoAcquirers = acquirersWithoutLastTwo.splice(acquirers.length - 2, acquirers.length);\n      return h(\"div\", {\n        className: \"uppy-Dashboard-AddFiles-list\",\n        role: \"tablist\"\n      }, !disableLocalFiles && _this.renderMyDeviceAcquirer(), acquirersWithoutLastTwo.map(function (acquirer) {\n        return _this.renderAcquirer(acquirer);\n      }), h(\"span\", {\n        role: \"presentation\",\n        style: \"white-space: nowrap;\"\n      }, lastTwoAcquirers.map(function (acquirer) {\n        return _this.renderAcquirer(acquirer);\n      })));\n    };\n    return _this;\n  }\n  var _proto = AddFiles.prototype;\n  _proto.renderPoweredByUppy = function renderPoweredByUppy() {\n    var uppyBranding = h(\"span\", null, h(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-Dashboard-poweredByIcon\",\n      width: \"11\",\n      height: \"11\",\n      viewBox: \"0 0 11 11\"\n    }, h(\"path\", {\n      d: \"M7.365 10.5l-.01-4.045h2.612L5.5.806l-4.467 5.65h2.604l.01 4.044h3.718z\",\n      fillRule: \"evenodd\"\n    })), h(\"span\", {\n      className: \"uppy-Dashboard-poweredByUppy\"\n    }, \"Uppy\")); // Support both the old word-order-insensitive string `poweredBy` and the new word-order-sensitive string `poweredBy2`\n\n    var linkText = this.props.i18nArray('poweredBy2', {\n      backwardsCompat: this.props.i18n('poweredBy'),\n      uppy: uppyBranding\n    });\n    return h(\"a\", {\n      tabIndex: \"-1\",\n      href: \"https://uppy.io\",\n      rel: \"noreferrer noopener\",\n      target: \"_blank\",\n      className: \"uppy-Dashboard-poweredBy\"\n    }, linkText);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h(\"div\", {\n      className: \"uppy-Dashboard-AddFiles\"\n    }, this.renderHiddenInput(false, function (ref) {\n      _this2.fileInput = ref;\n    }), this.renderHiddenInput(true, function (ref) {\n      _this2.folderInput = ref;\n    }), this.renderDropPasteBrowseTagline(), this.props.acquirers.length > 0 && this.renderAcquirers(this.props.acquirers, this.props.disableLocalFiles), h(\"div\", {\n      className: \"uppy-Dashboard-AddFiles-info\"\n    }, this.props.note && h(\"div\", {\n      className: \"uppy-Dashboard-note\"\n    }, this.props.note), this.props.proudlyDisplayPoweredByUppy && this.renderPoweredByUppy(this.props)));\n  };\n  return AddFiles;\n}(Component);\nmodule.exports = AddFiles;","var _require = require('preact'),\n  h = _require.h;\nvar classNames = require('classnames');\nvar AddFiles = require('./AddFiles');\nvar AddFilesPanel = function AddFilesPanel(props) {\n  return h(\"div\", {\n    className: classNames('uppy-Dashboard-AddFilesPanel', props.className),\n    \"data-uppy-panelType\": \"AddFiles\",\n    \"aria-hidden\": props.showAddFilesPanel\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18n('addingMoreFiles')), h(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: function onClick(ev) {\n      return props.toggleAddFilesPanel(false);\n    }\n  }, props.i18n('back'))), h(AddFiles, props));\n};\nmodule.exports = AddFilesPanel;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar _require = require('preact'),\n  h = _require.h;\nvar classNames = require('classnames');\nvar FileList = require('./FileList');\nvar AddFiles = require('./AddFiles');\nvar AddFilesPanel = require('./AddFilesPanel');\nvar PickerPanelContent = require('./PickerPanelContent');\nvar EditorPanel = require('./EditorPanel');\nvar PanelTopBar = require('./PickerPanelTopBar');\nvar FileCard = require('./FileCard');\nvar Slide = require('./Slide');\nvar isDragDropSupported = require('@uppy/utils/lib/isDragDropSupported'); // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog\n// https://github.com/ghosh/micromodal\n\nvar WIDTH_XL = 900;\nvar WIDTH_LG = 700;\nvar WIDTH_MD = 576;\nvar HEIGHT_MD = 400;\nmodule.exports = function Dashboard(props) {\n  var noFiles = props.totalFileCount === 0;\n  var isSizeMD = props.containerWidth > WIDTH_MD;\n  var wrapperClassName = classNames({\n    'uppy-Root': props.isTargetDOMEl\n  });\n  var dashboardClassName = classNames({\n    'uppy-Dashboard': true,\n    'uppy-Dashboard--isDisabled': props.disabled,\n    'uppy-Dashboard--animateOpenClose': props.animateOpenClose,\n    'uppy-Dashboard--isClosing': props.isClosing,\n    'uppy-Dashboard--isDraggingOver': props.isDraggingOver,\n    'uppy-Dashboard--modal': !props.inline,\n    'uppy-size--md': props.containerWidth > WIDTH_MD,\n    'uppy-size--lg': props.containerWidth > WIDTH_LG,\n    'uppy-size--xl': props.containerWidth > WIDTH_XL,\n    'uppy-size--height-md': props.containerHeight > HEIGHT_MD,\n    'uppy-Dashboard--isAddFilesPanelVisible': props.showAddFilesPanel,\n    'uppy-Dashboard--isInnerWrapVisible': props.areInsidesReadyToBeVisible\n  }); // Important: keep these in sync with the percent width values in `src/components/FileItem/index.scss`.\n\n  var itemsPerRow = 1; // mobile\n\n  if (props.containerWidth > WIDTH_XL) {\n    itemsPerRow = 5;\n  } else if (props.containerWidth > WIDTH_LG) {\n    itemsPerRow = 4;\n  } else if (props.containerWidth > WIDTH_MD) {\n    itemsPerRow = 3;\n  }\n  var showFileList = props.showSelectedFiles && !noFiles;\n  var numberOfFilesForRecovery = props.recoveredState ? Object.keys(props.recoveredState.files).length : null;\n  var numberOfGhosts = props.files ? Object.keys(props.files).filter(function (fileID) {\n    return props.files[fileID].isGhost;\n  }).length : null;\n  var renderRestoredText = function renderRestoredText() {\n    if (numberOfGhosts > 0) {\n      return props.i18n('recoveredXFiles', {\n        smart_count: numberOfGhosts\n      });\n    }\n    return props.i18n('recoveredAllFiles');\n  };\n  var dashboard = h(\"div\", {\n    className: dashboardClassName,\n    \"data-uppy-theme\": props.theme,\n    \"data-uppy-num-acquirers\": props.acquirers.length,\n    \"data-uppy-drag-drop-supported\": !props.disableLocalFiles && isDragDropSupported(),\n    \"aria-hidden\": props.inline ? 'false' : props.isHidden,\n    \"aria-disabled\": props.disabled,\n    \"aria-label\": !props.inline ? props.i18n('dashboardWindowTitle') : props.i18n('dashboardTitle'),\n    onPaste: props.handlePaste,\n    onDragOver: props.handleDragOver,\n    onDragLeave: props.handleDragLeave,\n    onDrop: props.handleDrop\n  }, h(\"div\", {\n    className: \"uppy-Dashboard-overlay\",\n    tabIndex: -1,\n    onClick: props.handleClickOutside\n  }), h(\"div\", {\n    className: \"uppy-Dashboard-inner\",\n    \"aria-modal\": !props.inline && 'true',\n    role: !props.inline && 'dialog',\n    style: {\n      width: props.inline && props.width ? props.width : '',\n      height: props.inline && props.height ? props.height : ''\n    }\n  }, !props.inline ? h(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-close\",\n    type: \"button\",\n    \"aria-label\": props.i18n('closeModal'),\n    title: props.i18n('closeModal'),\n    onClick: props.closeModal\n  }, h(\"span\", {\n    \"aria-hidden\": \"true\"\n  }, \"\\xD7\")) : null, h(\"div\", {\n    className: \"uppy-Dashboard-innerWrap\"\n  }, h(\"div\", {\n    className: \"uppy-Dashboard-dropFilesHereHint\"\n  }, props.i18n('dropHint')), showFileList && h(PanelTopBar, props), numberOfFilesForRecovery && h(\"div\", {\n    className: \"uppy-Dashboard-serviceMsg\"\n  }, h(\"svg\", {\n    className: \"uppy-Dashboard-serviceMsg-icon\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"21\",\n    height: \"16\",\n    viewBox: \"0 0 24 19\"\n  }, h(\"g\", {\n    transform: \"translate(0 -1)\",\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, h(\"path\", {\n    d: \"M12.857 1.43l10.234 17.056A1 1 0 0122.234 20H1.766a1 1 0 01-.857-1.514L11.143 1.429a1 1 0 011.714 0z\",\n    fill: \"#FFD300\"\n  }), h(\"path\", {\n    fill: \"#000\",\n    d: \"M11 6h2l-.3 8h-1.4z\"\n  }), h(\"circle\", {\n    fill: \"#000\",\n    cx: \"12\",\n    cy: \"17\",\n    r: \"1\"\n  }))), h(\"strong\", {\n    className: \"uppy-Dashboard-serviceMsg-title\"\n  }, props.i18n('sessionRestored')), h(\"div\", {\n    class: \"uppy-Dashboard-serviceMsg-text\"\n  }, renderRestoredText())), showFileList ? h(FileList, _extends({}, props, {\n    itemsPerRow: itemsPerRow\n  })) : h(AddFiles, _extends({}, props, {\n    isSizeMD: isSizeMD\n  })), h(Slide, null, props.showAddFilesPanel ? h(AddFilesPanel, _extends({\n    key: \"AddFiles\"\n  }, props, {\n    isSizeMD: isSizeMD\n  })) : null), h(Slide, null, props.fileCardFor ? h(FileCard, _extends({\n    key: \"FileCard\"\n  }, props)) : null), h(Slide, null, props.activePickerPanel ? h(PickerPanelContent, _extends({\n    key: \"Picker\"\n  }, props)) : null), h(Slide, null, props.showFileEditor ? h(EditorPanel, _extends({\n    key: \"Editor\"\n  }, props)) : null), h(\"div\", {\n    className: \"uppy-Dashboard-progressindicators\"\n  }, props.progressindicators.map(function (target) {\n    return props.getPlugin(target.id).render(props.state);\n  })))));\n  return (\n    // Wrap it for RTL language support\n    h(\"div\", {\n      className: wrapperClassName,\n      dir: props.direction\n    }, dashboard)\n  );\n};","var _require = require('preact'),\n  h = _require.h;\nvar classNames = require('classnames');\nfunction EditorPanel(props) {\n  var file = this.props.files[this.props.fileCardFor];\n  return h(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', props.className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"FileEditor\",\n    id: \"uppy-DashboardContent-panel--editor\"\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18nArray('editing', {\n    file: h(\"span\", {\n      className: \"uppy-DashboardContent-titleFile\"\n    }, file.meta ? file.meta.name : file.name)\n  })), h(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.hideAllPanels\n  }, props.i18n('cancel')), h(\"button\", {\n    className: \"uppy-DashboardContent-save\",\n    type: \"button\",\n    onClick: props.saveFileEditor\n  }, props.i18n('save'))), h(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, props.editors.map(function (target) {\n    return props.getPlugin(target.id).render(props.state);\n  })));\n}\nmodule.exports = EditorPanel;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('preact'),\n  h = _require.h,\n  Component = _require.Component;\nvar classNames = require('classnames');\nvar getFileTypeIcon = require('../../utils/getFileTypeIcon');\nvar ignoreEvent = require('../../utils/ignoreEvent.js');\nvar FilePreview = require('../FilePreview');\nvar FileCard = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(FileCard, _Component);\n  function FileCard(props) {\n    var _this;\n    _this = _Component.call(this, props) || this;\n    _this.updateMeta = function (newVal, name) {\n      var _extends2;\n      _this.setState({\n        formState: _extends({}, _this.state.formState, (_extends2 = {}, _extends2[name] = newVal, _extends2))\n      });\n    };\n    _this.handleSave = function (e) {\n      e.preventDefault();\n      var fileID = _this.props.fileCardFor;\n      _this.props.saveFileCard(_this.state.formState, fileID);\n    };\n    _this.handleCancel = function () {\n      _this.props.toggleFileCard(false);\n    };\n    _this.saveOnEnter = function (ev) {\n      if (ev.keyCode === 13) {\n        ev.stopPropagation();\n        ev.preventDefault();\n        var file = _this.props.files[_this.props.fileCardFor];\n        _this.props.saveFileCard(_this.state.formState, file.id);\n      }\n    };\n    _this.renderMetaFields = function () {\n      var metaFields = _this.getMetaFields() || [];\n      var fieldCSSClasses = {\n        text: 'uppy-u-reset uppy-c-textInput uppy-Dashboard-FileCard-input'\n      };\n      return metaFields.map(function (field) {\n        var id = \"uppy-Dashboard-FileCard-input-\" + field.id;\n        var required = _this.props.requiredMetaFields.includes(field.id);\n        return h(\"fieldset\", {\n          key: field.id,\n          className: \"uppy-Dashboard-FileCard-fieldset\"\n        }, h(\"label\", {\n          className: \"uppy-Dashboard-FileCard-label\",\n          htmlFor: id\n        }, field.name), field.render !== undefined ? field.render({\n          value: _this.state.formState[field.id],\n          onChange: function onChange(newVal) {\n            return _this.updateMeta(newVal, field.id);\n          },\n          fieldCSSClasses: fieldCSSClasses,\n          required: required\n        }, h) : h(\"input\", {\n          className: fieldCSSClasses.text,\n          id: id,\n          type: field.type || 'text',\n          required: required,\n          value: _this.state.formState[field.id],\n          placeholder: field.placeholder,\n          onKeyUp: _this.saveOnEnter,\n          onKeyDown: _this.saveOnEnter,\n          onKeyPress: _this.saveOnEnter,\n          onInput: function onInput(ev) {\n            return _this.updateMeta(ev.target.value, field.id);\n          },\n          \"data-uppy-super-focusable\": true\n        }));\n      });\n    };\n    var _file = _this.props.files[_this.props.fileCardFor];\n    var _metaFields = _this.getMetaFields() || [];\n    var storedMetaData = {};\n    _metaFields.forEach(function (field) {\n      storedMetaData[field.id] = _file.meta[field.id] || '';\n    });\n    _this.state = {\n      formState: storedMetaData\n    };\n    return _this;\n  }\n  var _proto = FileCard.prototype;\n  _proto.getMetaFields = function getMetaFields() {\n    return typeof this.props.metaFields === 'function' ? this.props.metaFields(this.props.files[this.props.fileCardFor]) : this.props.metaFields;\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    var file = this.props.files[this.props.fileCardFor];\n    var showEditButton = this.props.canEditFile(file);\n    return h(\"div\", {\n      className: classNames('uppy-Dashboard-FileCard', this.props.className),\n      \"data-uppy-panelType\": \"FileCard\",\n      onDragOver: ignoreEvent,\n      onDragLeave: ignoreEvent,\n      onDrop: ignoreEvent,\n      onPaste: ignoreEvent\n    }, h(\"div\", {\n      className: \"uppy-DashboardContent-bar\"\n    }, h(\"div\", {\n      className: \"uppy-DashboardContent-title\",\n      role: \"heading\",\n      \"aria-level\": \"1\"\n    }, this.props.i18nArray('editing', {\n      file: h(\"span\", {\n        className: \"uppy-DashboardContent-titleFile\"\n      }, file.meta ? file.meta.name : file.name)\n    })), h(\"button\", {\n      className: \"uppy-DashboardContent-back\",\n      type: \"button\",\n      title: this.props.i18n('finishEditingFile'),\n      onClick: this.handleCancel\n    }, this.props.i18n('cancel'))), h(\"div\", {\n      className: \"uppy-Dashboard-FileCard-inner\"\n    }, h(\"div\", {\n      className: \"uppy-Dashboard-FileCard-preview\",\n      style: {\n        backgroundColor: getFileTypeIcon(file.type).color\n      }\n    }, h(FilePreview, {\n      file: file\n    }), showEditButton && h(\"button\", {\n      type: \"button\",\n      className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-FileCard-edit\",\n      onClick: function onClick() {\n        return _this2.props.openFileEditor(file);\n      }\n    }, this.props.i18n('editFile'))), h(\"div\", {\n      className: \"uppy-Dashboard-FileCard-info\"\n    }, this.renderMetaFields()), h(\"div\", {\n      className: \"uppy-Dashboard-FileCard-actions\"\n    }, h(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Dashboard-FileCard-actionsBtn\" // If `form` attribute is not in Preact 8, we can’t trigger the form validation.\n      // We use a classic button with a onClick event handler.\n      ,\n\n      type: \"button\",\n      onClick: this.handleSave\n    }, this.props.i18n('saveChanges')), h(\"button\", {\n      className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link uppy-Dashboard-FileCard-actionsBtn\",\n      type: \"button\",\n      onClick: this.handleCancel\n    }, this.props.i18n('cancel')))));\n  };\n  return FileCard;\n}(Component);\nmodule.exports = FileCard;","var _require = require('preact'),\n  h = _require.h;\nvar copyToClipboard = require('../../../utils/copyToClipboard');\nfunction EditButton(_ref) {\n  var file = _ref.file,\n    uploadInProgressOrComplete = _ref.uploadInProgressOrComplete,\n    metaFields = _ref.metaFields,\n    canEditFile = _ref.canEditFile,\n    i18n = _ref.i18n,\n    _onClick = _ref.onClick;\n  if (!uploadInProgressOrComplete && metaFields && metaFields.length > 0 || !uploadInProgressOrComplete && canEditFile(file)) {\n    return h(\"button\", {\n      className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--edit\",\n      type: \"button\",\n      \"aria-label\": i18n('editFile') + \" \" + file.meta.name,\n      title: i18n('editFile'),\n      onClick: function onClick() {\n        return _onClick();\n      }\n    }, h(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon\",\n      width: \"14\",\n      height: \"14\",\n      viewBox: \"0 0 14 14\"\n    }, h(\"g\", {\n      fillRule: \"evenodd\"\n    }, h(\"path\", {\n      d: \"M1.5 10.793h2.793A1 1 0 0 0 5 10.5L11.5 4a1 1 0 0 0 0-1.414L9.707.793a1 1 0 0 0-1.414 0l-6.5 6.5A1 1 0 0 0 1.5 8v2.793zm1-1V8L9 1.5l1.793 1.793-6.5 6.5H2.5z\",\n      fillRule: \"nonzero\"\n    }), h(\"rect\", {\n      x: \"1\",\n      y: \"12.293\",\n      width: \"11\",\n      height: \"1\",\n      rx: \".5\"\n    }), h(\"path\", {\n      fillRule: \"nonzero\",\n      d: \"M6.793 2.5L9.5 5.207l.707-.707L7.5 1.793z\"\n    }))));\n  }\n  return null;\n}\nfunction RemoveButton(_ref2) {\n  var i18n = _ref2.i18n,\n    _onClick2 = _ref2.onClick;\n  return h(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--remove\",\n    type: \"button\",\n    \"aria-label\": i18n('removeFile'),\n    title: i18n('removeFile'),\n    onClick: function onClick() {\n      return _onClick2();\n    }\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"18\",\n    height: \"18\",\n    viewBox: \"0 0 18 18\"\n  }, h(\"path\", {\n    d: \"M9 0C4.034 0 0 4.034 0 9s4.034 9 9 9 9-4.034 9-9-4.034-9-9-9z\"\n  }), h(\"path\", {\n    fill: \"#FFF\",\n    d: \"M13 12.222l-.778.778L9 9.778 5.778 13 5 12.222 8.222 9 5 5.778 5.778 5 9 8.222 12.222 5l.778.778L9.778 9z\"\n  })));\n}\nvar copyLinkToClipboard = function copyLinkToClipboard(event, props) {\n  copyToClipboard(props.file.uploadURL, props.i18n('copyLinkToClipboardFallback')).then(function () {\n    props.log('Link copied to clipboard.');\n    props.info(props.i18n('copyLinkToClipboardSuccess'), 'info', 3000);\n  }).catch(props.log) // avoid losing focus\n  .then(function () {\n    return event.target.focus({\n      preventScroll: true\n    });\n  });\n};\nfunction CopyLinkButton(props) {\n  return h(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-action uppy-Dashboard-Item-action--copyLink\",\n    type: \"button\",\n    \"aria-label\": props.i18n('copyLink'),\n    title: props.i18n('copyLink'),\n    onClick: function onClick(event) {\n      return copyLinkToClipboard(event, props);\n    }\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"14\",\n    height: \"14\",\n    viewBox: \"0 0 14 12\"\n  }, h(\"path\", {\n    d: \"M7.94 7.703a2.613 2.613 0 0 1-.626 2.681l-.852.851a2.597 2.597 0 0 1-1.849.766A2.616 2.616 0 0 1 2.764 7.54l.852-.852a2.596 2.596 0 0 1 2.69-.625L5.267 7.099a1.44 1.44 0 0 0-.833.407l-.852.851a1.458 1.458 0 0 0 1.03 2.486c.39 0 .755-.152 1.03-.426l.852-.852c.231-.231.363-.522.406-.824l1.04-1.038zm4.295-5.937A2.596 2.596 0 0 0 10.387 1c-.698 0-1.355.272-1.849.766l-.852.851a2.614 2.614 0 0 0-.624 2.688l1.036-1.036c.041-.304.173-.6.407-.833l.852-.852c.275-.275.64-.426 1.03-.426a1.458 1.458 0 0 1 1.03 2.486l-.852.851a1.442 1.442 0 0 1-.824.406l-1.04 1.04a2.596 2.596 0 0 0 2.683-.628l.851-.85a2.616 2.616 0 0 0 0-3.697zm-6.88 6.883a.577.577 0 0 0 .82 0l3.474-3.474a.579.579 0 1 0-.819-.82L5.355 7.83a.579.579 0 0 0 0 .819z\"\n  })));\n}\nmodule.exports = function Buttons(props) {\n  var file = props.file,\n    uploadInProgressOrComplete = props.uploadInProgressOrComplete,\n    canEditFile = props.canEditFile,\n    metaFields = props.metaFields,\n    showLinkToFileUploadResult = props.showLinkToFileUploadResult,\n    showRemoveButton = props.showRemoveButton,\n    i18n = props.i18n,\n    removeFile = props.removeFile,\n    toggleFileCard = props.toggleFileCard,\n    openFileEditor = props.openFileEditor,\n    log = props.log,\n    info = props.info;\n  var editAction = function editAction() {\n    if (metaFields && metaFields.length > 0) {\n      toggleFileCard(true, file.id);\n    } else {\n      openFileEditor(file);\n    }\n  };\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-actionWrapper\"\n  }, h(EditButton, {\n    i18n: i18n,\n    file: file,\n    uploadInProgressOrComplete: uploadInProgressOrComplete,\n    canEditFile: canEditFile,\n    metaFields: metaFields,\n    onClick: editAction\n  }), showLinkToFileUploadResult && file.uploadURL ? h(CopyLinkButton, {\n    file: file,\n    i18n: i18n,\n    info: info,\n    log: log\n  }) : null, showRemoveButton ? h(RemoveButton, {\n    i18n: i18n,\n    info: props.info,\n    log: props.log,\n    onClick: function onClick() {\n      return removeFile(file.id, 'removed-by-user');\n    }\n  }) : null);\n};","var _require = require('preact'),\n  h = _require.h;\nvar prettierBytes = require('@transloadit/prettier-bytes');\nvar truncateString = require('@uppy/utils/lib/truncateString');\nvar renderAcquirerIcon = function renderAcquirerIcon(acquirer, props) {\n  return h(\"span\", {\n    title: props.i18n('fileSource', {\n      name: acquirer.name\n    })\n  }, acquirer.icon());\n};\nvar renderFileName = function renderFileName(props) {\n  // Take up at most 2 lines on any screen\n  var maxNameLength; // For very small mobile screens\n\n  if (props.containerWidth <= 352) {\n    maxNameLength = 35; // For regular mobile screens\n  } else if (props.containerWidth <= 576) {\n    maxNameLength = 60; // For desktops\n  } else {\n    maxNameLength = 30;\n  }\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-name\",\n    title: props.file.meta.name\n  }, truncateString(props.file.meta.name, maxNameLength));\n};\nvar renderFileSize = function renderFileSize(props) {\n  return props.file.size && h(\"div\", {\n    className: \"uppy-Dashboard-Item-statusSize\"\n  }, prettierBytes(props.file.size));\n};\nvar ReSelectButton = function ReSelectButton(props) {\n  return props.file.isGhost && h(\"span\", null, \" \\u2022 \", h(\"button\", {\n    className: \"uppy-u-reset uppy-c-btn uppy-Dashboard-Item-reSelect\",\n    type: \"button\",\n    onClick: props.toggleAddFilesPanel\n  }, props.i18n('reSelect')));\n};\nvar ErrorButton = function ErrorButton(_ref) {\n  var file = _ref.file,\n    onClick = _ref.onClick;\n  if (file.error) {\n    return h(\"span\", {\n      className: \"uppy-Dashboard-Item-errorDetails\",\n      \"aria-label\": file.error,\n      \"data-microtip-position\": \"bottom\",\n      \"data-microtip-size\": \"medium\",\n      role: \"tooltip\",\n      onClick: onClick\n    }, \"?\");\n  }\n  return null;\n};\nmodule.exports = function FileInfo(props) {\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-fileInfo\",\n    \"data-uppy-file-source\": props.file.source\n  }, renderFileName(props), h(\"div\", {\n    className: \"uppy-Dashboard-Item-status\"\n  }, renderFileSize(props), ReSelectButton(props), h(ErrorButton, {\n    file: props.file,\n    onClick: function onClick() {\n      alert(props.file.error);\n    }\n  })));\n};","var _require = require('preact'),\n  h = _require.h;\nvar FilePreview = require('../../FilePreview');\nvar getFileTypeIcon = require('../../../utils/getFileTypeIcon');\nmodule.exports = function FilePreviewAndLink(props) {\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-previewInnerWrap\",\n    style: {\n      backgroundColor: getFileTypeIcon(props.file.type).color\n    }\n  }, props.showLinkToFileUploadResult && props.file.uploadURL && h(\"a\", {\n    className: \"uppy-Dashboard-Item-previewLink\",\n    href: props.file.uploadURL,\n    rel: \"noreferrer noopener\",\n    target: \"_blank\",\n    \"aria-label\": props.file.meta.name\n  }), h(FilePreview, {\n    file: props.file\n  }));\n};","var _require = require('preact'),\n  h = _require.h;\nfunction onPauseResumeCancelRetry(props) {\n  if (props.isUploaded) return;\n  if (props.error && !props.hideRetryButton) {\n    props.retryUpload(props.file.id);\n    return;\n  }\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    props.pauseUpload(props.file.id);\n  } else if (props.individualCancellation && !props.hideCancelButton) {\n    props.cancelUpload(props.file.id);\n  }\n}\nfunction progressIndicatorTitle(props) {\n  if (props.isUploaded) {\n    return props.i18n('uploadComplete');\n  }\n  if (props.error) {\n    return props.i18n('retryUpload');\n  }\n  if (props.resumableUploads) {\n    if (props.file.isPaused) {\n      return props.i18n('resumeUpload');\n    }\n    return props.i18n('pauseUpload');\n  }\n  if (props.individualCancellation) {\n    return props.i18n('cancelUpload');\n  }\n  return '';\n}\nfunction ProgressIndicatorButton(props) {\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, h(\"button\", {\n    className: \"uppy-u-reset uppy-Dashboard-Item-progressIndicator\",\n    type: \"button\",\n    \"aria-label\": progressIndicatorTitle(props),\n    title: progressIndicatorTitle(props),\n    onClick: function onClick() {\n      return onPauseResumeCancelRetry(props);\n    }\n  }, props.children));\n}\nfunction ProgressCircleContainer(_ref) {\n  var children = _ref.children;\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"70\",\n    height: \"70\",\n    viewBox: \"0 0 36 36\",\n    className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--circle\"\n  }, children);\n}\nfunction ProgressCircle(_ref2) {\n  var progress = _ref2.progress;\n  // circle length equals 2 * PI * R\n  var circleLength = 2 * Math.PI * 15;\n  return h(\"g\", null, h(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--bg\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    \"stroke-width\": \"2\",\n    fill: \"none\"\n  }), h(\"circle\", {\n    className: \"uppy-Dashboard-Item-progressIcon--progress\",\n    r: \"15\",\n    cx: \"18\",\n    cy: \"18\",\n    transform: \"rotate(-90, 18, 18)\",\n    fill: \"none\",\n    \"stroke-width\": \"2\",\n    \"stroke-dasharray\": circleLength,\n    \"stroke-dashoffset\": circleLength - circleLength / 100 * progress\n  }));\n}\nmodule.exports = function FileProgress(props) {\n  // Nothing if upload has not started\n  if (!props.file.progress.uploadStarted) {\n    return null;\n  } // Green checkmark when complete\n\n  if (props.isUploaded) {\n    return h(\"div\", {\n      className: \"uppy-Dashboard-Item-progress\"\n    }, h(\"div\", {\n      className: \"uppy-Dashboard-Item-progressIndicator\"\n    }, h(ProgressCircleContainer, null, h(\"circle\", {\n      r: \"15\",\n      cx: \"18\",\n      cy: \"18\",\n      fill: \"#1bb240\"\n    }), h(\"polygon\", {\n      className: \"uppy-Dashboard-Item-progressIcon--check\",\n      transform: \"translate(2, 3)\",\n      points: \"14 22.5 7 15.2457065 8.99985857 13.1732815 14 18.3547104 22.9729883 9 25 11.1005634\"\n    }))));\n  }\n  if (props.recoveredState) {\n    return;\n  } // Retry button for error\n\n  if (props.error && !props.hideRetryButton) {\n    return h(ProgressIndicatorButton, props, h(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-Dashboard-Item-progressIcon--retry\",\n      width: \"28\",\n      height: \"31\",\n      viewBox: \"0 0 16 19\"\n    }, h(\"path\", {\n      d: \"M16 11a8 8 0 1 1-8-8v2a6 6 0 1 0 6 6h2z\"\n    }), h(\"path\", {\n      d: \"M7.9 3H10v2H7.9z\"\n    }), h(\"path\", {\n      d: \"M8.536.5l3.535 3.536-1.414 1.414L7.12 1.914z\"\n    }), h(\"path\", {\n      d: \"M10.657 2.621l1.414 1.415L8.536 7.57 7.12 6.157z\"\n    })));\n  } // Pause/resume button for resumable uploads\n\n  if (props.resumableUploads && !props.hidePauseResumeButton) {\n    return h(ProgressIndicatorButton, props, h(ProgressCircleContainer, null, h(ProgressCircle, {\n      progress: props.file.progress.percentage\n    }), props.file.isPaused ? h(\"polygon\", {\n      className: \"uppy-Dashboard-Item-progressIcon--play\",\n      transform: \"translate(3, 3)\",\n      points: \"12 20 12 10 20 15\"\n    }) : h(\"g\", {\n      className: \"uppy-Dashboard-Item-progressIcon--pause\",\n      transform: \"translate(14.5, 13)\"\n    }, h(\"rect\", {\n      x: \"0\",\n      y: \"0\",\n      width: \"2\",\n      height: \"10\",\n      rx: \"0\"\n    }), h(\"rect\", {\n      x: \"5\",\n      y: \"0\",\n      width: \"2\",\n      height: \"10\",\n      rx: \"0\"\n    }))));\n  } // Cancel button for non-resumable uploads if individualCancellation is supported (not bundled)\n\n  if (!props.resumableUploads && props.individualCancellation && !props.hideCancelButton) {\n    return h(ProgressIndicatorButton, props, h(ProgressCircleContainer, null, h(ProgressCircle, {\n      progress: props.file.progress.percentage\n    }), h(\"polygon\", {\n      className: \"cancel\",\n      transform: \"translate(2, 2)\",\n      points: \"19.8856516 11.0625 16 14.9481516 12.1019737 11.0625 11.0625 12.1143484 14.9481516 16 11.0625 19.8980263 12.1019737 20.9375 16 17.0518484 19.8856516 20.9375 20.9375 19.8980263 17.0518484 16 20.9375 12\"\n    })));\n  } // Just progress when buttons are disabled\n\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-progress\"\n  }, h(\"div\", {\n    className: \"uppy-Dashboard-Item-progressIndicator\"\n  }, h(ProgressCircleContainer, null, h(ProgressCircle, {\n    progress: props.file.progress.percentage\n  }))));\n};","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('preact'),\n  h = _require.h,\n  Component = _require.Component;\nvar classNames = require('classnames');\nvar shallowEqual = require('is-shallow-equal');\nvar FilePreviewAndLink = require('./FilePreviewAndLink');\nvar FileProgress = require('./FileProgress');\nvar FileInfo = require('./FileInfo');\nvar Buttons = require('./Buttons');\nmodule.exports = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(FileItem, _Component);\n  function FileItem() {\n    return _Component.apply(this, arguments) || this;\n  }\n  var _proto = FileItem.prototype;\n  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return !shallowEqual(this.props, nextProps);\n  };\n  _proto.componentDidMount = function componentDidMount() {\n    var file = this.props.file;\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  } // VirtualList mounts FileItems again and they emit `thumbnail:request`\n  // Otherwise thumbnails are broken or missing after Golden Retriever restores files\n  ;\n\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    var file = this.props.file;\n    if (!file.preview) {\n      this.props.handleRequestThumbnail(file);\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    var file = this.props.file;\n    if (!file.preview) {\n      this.props.handleCancelThumbnail(file);\n    }\n  };\n  _proto.render = function render() {\n    var file = this.props.file;\n    var isProcessing = file.progress.preprocess || file.progress.postprocess;\n    var isUploaded = file.progress.uploadComplete && !isProcessing && !file.error;\n    var uploadInProgressOrComplete = file.progress.uploadStarted || isProcessing;\n    var uploadInProgress = file.progress.uploadStarted && !file.progress.uploadComplete || isProcessing;\n    var error = file.error || false; // File that Golden Retriever was able to partly restore (only meta, not blob),\n    // users still need to re-add it, so it’s a ghost\n\n    var isGhost = file.isGhost;\n    var showRemoveButton = this.props.individualCancellation ? !isUploaded : !uploadInProgress && !isUploaded;\n    if (isUploaded && this.props.showRemoveButtonAfterComplete) {\n      showRemoveButton = true;\n    }\n    var dashboardItemClass = classNames({\n      'uppy-Dashboard-Item': true,\n      'is-inprogress': uploadInProgress && !this.props.recoveredState,\n      'is-processing': isProcessing,\n      'is-complete': isUploaded,\n      'is-error': !!error,\n      'is-resumable': this.props.resumableUploads,\n      'is-noIndividualCancellation': !this.props.individualCancellation,\n      'is-ghost': isGhost\n    });\n    return h(\"div\", {\n      className: dashboardItemClass,\n      id: \"uppy_\" + file.id,\n      role: this.props.role\n    }, h(\"div\", {\n      className: \"uppy-Dashboard-Item-preview\"\n    }, h(FilePreviewAndLink, {\n      file: file,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult\n    }), h(FileProgress, {\n      file: file,\n      error: error,\n      isUploaded: isUploaded,\n      hideRetryButton: this.props.hideRetryButton,\n      hideCancelButton: this.props.hideCancelButton,\n      hidePauseResumeButton: this.props.hidePauseResumeButton,\n      recoveredState: this.props.recoveredState,\n      showRemoveButtonAfterComplete: this.props.showRemoveButtonAfterComplete,\n      resumableUploads: this.props.resumableUploads,\n      individualCancellation: this.props.individualCancellation,\n      pauseUpload: this.props.pauseUpload,\n      cancelUpload: this.props.cancelUpload,\n      retryUpload: this.props.retryUpload,\n      i18n: this.props.i18n\n    })), h(\"div\", {\n      className: \"uppy-Dashboard-Item-fileInfoAndButtons\"\n    }, h(FileInfo, {\n      file: file,\n      id: this.props.id,\n      acquirers: this.props.acquirers,\n      containerWidth: this.props.containerWidth,\n      i18n: this.props.i18n,\n      toggleAddFilesPanel: this.props.toggleAddFilesPanel\n    }), h(Buttons, {\n      file: file,\n      metaFields: this.props.metaFields,\n      showLinkToFileUploadResult: this.props.showLinkToFileUploadResult,\n      showRemoveButton: showRemoveButton,\n      canEditFile: this.props.canEditFile,\n      uploadInProgressOrComplete: uploadInProgressOrComplete,\n      removeFile: this.props.removeFile,\n      toggleFileCard: this.props.toggleFileCard,\n      openFileEditor: this.props.openFileEditor,\n      i18n: this.props.i18n,\n      log: this.props.log,\n      info: this.props.info\n    })));\n  };\n  return FileItem;\n}(Component);","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar FileItem = require('./FileItem/index.js');\nvar VirtualList = require('./VirtualList');\nvar classNames = require('classnames');\nvar _require = require('preact'),\n  h = _require.h;\nfunction chunks(list, size) {\n  var chunked = [];\n  var currentChunk = [];\n  list.forEach(function (item, i) {\n    if (currentChunk.length < size) {\n      currentChunk.push(item);\n    } else {\n      chunked.push(currentChunk);\n      currentChunk = [item];\n    }\n  });\n  if (currentChunk.length) chunked.push(currentChunk);\n  return chunked;\n}\nmodule.exports = function (props) {\n  var noFiles = props.totalFileCount === 0;\n  var dashboardFilesClass = classNames('uppy-Dashboard-files', {\n    'uppy-Dashboard-files--noFiles': noFiles\n  }); // It's not great that this is hardcoded!\n  // It's ESPECIALLY not great that this is checking against `itemsPerRow`!\n\n  var rowHeight = props.itemsPerRow === 1 // Mobile\n  ? 71 // 190px height + 2 * 5px margin\n  : 200;\n  var fileProps = {\n    // FIXME This is confusing, it's actually the Dashboard's plugin ID\n    id: props.id,\n    error: props.error,\n    // TODO move this to context\n    i18n: props.i18n,\n    log: props.log,\n    info: props.info,\n    // features\n    acquirers: props.acquirers,\n    resumableUploads: props.resumableUploads,\n    individualCancellation: props.individualCancellation,\n    // visual options\n    hideRetryButton: props.hideRetryButton,\n    hidePauseResumeButton: props.hidePauseResumeButton,\n    hideCancelButton: props.hideCancelButton,\n    showLinkToFileUploadResult: props.showLinkToFileUploadResult,\n    showRemoveButtonAfterComplete: props.showRemoveButtonAfterComplete,\n    isWide: props.isWide,\n    metaFields: props.metaFields,\n    recoveredState: props.recoveredState,\n    // callbacks\n    retryUpload: props.retryUpload,\n    pauseUpload: props.pauseUpload,\n    cancelUpload: props.cancelUpload,\n    toggleFileCard: props.toggleFileCard,\n    removeFile: props.removeFile,\n    handleRequestThumbnail: props.handleRequestThumbnail,\n    handleCancelThumbnail: props.handleCancelThumbnail\n  };\n  var sortByGhostComesFirst = function sortByGhostComesFirst(file1, file2) {\n    return props.files[file2].isGhost - props.files[file1].isGhost;\n  }; // Sort files by file.isGhost, ghost files first, only if recoveredState is present\n\n  var files = Object.keys(props.files);\n  if (props.recoveredState) files.sort(sortByGhostComesFirst);\n  var rows = chunks(files, props.itemsPerRow);\n  function renderRow(row) {\n    return (\n      // The `role=\"presentation` attribute ensures that the list items are properly associated with the `VirtualList` element\n      // We use the first file ID as the key—this should not change across scroll rerenders\n      h(\"div\", {\n        role: \"presentation\",\n        key: row[0]\n      }, row.map(function (fileID) {\n        return h(FileItem, _extends({\n          key: fileID\n        }, fileProps, {\n          role: \"listitem\",\n          openFileEditor: props.openFileEditor,\n          canEditFile: props.canEditFile,\n          toggleAddFilesPanel: props.toggleAddFilesPanel,\n          file: props.files[fileID]\n        }));\n      }))\n    );\n  }\n  return h(VirtualList, {\n    class: dashboardFilesClass,\n    role: \"list\",\n    data: rows,\n    renderRow: renderRow,\n    rowHeight: rowHeight\n  });\n};","var getFileTypeIcon = require('../utils/getFileTypeIcon');\nvar _require = require('preact'),\n  h = _require.h;\nmodule.exports = function FilePreview(props) {\n  var file = props.file;\n  if (file.preview) {\n    return h(\"img\", {\n      className: \"uppy-Dashboard-Item-previewImg\",\n      alt: file.name,\n      src: file.preview\n    });\n  }\n  var _getFileTypeIcon = getFileTypeIcon(file.type),\n    color = _getFileTypeIcon.color,\n    icon = _getFileTypeIcon.icon;\n  return h(\"div\", {\n    className: \"uppy-Dashboard-Item-previewIconWrap\"\n  }, h(\"span\", {\n    className: \"uppy-Dashboard-Item-previewIcon\",\n    style: {\n      color: color\n    }\n  }, icon), h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-Dashboard-Item-previewIconBg\",\n    width: \"58\",\n    height: \"76\",\n    viewBox: \"0 0 58 76\"\n  }, h(\"rect\", {\n    fill: \"#FFF\",\n    width: \"58\",\n    height: \"76\",\n    rx: \"3\",\n    fillRule: \"evenodd\"\n  })));\n};","var _require = require('preact'),\n  h = _require.h;\nvar classNames = require('classnames');\nvar ignoreEvent = require('../utils/ignoreEvent.js');\nfunction PickerPanelContent(props) {\n  return h(\"div\", {\n    className: classNames('uppy-DashboardContent-panel', props.className),\n    role: \"tabpanel\",\n    \"data-uppy-panelType\": \"PickerPanel\",\n    id: \"uppy-DashboardContent-panel--\" + props.activePickerPanel.id,\n    onDragOver: ignoreEvent,\n    onDragLeave: ignoreEvent,\n    onDrop: ignoreEvent,\n    onPaste: ignoreEvent\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, h(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, props.i18n('importFrom', {\n    name: props.activePickerPanel.name\n  })), h(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.hideAllPanels\n  }, props.i18n('cancel'))), h(\"div\", {\n    className: \"uppy-DashboardContent-panelBody\"\n  }, props.getPlugin(props.activePickerPanel.id).render(props.state)));\n}\nmodule.exports = PickerPanelContent;","var _require = require('preact'),\n  h = _require.h;\nvar uploadStates = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete',\n  STATE_PAUSED: 'paused'\n};\nfunction getUploadingState(isAllErrored, isAllComplete, isAllPaused, files) {\n  if (files === void 0) {\n    files = {};\n  }\n  if (isAllErrored) {\n    return uploadStates.STATE_ERROR;\n  }\n  if (isAllComplete) {\n    return uploadStates.STATE_COMPLETE;\n  }\n  if (isAllPaused) {\n    return uploadStates.STATE_PAUSED;\n  }\n  var state = uploadStates.STATE_WAITING;\n  var fileIDs = Object.keys(files);\n  for (var i = 0; i < fileIDs.length; i++) {\n    var progress = files[fileIDs[i]].progress; // If ANY files are being uploaded right now, show the uploading state.\n\n    if (progress.uploadStarted && !progress.uploadComplete) {\n      return uploadStates.STATE_UPLOADING;\n    } // If files are being preprocessed AND postprocessed at this time, we show the\n    // preprocess state. If any files are being uploaded we show uploading.\n\n    if (progress.preprocess && state !== uploadStates.STATE_UPLOADING) {\n      state = uploadStates.STATE_PREPROCESSING;\n    } // If NO files are being preprocessed or uploaded right now, but some files are\n    // being postprocessed, show the postprocess state.\n\n    if (progress.postprocess && state !== uploadStates.STATE_UPLOADING && state !== uploadStates.STATE_PREPROCESSING) {\n      state = uploadStates.STATE_POSTPROCESSING;\n    }\n  }\n  return state;\n}\nfunction UploadStatus(props) {\n  var uploadingState = getUploadingState(props.isAllErrored, props.isAllComplete, props.isAllPaused, props.files);\n  switch (uploadingState) {\n    case 'uploading':\n      return props.i18n('uploadingXFiles', {\n        smart_count: props.inProgressNotPausedFiles.length\n      });\n    case 'preprocessing':\n    case 'postprocessing':\n      return props.i18n('processingXFiles', {\n        smart_count: props.processingFiles.length\n      });\n    case 'paused':\n      return props.i18n('uploadPaused');\n    case 'waiting':\n      return props.i18n('xFilesSelected', {\n        smart_count: props.newFiles.length\n      });\n    case 'complete':\n      return props.i18n('uploadComplete');\n  }\n}\nfunction PanelTopBar(props) {\n  var allowNewUpload = props.allowNewUpload; // TODO maybe this should be done in ../index.js, then just pass that down as `allowNewUpload`\n\n  if (allowNewUpload && props.maxNumberOfFiles) {\n    allowNewUpload = props.totalFileCount < props.maxNumberOfFiles;\n  }\n  return h(\"div\", {\n    className: \"uppy-DashboardContent-bar\"\n  }, !props.isAllComplete && !props.hideCancelButton ? h(\"button\", {\n    className: \"uppy-DashboardContent-back\",\n    type: \"button\",\n    onClick: props.cancelAll\n  }, props.i18n('cancel')) : h(\"div\", null), h(\"div\", {\n    className: \"uppy-DashboardContent-title\",\n    role: \"heading\",\n    \"aria-level\": \"1\"\n  }, h(UploadStatus, props)), allowNewUpload ? h(\"button\", {\n    className: \"uppy-DashboardContent-addMore\",\n    type: \"button\",\n    \"aria-label\": props.i18n('addMoreFiles'),\n    title: props.i18n('addMoreFiles'),\n    onClick: function onClick() {\n      return props.toggleAddFilesPanel(true);\n    }\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"15\",\n    height: \"15\",\n    viewBox: \"0 0 15 15\"\n  }, h(\"path\", {\n    d: \"M8 6.5h6a.5.5 0 0 1 .5.5v.5a.5.5 0 0 1-.5.5H8v6a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V8h-6a.5.5 0 0 1-.5-.5V7a.5.5 0 0 1 .5-.5h6v-6A.5.5 0 0 1 7 0h.5a.5.5 0 0 1 .5.5v6z\"\n  })), h(\"span\", {\n    className: \"uppy-DashboardContent-addMoreCaption\"\n  }, props.i18n('addMore'))) : h(\"div\", null));\n}\nmodule.exports = PanelTopBar;","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('preact'),\n  cloneElement = _require.cloneElement,\n  Component = _require.Component;\nvar classNames = require('classnames');\nvar transitionName = 'uppy-transition-slideDownUp';\nvar duration = 250;\n/**\n * Vertical slide transition.\n *\n * This can take a _single_ child component, which _must_ accept a `className` prop.\n *\n * Currently this is specific to the `uppy-transition-slideDownUp` transition,\n * but it should be simple to extend this for any type of single-element\n * transition by setting the CSS name and duration as props.\n */\n\nvar Slide = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(Slide, _Component);\n  function Slide(props) {\n    var _this;\n    _this = _Component.call(this, props) || this;\n    _this.state = {\n      cachedChildren: null,\n      className: ''\n    };\n    return _this;\n  }\n  var _proto = Slide.prototype;\n  _proto.componentWillUpdate = function componentWillUpdate(nextProps) {\n    var _this2 = this;\n    var cachedChildren = this.state.cachedChildren;\n    var child = nextProps.children[0];\n    if (cachedChildren === child) return;\n    var patch = {\n      cachedChildren: child\n    }; // Enter transition\n\n    if (child && !cachedChildren) {\n      patch.className = transitionName + \"-enter\";\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.leaveTimeout);\n      this.leaveTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(function () {\n        // Force it to render before we add the active class\n        _this2.base.getBoundingClientRect();\n        _this2.setState({\n          className: transitionName + \"-enter \" + transitionName + \"-enter-active\"\n        });\n        _this2.enterTimeout = setTimeout(function () {\n          _this2.setState({\n            className: ''\n          });\n        }, duration);\n      });\n    } // Leave transition\n\n    if (cachedChildren && !child && this.leaveTimeout === undefined) {\n      patch.cachedChildren = cachedChildren;\n      patch.className = transitionName + \"-leave\";\n      cancelAnimationFrame(this.animationFrame);\n      clearTimeout(this.enterTimeout);\n      this.enterTimeout = undefined;\n      this.animationFrame = requestAnimationFrame(function () {\n        _this2.setState({\n          className: transitionName + \"-leave \" + transitionName + \"-leave-active\"\n        });\n        _this2.leaveTimeout = setTimeout(function () {\n          _this2.setState({\n            cachedChildren: null,\n            className: ''\n          });\n        }, duration);\n      });\n    }\n    this.setState(patch);\n  };\n  _proto.render = function render() {\n    var _this$state = this.state,\n      cachedChildren = _this$state.cachedChildren,\n      className = _this$state.className;\n    if (!cachedChildren) {\n      return null;\n    }\n    return cloneElement(cachedChildren, {\n      className: classNames(className, cachedChildren.attributes.className)\n    });\n  };\n  return Slide;\n}(Component);\nmodule.exports = Slide;","var _excluded = [\"data\", \"rowHeight\", \"renderRow\", \"overscanCount\", \"sync\"];\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\n\n/**\n * Adapted from preact-virtual-list: https://github.com/developit/preact-virtual-list\n *\n * © 2016 Jason Miller\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * Adaptations:\n * - Added role=presentation to helper elements\n * - Tweaked styles for Uppy's Dashboard use case\n */\nvar _require = require('preact'),\n  h = _require.h,\n  Component = _require.Component;\nvar STYLE_INNER = {\n  position: 'relative',\n  // Disabled for our use case: the wrapper elements around FileList already deal with overflow,\n  // and this additional property would hide things that we want to show.\n  //\n  // overflow: 'hidden',\n  width: '100%',\n  minHeight: '100%'\n};\nvar STYLE_CONTENT = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  // Because the `top` value gets set to some offset, this `height` being 100% would make the scrollbar\n  // stretch far beyond the content. For our use case, the content div actually can get its height from\n  // the elements inside it, so we don't need to specify a `height` property at all.\n  //\n  // height: '100%',\n  width: '100%',\n  overflow: 'visible'\n};\nvar VirtualList = /*#__PURE__*/function (_Component) {\n  _inheritsLoose(VirtualList, _Component);\n  function VirtualList(props) {\n    var _this;\n    _this = _Component.call(this, props) || this; // The currently focused node, used to retain focus when the visible rows change.\n    // To avoid update loops, this should not cause state updates, so it's kept as a plain property.\n\n    _this.handleResize = function () {\n      _this.resize();\n    };\n    _this.handleScroll = function () {\n      _this.setState({\n        offset: _this.base.scrollTop\n      });\n      if (_this.props.sync) {\n        _this.forceUpdate();\n      }\n    };\n    _this.focusElement = null;\n    _this.state = {\n      offset: 0,\n      height: 0\n    };\n    return _this;\n  }\n  var _proto = VirtualList.prototype;\n  _proto.resize = function resize() {\n    if (this.state.height !== this.base.offsetHeight) {\n      this.setState({\n        height: this.base.offsetHeight\n      });\n    }\n  };\n  _proto.componentWillUpdate = function componentWillUpdate() {\n    if (this.base.contains(document.activeElement)) {\n      this.focusElement = document.activeElement;\n    }\n  };\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    // Maintain focus when rows are added and removed.\n    if (this.focusElement && this.focusElement.parentNode && document.activeElement !== this.focusElement) {\n      this.focusElement.focus();\n    }\n    this.focusElement = null;\n    this.resize();\n  };\n  _proto.componentDidMount = function componentDidMount() {\n    this.resize();\n    window.addEventListener('resize', this.handleResize);\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    window.removeEventListener('resize', this.handleResize);\n  };\n  _proto.render = function render(_ref) {\n    var data = _ref.data,\n      rowHeight = _ref.rowHeight,\n      renderRow = _ref.renderRow,\n      _ref$overscanCount = _ref.overscanCount,\n      overscanCount = _ref$overscanCount === void 0 ? 10 : _ref$overscanCount,\n      sync = _ref.sync,\n      props = _objectWithoutPropertiesLoose(_ref, _excluded);\n    var _this$state = this.state,\n      offset = _this$state.offset,\n      height = _this$state.height; // first visible row index\n\n    var start = Math.floor(offset / rowHeight); // actual number of visible rows (without overscan)\n\n    var visibleRowCount = Math.floor(height / rowHeight); // Overscan: render blocks of rows modulo an overscan row count\n    // This dramatically reduces DOM writes during scrolling\n\n    if (overscanCount) {\n      start = Math.max(0, start - start % overscanCount);\n      visibleRowCount += overscanCount;\n    } // last visible + overscan row index + padding to allow keyboard focus to travel past the visible area\n\n    var end = start + visibleRowCount + 4; // data slice currently in viewport plus overscan items\n\n    var selection = data.slice(start, end);\n    var styleInner = _extends({}, STYLE_INNER, {\n      height: data.length * rowHeight\n    });\n    var styleContent = _extends({}, STYLE_CONTENT, {\n      top: start * rowHeight\n    }); // The `role=\"presentation\"` attributes ensure that these wrapper elements are not treated as list\n    // items by accessibility and outline tools.\n\n    return h(\"div\", _extends({\n      onScroll: this.handleScroll\n    }, props), h(\"div\", {\n      role: \"presentation\",\n      style: styleInner\n    }, h(\"div\", {\n      role: \"presentation\",\n      style: styleContent\n    }, selection.map(renderRow))));\n  };\n  return VirtualList;\n}(Component);\nmodule.exports = VirtualList;","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('preact'),\n  h = _require.h;\nvar _require2 = require('@uppy/core'),\n  Plugin = _require2.Plugin;\nvar Translator = require('@uppy/utils/lib/Translator');\nvar DashboardUI = require('./components/Dashboard');\nvar StatusBar = require('@uppy/status-bar');\nvar Informer = require('@uppy/informer');\nvar ThumbnailGenerator = require('@uppy/thumbnail-generator');\nvar findAllDOMElements = require('@uppy/utils/lib/findAllDOMElements');\nvar toArray = require('@uppy/utils/lib/toArray');\nvar getDroppedFiles = require('@uppy/utils/lib/getDroppedFiles');\nvar getTextDirection = require('@uppy/utils/lib/getTextDirection');\nvar trapFocus = require('./utils/trapFocus');\nvar cuid = require('cuid');\nvar ResizeObserver = require('resize-observer-polyfill').default || require('resize-observer-polyfill');\nvar createSuperFocus = require('./utils/createSuperFocus');\nvar memoize = require('memoize-one').default || require('memoize-one');\nvar FOCUSABLE_ELEMENTS = require('@uppy/utils/lib/FOCUSABLE_ELEMENTS');\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\nfunction createPromise() {\n  var o = {};\n  o.promise = new Promise(function (resolve, reject) {\n    o.resolve = resolve;\n    o.reject = reject;\n  });\n  return o;\n}\nfunction defaultPickerIcon() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"30\",\n    height: \"30\",\n    viewBox: \"0 0 30 30\"\n  }, h(\"path\", {\n    d: \"M15 30c8.284 0 15-6.716 15-15 0-8.284-6.716-15-15-15C6.716 0 0 6.716 0 15c0 8.284 6.716 15 15 15zm4.258-12.676v6.846h-8.426v-6.846H5.204l9.82-12.364 9.82 12.364H19.26z\"\n  }));\n}\n/**\n * Dashboard UI with previews, metadata editing, tabs for various services and more\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(Dashboard, _Plugin);\n  function Dashboard(uppy, _opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, _opts) || this;\n    _this.setOptions = function (newOpts) {\n      _Plugin.prototype.setOptions.call(_assertThisInitialized(_this), newOpts);\n      _this.i18nInit();\n    };\n    _this.i18nInit = function () {\n      _this.translator = new Translator([_this.defaultLocale, _this.uppy.locale, _this.opts.locale]);\n      _this.i18n = _this.translator.translate.bind(_this.translator);\n      _this.i18nArray = _this.translator.translateArray.bind(_this.translator);\n      _this.setPluginState(); // so that UI re-renders and we see the updated locale\n    };\n\n    _this.removeTarget = function (plugin) {\n      var pluginState = _this.getPluginState(); // filter out the one we want to remove\n\n      var newTargets = pluginState.targets.filter(function (target) {\n        return target.id !== plugin.id;\n      });\n      _this.setPluginState({\n        targets: newTargets\n      });\n    };\n    _this.addTarget = function (plugin) {\n      var callerPluginId = plugin.id || plugin.constructor.name;\n      var callerPluginName = plugin.title || callerPluginId;\n      var callerPluginType = plugin.type;\n      if (callerPluginType !== 'acquirer' && callerPluginType !== 'progressindicator' && callerPluginType !== 'editor') {\n        var msg = 'Dashboard: can only be targeted by plugins of types: acquirer, progressindicator, editor';\n        _this.uppy.log(msg, 'error');\n        return;\n      }\n      var target = {\n        id: callerPluginId,\n        name: callerPluginName,\n        type: callerPluginType\n      };\n      var state = _this.getPluginState();\n      var newTargets = state.targets.slice();\n      newTargets.push(target);\n      _this.setPluginState({\n        targets: newTargets\n      });\n      return _this.el;\n    };\n    _this.hideAllPanels = function () {\n      var update = {\n        activePickerPanel: false,\n        showAddFilesPanel: false,\n        activeOverlayType: null,\n        fileCardFor: null,\n        showFileEditor: false\n      };\n      var current = _this.getPluginState();\n      if (current.activePickerPanel === update.activePickerPanel && current.showAddFilesPanel === update.showAddFilesPanel && current.showFileEditor === update.showFileEditor && current.activeOverlayType === update.activeOverlayType) {\n        // avoid doing a state update if nothing changed\n        return;\n      }\n      _this.setPluginState(update);\n    };\n    _this.showPanel = function (id) {\n      var _this$getPluginState = _this.getPluginState(),\n        targets = _this$getPluginState.targets;\n      var activePickerPanel = targets.filter(function (target) {\n        return target.type === 'acquirer' && target.id === id;\n      })[0];\n      _this.setPluginState({\n        activePickerPanel: activePickerPanel,\n        activeOverlayType: 'PickerPanel'\n      });\n    };\n    _this.canEditFile = function (file) {\n      var _this$getPluginState2 = _this.getPluginState(),\n        targets = _this$getPluginState2.targets;\n      var editors = _this._getEditors(targets);\n      return editors.some(function (target) {\n        return _this.uppy.getPlugin(target.id).canEditFile(file);\n      });\n    };\n    _this.openFileEditor = function (file) {\n      var _this$getPluginState3 = _this.getPluginState(),\n        targets = _this$getPluginState3.targets;\n      var editors = _this._getEditors(targets);\n      _this.setPluginState({\n        showFileEditor: true,\n        fileCardFor: file.id || null,\n        activeOverlayType: 'FileEditor'\n      });\n      editors.forEach(function (editor) {\n        _this.uppy.getPlugin(editor.id).selectFile(file);\n      });\n    };\n    _this.saveFileEditor = function () {\n      var _this$getPluginState4 = _this.getPluginState(),\n        targets = _this$getPluginState4.targets;\n      var editors = _this._getEditors(targets);\n      editors.forEach(function (editor) {\n        _this.uppy.getPlugin(editor.id).save();\n      });\n      _this.hideAllPanels();\n    };\n    _this.openModal = function () {\n      var _createPromise = createPromise(),\n        promise = _createPromise.promise,\n        resolve = _createPromise.resolve; // save scroll position\n\n      _this.savedScrollPosition = window.pageYOffset; // save active element, so we can restore focus when modal is closed\n\n      _this.savedActiveElement = document.activeElement;\n      if (_this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.add('uppy-Dashboard-isFixed');\n      }\n      if (_this.opts.animateOpenClose && _this.getPluginState().isClosing) {\n        var handler = function handler() {\n          _this.setPluginState({\n            isHidden: false\n          });\n          _this.el.removeEventListener('animationend', handler, false);\n          resolve();\n        };\n        _this.el.addEventListener('animationend', handler, false);\n      } else {\n        _this.setPluginState({\n          isHidden: false\n        });\n        resolve();\n      }\n      if (_this.opts.browserBackButtonClose) {\n        _this.updateBrowserHistory();\n      } // handle ESC and TAB keys in modal dialog\n\n      document.addEventListener('keydown', _this.handleKeyDownInModal);\n      _this.uppy.emit('dashboard:modal-open');\n      return promise;\n    };\n    _this.closeModal = function (opts) {\n      if (opts === void 0) {\n        opts = {};\n      }\n      var _opts2 = opts,\n        _opts2$manualClose = _opts2.manualClose,\n        manualClose = _opts2$manualClose === void 0 ? true : _opts2$manualClose;\n      var _this$getPluginState5 = _this.getPluginState(),\n        isHidden = _this$getPluginState5.isHidden,\n        isClosing = _this$getPluginState5.isClosing;\n      if (isHidden || isClosing) {\n        // short-circuit if animation is ongoing\n        return;\n      }\n      var _createPromise2 = createPromise(),\n        promise = _createPromise2.promise,\n        resolve = _createPromise2.resolve;\n      if (_this.opts.disablePageScrollWhenModalOpen) {\n        document.body.classList.remove('uppy-Dashboard-isFixed');\n      }\n      if (_this.opts.animateOpenClose) {\n        _this.setPluginState({\n          isClosing: true\n        });\n        var handler = function handler() {\n          _this.setPluginState({\n            isHidden: true,\n            isClosing: false\n          });\n          _this.superFocus.cancel();\n          _this.savedActiveElement.focus();\n          _this.el.removeEventListener('animationend', handler, false);\n          resolve();\n        };\n        _this.el.addEventListener('animationend', handler, false);\n      } else {\n        _this.setPluginState({\n          isHidden: true\n        });\n        _this.superFocus.cancel();\n        _this.savedActiveElement.focus();\n        resolve();\n      } // handle ESC and TAB keys in modal dialog\n\n      document.removeEventListener('keydown', _this.handleKeyDownInModal);\n      if (manualClose) {\n        if (_this.opts.browserBackButtonClose) {\n          // Make sure that the latest entry in the history state is our modal name\n          if (history.state && history.state[_this.modalName]) {\n            // Go back in history to clear out the entry we created (ultimately closing the modal)\n            history.go(-1);\n          }\n        }\n      }\n      _this.uppy.emit('dashboard:modal-closed');\n      return promise;\n    };\n    _this.isModalOpen = function () {\n      return !_this.getPluginState().isHidden || false;\n    };\n    _this.requestCloseModal = function () {\n      if (_this.opts.onRequestCloseModal) {\n        return _this.opts.onRequestCloseModal();\n      }\n      return _this.closeModal();\n    };\n    _this.setDarkModeCapability = function (isDarkModeOn) {\n      var _this$uppy$getState = _this.uppy.getState(),\n        capabilities = _this$uppy$getState.capabilities;\n      _this.uppy.setState({\n        capabilities: _extends({}, capabilities, {\n          darkMode: isDarkModeOn\n        })\n      });\n    };\n    _this.handleSystemDarkModeChange = function (event) {\n      var isDarkModeOnNow = event.matches;\n      _this.uppy.log(\"[Dashboard] Dark mode is \" + (isDarkModeOnNow ? 'on' : 'off'));\n      _this.setDarkModeCapability(isDarkModeOnNow);\n    };\n    _this.toggleFileCard = function (show, fileID) {\n      var file = _this.uppy.getFile(fileID);\n      if (show) {\n        _this.uppy.emit('dashboard:file-edit-start', file);\n      } else {\n        _this.uppy.emit('dashboard:file-edit-complete', file);\n      }\n      _this.setPluginState({\n        fileCardFor: show ? fileID : null,\n        activeOverlayType: show ? 'FileCard' : null\n      });\n    };\n    _this.toggleAddFilesPanel = function (show) {\n      _this.setPluginState({\n        showAddFilesPanel: show,\n        activeOverlayType: show ? 'AddFiles' : null\n      });\n    };\n    _this.addFiles = function (files) {\n      var descriptors = files.map(function (file) {\n        return {\n          source: _this.id,\n          name: file.name,\n          type: file.type,\n          data: file,\n          meta: {\n            // path of the file relative to the ancestor directory the user selected.\n            // e.g. 'docs/Old Prague/airbnb.pdf'\n            relativePath: file.relativePath || null\n          }\n        };\n      });\n      try {\n        _this.uppy.addFiles(descriptors);\n      } catch (err) {\n        _this.uppy.log(err);\n      }\n    };\n    _this.startListeningToResize = function () {\n      // Watch for Dashboard container (`.uppy-Dashboard-inner`) resize\n      // and update containerWidth/containerHeight in plugin state accordingly.\n      // Emits first event on initialization.\n      _this.resizeObserver = new ResizeObserver(function (entries, observer) {\n        var uppyDashboardInnerEl = entries[0];\n        var _uppyDashboardInnerEl = uppyDashboardInnerEl.contentRect,\n          width = _uppyDashboardInnerEl.width,\n          height = _uppyDashboardInnerEl.height;\n        _this.uppy.log(\"[Dashboard] resized: \" + width + \" / \" + height, 'debug');\n        _this.setPluginState({\n          containerWidth: width,\n          containerHeight: height,\n          areInsidesReadyToBeVisible: true\n        });\n      });\n      _this.resizeObserver.observe(_this.el.querySelector('.uppy-Dashboard-inner')); // If ResizeObserver fails to emit an event telling us what size to use - default to the mobile view\n\n      _this.makeDashboardInsidesVisibleAnywayTimeout = setTimeout(function () {\n        var pluginState = _this.getPluginState();\n        var isModalAndClosed = !_this.opts.inline && pluginState.isHidden;\n        if (\n        // if ResizeObserver hasn't yet fired,\n        !pluginState.areInsidesReadyToBeVisible // and it's not due to the modal being closed\n        && !isModalAndClosed) {\n          _this.uppy.log(\"[Dashboard] resize event didn't fire on time: defaulted to mobile layout\", 'debug');\n          _this.setPluginState({\n            areInsidesReadyToBeVisible: true\n          });\n        }\n      }, 1000);\n    };\n    _this.stopListeningToResize = function () {\n      _this.resizeObserver.disconnect();\n      clearTimeout(_this.makeDashboardInsidesVisibleAnywayTimeout);\n    };\n    _this.recordIfFocusedOnUppyRecently = function (event) {\n      if (_this.el.contains(event.target)) {\n        _this.ifFocusedOnUppyRecently = true;\n      } else {\n        _this.ifFocusedOnUppyRecently = false; // ___Why run this.superFocus.cancel here when it already runs in superFocusOnEachUpdate?\n        //    Because superFocus is debounced, when we move from Uppy to some other element on the page,\n        //    previously run superFocus sometimes hits and moves focus back to Uppy.\n\n        _this.superFocus.cancel();\n      }\n    };\n    _this.disableAllFocusableElements = function (disable) {\n      var focusableNodes = toArray(_this.el.querySelectorAll(FOCUSABLE_ELEMENTS));\n      if (disable) {\n        focusableNodes.forEach(function (node) {\n          // save previous tabindex in a data-attribute, to restore when enabling\n          var currentTabIndex = node.getAttribute('tabindex');\n          if (currentTabIndex) {\n            node.dataset.inertTabindex = currentTabIndex;\n          }\n          node.setAttribute('tabindex', '-1');\n        });\n      } else {\n        focusableNodes.forEach(function (node) {\n          if ('inertTabindex' in node.dataset) {\n            node.setAttribute('tabindex', node.dataset.inertTabindex);\n          } else {\n            node.removeAttribute('tabindex');\n          }\n        });\n      }\n      _this.dashboardIsDisabled = disable;\n    };\n    _this.updateBrowserHistory = function () {\n      // Ensure history state does not already contain our modal name to avoid double-pushing\n      if (!history.state || !history.state[_this.modalName]) {\n        var _extends2;\n\n        // Push to history so that the page is not lost on browser back button press\n        history.pushState(_extends({}, history.state, (_extends2 = {}, _extends2[_this.modalName] = true, _extends2)), '');\n      } // Listen for back button presses\n\n      window.addEventListener('popstate', _this.handlePopState, false);\n    };\n    _this.handlePopState = function (event) {\n      // Close the modal if the history state no longer contains our modal name\n      if (_this.isModalOpen() && (!event.state || !event.state[_this.modalName])) {\n        _this.closeModal({\n          manualClose: false\n        });\n      } // When the browser back button is pressed and uppy is now the latest entry in the history but the modal is closed, fix the history by removing the uppy history entry\n      // This occurs when another entry is added into the history state while the modal is open, and then the modal gets manually closed\n      // Solves PR #575 (https://github.com/transloadit/uppy/pull/575)\n\n      if (!_this.isModalOpen() && event.state && event.state[_this.modalName]) {\n        history.go(-1);\n      }\n    };\n    _this.handleKeyDownInModal = function (event) {\n      // close modal on esc key press\n      if (event.keyCode === ESC_KEY) _this.requestCloseModal(event); // trap focus on tab key press\n\n      if (event.keyCode === TAB_KEY) trapFocus.forModal(event, _this.getPluginState().activeOverlayType, _this.el);\n    };\n    _this.handleClickOutside = function () {\n      if (_this.opts.closeModalOnClickOutside) _this.requestCloseModal();\n    };\n    _this.handlePaste = function (event) {\n      // 1. Let any acquirer plugin (Url/Webcam/etc.) handle pastes to the root\n      _this.uppy.iteratePlugins(function (plugin) {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootPaste(event)\n          plugin.handleRootPaste && plugin.handleRootPaste(event);\n        }\n      }); // 2. Add all dropped files\n\n      var files = toArray(event.clipboardData.files);\n      _this.addFiles(files);\n    };\n    _this.handleInputChange = function (event) {\n      event.preventDefault();\n      var files = toArray(event.target.files);\n      _this.addFiles(files);\n    };\n    _this.handleDragOver = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n      if (_this.opts.disabled || _this.opts.disableLocalFiles) {\n        return;\n      } // 1. Add a small (+) icon on drop\n      // (and prevent browsers from interpreting this as files being _moved_ into the browser, https://github.com/transloadit/uppy/issues/1978)\n\n      event.dataTransfer.dropEffect = 'copy';\n      clearTimeout(_this.removeDragOverClassTimeout);\n      _this.setPluginState({\n        isDraggingOver: true\n      });\n    };\n    _this.handleDragLeave = function (event) {\n      event.preventDefault();\n      event.stopPropagation();\n      if (_this.opts.disabled || _this.opts.disableLocalFiles) {\n        return;\n      }\n      clearTimeout(_this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library. Solution with 'pointer-events: none' didn't work across browsers.\n\n      _this.removeDragOverClassTimeout = setTimeout(function () {\n        _this.setPluginState({\n          isDraggingOver: false\n        });\n      }, 50);\n    };\n    _this.handleDrop = function (event, dropCategory) {\n      event.preventDefault();\n      event.stopPropagation();\n      if (_this.opts.disabled || _this.opts.disableLocalFiles) {\n        return;\n      }\n      clearTimeout(_this.removeDragOverClassTimeout); // 2. Remove dragover class\n\n      _this.setPluginState({\n        isDraggingOver: false\n      }); // 3. Let any acquirer plugin (Url/Webcam/etc.) handle drops to the root\n\n      _this.uppy.iteratePlugins(function (plugin) {\n        if (plugin.type === 'acquirer') {\n          // Every Plugin with .type acquirer can define handleRootDrop(event)\n          plugin.handleRootDrop && plugin.handleRootDrop(event);\n        }\n      }); // 4. Add all dropped files\n\n      var executedDropErrorOnce = false;\n      var logDropError = function logDropError(error) {\n        _this.uppy.log(error, 'error'); // In practice all drop errors are most likely the same, so let's just show one to avoid overwhelming the user\n\n        if (!executedDropErrorOnce) {\n          _this.uppy.info(error.message, 'error');\n          executedDropErrorOnce = true;\n        }\n      };\n      getDroppedFiles(event.dataTransfer, {\n        logDropError: logDropError\n      }).then(function (files) {\n        if (files.length > 0) {\n          _this.uppy.log('[Dashboard] Files were dropped');\n          _this.addFiles(files);\n        }\n      });\n    };\n    _this.handleRequestThumbnail = function (file) {\n      if (!_this.opts.waitForThumbnailsBeforeUpload) {\n        _this.uppy.emit('thumbnail:request', file);\n      }\n    };\n    _this.handleCancelThumbnail = function (file) {\n      if (!_this.opts.waitForThumbnailsBeforeUpload) {\n        _this.uppy.emit('thumbnail:cancel', file);\n      }\n    };\n    _this.handleKeyDownInInline = function (event) {\n      // Trap focus on tab key press.\n      if (event.keyCode === TAB_KEY) trapFocus.forInline(event, _this.getPluginState().activeOverlayType, _this.el);\n    };\n    _this.handlePasteOnBody = function (event) {\n      var isFocusInOverlay = _this.el.contains(document.activeElement);\n      if (isFocusInOverlay) {\n        _this.handlePaste(event);\n      }\n    };\n    _this.handleComplete = function (_ref) {\n      var failed = _ref.failed;\n      if (_this.opts.closeAfterFinish && failed.length === 0) {\n        // All uploads are done\n        _this.requestCloseModal();\n      }\n    };\n    _this.handleCancelRestore = function () {\n      _this.uppy.emit('restore-canceled');\n    };\n    _this._openFileEditorWhenFilesAdded = function (files) {\n      var firstFile = files[0];\n      if (_this.canEditFile(firstFile)) {\n        _this.openFileEditor(firstFile);\n      }\n    };\n    _this.initEvents = function () {\n      // Modal open button\n      if (_this.opts.trigger && !_this.opts.inline) {\n        var showModalTrigger = findAllDOMElements(_this.opts.trigger);\n        if (showModalTrigger) {\n          showModalTrigger.forEach(function (trigger) {\n            return trigger.addEventListener('click', _this.openModal);\n          });\n        } else {\n          _this.uppy.log('Dashboard modal trigger not found. Make sure `trigger` is set in Dashboard options, unless you are planning to call `dashboard.openModal()` method yourself', 'warning');\n        }\n      }\n      _this.startListeningToResize();\n      document.addEventListener('paste', _this.handlePasteOnBody);\n      _this.uppy.on('plugin-remove', _this.removeTarget);\n      _this.uppy.on('file-added', _this.hideAllPanels);\n      _this.uppy.on('dashboard:modal-closed', _this.hideAllPanels);\n      _this.uppy.on('file-editor:complete', _this.hideAllPanels);\n      _this.uppy.on('complete', _this.handleComplete); // ___Why fire on capture?\n      //    Because this.ifFocusedOnUppyRecently needs to change before onUpdate() fires.\n\n      document.addEventListener('focus', _this.recordIfFocusedOnUppyRecently, true);\n      document.addEventListener('click', _this.recordIfFocusedOnUppyRecently, true);\n      if (_this.opts.inline) {\n        _this.el.addEventListener('keydown', _this.handleKeyDownInInline);\n      }\n      if (_this.opts.autoOpenFileEditor) {\n        _this.uppy.on('files-added', _this._openFileEditorWhenFilesAdded);\n      }\n    };\n    _this.removeEvents = function () {\n      var showModalTrigger = findAllDOMElements(_this.opts.trigger);\n      if (!_this.opts.inline && showModalTrigger) {\n        showModalTrigger.forEach(function (trigger) {\n          return trigger.removeEventListener('click', _this.openModal);\n        });\n      }\n      _this.stopListeningToResize();\n      document.removeEventListener('paste', _this.handlePasteOnBody);\n      window.removeEventListener('popstate', _this.handlePopState, false);\n      _this.uppy.off('plugin-remove', _this.removeTarget);\n      _this.uppy.off('file-added', _this.hideAllPanels);\n      _this.uppy.off('dashboard:modal-closed', _this.hideAllPanels);\n      _this.uppy.off('file-editor:complete', _this.hideAllPanels);\n      _this.uppy.off('complete', _this.handleComplete);\n      document.removeEventListener('focus', _this.recordIfFocusedOnUppyRecently);\n      document.removeEventListener('click', _this.recordIfFocusedOnUppyRecently);\n      if (_this.opts.inline) {\n        _this.el.removeEventListener('keydown', _this.handleKeyDownInInline);\n      }\n      if (_this.opts.autoOpenFileEditor) {\n        _this.uppy.off('files-added', _this._openFileEditorWhenFilesAdded);\n      }\n    };\n    _this.superFocusOnEachUpdate = function () {\n      var isFocusInUppy = _this.el.contains(document.activeElement); // When focus is lost on the page (== focus is on body for most browsers, or focus is null for IE11)\n\n      var isFocusNowhere = document.activeElement === document.body || document.activeElement === null;\n      var isInformerHidden = _this.uppy.getState().info.isHidden;\n      var isModal = !_this.opts.inline;\n      if (\n      // If update is connected to showing the Informer - let the screen reader calmly read it.\n      isInformerHidden && (\n      // If we are in a modal - always superfocus without concern for other elements on the page (user is unlikely to want to interact with the rest of the page)\n      isModal // If we are already inside of Uppy, or\n      || isFocusInUppy // If we are not focused on anything BUT we have already, at least once, focused on uppy\n      //   1. We focus when isFocusNowhere, because when the element we were focused on disappears (e.g. an overlay), - focus gets lost. If user is typing something somewhere else on the page, - focus won't be 'nowhere'.\n      //   2. We only focus when focus is nowhere AND this.ifFocusedOnUppyRecently, to avoid focus jumps if we do something else on the page.\n      //   [Practical check] Without '&& this.ifFocusedOnUppyRecently', in Safari, in inline mode, when file is uploading, - navigate via tab to the checkbox, try to press space multiple times. Focus will jump to Uppy.\n      || isFocusNowhere && _this.ifFocusedOnUppyRecently)) {\n        _this.superFocus(_this.el, _this.getPluginState().activeOverlayType);\n      } else {\n        _this.superFocus.cancel();\n      }\n    };\n    _this.afterUpdate = function () {\n      if (_this.opts.disabled && !_this.dashboardIsDisabled) {\n        _this.disableAllFocusableElements(true);\n        return;\n      }\n      if (!_this.opts.disabled && _this.dashboardIsDisabled) {\n        _this.disableAllFocusableElements(false);\n      }\n      _this.superFocusOnEachUpdate();\n    };\n    _this.cancelUpload = function (fileID) {\n      _this.uppy.removeFile(fileID);\n    };\n    _this.saveFileCard = function (meta, fileID) {\n      _this.uppy.setFileMeta(fileID, meta);\n      _this.toggleFileCard(false, fileID);\n    };\n    _this._attachRenderFunctionToTarget = function (target) {\n      var plugin = _this.uppy.getPlugin(target.id);\n      return _extends({}, target, {\n        icon: plugin.icon || _this.opts.defaultPickerIcon,\n        render: plugin.render\n      });\n    };\n    _this._isTargetSupported = function (target) {\n      var plugin = _this.uppy.getPlugin(target.id); // If the plugin does not provide a `supported` check, assume the plugin works everywhere.\n\n      if (typeof plugin.isSupported !== 'function') {\n        return true;\n      }\n      return plugin.isSupported();\n    };\n    _this._getAcquirers = memoize(function (targets) {\n      return targets.filter(function (target) {\n        return target.type === 'acquirer' && _this._isTargetSupported(target);\n      }).map(_this._attachRenderFunctionToTarget);\n    });\n    _this._getProgressIndicators = memoize(function (targets) {\n      return targets.filter(function (target) {\n        return target.type === 'progressindicator';\n      }).map(_this._attachRenderFunctionToTarget);\n    });\n    _this._getEditors = memoize(function (targets) {\n      return targets.filter(function (target) {\n        return target.type === 'editor';\n      }).map(_this._attachRenderFunctionToTarget);\n    });\n    _this.render = function (state) {\n      var pluginState = _this.getPluginState();\n      var files = state.files,\n        capabilities = state.capabilities,\n        allowNewUpload = state.allowNewUpload; // TODO: move this to Core, to share between Status Bar and Dashboard\n      // (and any other plugin that might need it, too)\n\n      var newFiles = Object.keys(files).filter(function (file) {\n        return !files[file].progress.uploadStarted;\n      });\n      var uploadStartedFiles = Object.keys(files).filter(function (file) {\n        return files[file].progress.uploadStarted;\n      });\n      var pausedFiles = Object.keys(files).filter(function (file) {\n        return files[file].isPaused;\n      });\n      var completeFiles = Object.keys(files).filter(function (file) {\n        return files[file].progress.uploadComplete;\n      });\n      var erroredFiles = Object.keys(files).filter(function (file) {\n        return files[file].error;\n      });\n      var inProgressFiles = Object.keys(files).filter(function (file) {\n        return !files[file].progress.uploadComplete && files[file].progress.uploadStarted;\n      });\n      var inProgressNotPausedFiles = inProgressFiles.filter(function (file) {\n        return !files[file].isPaused;\n      });\n      var processingFiles = Object.keys(files).filter(function (file) {\n        return files[file].progress.preprocess || files[file].progress.postprocess;\n      });\n      var isUploadStarted = uploadStartedFiles.length > 0;\n      var isAllComplete = state.totalProgress === 100 && completeFiles.length === Object.keys(files).length && processingFiles.length === 0;\n      var isAllErrored = isUploadStarted && erroredFiles.length === uploadStartedFiles.length;\n      var isAllPaused = inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length;\n      var acquirers = _this._getAcquirers(pluginState.targets);\n      var progressindicators = _this._getProgressIndicators(pluginState.targets);\n      var editors = _this._getEditors(pluginState.targets);\n      var theme;\n      if (_this.opts.theme === 'auto') {\n        theme = capabilities.darkMode ? 'dark' : 'light';\n      } else {\n        theme = _this.opts.theme;\n      }\n      if (['files', 'folders', 'both'].indexOf(_this.opts.fileManagerSelectionType) < 0) {\n        _this.opts.fileManagerSelectionType = 'files';\n        console.error(\"Unsupported option for \\\"fileManagerSelectionType\\\". Using default of \\\"\" + _this.opts.fileManagerSelectionType + \"\\\".\");\n      }\n      return DashboardUI({\n        state: state,\n        isHidden: pluginState.isHidden,\n        files: files,\n        newFiles: newFiles,\n        uploadStartedFiles: uploadStartedFiles,\n        completeFiles: completeFiles,\n        erroredFiles: erroredFiles,\n        inProgressFiles: inProgressFiles,\n        inProgressNotPausedFiles: inProgressNotPausedFiles,\n        processingFiles: processingFiles,\n        isUploadStarted: isUploadStarted,\n        isAllComplete: isAllComplete,\n        isAllErrored: isAllErrored,\n        isAllPaused: isAllPaused,\n        totalFileCount: Object.keys(files).length,\n        totalProgress: state.totalProgress,\n        allowNewUpload: allowNewUpload,\n        acquirers: acquirers,\n        theme: theme,\n        disabled: _this.opts.disabled,\n        disableLocalFiles: _this.opts.disableLocalFiles,\n        direction: _this.opts.direction,\n        activePickerPanel: pluginState.activePickerPanel,\n        showFileEditor: pluginState.showFileEditor,\n        saveFileEditor: _this.saveFileEditor,\n        disableAllFocusableElements: _this.disableAllFocusableElements,\n        animateOpenClose: _this.opts.animateOpenClose,\n        isClosing: pluginState.isClosing,\n        getPlugin: _this.uppy.getPlugin,\n        progressindicators: progressindicators,\n        editors: editors,\n        autoProceed: _this.uppy.opts.autoProceed,\n        id: _this.id,\n        closeModal: _this.requestCloseModal,\n        handleClickOutside: _this.handleClickOutside,\n        handleInputChange: _this.handleInputChange,\n        handlePaste: _this.handlePaste,\n        inline: _this.opts.inline,\n        showPanel: _this.showPanel,\n        hideAllPanels: _this.hideAllPanels,\n        log: _this.uppy.log,\n        i18n: _this.i18n,\n        i18nArray: _this.i18nArray,\n        removeFile: _this.uppy.removeFile,\n        uppy: _this.uppy,\n        info: _this.uppy.info,\n        note: _this.opts.note,\n        recoveredState: state.recoveredState,\n        metaFields: pluginState.metaFields,\n        resumableUploads: capabilities.resumableUploads || false,\n        individualCancellation: capabilities.individualCancellation,\n        isMobileDevice: capabilities.isMobileDevice,\n        pauseUpload: _this.uppy.pauseResume,\n        retryUpload: _this.uppy.retryUpload,\n        cancelUpload: _this.cancelUpload,\n        cancelAll: _this.uppy.cancelAll,\n        fileCardFor: pluginState.fileCardFor,\n        toggleFileCard: _this.toggleFileCard,\n        toggleAddFilesPanel: _this.toggleAddFilesPanel,\n        showAddFilesPanel: pluginState.showAddFilesPanel,\n        saveFileCard: _this.saveFileCard,\n        openFileEditor: _this.openFileEditor,\n        canEditFile: _this.canEditFile,\n        width: _this.opts.width,\n        height: _this.opts.height,\n        showLinkToFileUploadResult: _this.opts.showLinkToFileUploadResult,\n        fileManagerSelectionType: _this.opts.fileManagerSelectionType,\n        proudlyDisplayPoweredByUppy: _this.opts.proudlyDisplayPoweredByUppy,\n        hideCancelButton: _this.opts.hideCancelButton,\n        hideRetryButton: _this.opts.hideRetryButton,\n        hidePauseResumeButton: _this.opts.hidePauseResumeButton,\n        showRemoveButtonAfterComplete: _this.opts.showRemoveButtonAfterComplete,\n        containerWidth: pluginState.containerWidth,\n        containerHeight: pluginState.containerHeight,\n        areInsidesReadyToBeVisible: pluginState.areInsidesReadyToBeVisible,\n        isTargetDOMEl: _this.isTargetDOMEl,\n        parentElement: _this.el,\n        allowedFileTypes: _this.uppy.opts.restrictions.allowedFileTypes,\n        maxNumberOfFiles: _this.uppy.opts.restrictions.maxNumberOfFiles,\n        requiredMetaFields: _this.uppy.opts.restrictions.requiredMetaFields,\n        showSelectedFiles: _this.opts.showSelectedFiles,\n        handleCancelRestore: _this.handleCancelRestore,\n        handleRequestThumbnail: _this.handleRequestThumbnail,\n        handleCancelThumbnail: _this.handleCancelThumbnail,\n        // drag props\n        isDraggingOver: pluginState.isDraggingOver,\n        handleDragOver: _this.handleDragOver,\n        handleDragLeave: _this.handleDragLeave,\n        handleDrop: _this.handleDrop\n      });\n    };\n    _this.discoverProviderPlugins = function () {\n      _this.uppy.iteratePlugins(function (plugin) {\n        if (plugin && !plugin.target && plugin.opts && plugin.opts.target === _this.constructor) {\n          _this.addTarget(plugin);\n        }\n      });\n    };\n    _this.install = function () {\n      // Set default state for Dashboard\n      _this.setPluginState({\n        isHidden: true,\n        fileCardFor: null,\n        activeOverlayType: null,\n        showAddFilesPanel: false,\n        activePickerPanel: false,\n        showFileEditor: false,\n        metaFields: _this.opts.metaFields,\n        targets: [],\n        // We'll make them visible once .containerWidth is determined\n        areInsidesReadyToBeVisible: false,\n        isDraggingOver: false\n      });\n      var _this$opts = _this.opts,\n        inline = _this$opts.inline,\n        closeAfterFinish = _this$opts.closeAfterFinish;\n      if (inline && closeAfterFinish) {\n        throw new Error('[Dashboard] `closeAfterFinish: true` cannot be used on an inline Dashboard, because an inline Dashboard cannot be closed at all. Either set `inline: false`, or disable the `closeAfterFinish` option.');\n      }\n      var allowMultipleUploads = _this.uppy.opts.allowMultipleUploads;\n      if (allowMultipleUploads && closeAfterFinish) {\n        _this.uppy.log('[Dashboard] When using `closeAfterFinish`, we recommended setting the `allowMultipleUploads` option to `false` in the Uppy constructor. See https://uppy.io/docs/uppy/#allowMultipleUploads-true', 'warning');\n      }\n      var target = _this.opts.target;\n      if (target) {\n        _this.mount(target, _assertThisInitialized(_this));\n      }\n      var plugins = _this.opts.plugins || [];\n      plugins.forEach(function (pluginID) {\n        var plugin = _this.uppy.getPlugin(pluginID);\n        if (plugin) {\n          plugin.mount(_assertThisInitialized(_this), plugin);\n        }\n      });\n      if (!_this.opts.disableStatusBar) {\n        _this.uppy.use(StatusBar, {\n          id: _this.id + \":StatusBar\",\n          target: _assertThisInitialized(_this),\n          hideUploadButton: _this.opts.hideUploadButton,\n          hideRetryButton: _this.opts.hideRetryButton,\n          hidePauseResumeButton: _this.opts.hidePauseResumeButton,\n          hideCancelButton: _this.opts.hideCancelButton,\n          showProgressDetails: _this.opts.showProgressDetails,\n          hideAfterFinish: _this.opts.hideProgressAfterFinish,\n          locale: _this.opts.locale,\n          doneButtonHandler: _this.opts.doneButtonHandler\n        });\n      }\n      if (!_this.opts.disableInformer) {\n        _this.uppy.use(Informer, {\n          id: _this.id + \":Informer\",\n          target: _assertThisInitialized(_this)\n        });\n      }\n      if (!_this.opts.disableThumbnailGenerator) {\n        _this.uppy.use(ThumbnailGenerator, {\n          id: _this.id + \":ThumbnailGenerator\",\n          thumbnailWidth: _this.opts.thumbnailWidth,\n          thumbnailType: _this.opts.thumbnailType,\n          waitForThumbnailsBeforeUpload: _this.opts.waitForThumbnailsBeforeUpload,\n          // If we don't block on thumbnails, we can lazily generate them\n          lazy: !_this.opts.waitForThumbnailsBeforeUpload\n        });\n      } // Dark Mode / theme\n\n      _this.darkModeMediaQuery = typeof window !== 'undefined' && window.matchMedia ? window.matchMedia('(prefers-color-scheme: dark)') : null;\n      var isDarkModeOnFromTheStart = _this.darkModeMediaQuery ? _this.darkModeMediaQuery.matches : false;\n      _this.uppy.log(\"[Dashboard] Dark mode is \" + (isDarkModeOnFromTheStart ? 'on' : 'off'));\n      _this.setDarkModeCapability(isDarkModeOnFromTheStart);\n      if (_this.opts.theme === 'auto') {\n        _this.darkModeMediaQuery.addListener(_this.handleSystemDarkModeChange);\n      }\n      _this.discoverProviderPlugins();\n      _this.initEvents();\n    };\n    _this.uninstall = function () {\n      if (!_this.opts.disableInformer) {\n        var informer = _this.uppy.getPlugin(_this.id + \":Informer\"); // Checking if this plugin exists, in case it was removed by uppy-core\n        // before the Dashboard was.\n\n        if (informer) _this.uppy.removePlugin(informer);\n      }\n      if (!_this.opts.disableStatusBar) {\n        var statusBar = _this.uppy.getPlugin(_this.id + \":StatusBar\");\n        if (statusBar) _this.uppy.removePlugin(statusBar);\n      }\n      if (!_this.opts.disableThumbnailGenerator) {\n        var thumbnail = _this.uppy.getPlugin(_this.id + \":ThumbnailGenerator\");\n        if (thumbnail) _this.uppy.removePlugin(thumbnail);\n      }\n      var plugins = _this.opts.plugins || [];\n      plugins.forEach(function (pluginID) {\n        var plugin = _this.uppy.getPlugin(pluginID);\n        if (plugin) plugin.unmount();\n      });\n      if (_this.opts.theme === 'auto') {\n        _this.darkModeMediaQuery.removeListener(_this.handleSystemDarkModeChange);\n      }\n      _this.unmount();\n      _this.removeEvents();\n    };\n    _this.id = _this.opts.id || 'Dashboard';\n    _this.title = 'Dashboard';\n    _this.type = 'orchestrator';\n    _this.modalName = \"uppy-Dashboard-\" + cuid();\n    _this.defaultLocale = {\n      strings: {\n        closeModal: 'Close Modal',\n        importFrom: 'Import from %{name}',\n        addingMoreFiles: 'Adding more files',\n        addMoreFiles: 'Add more files',\n        dashboardWindowTitle: 'File Uploader Window (Press escape to close)',\n        dashboardTitle: 'File Uploader',\n        copyLinkToClipboardSuccess: 'Link copied to clipboard',\n        copyLinkToClipboardFallback: 'Copy the URL below',\n        copyLink: 'Copy link',\n        fileSource: 'File source: %{name}',\n        back: 'Back',\n        addMore: 'Add more',\n        removeFile: 'Remove file',\n        editFile: 'Edit file',\n        editing: 'Editing %{file}',\n        finishEditingFile: 'Finish editing file',\n        save: 'Save',\n        saveChanges: 'Save changes',\n        cancel: 'Cancel',\n        myDevice: 'My Device',\n        dropPasteFiles: 'Drop files here or %{browseFiles}',\n        dropPasteFolders: 'Drop files here or %{browseFolders}',\n        dropPasteBoth: 'Drop files here, %{browseFiles} or %{browseFolders}',\n        dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:',\n        dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:',\n        dropPasteImportBoth: 'Drop files here, %{browseFiles}, %{browseFolders} or import from:',\n        importFiles: 'Import files from:',\n        dropHint: 'Drop your files here',\n        browseFiles: 'browse files',\n        browseFolders: 'browse folders',\n        uploadComplete: 'Upload complete',\n        uploadPaused: 'Upload paused',\n        resumeUpload: 'Resume upload',\n        pauseUpload: 'Pause upload',\n        retryUpload: 'Retry upload',\n        cancelUpload: 'Cancel upload',\n        xFilesSelected: {\n          0: '%{smart_count} file selected',\n          1: '%{smart_count} files selected'\n        },\n        uploadingXFiles: {\n          0: 'Uploading %{smart_count} file',\n          1: 'Uploading %{smart_count} files'\n        },\n        processingXFiles: {\n          0: 'Processing %{smart_count} file',\n          1: 'Processing %{smart_count} files'\n        },\n        recoveredXFiles: {\n          0: 'We could not fully recover 1 file. Please re-select it and resume the upload.',\n          1: 'We could not fully recover %{smart_count} files. Please re-select them and resume the upload.'\n        },\n        recoveredAllFiles: 'We restored all files. You can now resume the upload.',\n        sessionRestored: 'Session restored',\n        reSelect: 'Re-select',\n        // The default `poweredBy2` string only combines the `poweredBy` string (%{backwardsCompat}) with the size.\n        // Locales can override `poweredBy2` to specify a different word order. This is for backwards compat with\n        // Uppy 1.9.x and below which did a naive concatenation of `poweredBy2 + size` instead of using a locale-specific\n        // substitution.\n        // TODO: In 2.0 `poweredBy2` should be removed in and `poweredBy` updated to use substitution.\n        poweredBy2: '%{backwardsCompat} %{uppy}',\n        poweredBy: 'Powered by'\n      }\n    }; // set default options\n\n    var defaultOptions = {\n      target: 'body',\n      metaFields: [],\n      trigger: '#uppy-select-files',\n      inline: false,\n      width: 750,\n      height: 550,\n      thumbnailWidth: 280,\n      thumbnailType: 'image/jpeg',\n      waitForThumbnailsBeforeUpload: false,\n      defaultPickerIcon: defaultPickerIcon,\n      showLinkToFileUploadResult: true,\n      showProgressDetails: false,\n      hideUploadButton: false,\n      hideCancelButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideProgressAfterFinish: false,\n      doneButtonHandler: function doneButtonHandler() {\n        _this.uppy.reset();\n        _this.requestCloseModal();\n      },\n      note: null,\n      closeModalOnClickOutside: false,\n      closeAfterFinish: false,\n      disableStatusBar: false,\n      disableInformer: false,\n      disableThumbnailGenerator: false,\n      disablePageScrollWhenModalOpen: true,\n      animateOpenClose: true,\n      fileManagerSelectionType: 'files',\n      proudlyDisplayPoweredByUppy: true,\n      onRequestCloseModal: function onRequestCloseModal() {\n        return _this.closeModal();\n      },\n      showSelectedFiles: true,\n      showRemoveButtonAfterComplete: false,\n      browserBackButtonClose: false,\n      theme: 'light',\n      autoOpenFileEditor: false,\n      disabled: false,\n      disableLocalFiles: false\n    }; // merge default options with the ones set by user\n\n    _this.opts = _extends({}, defaultOptions, _opts);\n    _this.i18nInit();\n    _this.superFocus = createSuperFocus();\n    _this.ifFocusedOnUppyRecently = false; // Timeouts\n\n    _this.makeDashboardInsidesVisibleAnywayTimeout = null;\n    _this.removeDragOverClassTimeout = null;\n    return _this;\n  }\n  var _proto = Dashboard.prototype;\n  _proto.onMount = function onMount() {\n    // Set the text direction if the page has not defined one.\n    var element = this.el;\n    var direction = getTextDirection(element);\n    if (!direction) {\n      element.dir = 'ltr';\n    }\n  };\n  return Dashboard;\n}(Plugin), _class.VERSION = \"1.21.1\", _temp);","/**\n * Copies text to clipboard by creating an almost invisible textarea,\n * adding text there, then running execCommand('copy').\n * Falls back to prompt() when the easy way fails (hello, Safari!)\n * From http://stackoverflow.com/a/30810322\n *\n * @param {string} textToCopy\n * @param {string} fallbackString\n * @returns {Promise}\n */\nmodule.exports = function copyToClipboard(textToCopy, fallbackString) {\n  fallbackString = fallbackString || 'Copy the URL below';\n  return new Promise(function (resolve) {\n    var textArea = document.createElement('textarea');\n    textArea.setAttribute('style', {\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      width: '2em',\n      height: '2em',\n      padding: 0,\n      border: 'none',\n      outline: 'none',\n      boxShadow: 'none',\n      background: 'transparent'\n    });\n    textArea.value = textToCopy;\n    document.body.appendChild(textArea);\n    textArea.select();\n    var magicCopyFailed = function magicCopyFailed() {\n      document.body.removeChild(textArea);\n      window.prompt(fallbackString, textToCopy);\n      resolve();\n    };\n    try {\n      var successful = document.execCommand('copy');\n      if (!successful) {\n        return magicCopyFailed('copy command unavailable');\n      }\n      document.body.removeChild(textArea);\n      return resolve();\n    } catch (err) {\n      document.body.removeChild(textArea);\n      return magicCopyFailed(err);\n    }\n  });\n};","var debounce = require('lodash.debounce');\nvar FOCUSABLE_ELEMENTS = require('@uppy/utils/lib/FOCUSABLE_ELEMENTS');\nvar getActiveOverlayEl = require('./getActiveOverlayEl');\n/*\n  Focuses on some element in the currently topmost overlay.\n\n  1. If there are some [data-uppy-super-focusable] elements rendered already - focuses on the first superfocusable element, and leaves focus up to the control of a user (until currently focused element disappears from the screen [which can happen when overlay changes, or, e.g., when we click on a folder in googledrive]).\n  2. If there are no [data-uppy-super-focusable] elements yet (or ever) - focuses on the first focusable element, but switches focus if superfocusable elements appear on next render.\n*/\n\nmodule.exports = function createSuperFocus() {\n  var lastFocusWasOnSuperFocusableEl = false;\n  var superFocus = function superFocus(dashboardEl, activeOverlayType) {\n    var overlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n    var isFocusInOverlay = overlayEl.contains(document.activeElement); // If focus is already in the topmost overlay, AND on last update we focused on the superfocusable element - then leave focus up to the user.\n    // [Practical check] without this line, typing in the search input in googledrive overlay won't work.\n\n    if (isFocusInOverlay && lastFocusWasOnSuperFocusableEl) return;\n    var superFocusableEl = overlayEl.querySelector('[data-uppy-super-focusable]'); // If we are already in the topmost overlay, AND there are no super focusable elements yet, - leave focus up to the user.\n    // [Practical check] without this line, if you are in an empty folder in google drive, and something's uploading in the bg, - focus will be jumping to Done all the time.\n\n    if (isFocusInOverlay && !superFocusableEl) return;\n    if (superFocusableEl) {\n      superFocusableEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = true;\n    } else {\n      var firstEl = overlayEl.querySelector(FOCUSABLE_ELEMENTS);\n      firstEl && firstEl.focus({\n        preventScroll: true\n      });\n      lastFocusWasOnSuperFocusableEl = false;\n    }\n  }; // ___Why do we need to debounce?\n  //    1. To deal with animations: overlay changes via animations, which results in the DOM updating AFTER plugin.update() already executed.\n  //    [Practical check] without debounce, if we open the Url overlay, and click 'Done', Dashboard won't get focused again.\n  //    [Practical check] if we delay 250ms instead of 260ms - IE11 won't get focused in same situation.\n  //    2. Performance: there can be many state update()s in a second, and this function is called every time.\n\n  return debounce(superFocus, 260);\n};","/**\n * @returns {HTMLElement} - either dashboard element, or the overlay that's most on top\n */\nmodule.exports = function getActiveOverlayEl(dashboardEl, activeOverlayType) {\n  if (activeOverlayType) {\n    var overlayEl = dashboardEl.querySelector(\"[data-uppy-paneltype=\\\"\" + activeOverlayType + \"\\\"]\"); // if an overlay is already mounted\n\n    if (overlayEl) return overlayEl;\n  }\n  return dashboardEl;\n};","var _require = require('preact'),\n  h = _require.h;\nfunction iconImage() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"g\", {\n    fill: \"#686DE0\",\n    fillRule: \"evenodd\"\n  }, h(\"path\", {\n    d: \"M5 7v10h15V7H5zm0-1h15a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z\",\n    fillRule: \"nonzero\"\n  }), h(\"path\", {\n    d: \"M6.35 17.172l4.994-5.026a.5.5 0 0 1 .707 0l2.16 2.16 3.505-3.505a.5.5 0 0 1 .707 0l2.336 2.31-.707.72-1.983-1.97-3.505 3.505a.5.5 0 0 1-.707 0l-2.16-2.159-3.938 3.939-1.409.026z\",\n    fillRule: \"nonzero\"\n  }), h(\"circle\", {\n    cx: \"7.5\",\n    cy: \"9.5\",\n    r: \"1.5\"\n  })));\n}\nfunction iconAudio() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"path\", {\n    d: \"M9.5 18.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V7.25a.5.5 0 0 1 .379-.485l9-2.25A.5.5 0 0 1 18.5 5v11.64c0 1.14-1.145 2-2.5 2s-2.5-.86-2.5-2c0-1.14 1.145-2 2.5-2 .557 0 1.079.145 1.5.396V8.67l-8 2v7.97zm8-11v-2l-8 2v2l8-2zM7 19.64c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1zm9-2c.855 0 1.5-.484 1.5-1s-.645-1-1.5-1-1.5.484-1.5 1 .645 1 1.5 1z\",\n    fill: \"#049BCF\",\n    fillRule: \"nonzero\"\n  }));\n}\nfunction iconVideo() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"path\", {\n    d: \"M16 11.834l4.486-2.691A1 1 0 0 1 22 10v6a1 1 0 0 1-1.514.857L16 14.167V17a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v2.834zM15 9H5v8h10V9zm1 4l5 3v-6l-5 3z\",\n    fill: \"#19AF67\",\n    fillRule: \"nonzero\"\n  }));\n}\nfunction iconPDF() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"path\", {\n    d: \"M9.766 8.295c-.691-1.843-.539-3.401.747-3.726 1.643-.414 2.505.938 2.39 3.299-.039.79-.194 1.662-.537 3.148.324.49.66.967 1.055 1.51.17.231.382.488.629.757 1.866-.128 3.653.114 4.918.655 1.487.635 2.192 1.685 1.614 2.84-.566 1.133-1.839 1.084-3.416.249-1.141-.604-2.457-1.634-3.51-2.707a13.467 13.467 0 0 0-2.238.426c-1.392 4.051-4.534 6.453-5.707 4.572-.986-1.58 1.38-4.206 4.914-5.375.097-.322.185-.656.264-1.001.08-.353.306-1.31.407-1.737-.678-1.059-1.2-2.031-1.53-2.91zm2.098 4.87c-.033.144-.068.287-.104.427l.033-.01-.012.038a14.065 14.065 0 0 1 1.02-.197l-.032-.033.052-.004a7.902 7.902 0 0 1-.208-.271c-.197-.27-.38-.526-.555-.775l-.006.028-.002-.003c-.076.323-.148.632-.186.8zm5.77 2.978c1.143.605 1.832.632 2.054.187.26-.519-.087-1.034-1.113-1.473-.911-.39-2.175-.608-3.55-.608.845.766 1.787 1.459 2.609 1.894zM6.559 18.789c.14.223.693.16 1.425-.413.827-.648 1.61-1.747 2.208-3.206-2.563 1.064-4.102 2.867-3.633 3.62zm5.345-10.97c.088-1.793-.351-2.48-1.146-2.28-.473.119-.564 1.05-.056 2.405.213.566.52 1.188.908 1.859.18-.858.268-1.453.294-1.984z\",\n    fill: \"#E2514A\",\n    fillRule: \"nonzero\"\n  }));\n}\nfunction iconArchive() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"path\", {\n    d: \"M10.45 2.05h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V2.55a.5.5 0 0 1 .5-.5zm2.05 1.024h1.05a.5.5 0 0 1 .5.5V3.6a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5v-.001zM10.45 0h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5V.5a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 3.074h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-2.05 1.024h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm-2.05 1.025h1.05a.5.5 0 0 1 .5.5v.025a.5.5 0 0 1-.5.5h-1.05a.5.5 0 0 1-.5-.5v-.025a.5.5 0 0 1 .5-.5zm2.05 1.025h1.05a.5.5 0 0 1 .5.5v.024a.5.5 0 0 1-.5.5H12.5a.5.5 0 0 1-.5-.5v-.024a.5.5 0 0 1 .5-.5zm-1.656 3.074l-.82 5.946c.52.302 1.174.458 1.976.458.803 0 1.455-.156 1.975-.458l-.82-5.946h-2.311zm0-1.025h2.312c.512 0 .946.378 1.015.885l.82 5.946c.056.412-.142.817-.501 1.026-.686.398-1.515.597-2.49.597-.974 0-1.804-.199-2.49-.597a1.025 1.025 0 0 1-.5-1.026l.819-5.946c.07-.507.503-.885 1.015-.885zm.545 6.6a.5.5 0 0 1-.397-.561l.143-.999a.5.5 0 0 1 .495-.429h.74a.5.5 0 0 1 .495.43l.143.998a.5.5 0 0 1-.397.561c-.404.08-.819.08-1.222 0z\",\n    fill: \"#00C469\",\n    fillRule: \"nonzero\"\n  }));\n}\nfunction iconFile() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"g\", {\n    fill: \"#A7AFB7\",\n    fillRule: \"nonzero\"\n  }, h(\"path\", {\n    d: \"M5.5 22a.5.5 0 0 1-.5-.5v-18a.5.5 0 0 1 .5-.5h10.719a.5.5 0 0 1 .367.16l3.281 3.556a.5.5 0 0 1 .133.339V21.5a.5.5 0 0 1-.5.5h-14zm.5-1h13V7.25L16 4H6v17z\"\n  }), h(\"path\", {\n    d: \"M15 4v3a1 1 0 0 0 1 1h3V7h-3V4h-1z\"\n  })));\n}\nfunction iconText() {\n  return h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"25\",\n    height: \"25\",\n    viewBox: \"0 0 25 25\"\n  }, h(\"path\", {\n    d: \"M4.5 7h13a.5.5 0 1 1 0 1h-13a.5.5 0 0 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h15a.5.5 0 1 1 0 1h-15a.5.5 0 1 1 0-1zm0 3h10a.5.5 0 1 1 0 1h-10a.5.5 0 1 1 0-1z\",\n    fill: \"#5A5E69\",\n    fillRule: \"nonzero\"\n  }));\n}\nmodule.exports = function getIconByMime(fileType) {\n  var defaultChoice = {\n    color: '#838999',\n    icon: iconFile()\n  };\n  if (!fileType) return defaultChoice;\n  var fileTypeGeneral = fileType.split('/')[0];\n  var fileTypeSpecific = fileType.split('/')[1]; // Text\n\n  if (fileTypeGeneral === 'text') {\n    return {\n      color: '#5a5e69',\n      icon: iconText()\n    };\n  } // Image\n\n  if (fileTypeGeneral === 'image') {\n    return {\n      color: '#686de0',\n      icon: iconImage()\n    };\n  } // Audio\n\n  if (fileTypeGeneral === 'audio') {\n    return {\n      color: '#068dbb',\n      icon: iconAudio()\n    };\n  } // Video\n\n  if (fileTypeGeneral === 'video') {\n    return {\n      color: '#19af67',\n      icon: iconVideo()\n    };\n  } // PDF\n\n  if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') {\n    return {\n      color: '#e25149',\n      icon: iconPDF()\n    };\n  } // Archive\n\n  var archiveTypes = ['zip', 'x-7z-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage'];\n  if (fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1) {\n    return {\n      color: '#00C469',\n      icon: iconArchive()\n    };\n  }\n  return defaultChoice;\n};","// ignore drop/paste events if they are not in input or textarea —\n// otherwise when Url plugin adds drop/paste listeners to this.el,\n// draging UI elements or pasting anything into any field triggers those events —\n// Url treats them as URLs that need to be imported\nfunction ignoreEvent(ev) {\n  var tagName = ev.target.tagName;\n  if (tagName === 'INPUT' || tagName === 'TEXTAREA') {\n    ev.stopPropagation();\n    return;\n  }\n  ev.preventDefault();\n  ev.stopPropagation();\n}\nmodule.exports = ignoreEvent;","var toArray = require('@uppy/utils/lib/toArray');\nvar getActiveOverlayEl = require('./getActiveOverlayEl');\nvar FOCUSABLE_ELEMENTS = require('@uppy/utils/lib/FOCUSABLE_ELEMENTS');\nfunction focusOnFirstNode(event, nodes) {\n  var node = nodes[0];\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n}\nfunction focusOnLastNode(event, nodes) {\n  var node = nodes[nodes.length - 1];\n  if (node) {\n    node.focus();\n    event.preventDefault();\n  }\n} // ___Why not just use (focusedItemIndex === -1)?\n//    Firefox thinks <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into the <ul>, code will think that we are not in the active overlay, and we should focusOnFirstNode() of the currently active overlay!\n//    [Practical check] if we use (focusedItemIndex === -1), instagram provider in firefox will never get focus on its pics in the <ul>.\n\nfunction isFocusInOverlay(activeOverlayEl) {\n  return activeOverlayEl.contains(document.activeElement);\n}\nfunction trapFocus(event, activeOverlayType, dashboardEl) {\n  var activeOverlayEl = getActiveOverlayEl(dashboardEl, activeOverlayType);\n  var focusableNodes = toArray(activeOverlayEl.querySelectorAll(FOCUSABLE_ELEMENTS));\n  var focusedItemIndex = focusableNodes.indexOf(document.activeElement); // If we pressed tab, and focus is not yet within the current overlay - focus on the first element within the current overlay.\n  // This is a safety measure (for when user returns from another tab e.g.), most plugins will try to focus on some important element as it loads.\n\n  if (!isFocusInOverlay(activeOverlayEl)) {\n    focusOnFirstNode(event, focusableNodes); // If we pressed shift + tab, and we're on the first element of a modal\n  } else if (event.shiftKey && focusedItemIndex === 0) {\n    focusOnLastNode(event, focusableNodes); // If we pressed tab, and we're on the last element of the modal\n  } else if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {\n    focusOnFirstNode(event, focusableNodes);\n  }\n}\nmodule.exports = {\n  // Traps focus inside of the currently open overlay (e.g. Dashboard, or e.g. Instagram), never lets focus disappear from the modal.\n  forModal: function forModal(event, activeOverlayType, dashboardEl) {\n    trapFocus(event, activeOverlayType, dashboardEl);\n  },\n  // Traps focus inside of the currently open overlay, unless overlay is null - then let the user tab away.\n  forInline: function forInline(event, activeOverlayType, dashboardEl) {\n    // ___When we're in the bare 'Drop files here, paste, browse or import from' screen\n    if (activeOverlayType === null) {// Do nothing and let the browser handle it, user can tab away from Uppy to other elements on the page\n      // ___When there is some overlay with 'Done' button\n    } else {\n      // Trap the focus inside this overlay!\n      // User can close the overlay (click 'Done') if they want to travel away from Uppy.\n      trapFocus(event, activeOverlayType, dashboardEl);\n    }\n  }\n};","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar Translator = require('@uppy/utils/lib/Translator');\nvar toArray = require('@uppy/utils/lib/toArray');\nvar isDragDropSupported = require('@uppy/utils/lib/isDragDropSupported');\nvar getDroppedFiles = require('@uppy/utils/lib/getDroppedFiles');\nvar _require2 = require('preact'),\n  h = _require2.h;\n/**\n * Drag & Drop plugin\n *\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(DragDrop, _Plugin);\n\n  // eslint-disable-next-line global-require\n  function DragDrop(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.type = 'acquirer';\n    _this.id = _this.opts.id || 'DragDrop';\n    _this.title = 'Drag & Drop';\n    _this.defaultLocale = {\n      strings: {\n        dropHereOr: 'Drop files here or %{browse}',\n        browse: 'browse'\n      }\n    }; // Default options\n\n    var defaultOpts = {\n      target: null,\n      inputName: 'files[]',\n      width: '100%',\n      height: '100%',\n      note: null\n    }; // Merge default options with the ones set by user\n\n    _this.opts = _extends({}, defaultOpts, opts); // Check for browser dragDrop support\n\n    _this.isDragDropSupported = isDragDropSupported();\n    _this.removeDragOverClassTimeout = null;\n    _this.i18nInit(); // Bind `this` to class methods\n\n    _this.onInputChange = _this.onInputChange.bind(_assertThisInitialized(_this));\n    _this.handleDragOver = _this.handleDragOver.bind(_assertThisInitialized(_this));\n    _this.handleDragLeave = _this.handleDragLeave.bind(_assertThisInitialized(_this));\n    _this.handleDrop = _this.handleDrop.bind(_assertThisInitialized(_this));\n    _this.addFiles = _this.addFiles.bind(_assertThisInitialized(_this));\n    _this.render = _this.render.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  var _proto = DragDrop.prototype;\n  _proto.setOptions = function setOptions(newOpts) {\n    _Plugin.prototype.setOptions.call(this, newOpts);\n    this.i18nInit();\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.i18nArray = this.translator.translateArray.bind(this.translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  };\n\n  _proto.addFiles = function addFiles(files) {\n    var _this2 = this;\n    var descriptors = files.map(function (file) {\n      return {\n        source: _this2.id,\n        name: file.name,\n        type: file.type,\n        data: file,\n        meta: {\n          // path of the file relative to the ancestor directory the user selected.\n          // e.g. 'docs/Old Prague/airbnb.pdf'\n          relativePath: file.relativePath || null\n        }\n      };\n    });\n    try {\n      this.uppy.addFiles(descriptors);\n    } catch (err) {\n      this.uppy.log(err);\n    }\n  };\n  _proto.onInputChange = function onInputChange(event) {\n    this.uppy.log('[DragDrop] Files selected through input');\n    var files = toArray(event.target.files);\n    this.addFiles(files); // We clear the input after a file is selected, because otherwise\n    // change event is not fired in Chrome and Safari when a file\n    // with the same name is selected.\n    // ___Why not use value=\"\" on <input/> instead?\n    //    Because if we use that method of clearing the input,\n    //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n    // eslint-disable-next-line no-param-reassign\n\n    event.target.value = null;\n  };\n  _proto.handleDrop = function handleDrop(event) {\n    var _this3 = this;\n    if (this.opts.onDrop) this.opts.onDrop(event);\n    event.preventDefault();\n    event.stopPropagation();\n    clearTimeout(this.removeDragOverClassTimeout); // 2. Remove dragover class\n\n    this.setPluginState({\n      isDraggingOver: false\n    }); // 3. Add all dropped files\n\n    this.uppy.log('[DragDrop] Files were dropped');\n    var logDropError = function logDropError(error) {\n      _this3.uppy.log(error, 'error');\n    };\n    getDroppedFiles(event.dataTransfer, {\n      logDropError: logDropError\n    }).then(function (files) {\n      return _this3.addFiles(files);\n    });\n  };\n  _proto.handleDragOver = function handleDragOver(event) {\n    if (this.opts.onDragOver) this.opts.onDragOver(event);\n    event.preventDefault();\n    event.stopPropagation(); // 1. Add a small (+) icon on drop\n    // (and prevent browsers from interpreting this as files being _moved_ into the browser\n    // https://github.com/transloadit/uppy/issues/1978)\n    //\n    // eslint-disable-next-line no-param-reassign\n\n    event.dataTransfer.dropEffect = 'copy';\n    clearTimeout(this.removeDragOverClassTimeout);\n    this.setPluginState({\n      isDraggingOver: true\n    });\n  };\n  _proto.handleDragLeave = function handleDragLeave(event) {\n    var _this4 = this;\n    if (this.opts.onDragLeave) this.opts.onDragLeave(event);\n    event.preventDefault();\n    event.stopPropagation();\n    clearTimeout(this.removeDragOverClassTimeout); // Timeout against flickering, this solution is taken from drag-drop library.\n    // Solution with 'pointer-events: none' didn't work across browsers.\n\n    this.removeDragOverClassTimeout = setTimeout(function () {\n      _this4.setPluginState({\n        isDraggingOver: false\n      });\n    }, 50);\n  };\n  _proto.renderHiddenFileInput = function renderHiddenFileInput() {\n    var _this5 = this;\n    var restrictions = this.uppy.opts.restrictions;\n    return h(\"input\", {\n      className: \"uppy-DragDrop-input\",\n      type: \"file\",\n      hidden: true,\n      ref: function ref(_ref) {\n        _this5.fileInputRef = _ref;\n      },\n      name: this.opts.inputName,\n      multiple: restrictions.maxNumberOfFiles !== 1,\n      accept: restrictions.allowedFileTypes,\n      onChange: this.onInputChange\n    });\n  };\n  DragDrop.renderArrowSvg = function renderArrowSvg() {\n    return h(\"svg\", {\n      \"aria-hidden\": \"true\",\n      focusable: \"false\",\n      className: \"uppy-c-icon uppy-DragDrop-arrow\",\n      width: \"16\",\n      height: \"16\",\n      viewBox: \"0 0 16 16\"\n    }, h(\"path\", {\n      d: \"M11 10V0H5v10H2l6 6 6-6h-3zm0 0\",\n      fillRule: \"evenodd\"\n    }));\n  };\n  _proto.renderLabel = function renderLabel() {\n    return h(\"div\", {\n      className: \"uppy-DragDrop-label\"\n    }, this.i18nArray('dropHereOr', {\n      browse: h(\"span\", {\n        className: \"uppy-DragDrop-browse\"\n      }, this.i18n('browse'))\n    }));\n  };\n  _proto.renderNote = function renderNote() {\n    return h(\"span\", {\n      className: \"uppy-DragDrop-note\"\n    }, this.opts.note);\n  };\n  _proto.render = function render() {\n    var _this6 = this;\n    var dragDropClass = \"uppy-Root\\n      uppy-u-reset\\n      uppy-DragDrop-container\\n      \" + (this.isDragDropSupported ? 'uppy-DragDrop--isDragDropSupported' : '') + \"\\n      \" + (this.getPluginState().isDraggingOver ? 'uppy-DragDrop--isDraggingOver' : '') + \"\\n    \";\n    var dragDropStyle = {\n      width: this.opts.width,\n      height: this.opts.height\n    };\n    return h(\"button\", {\n      type: \"button\",\n      className: dragDropClass,\n      style: dragDropStyle,\n      onClick: function onClick() {\n        return _this6.fileInputRef.click();\n      },\n      onDragOver: this.handleDragOver,\n      onDragLeave: this.handleDragLeave,\n      onDrop: this.handleDrop\n    }, this.renderHiddenFileInput(), h(\"div\", {\n      className: \"uppy-DragDrop-inner\"\n    }, DragDrop.renderArrowSvg(), this.renderLabel(), this.renderNote()));\n  };\n  _proto.install = function install() {\n    var target = this.opts.target;\n    this.setPluginState({\n      isDraggingOver: false\n    });\n    if (target) {\n      this.mount(target, this);\n    }\n  };\n  _proto.uninstall = function uninstall() {\n    this.unmount();\n  };\n  return DragDrop;\n}(Plugin), _class.VERSION = \"1.4.31\", _temp);","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar toArray = require('@uppy/utils/lib/toArray');\nvar Translator = require('@uppy/utils/lib/Translator');\nvar _require2 = require('preact'),\n  h = _require2.h;\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(FileInput, _Plugin);\n  function FileInput(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.id = _this.opts.id || 'FileInput';\n    _this.title = 'File Input';\n    _this.type = 'acquirer';\n    _this.defaultLocale = {\n      strings: {\n        // The same key is used for the same purpose by @uppy/robodog's `form()` API, but our\n        // locale pack scripts can't access it in Robodog. If it is updated here, it should\n        // also be updated there!\n        chooseFiles: 'Choose files'\n      }\n    }; // Default options\n\n    var defaultOptions = {\n      target: null,\n      pretty: true,\n      inputName: 'files[]'\n    }; // Merge default options with the ones set by user\n\n    _this.opts = _extends({}, defaultOptions, opts);\n    _this.i18nInit();\n    _this.render = _this.render.bind(_assertThisInitialized(_this));\n    _this.handleInputChange = _this.handleInputChange.bind(_assertThisInitialized(_this));\n    _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  var _proto = FileInput.prototype;\n  _proto.setOptions = function setOptions(newOpts) {\n    _Plugin.prototype.setOptions.call(this, newOpts);\n    this.i18nInit();\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.i18nArray = this.translator.translateArray.bind(this.translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  };\n\n  _proto.addFiles = function addFiles(files) {\n    var _this2 = this;\n    var descriptors = files.map(function (file) {\n      return {\n        source: _this2.id,\n        name: file.name,\n        type: file.type,\n        data: file\n      };\n    });\n    try {\n      this.uppy.addFiles(descriptors);\n    } catch (err) {\n      this.uppy.log(err);\n    }\n  };\n  _proto.handleInputChange = function handleInputChange(event) {\n    this.uppy.log('[FileInput] Something selected through input...');\n    var files = toArray(event.target.files);\n    this.addFiles(files); // We clear the input after a file is selected, because otherwise\n    // change event is not fired in Chrome and Safari when a file\n    // with the same name is selected.\n    // ___Why not use value=\"\" on <input/> instead?\n    //    Because if we use that method of clearing the input,\n    //    Chrome will not trigger change if we drop the same file twice (Issue #768).\n\n    event.target.value = null;\n  };\n  _proto.handleClick = function handleClick(ev) {\n    this.input.click();\n  };\n  _proto.render = function render(state) {\n    var _this3 = this;\n\n    /* http://tympanus.net/codrops/2015/09/15/styling-customizing-file-inputs-smart-way/ */\n    var hiddenInputStyle = {\n      width: '0.1px',\n      height: '0.1px',\n      opacity: 0,\n      overflow: 'hidden',\n      position: 'absolute',\n      zIndex: -1\n    };\n    var restrictions = this.uppy.opts.restrictions;\n    var accept = restrictions.allowedFileTypes ? restrictions.allowedFileTypes.join(',') : null;\n    return h(\"div\", {\n      className: \"uppy-Root uppy-FileInput-container\"\n    }, h(\"input\", {\n      className: \"uppy-FileInput-input\",\n      style: this.opts.pretty && hiddenInputStyle,\n      type: \"file\",\n      name: this.opts.inputName,\n      onChange: this.handleInputChange,\n      multiple: restrictions.maxNumberOfFiles !== 1,\n      accept: accept,\n      ref: function ref(input) {\n        _this3.input = input;\n      }\n    }), this.opts.pretty && h(\"button\", {\n      className: \"uppy-FileInput-btn\",\n      type: \"button\",\n      onClick: this.handleClick\n    }, this.i18n('chooseFiles')));\n  };\n  _proto.install = function install() {\n    var target = this.opts.target;\n    if (target) {\n      this.mount(target, this);\n    }\n  };\n  _proto.uninstall = function uninstall() {\n    this.unmount();\n  };\n  return FileInput;\n}(Plugin), _class.VERSION = \"1.5.2\", _temp);","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar _require2 = require('preact'),\n  h = _require2.h;\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(Informer, _Plugin);\n  function Informer(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.render = function (state) {\n      var _state$info = state.info,\n        isHidden = _state$info.isHidden,\n        message = _state$info.message,\n        details = _state$info.details;\n      function displayErrorAlert() {\n        var errorMessage = message + \" \\n\\n \" + details;\n        alert(errorMessage);\n      }\n      var handleMouseOver = function handleMouseOver() {\n        clearTimeout(_this.uppy.infoTimeoutID);\n      };\n      var handleMouseLeave = function handleMouseLeave() {\n        _this.uppy.infoTimeoutID = setTimeout(_this.uppy.hideInfo, 2000);\n      };\n      return h(\"div\", {\n        className: \"uppy uppy-Informer\",\n        \"aria-hidden\": isHidden\n      }, h(\"p\", {\n        role: \"alert\"\n      }, message, ' ', details && h(\"span\", {\n        \"aria-label\": details,\n        \"data-microtip-position\": \"top-left\",\n        \"data-microtip-size\": \"medium\",\n        role: \"tooltip\",\n        onClick: displayErrorAlert,\n        onMouseOver: handleMouseOver,\n        onMouseLeave: handleMouseLeave\n      }, \"?\")));\n    };\n    _this.type = 'progressindicator';\n    _this.id = _this.opts.id || 'Informer';\n    _this.title = 'Informer'; // set default options\n\n    var defaultOptions = {}; // merge default options with the ones set by user\n\n    _this.opts = _extends({}, defaultOptions, opts);\n    return _this;\n  }\n  var _proto = Informer.prototype;\n  _proto.install = function install() {\n    var target = this.opts.target;\n    if (target) {\n      this.mount(target, this);\n    }\n  };\n  return Informer;\n}(Plugin), _class.VERSION = \"1.6.6\", _temp);","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar _require2 = require('preact'),\n  h = _require2.h;\n/**\n * Progress bar\n *\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(ProgressBar, _Plugin);\n  function ProgressBar(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.id = _this.opts.id || 'ProgressBar';\n    _this.title = 'Progress Bar';\n    _this.type = 'progressindicator'; // set default options\n\n    var defaultOptions = {\n      target: 'body',\n      replaceTargetContent: false,\n      fixed: false,\n      hideAfterFinish: true\n    }; // merge default options with the ones set by user\n\n    _this.opts = _extends({}, defaultOptions, opts);\n    _this.render = _this.render.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  var _proto = ProgressBar.prototype;\n  _proto.render = function render(state) {\n    var progress = state.totalProgress || 0; // before starting and after finish should be hidden if specified in the options\n\n    var isHidden = (progress === 0 || progress === 100) && this.opts.hideAfterFinish;\n    return h(\"div\", {\n      className: \"uppy uppy-ProgressBar\",\n      style: {\n        position: this.opts.fixed ? 'fixed' : 'initial'\n      },\n      \"aria-hidden\": isHidden\n    }, h(\"div\", {\n      className: \"uppy-ProgressBar-inner\",\n      style: {\n        width: progress + \"%\"\n      }\n    }), h(\"div\", {\n      className: \"uppy-ProgressBar-percentage\"\n    }, progress));\n  };\n  _proto.install = function install() {\n    var target = this.opts.target;\n    if (target) {\n      this.mount(target, this);\n    }\n  };\n  _proto.uninstall = function uninstall() {\n    this.unmount();\n  };\n  return ProgressBar;\n}(Plugin), _class.VERSION = \"1.3.30\", _temp);","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar React = require('react');\nvar DashboardPlugin = require('@uppy/dashboard');\nvar basePropTypes = require('./propTypes').dashboard;\nvar getHTMLProps = require('./getHTMLProps');\nvar h = React.createElement;\n/**\n * React Component that renders a Dashboard for an Uppy instance. This component\n * renders the Dashboard inline, so you can put it anywhere you want.\n */\n\nvar Dashboard = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Dashboard, _React$Component);\n  function Dashboard(props) {\n    var _this;\n    _this = _React$Component.call(this, props) || this;\n    _this.validProps = getHTMLProps(props);\n    return _this;\n  }\n  var _proto = Dashboard.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:Dashboard'\n    }, this.props, {\n      target: this.container\n    });\n    delete options.uppy;\n    uppy.use(DashboardPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var _props = props,\n      uppy = _props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h('div', _extends({\n      ref: function ref(container) {\n        _this2.container = container;\n      }\n    }, this.validProps));\n  };\n  return Dashboard;\n}(React.Component);\nDashboard.propTypes = basePropTypes;\nDashboard.defaultProps = {\n  inline: true\n};\nmodule.exports = Dashboard;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar DashboardPlugin = require('@uppy/dashboard');\nvar basePropTypes = require('./propTypes').dashboard;\nvar getHTMLProps = require('./getHTMLProps');\nvar h = React.createElement;\n/**\n * React Component that renders a Dashboard for an Uppy instance in a Modal\n * dialog. Visibility of the Modal is toggled using the `open` prop.\n */\n\nvar DashboardModal = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DashboardModal, _React$Component);\n  function DashboardModal(props) {\n    var _this;\n    _this = _React$Component.call(this, props) || this;\n    _this.validProps = getHTMLProps(props);\n    return _this;\n  }\n  var _proto = DashboardModal.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n    if (prevProps.open && !this.props.open) {\n      this.plugin.closeModal();\n    } else if (!prevProps.open && this.props.open) {\n      this.plugin.openModal();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:DashboardModal'\n    }, this.props, {\n      onRequestCloseModal: this.props.onRequestClose\n    });\n    if (!options.target) {\n      options.target = this.container;\n    }\n    delete options.uppy;\n    uppy.use(DashboardPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n    if (this.props.open) {\n      this.plugin.openModal();\n    }\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var _props = props,\n      uppy = _props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h('div', _extends({\n      ref: function ref(container) {\n        _this2.container = container;\n      }\n    }, this.validProps));\n  };\n  return DashboardModal;\n}(React.Component);\nDashboardModal.propTypes = _extends({\n  // Only check this prop type in the browser.\n  target: typeof window !== 'undefined' ? PropTypes.instanceOf(window.HTMLElement) : PropTypes.any,\n  open: PropTypes.bool,\n  onRequestClose: PropTypes.func,\n  closeModalOnClickOutside: PropTypes.bool,\n  disablePageScrollWhenModalOpen: PropTypes.bool\n}, basePropTypes);\nDashboardModal.defaultProps = {};\nmodule.exports = DashboardModal;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar React = require('react');\nvar DragDropPlugin = require('@uppy/drag-drop');\nvar propTypes = require('./propTypes');\nvar getHTMLProps = require('./getHTMLProps');\nvar h = React.createElement;\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\n\nvar DragDrop = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(DragDrop, _React$Component);\n  function DragDrop(props) {\n    var _this;\n    _this = _React$Component.call(this, props) || this;\n    _this.validProps = getHTMLProps(props);\n    return _this;\n  }\n  var _proto = DragDrop.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:DragDrop'\n    }, this.props, {\n      target: this.container\n    });\n    delete options.uppy;\n    uppy.use(DragDropPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var _props = props,\n      uppy = _props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h('div', _extends({\n      ref: function ref(container) {\n        _this2.container = container;\n      }\n    }, this.validProps));\n  };\n  return DragDrop;\n}(React.Component);\nDragDrop.propTypes = {\n  uppy: propTypes.uppy,\n  locale: propTypes.locale\n};\nDragDrop.defaultProps = {};\nmodule.exports = DragDrop;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar PropTypes = require('prop-types');\nvar React = require('react');\nvar FileInputPlugin = require('@uppy/file-input');\nvar propTypes = require('./propTypes');\nvar h = React.createElement;\n/**\n * React component that renders an area in which files can be dropped to be\n * uploaded.\n */\n\nvar FileInput = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(FileInput, _React$Component);\n  function FileInput() {\n    return _React$Component.apply(this, arguments) || this;\n  }\n  var _proto = FileInput.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:FileInput'\n    }, this.props, {\n      target: this.container\n    });\n    delete options.uppy;\n    uppy.use(FileInputPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var uppy = props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this = this;\n    return h('div', {\n      ref: function ref(container) {\n        _this.container = container;\n      }\n    });\n  };\n  return FileInput;\n}(React.Component);\nFileInput.propTypes = {\n  uppy: propTypes.uppy,\n  locale: propTypes.locale,\n  pretty: PropTypes.bool,\n  inputName: PropTypes.string\n};\nFileInput.defaultProps = {};\nmodule.exports = FileInput;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar ProgressBarPlugin = require('@uppy/progress-bar');\nvar uppyPropType = require('./propTypes').uppy;\nvar getHTMLProps = require('./getHTMLProps');\nvar h = React.createElement;\n/**\n * React component that renders a progress bar at the top of the page.\n */\n\nvar ProgressBar = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(ProgressBar, _React$Component);\n  function ProgressBar(props) {\n    var _this;\n    _this = _React$Component.call(this, props) || this;\n    _this.validProps = getHTMLProps(props);\n    return _this;\n  }\n  var _proto = ProgressBar.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:ProgressBar'\n    }, this.props, {\n      target: this.container\n    });\n    delete options.uppy;\n    uppy.use(ProgressBarPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var _props = props,\n      uppy = _props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h('div', _extends({\n      ref: function ref(container) {\n        _this2.container = container;\n      }\n    }, this.validProps));\n  };\n  return ProgressBar;\n}(React.Component);\nProgressBar.propTypes = {\n  uppy: uppyPropType,\n  fixed: PropTypes.bool,\n  hideAfterFinish: PropTypes.bool\n};\nProgressBar.defaultProps = {};\nmodule.exports = ProgressBar;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar StatusBarPlugin = require('@uppy/status-bar');\nvar uppyPropType = require('./propTypes').uppy;\nvar getHTMLProps = require('./getHTMLProps');\nvar h = React.createElement;\n/**\n * React component that renders a status bar containing upload progress and speed,\n * processing progress and pause/resume/cancel controls.\n */\n\nvar StatusBar = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(StatusBar, _React$Component);\n  function StatusBar(props) {\n    var _this;\n    _this = _React$Component.call(this, props) || this;\n    _this.validProps = getHTMLProps(props);\n    return _this;\n  }\n  var _proto = StatusBar.prototype;\n  _proto.componentDidMount = function componentDidMount() {\n    this.installPlugin();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    if (prevProps.uppy !== this.props.uppy) {\n      this.uninstallPlugin(prevProps);\n      this.installPlugin();\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.uninstallPlugin();\n  };\n  _proto.installPlugin = function installPlugin() {\n    var uppy = this.props.uppy;\n    var options = _extends({\n      id: 'react:StatusBar'\n    }, this.props, {\n      target: this.container\n    });\n    delete options.uppy;\n    uppy.use(StatusBarPlugin, options);\n    this.plugin = uppy.getPlugin(options.id);\n  };\n  _proto.uninstallPlugin = function uninstallPlugin(props) {\n    if (props === void 0) {\n      props = this.props;\n    }\n    var _props = props,\n      uppy = _props.uppy;\n    uppy.removePlugin(this.plugin);\n  };\n  _proto.render = function render() {\n    var _this2 = this;\n    return h('div', _extends({\n      ref: function ref(container) {\n        _this2.container = container;\n      }\n    }, this.validProps));\n  };\n  return StatusBar;\n}(React.Component);\nStatusBar.propTypes = {\n  uppy: uppyPropType,\n  hideAfterFinish: PropTypes.bool,\n  showProgressDetails: PropTypes.bool\n};\nStatusBar.defaultProps = {};\nmodule.exports = StatusBar;","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n// Attributes in the format of htmlAtrribute: reactAttribute\nvar possibleStandardNames = ['accept', 'acceptCharset', 'acceptCharset', 'accessKey', 'action', 'allowFullScreen', 'alt', 'as', 'async', 'autoCapitalize', 'autoComplete', 'autoCorrect', 'autoFocus', 'autoPlay', 'autoSave', 'capture', 'cellPadding', 'cellSpacing', 'challenge', 'charSet', 'checked', 'children', 'cite', 'className', 'classID', 'className', 'cols', 'colSpan', 'content', 'contentEditable', 'contextMenu', 'controls', 'controlsList', 'coords', 'crossOrigin', 'dangerouslySetInnerHTML', 'data', 'dateTime', 'default', 'defaultChecked', 'defaultValue', 'defer', 'dir', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'download', 'draggable', 'encType', 'enterKeyHint', 'htmlFor', 'form', 'formMethod', 'formAction', 'formEncType', 'formNoValidate', 'formTarget', 'frameBorder', 'headers',\n// 'height',\n'hidden', 'high', 'href', 'hrefLang', 'htmlFor', 'httpEquiv', 'httpEquiv', 'icon', 'id', 'innerHTML', 'inputMode', 'integrity', 'is', 'itemID', 'itemProp', 'itemRef', 'itemScope', 'itemType', 'keyParams', 'keyType', 'kind', 'label', 'lang', 'list', 'loop', 'low', 'manifest', 'marginWidth', 'marginHeight', 'max', 'maxLength', 'media', 'mediaGroup', 'method', 'min', 'minLength', 'multiple', 'muted', 'name', 'noModule', 'nonce', 'noValidate', 'open', 'optimum', 'pattern', 'placeholder', 'playsInline', 'poster', 'preload', 'profile', 'radioGroup', 'readOnly', 'referrerPolicy', 'rel', 'required', 'reversed', 'role', 'rows', 'rowSpan', 'sandbox', 'scope', 'scoped', 'scrolling', 'seamless', 'selected', 'shape', 'size', 'sizes', 'span', 'spellCheck', 'src', 'srcDoc', 'srcLang', 'srcSet', 'start', 'step', 'style', 'summary', 'tabIndex',\n// 'target',\n'title', 'type', 'useMap', 'value',\n// 'width',\n'wmode', 'wrap']; // A decent polyfill for Object.entries for good browser support\n\nvar getEntries = function getEntries(object) {\n  // eslint-disable-next-line compat/compat\n  return Object.entries ? Object.entries(object) : Object.keys(object).map(function (key) {\n    return [key, object[key]];\n  });\n};\nvar getHTMLProps = function getHTMLProps(props) {\n  // Gets all the React props\n  var reducer = function reducer(acc, _ref) {\n    var _extends2;\n    var key = _ref[0],\n      value = _ref[1];\n    return possibleStandardNames.includes(key) ? _extends({}, acc, (_extends2 = {}, _extends2[key] = value, _extends2)) : acc;\n  };\n  return getEntries(props).reduce(reducer, {});\n};\nmodule.exports = getHTMLProps;","var PropTypes = require('prop-types');\nvar UppyCore = require('@uppy/core').Uppy; // The `uppy` prop receives the Uppy core instance.\n\nvar uppy = PropTypes.instanceOf(UppyCore).isRequired; // A list of plugins to mount inside this component.\n\nvar plugins = PropTypes.arrayOf(PropTypes.string); // Language strings for this component.\n\nvar locale = PropTypes.shape({\n  strings: PropTypes.object,\n  pluralize: PropTypes.func\n}); // List of meta fields for the editor in the Dashboard.\n\nvar metaField = PropTypes.shape({\n  id: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  placeholder: PropTypes.string\n});\nvar metaFields = PropTypes.oneOfType([PropTypes.arrayOf(metaField), PropTypes.func]); // A size in pixels (number) or with some other unit (string).\n\nvar cssSize = PropTypes.oneOfType([PropTypes.string, PropTypes.number]); // Common props for dashboardy components (Dashboard and DashboardModal).\n\nvar dashboard = {\n  uppy: uppy,\n  inline: PropTypes.bool,\n  plugins: plugins,\n  width: cssSize,\n  height: cssSize,\n  showProgressDetails: PropTypes.bool,\n  hideUploadButton: PropTypes.bool,\n  hideProgressAfterFinish: PropTypes.bool,\n  note: PropTypes.string,\n  metaFields: metaFields,\n  proudlyDisplayPoweredByUppy: PropTypes.bool,\n  disableStatusBar: PropTypes.bool,\n  disableInformer: PropTypes.bool,\n  disableThumbnailGenerator: PropTypes.bool,\n  // pass-through to ThumbnailGenerator\n  thumbnailWidth: PropTypes.number,\n  locale: locale\n};\nmodule.exports = {\n  uppy: uppy,\n  locale: locale,\n  dashboard: dashboard\n};","var _require = require('react'),\n  useEffect = _require.useEffect,\n  useRef = _require.useRef;\nvar UppyCore = require('@uppy/core').Uppy;\nmodule.exports = function useUppy(factory) {\n  if (typeof factory !== 'function') {\n    throw new TypeError('useUppy: expected a function that returns a new Uppy instance');\n  }\n  var uppy = useRef(undefined);\n  if (uppy.current === undefined) {\n    uppy.current = factory();\n    if (!(uppy.current instanceof UppyCore)) {\n      throw new TypeError(\"useUppy: factory function must return an Uppy instance, got \" + typeof uppy.current);\n    }\n  }\n  useEffect(function () {\n    return function () {\n      uppy.current.close();\n    };\n  }, []);\n  return uppy.current;\n};","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar throttle = require('lodash.throttle');\nvar classNames = require('classnames');\nvar statusBarStates = require('./StatusBarStates');\nvar prettierBytes = require('@transloadit/prettier-bytes');\nvar prettyETA = require('@uppy/utils/lib/prettyETA');\nvar _require = require('preact'),\n  h = _require.h;\nfunction calculateProcessingProgress(files) {\n  // Collect pre or postprocessing progress states.\n  var progresses = [];\n  Object.keys(files).forEach(function (fileID) {\n    var progress = files[fileID].progress;\n    if (progress.preprocess) {\n      progresses.push(progress.preprocess);\n    }\n    if (progress.postprocess) {\n      progresses.push(progress.postprocess);\n    }\n  }); // In the future we should probably do this differently. For now we'll take the\n  // mode and message from the first file…\n\n  var _progresses$ = progresses[0],\n    mode = _progresses$.mode,\n    message = _progresses$.message;\n  var value = progresses.filter(isDeterminate).reduce(function (total, progress, index, all) {\n    return total + progress.value / all.length;\n  }, 0);\n  function isDeterminate(progress) {\n    return progress.mode === 'determinate';\n  }\n  return {\n    mode: mode,\n    message: message,\n    value: value\n  };\n}\nfunction togglePauseResume(props) {\n  if (props.isAllComplete) return;\n  if (!props.resumableUploads) {\n    return props.cancelAll();\n  }\n  if (props.isAllPaused) {\n    return props.resumeAll();\n  }\n  return props.pauseAll();\n}\nfunction RenderReSelectGhosts(_ref) {\n  var i18n = _ref.i18n;\n  return h(\"div\", {\n    className: \"uppy-StatusBar-serviceMsg\"\n  }, i18n('reSelectGhosts'), h(\"svg\", {\n    className: \"uppy-c-icon uppy-StatusBar-serviceMsg-ghostsIcon\",\n    \"aria-hidden\": \"true\",\n    width: \"15\",\n    height: \"19\",\n    viewBox: \"0 0 35 39\"\n  }, h(\"path\", {\n    d: \"M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417 3.416 0 5.125 3.417 8.61 3.417 3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709zm8.542-17.084a3.383 3.383 0 01-3.417-3.416 3.383 3.383 0 013.417-3.417 3.383 3.383 0 013.417 3.417 3.383 3.383 0 01-3.417 3.416zm13.667 0A3.383 3.383 0 0120.5 18.16a3.383 3.383 0 013.417-3.417 3.383 3.383 0 013.416 3.417 3.383 3.383 0 01-3.416 3.416z\",\n    fillRule: \"nonzero\"\n  })));\n}\nmodule.exports = function (props) {\n  props = props || {};\n  var _props = props,\n    newFiles = _props.newFiles,\n    allowNewUpload = _props.allowNewUpload,\n    isUploadInProgress = _props.isUploadInProgress,\n    isAllPaused = _props.isAllPaused,\n    resumableUploads = _props.resumableUploads,\n    error = _props.error,\n    hideUploadButton = _props.hideUploadButton,\n    hidePauseResumeButton = _props.hidePauseResumeButton,\n    hideCancelButton = _props.hideCancelButton,\n    hideRetryButton = _props.hideRetryButton,\n    recoveredState = _props.recoveredState;\n  var uploadState = props.uploadState;\n  var progressValue = props.totalProgress;\n  var progressMode;\n  var progressBarContent;\n  if (uploadState === statusBarStates.STATE_PREPROCESSING || uploadState === statusBarStates.STATE_POSTPROCESSING) {\n    var progress = calculateProcessingProgress(props.files);\n    progressMode = progress.mode;\n    if (progressMode === 'determinate') {\n      progressValue = progress.value * 100;\n    }\n    progressBarContent = ProgressBarProcessing(progress);\n  } else if (uploadState === statusBarStates.STATE_COMPLETE) {\n    progressBarContent = ProgressBarComplete(props);\n  } else if (uploadState === statusBarStates.STATE_UPLOADING) {\n    if (!props.supportsUploadProgress) {\n      progressMode = 'indeterminate';\n      progressValue = null;\n    }\n    progressBarContent = ProgressBarUploading(props);\n  } else if (uploadState === statusBarStates.STATE_ERROR) {\n    progressValue = undefined;\n    progressBarContent = ProgressBarError(props);\n  }\n  var width = typeof progressValue === 'number' ? progressValue : 100;\n  var isHidden = uploadState === statusBarStates.STATE_WAITING && props.hideUploadButton || uploadState === statusBarStates.STATE_WAITING && !props.newFiles > 0 || uploadState === statusBarStates.STATE_COMPLETE && props.hideAfterFinish;\n  var showUploadBtn = !error && newFiles && !isUploadInProgress && !isAllPaused && allowNewUpload && !hideUploadButton;\n  if (recoveredState) {\n    isHidden = false;\n    showUploadBtn = true;\n  }\n  var showCancelBtn = !hideCancelButton && uploadState !== statusBarStates.STATE_WAITING && uploadState !== statusBarStates.STATE_COMPLETE;\n  var showPauseResumeBtn = resumableUploads && !hidePauseResumeButton && uploadState === statusBarStates.STATE_UPLOADING;\n  var showRetryBtn = error && !hideRetryButton;\n  var showDoneBtn = props.doneButtonHandler && uploadState === statusBarStates.STATE_COMPLETE;\n  var progressClassNames = \"uppy-StatusBar-progress\\n                           \" + (progressMode ? \"is-\" + progressMode : '');\n  var statusBarClassNames = classNames({\n    'uppy-Root': props.isTargetDOMEl\n  }, 'uppy-StatusBar', \"is-\" + uploadState, {\n    'has-ghosts': props.isSomeGhost\n  });\n  return h(\"div\", {\n    className: statusBarClassNames,\n    \"aria-hidden\": isHidden\n  }, h(\"div\", {\n    className: progressClassNames,\n    style: {\n      width: width + \"%\"\n    },\n    role: \"progressbar\",\n    \"aria-valuemin\": \"0\",\n    \"aria-valuemax\": \"100\",\n    \"aria-valuenow\": progressValue\n  }), progressBarContent, h(\"div\", {\n    className: \"uppy-StatusBar-actions\"\n  }, showUploadBtn ? h(UploadBtn, _extends({}, props, {\n    uploadState: uploadState\n  })) : null, showRetryBtn ? h(RetryBtn, props) : null, showPauseResumeBtn ? h(PauseResumeButton, props) : null, showCancelBtn ? h(CancelBtn, props) : null, showDoneBtn ? h(DoneBtn, props) : null));\n};\nvar UploadBtn = function UploadBtn(props) {\n  var uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--upload', {\n    'uppy-c-btn-primary': props.uploadState === statusBarStates.STATE_WAITING\n  }, {\n    'uppy-StatusBar-actionBtn--disabled': props.isSomeGhost\n  });\n  var uploadBtnText = props.newFiles && props.isUploadStarted && !props.recoveredState ? props.i18n('uploadXNewFiles', {\n    smart_count: props.newFiles\n  }) : props.i18n('uploadXFiles', {\n    smart_count: props.newFiles\n  });\n  return h(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": props.i18n('uploadXFiles', {\n      smart_count: props.newFiles\n    }),\n    onClick: props.startUpload,\n    disabled: props.isSomeGhost,\n    \"data-uppy-super-focusable\": true\n  }, uploadBtnText);\n};\nvar RetryBtn = function RetryBtn(props) {\n  return h(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--retry\",\n    \"aria-label\": props.i18n('retryUpload'),\n    onClick: props.retryAll,\n    \"data-uppy-super-focusable\": true\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"8\",\n    height: \"10\",\n    viewBox: \"0 0 8 10\"\n  }, h(\"path\", {\n    d: \"M4 2.408a2.75 2.75 0 1 0 2.75 2.75.626.626 0 0 1 1.25.018v.023a4 4 0 1 1-4-4.041V.25a.25.25 0 0 1 .389-.208l2.299 1.533a.25.25 0 0 1 0 .416l-2.3 1.533A.25.25 0 0 1 4 3.316v-.908z\"\n  })), props.i18n('retry'));\n};\nvar CancelBtn = function CancelBtn(props) {\n  return h(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    title: props.i18n('cancel'),\n    \"aria-label\": props.i18n('cancel'),\n    onClick: props.cancelAll,\n    \"data-uppy-super-focusable\": true\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, h(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, h(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), h(\"path\", {\n    fill: \"#FFF\",\n    d: \"M9.283 8l2.567 2.567-1.283 1.283L8 9.283 5.433 11.85 4.15 10.567 6.717 8 4.15 5.433 5.433 4.15 8 6.717l2.567-2.567 1.283 1.283z\"\n  }))));\n};\nvar PauseResumeButton = function PauseResumeButton(props) {\n  var isAllPaused = props.isAllPaused,\n    i18n = props.i18n;\n  var title = isAllPaused ? i18n('resume') : i18n('pause');\n  return h(\"button\", {\n    title: title,\n    \"aria-label\": title,\n    className: \"uppy-u-reset uppy-StatusBar-actionCircleBtn\",\n    type: \"button\",\n    onClick: function onClick() {\n      return togglePauseResume(props);\n    },\n    \"data-uppy-super-focusable\": true\n  }, isAllPaused ? h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, h(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, h(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), h(\"path\", {\n    fill: \"#FFF\",\n    d: \"M6 4.25L11.5 8 6 11.75z\"\n  }))) : h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-c-icon\",\n    width: \"16\",\n    height: \"16\",\n    viewBox: \"0 0 16 16\"\n  }, h(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n  }, h(\"circle\", {\n    fill: \"#888\",\n    cx: \"8\",\n    cy: \"8\",\n    r: \"8\"\n  }), h(\"path\", {\n    d: \"M5 4.5h2v7H5v-7zm4 0h2v7H9v-7z\",\n    fill: \"#FFF\"\n  }))));\n};\nvar DoneBtn = function DoneBtn(props) {\n  var i18n = props.i18n;\n  return h(\"button\", {\n    type: \"button\",\n    className: \"uppy-u-reset uppy-c-btn uppy-StatusBar-actionBtn uppy-StatusBar-actionBtn--done\",\n    onClick: props.doneButtonHandler,\n    \"data-uppy-super-focusable\": true\n  }, i18n('done'));\n};\nvar LoadingSpinner = function LoadingSpinner() {\n  return h(\"svg\", {\n    className: \"uppy-StatusBar-spinner\",\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    width: \"14\",\n    height: \"14\"\n  }, h(\"path\", {\n    d: \"M13.983 6.547c-.12-2.509-1.64-4.893-3.939-5.936-2.48-1.127-5.488-.656-7.556 1.094C.524 3.367-.398 6.048.162 8.562c.556 2.495 2.46 4.52 4.94 5.183 2.932.784 5.61-.602 7.256-3.015-1.493 1.993-3.745 3.309-6.298 2.868-2.514-.434-4.578-2.349-5.153-4.84a6.226 6.226 0 0 1 2.98-6.778C6.34.586 9.74 1.1 11.373 3.493c.407.596.693 1.282.842 1.988.127.598.073 1.197.161 1.794.078.525.543 1.257 1.15.864.525-.341.49-1.05.456-1.592-.007-.15.02.3 0 0\",\n    fillRule: \"evenodd\"\n  }));\n};\nvar ProgressBarProcessing = function ProgressBarProcessing(props) {\n  var value = Math.round(props.value * 100);\n  return h(\"div\", {\n    className: \"uppy-StatusBar-content\"\n  }, h(LoadingSpinner, null), props.mode === 'determinate' ? value + \"% \\xB7 \" : '', props.message);\n};\nvar renderDot = function renderDot() {\n  return \" \\xB7 \";\n};\nvar ProgressDetails = function ProgressDetails(props) {\n  var ifShowFilesUploadedOfTotal = props.numUploads > 1;\n  return h(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, ifShowFilesUploadedOfTotal && props.i18n('filesUploadedOfTotal', {\n    complete: props.complete,\n    smart_count: props.numUploads\n  }), h(\"span\", {\n    className: \"uppy-StatusBar-additionalInfo\"\n  }, ifShowFilesUploadedOfTotal && renderDot(), props.i18n('dataUploadedOfTotal', {\n    complete: prettierBytes(props.totalUploadedSize),\n    total: prettierBytes(props.totalSize)\n  }), renderDot(), props.i18n('xTimeLeft', {\n    time: prettyETA(props.totalETA)\n  })));\n};\nvar UnknownProgressDetails = function UnknownProgressDetails(props) {\n  return h(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, props.i18n('filesUploadedOfTotal', {\n    complete: props.complete,\n    smart_count: props.numUploads\n  }));\n};\nvar UploadNewlyAddedFiles = function UploadNewlyAddedFiles(props) {\n  var uploadBtnClassNames = classNames('uppy-u-reset', 'uppy-c-btn', 'uppy-StatusBar-actionBtn', 'uppy-StatusBar-actionBtn--uploadNewlyAdded');\n  return h(\"div\", {\n    className: \"uppy-StatusBar-statusSecondary\"\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-statusSecondaryHint\"\n  }, props.i18n('xMoreFilesAdded', {\n    smart_count: props.newFiles\n  })), h(\"button\", {\n    type: \"button\",\n    className: uploadBtnClassNames,\n    \"aria-label\": props.i18n('uploadXFiles', {\n      smart_count: props.newFiles\n    }),\n    onClick: props.startUpload\n  }, props.i18n('upload')));\n};\nvar ThrottledProgressDetails = throttle(ProgressDetails, 500, {\n  leading: true,\n  trailing: true\n});\nvar ProgressBarUploading = function ProgressBarUploading(props) {\n  if (!props.isUploadStarted || props.isAllComplete) {\n    return null;\n  }\n  var title = props.isAllPaused ? props.i18n('paused') : props.i18n('uploading');\n  var showUploadNewlyAddedFiles = props.newFiles && props.isUploadStarted;\n  return h(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    \"aria-label\": title,\n    title: title\n  }, !props.isAllPaused ? h(LoadingSpinner, null) : null, h(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, props.supportsUploadProgress ? title + \": \" + props.totalProgress + \"%\" : title), !props.isAllPaused && !showUploadNewlyAddedFiles && props.showProgressDetails ? props.supportsUploadProgress ? h(ThrottledProgressDetails, props) : h(UnknownProgressDetails, props) : null, showUploadNewlyAddedFiles ? h(UploadNewlyAddedFiles, props) : null));\n};\nvar ProgressBarComplete = function ProgressBarComplete(_ref2) {\n  var totalProgress = _ref2.totalProgress,\n    i18n = _ref2.i18n;\n  return h(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    role: \"status\",\n    title: i18n('complete')\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"15\",\n    height: \"11\",\n    viewBox: \"0 0 15 11\"\n  }, h(\"path\", {\n    d: \"M.414 5.843L1.627 4.63l3.472 3.472L13.202 0l1.212 1.213L5.1 10.528z\"\n  })), i18n('complete'))));\n};\nvar ProgressBarError = function ProgressBarError(_ref3) {\n  var error = _ref3.error,\n    retryAll = _ref3.retryAll,\n    hideRetryButton = _ref3.hideRetryButton,\n    i18n = _ref3.i18n;\n  function displayErrorAlert() {\n    var errorMessage = i18n('uploadFailed') + \" \\n\\n \" + error;\n    alert(errorMessage);\n  }\n  return h(\"div\", {\n    className: \"uppy-StatusBar-content\",\n    role: \"alert\",\n    title: i18n('uploadFailed')\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-status\"\n  }, h(\"div\", {\n    className: \"uppy-StatusBar-statusPrimary\"\n  }, h(\"svg\", {\n    \"aria-hidden\": \"true\",\n    focusable: \"false\",\n    className: \"uppy-StatusBar-statusIndicator uppy-c-icon\",\n    width: \"11\",\n    height: \"11\",\n    viewBox: \"0 0 11 11\"\n  }, h(\"path\", {\n    d: \"M4.278 5.5L0 1.222 1.222 0 5.5 4.278 9.778 0 11 1.222 6.722 5.5 11 9.778 9.778 11 5.5 6.722 1.222 11 0 9.778z\"\n  })), i18n('uploadFailed'))), h(\"span\", {\n    className: \"uppy-StatusBar-details\",\n    \"aria-label\": error,\n    \"data-microtip-position\": \"top-right\",\n    \"data-microtip-size\": \"medium\",\n    role: \"tooltip\",\n    onClick: displayErrorAlert\n  }, \"?\"));\n};","module.exports = {\n  STATE_ERROR: 'error',\n  STATE_WAITING: 'waiting',\n  STATE_PREPROCESSING: 'preprocessing',\n  STATE_UPLOADING: 'uploading',\n  STATE_POSTPROCESSING: 'postprocessing',\n  STATE_COMPLETE: 'complete'\n};","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar Translator = require('@uppy/utils/lib/Translator');\nvar StatusBarUI = require('./StatusBar');\nvar statusBarStates = require('./StatusBarStates');\nvar getSpeed = require('@uppy/utils/lib/getSpeed');\nvar getBytesRemaining = require('@uppy/utils/lib/getBytesRemaining');\nvar getTextDirection = require('@uppy/utils/lib/getTextDirection');\n/**\n * StatusBar: renders a status bar with upload/pause/resume/cancel/retry buttons,\n * progress percentage and time remaining.\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(StatusBar, _Plugin);\n  function StatusBar(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.startUpload = function () {\n      var _this$uppy$getState = _this.uppy.getState(),\n        recoveredState = _this$uppy$getState.recoveredState;\n      if (recoveredState) {\n        _this.uppy.emit('restore-confirmed');\n        return;\n      }\n      return _this.uppy.upload().catch(function () {// Error logged in Core\n      });\n    };\n    _this.id = _this.opts.id || 'StatusBar';\n    _this.title = 'StatusBar';\n    _this.type = 'progressindicator';\n    _this.defaultLocale = {\n      strings: {\n        uploading: 'Uploading',\n        upload: 'Upload',\n        complete: 'Complete',\n        uploadFailed: 'Upload failed',\n        paused: 'Paused',\n        retry: 'Retry',\n        retryUpload: 'Retry upload',\n        cancel: 'Cancel',\n        pause: 'Pause',\n        resume: 'Resume',\n        done: 'Done',\n        filesUploadedOfTotal: {\n          0: '%{complete} of %{smart_count} file uploaded',\n          1: '%{complete} of %{smart_count} files uploaded'\n        },\n        dataUploadedOfTotal: '%{complete} of %{total}',\n        xTimeLeft: '%{time} left',\n        uploadXFiles: {\n          0: 'Upload %{smart_count} file',\n          1: 'Upload %{smart_count} files'\n        },\n        uploadXNewFiles: {\n          0: 'Upload +%{smart_count} file',\n          1: 'Upload +%{smart_count} files'\n        },\n        xMoreFilesAdded: {\n          0: '%{smart_count} more file added',\n          1: '%{smart_count} more files added'\n        }\n      }\n    }; // set default options\n\n    var defaultOptions = {\n      target: 'body',\n      hideUploadButton: false,\n      hideRetryButton: false,\n      hidePauseResumeButton: false,\n      hideCancelButton: false,\n      showProgressDetails: false,\n      hideAfterFinish: true,\n      doneButtonHandler: null\n    };\n    _this.opts = _extends({}, defaultOptions, opts);\n    _this.i18nInit();\n    _this.render = _this.render.bind(_assertThisInitialized(_this));\n    _this.install = _this.install.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  var _proto = StatusBar.prototype;\n  _proto.setOptions = function setOptions(newOpts) {\n    _Plugin.prototype.setOptions.call(this, newOpts);\n    this.i18nInit();\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  };\n\n  _proto.getTotalSpeed = function getTotalSpeed(files) {\n    var totalSpeed = 0;\n    files.forEach(function (file) {\n      totalSpeed += getSpeed(file.progress);\n    });\n    return totalSpeed;\n  };\n  _proto.getTotalETA = function getTotalETA(files) {\n    var totalSpeed = this.getTotalSpeed(files);\n    if (totalSpeed === 0) {\n      return 0;\n    }\n    var totalBytesRemaining = files.reduce(function (total, file) {\n      return total + getBytesRemaining(file.progress);\n    }, 0);\n    return Math.round(totalBytesRemaining / totalSpeed * 10) / 10;\n  };\n  _proto.getUploadingState = function getUploadingState(isAllErrored, isAllComplete, recoveredState, files) {\n    if (isAllErrored) {\n      return statusBarStates.STATE_ERROR;\n    }\n    if (isAllComplete) {\n      return statusBarStates.STATE_COMPLETE;\n    }\n    if (recoveredState) {\n      return statusBarStates.STATE_WAITING;\n    }\n    var state = statusBarStates.STATE_WAITING;\n    var fileIDs = Object.keys(files);\n    for (var i = 0; i < fileIDs.length; i++) {\n      var progress = files[fileIDs[i]].progress; // If ANY files are being uploaded right now, show the uploading state.\n\n      if (progress.uploadStarted && !progress.uploadComplete) {\n        return statusBarStates.STATE_UPLOADING;\n      } // If files are being preprocessed AND postprocessed at this time, we show the\n      // preprocess state. If any files are being uploaded we show uploading.\n\n      if (progress.preprocess && state !== statusBarStates.STATE_UPLOADING) {\n        state = statusBarStates.STATE_PREPROCESSING;\n      } // If NO files are being preprocessed or uploaded right now, but some files are\n      // being postprocessed, show the postprocess state.\n\n      if (progress.postprocess && state !== statusBarStates.STATE_UPLOADING && state !== statusBarStates.STATE_PREPROCESSING) {\n        state = statusBarStates.STATE_POSTPROCESSING;\n      }\n    }\n    return state;\n  };\n  _proto.render = function render(state) {\n    var capabilities = state.capabilities,\n      files = state.files,\n      allowNewUpload = state.allowNewUpload,\n      totalProgress = state.totalProgress,\n      error = state.error,\n      recoveredState = state.recoveredState; // TODO: move this to Core, to share between Status Bar and Dashboard\n    // (and any other plugin that might need it, too)\n\n    var filesArray = Object.keys(files).map(function (file) {\n      return files[file];\n    });\n    var newFiles = filesArray.filter(function (file) {\n      return !file.progress.uploadStarted && !file.progress.preprocess && !file.progress.postprocess;\n    }); // If some state was recovered, we want to show Upload button/counter\n    // for all the files, because in this case it’s not an Upload button,\n    // but “Confirm Restore Button”\n\n    if (recoveredState) {\n      newFiles = filesArray;\n    }\n    var uploadStartedFiles = filesArray.filter(function (file) {\n      return file.progress.uploadStarted;\n    });\n    var pausedFiles = uploadStartedFiles.filter(function (file) {\n      return file.isPaused;\n    });\n    var completeFiles = filesArray.filter(function (file) {\n      return file.progress.uploadComplete;\n    });\n    var erroredFiles = filesArray.filter(function (file) {\n      return file.error;\n    });\n    var inProgressFiles = filesArray.filter(function (file) {\n      return !file.progress.uploadComplete && file.progress.uploadStarted;\n    });\n    var inProgressNotPausedFiles = inProgressFiles.filter(function (file) {\n      return !file.isPaused;\n    });\n    var startedFiles = filesArray.filter(function (file) {\n      return file.progress.uploadStarted || file.progress.preprocess || file.progress.postprocess;\n    });\n    var processingFiles = filesArray.filter(function (file) {\n      return file.progress.preprocess || file.progress.postprocess;\n    });\n    var totalETA = this.getTotalETA(inProgressNotPausedFiles);\n    var totalSize = 0;\n    var totalUploadedSize = 0;\n    startedFiles.forEach(function (file) {\n      totalSize += file.progress.bytesTotal || 0;\n      totalUploadedSize += file.progress.bytesUploaded || 0;\n    });\n    var isUploadStarted = startedFiles.length > 0;\n    var isAllComplete = totalProgress === 100 && completeFiles.length === Object.keys(files).length && processingFiles.length === 0;\n    var isAllErrored = error && erroredFiles.length === filesArray.length;\n    var isAllPaused = inProgressFiles.length !== 0 && pausedFiles.length === inProgressFiles.length;\n    var isUploadInProgress = inProgressFiles.length > 0;\n    var resumableUploads = capabilities.resumableUploads || false;\n    var supportsUploadProgress = capabilities.uploadProgress !== false;\n    var isSomeGhost = filesArray.some(function (file) {\n      return file.isGhost;\n    });\n    return StatusBarUI({\n      error: error,\n      uploadState: this.getUploadingState(isAllErrored, isAllComplete, recoveredState, state.files || {}),\n      allowNewUpload: allowNewUpload,\n      totalProgress: totalProgress,\n      totalSize: totalSize,\n      totalUploadedSize: totalUploadedSize,\n      isAllComplete: isAllComplete,\n      isAllPaused: isAllPaused,\n      isAllErrored: isAllErrored,\n      isUploadStarted: isUploadStarted,\n      isUploadInProgress: isUploadInProgress,\n      isSomeGhost: isSomeGhost,\n      recoveredState: recoveredState,\n      complete: completeFiles.length,\n      newFiles: newFiles.length,\n      numUploads: startedFiles.length,\n      totalETA: totalETA,\n      files: files,\n      i18n: this.i18n,\n      pauseAll: this.uppy.pauseAll,\n      resumeAll: this.uppy.resumeAll,\n      retryAll: this.uppy.retryAll,\n      cancelAll: this.uppy.cancelAll,\n      startUpload: this.startUpload,\n      doneButtonHandler: this.opts.doneButtonHandler,\n      resumableUploads: resumableUploads,\n      supportsUploadProgress: supportsUploadProgress,\n      showProgressDetails: this.opts.showProgressDetails,\n      hideUploadButton: this.opts.hideUploadButton,\n      hideRetryButton: this.opts.hideRetryButton,\n      hidePauseResumeButton: this.opts.hidePauseResumeButton,\n      hideCancelButton: this.opts.hideCancelButton,\n      hideAfterFinish: this.opts.hideAfterFinish,\n      isTargetDOMEl: this.isTargetDOMEl\n    });\n  };\n  _proto.onMount = function onMount() {\n    // Set the text direction if the page has not defined one.\n    var element = this.el;\n    var direction = getTextDirection(element);\n    if (!direction) {\n      element.dir = 'ltr';\n    }\n  };\n  _proto.install = function install() {\n    var target = this.opts.target;\n    if (target) {\n      this.mount(target, this);\n    }\n  };\n  _proto.uninstall = function uninstall() {\n    this.unmount();\n  };\n  return StatusBar;\n}(Plugin), _class.VERSION = \"1.9.6\", _temp);","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\n\n/**\n * Default store that keeps state in a simple object.\n */\nvar DefaultStore = /*#__PURE__*/function () {\n  function DefaultStore() {\n    this.state = {};\n    this.callbacks = [];\n  }\n  var _proto = DefaultStore.prototype;\n  _proto.getState = function getState() {\n    return this.state;\n  };\n  _proto.setState = function setState(patch) {\n    var prevState = _extends({}, this.state);\n    var nextState = _extends({}, this.state, patch);\n    this.state = nextState;\n    this._publish(prevState, nextState, patch);\n  };\n  _proto.subscribe = function subscribe(listener) {\n    var _this = this;\n    this.callbacks.push(listener);\n    return function () {\n      // Remove the listener.\n      _this.callbacks.splice(_this.callbacks.indexOf(listener), 1);\n    };\n  };\n  _proto._publish = function _publish() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    this.callbacks.forEach(function (listener) {\n      listener.apply(void 0, args);\n    });\n  };\n  return DefaultStore;\n}();\nDefaultStore.VERSION = \"1.2.7\";\nmodule.exports = function defaultStore() {\n  return new DefaultStore();\n};","var _class, _temp;\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar Translator = require('@uppy/utils/lib/Translator');\nvar dataURItoBlob = require('@uppy/utils/lib/dataURItoBlob');\nvar isObjectURL = require('@uppy/utils/lib/isObjectURL');\nvar isPreviewSupported = require('@uppy/utils/lib/isPreviewSupported');\nvar MathLog2 = require('math-log2'); // Polyfill for IE.\n\nvar exifr = require('exifr/dist/mini.legacy.umd.js');\n/**\n * The Thumbnail Generator plugin\n */\n\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(ThumbnailGenerator, _Plugin);\n  function ThumbnailGenerator(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.onFileAdded = function (file) {\n      if (!file.preview && file.data && isPreviewSupported(file.type) && !file.isRemote) {\n        _this.addToQueue(file.id);\n      }\n    };\n    _this.onCancelRequest = function (file) {\n      var index = _this.queue.indexOf(file.id);\n      if (index !== -1) {\n        _this.queue.splice(index, 1);\n      }\n    };\n    _this.onFileRemoved = function (file) {\n      var index = _this.queue.indexOf(file.id);\n      if (index !== -1) {\n        _this.queue.splice(index, 1);\n      } // Clean up object URLs.\n\n      if (file.preview && isObjectURL(file.preview)) {\n        URL.revokeObjectURL(file.preview);\n      }\n    };\n    _this.onRestored = function () {\n      var restoredFiles = _this.uppy.getFiles().filter(function (file) {\n        return file.isRestored;\n      });\n      restoredFiles.forEach(function (file) {\n        // Only add blob URLs; they are likely invalid after being restored.\n        if (!file.preview || isObjectURL(file.preview)) {\n          _this.addToQueue(file.id);\n        }\n      });\n    };\n    _this.waitUntilAllProcessed = function (fileIDs) {\n      fileIDs.forEach(function (fileID) {\n        var file = _this.uppy.getFile(fileID);\n        _this.uppy.emit('preprocess-progress', file, {\n          mode: 'indeterminate',\n          message: _this.i18n('generatingThumbnails')\n        });\n      });\n      var emitPreprocessCompleteForAll = function emitPreprocessCompleteForAll() {\n        fileIDs.forEach(function (fileID) {\n          var file = _this.uppy.getFile(fileID);\n          _this.uppy.emit('preprocess-complete', file);\n        });\n      };\n      return new Promise(function (resolve, reject) {\n        if (_this.queueProcessing) {\n          _this.uppy.once('thumbnail:all-generated', function () {\n            emitPreprocessCompleteForAll();\n            resolve();\n          });\n        } else {\n          emitPreprocessCompleteForAll();\n          resolve();\n        }\n      });\n    };\n    _this.type = 'modifier';\n    _this.id = _this.opts.id || 'ThumbnailGenerator';\n    _this.title = 'Thumbnail Generator';\n    _this.queue = [];\n    _this.queueProcessing = false;\n    _this.defaultThumbnailDimension = 200;\n    _this.thumbnailType = _this.opts.thumbnailType || 'image/jpeg';\n    _this.defaultLocale = {\n      strings: {\n        generatingThumbnails: 'Generating thumbnails...'\n      }\n    };\n    var defaultOptions = {\n      thumbnailWidth: null,\n      thumbnailHeight: null,\n      waitForThumbnailsBeforeUpload: false,\n      lazy: false\n    };\n    _this.opts = _extends({}, defaultOptions, opts);\n    if (_this.opts.lazy && _this.opts.waitForThumbnailsBeforeUpload) {\n      throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n    }\n    _this.i18nInit();\n    return _this;\n  }\n  var _proto = ThumbnailGenerator.prototype;\n  _proto.setOptions = function setOptions(newOpts) {\n    _Plugin.prototype.setOptions.call(this, newOpts);\n    this.i18nInit();\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  }\n  /**\n   * Create a thumbnail for the given Uppy file object.\n   *\n   * @param {{data: Blob}} file\n   * @param {number} targetWidth\n   * @param {number} targetHeight\n   * @returns {Promise}\n   */;\n\n  _proto.createThumbnail = function createThumbnail(file, targetWidth, targetHeight) {\n    var _this2 = this;\n\n    // bug in the compatibility data\n    // eslint-disable-next-line compat/compat\n    var originalUrl = URL.createObjectURL(file.data);\n    var onload = new Promise(function (resolve, reject) {\n      var image = new Image();\n      image.src = originalUrl;\n      image.addEventListener('load', function () {\n        // bug in the compatibility data\n        // eslint-disable-next-line compat/compat\n        URL.revokeObjectURL(originalUrl);\n        resolve(image);\n      });\n      image.addEventListener('error', function (event) {\n        // bug in the compatibility data\n        // eslint-disable-next-line compat/compat\n        URL.revokeObjectURL(originalUrl);\n        reject(event.error || new Error('Could not create thumbnail'));\n      });\n    });\n    var orientationPromise = exifr.rotation(file.data).catch(function (_err) {\n      return 1;\n    });\n    return Promise.all([onload, orientationPromise]).then(function (_ref) {\n      var image = _ref[0],\n        orientation = _ref[1];\n      var dimensions = _this2.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n      var rotatedImage = _this2.rotateImage(image, orientation);\n      var resizedImage = _this2.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n      return _this2.canvasToBlob(resizedImage, _this2.thumbnailType, 80);\n    }).then(function (blob) {\n      // bug in the compatibility data\n      // eslint-disable-next-line compat/compat\n      return URL.createObjectURL(blob);\n    });\n  }\n  /**\n   * Get the new calculated dimensions for the given image and a target width\n   * or height. If both width and height are given, only width is taken into\n   * account. If neither width nor height are given, the default dimension\n   * is used.\n   */;\n\n  _proto.getProportionalDimensions = function getProportionalDimensions(img, width, height, rotation) {\n    var aspect = img.width / img.height;\n    if (rotation === 90 || rotation === 270) {\n      aspect = img.height / img.width;\n    }\n    if (width != null) {\n      return {\n        width: width,\n        height: Math.round(width / aspect)\n      };\n    }\n    if (height != null) {\n      return {\n        width: Math.round(height * aspect),\n        height: height\n      };\n    }\n    return {\n      width: this.defaultThumbnailDimension,\n      height: Math.round(this.defaultThumbnailDimension / aspect)\n    };\n  }\n  /**\n   * Make sure the image doesn’t exceed browser/device canvas limits.\n   * For ios with 256 RAM and ie\n   */;\n\n  _proto.protect = function protect(image) {\n    // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n    var ratio = image.width / image.height;\n    var maxSquare = 5000000; // ios max canvas square\n\n    var maxSize = 4096; // ie max canvas dimensions\n\n    var maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n    var maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n    if (maxW > maxSize) {\n      maxW = maxSize;\n      maxH = Math.round(maxW / ratio);\n    }\n    if (maxH > maxSize) {\n      maxH = maxSize;\n      maxW = Math.round(ratio * maxH);\n    }\n    if (image.width > maxW) {\n      var canvas = document.createElement('canvas');\n      canvas.width = maxW;\n      canvas.height = maxH;\n      canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n      image = canvas;\n    }\n    return image;\n  }\n  /**\n   * Resize an image to the target `width` and `height`.\n   *\n   * Returns a Canvas with the resized image on it.\n   */;\n\n  _proto.resizeImage = function resizeImage(image, targetWidth, targetHeight) {\n    // Resizing in steps refactored to use a solution from\n    // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n    image = this.protect(image);\n    var steps = Math.ceil(MathLog2(image.width / targetWidth));\n    if (steps < 1) {\n      steps = 1;\n    }\n    var sW = targetWidth * Math.pow(2, steps - 1);\n    var sH = targetHeight * Math.pow(2, steps - 1);\n    var x = 2;\n    while (steps--) {\n      var canvas = document.createElement('canvas');\n      canvas.width = sW;\n      canvas.height = sH;\n      canvas.getContext('2d').drawImage(image, 0, 0, sW, sH);\n      image = canvas;\n      sW = Math.round(sW / x);\n      sH = Math.round(sH / x);\n    }\n    return image;\n  };\n  _proto.rotateImage = function rotateImage(image, translate) {\n    var w = image.width;\n    var h = image.height;\n    if (translate.deg === 90 || translate.deg === 270) {\n      w = image.height;\n      h = image.width;\n    }\n    var canvas = document.createElement('canvas');\n    canvas.width = w;\n    canvas.height = h;\n    var context = canvas.getContext('2d');\n    context.translate(w / 2, h / 2);\n    if (translate.canvas) {\n      context.rotate(translate.rad);\n      context.scale(translate.scaleX, translate.scaleY);\n    }\n    context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n    return canvas;\n  }\n  /**\n   * Save a <canvas> element's content to a Blob object.\n   *\n   * @param {HTMLCanvasElement} canvas\n   * @returns {Promise}\n   */;\n\n  _proto.canvasToBlob = function canvasToBlob(canvas, type, quality) {\n    try {\n      canvas.getContext('2d').getImageData(0, 0, 1, 1);\n    } catch (err) {\n      if (err.code === 18) {\n        return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n      }\n    }\n    if (canvas.toBlob) {\n      return new Promise(function (resolve) {\n        canvas.toBlob(resolve, type, quality);\n      }).then(function (blob) {\n        if (blob === null) {\n          throw new Error('cannot read image, probably an svg with external resources');\n        }\n        return blob;\n      });\n    }\n    return Promise.resolve().then(function () {\n      return dataURItoBlob(canvas.toDataURL(type, quality), {});\n    }).then(function (blob) {\n      if (blob === null) {\n        throw new Error('could not extract blob, probably an old browser');\n      }\n      return blob;\n    });\n  }\n  /**\n   * Set the preview URL for a file.\n   */;\n\n  _proto.setPreviewURL = function setPreviewURL(fileID, preview) {\n    this.uppy.setFileState(fileID, {\n      preview: preview\n    });\n  };\n  _proto.addToQueue = function addToQueue(item) {\n    this.queue.push(item);\n    if (this.queueProcessing === false) {\n      this.processQueue();\n    }\n  };\n  _proto.processQueue = function processQueue() {\n    var _this3 = this;\n    this.queueProcessing = true;\n    if (this.queue.length > 0) {\n      var current = this.uppy.getFile(this.queue.shift());\n      if (!current) {\n        this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n        return;\n      }\n      return this.requestThumbnail(current).catch(function (err) {}) // eslint-disable-line handle-callback-err\n      .then(function () {\n        return _this3.processQueue();\n      });\n    }\n    this.queueProcessing = false;\n    this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n    this.uppy.emit('thumbnail:all-generated');\n  };\n  _proto.requestThumbnail = function requestThumbnail(file) {\n    var _this4 = this;\n    if (isPreviewSupported(file.type) && !file.isRemote) {\n      return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(function (preview) {\n        _this4.setPreviewURL(file.id, preview);\n        _this4.uppy.log(\"[ThumbnailGenerator] Generated thumbnail for \" + file.id);\n        _this4.uppy.emit('thumbnail:generated', _this4.uppy.getFile(file.id), preview);\n      }).catch(function (err) {\n        _this4.uppy.log(\"[ThumbnailGenerator] Failed thumbnail for \" + file.id + \":\", 'warning');\n        _this4.uppy.log(err, 'warning');\n        _this4.uppy.emit('thumbnail:error', _this4.uppy.getFile(file.id), err);\n      });\n    }\n    return Promise.resolve();\n  };\n  _proto.install = function install() {\n    this.uppy.on('file-removed', this.onFileRemoved);\n    if (this.opts.lazy) {\n      this.uppy.on('thumbnail:request', this.onFileAdded);\n      this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.on('file-added', this.onFileAdded);\n      this.uppy.on('restored', this.onRestored);\n    }\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n    }\n  };\n  _proto.uninstall = function uninstall() {\n    this.uppy.off('file-removed', this.onFileRemoved);\n    if (this.opts.lazy) {\n      this.uppy.off('thumbnail:request', this.onFileAdded);\n      this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n    } else {\n      this.uppy.off('file-added', this.onFileAdded);\n      this.uppy.off('restored', this.onRestored);\n    }\n    if (this.opts.waitForThumbnailsBeforeUpload) {\n      this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n    }\n  };\n  return ThumbnailGenerator;\n}(Plugin), _class.VERSION = \"1.7.11\", _temp);","/**\n * Create a wrapper around an event emitter with a `remove` method to remove\n * all events that were added using the wrapped emitter.\n */\nmodule.exports = /*#__PURE__*/function () {\n  function EventTracker(emitter) {\n    this._events = [];\n    this._emitter = emitter;\n  }\n  var _proto = EventTracker.prototype;\n  _proto.on = function on(event, fn) {\n    this._events.push([event, fn]);\n    return this._emitter.on(event, fn);\n  };\n  _proto.remove = function remove() {\n    var _this = this;\n    this._events.forEach(function (_ref) {\n      var event = _ref[0],\n        fn = _ref[1];\n      _this._emitter.off(event, fn);\n    });\n  };\n  return EventTracker;\n}();","module.exports = ['a[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'area[href]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'input:not([disabled]):not([inert]):not([aria-hidden])', 'select:not([disabled]):not([inert]):not([aria-hidden])', 'textarea:not([disabled]):not([inert]):not([aria-hidden])', 'button:not([disabled]):not([inert]):not([aria-hidden])', 'iframe:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'object:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', 'embed:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[contenteditable]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])', '[tabindex]:not([tabindex^=\"-\"]):not([inert]):not([aria-hidden])'];","function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _wrapNativeSuper(Class) {\n  var _cache = typeof Map === \"function\" ? new Map() : undefined;\n  _wrapNativeSuper = function _wrapNativeSuper(Class) {\n    if (Class === null || !_isNativeFunction(Class)) return Class;\n    if (typeof Class !== \"function\") {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    if (typeof _cache !== \"undefined\") {\n      if (_cache.has(Class)) return _cache.get(Class);\n      _cache.set(Class, Wrapper);\n    }\n    function Wrapper() {\n      return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n    }\n    Wrapper.prototype = Object.create(Class.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    return _setPrototypeOf(Wrapper, Class);\n  };\n  return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n  if (_isNativeReflectConstruct()) {\n    _construct = Reflect.construct;\n  } else {\n    _construct = function _construct(Parent, args, Class) {\n      var a = [null];\n      a.push.apply(a, args);\n      var Constructor = Function.bind.apply(Parent, a);\n      var instance = new Constructor();\n      if (Class) _setPrototypeOf(instance, Class.prototype);\n      return instance;\n    };\n  }\n  return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n  if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n  if (Reflect.construct.sham) return false;\n  if (typeof Proxy === \"function\") return true;\n  try {\n    Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\nfunction _isNativeFunction(fn) {\n  return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\nvar NetworkError = /*#__PURE__*/function (_Error) {\n  _inheritsLoose(NetworkError, _Error);\n  function NetworkError(error, xhr) {\n    var _this;\n    if (xhr === void 0) {\n      xhr = null;\n    }\n    _this = _Error.call(this, \"This looks like a network error, the endpoint might be blocked by an internet provider or a firewall.\\n\\nSource error: [\" + error + \"]\") || this;\n    _this.isNetworkError = true;\n    _this.request = xhr;\n    return _this;\n  }\n  return NetworkError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nmodule.exports = NetworkError;","/**\n * Helper to abort upload requests if there has not been any progress for `timeout` ms.\n * Create an instance using `timer = new ProgressTimeout(10000, onTimeout)`\n * Call `timer.progress()` to signal that there has been progress of any kind.\n * Call `timer.done()` when the upload has completed.\n */\nvar ProgressTimeout = /*#__PURE__*/function () {\n  function ProgressTimeout(timeout, timeoutHandler) {\n    this._timeout = timeout;\n    this._onTimedOut = timeoutHandler;\n    this._isDone = false;\n    this._aliveTimer = null;\n    this._onTimedOut = this._onTimedOut.bind(this);\n  }\n  var _proto = ProgressTimeout.prototype;\n  _proto.progress = function progress() {\n    // Some browsers fire another progress event when the upload is\n    // cancelled, so we have to ignore progress after the timer was\n    // told to stop.\n    if (this._isDone) return;\n    if (this._timeout > 0) {\n      if (this._aliveTimer) clearTimeout(this._aliveTimer);\n      this._aliveTimer = setTimeout(this._onTimedOut, this._timeout);\n    }\n  };\n  _proto.done = function done() {\n    if (this._aliveTimer) {\n      clearTimeout(this._aliveTimer);\n      this._aliveTimer = null;\n    }\n    this._isDone = true;\n  };\n  return ProgressTimeout;\n}();\nmodule.exports = ProgressTimeout;","var findIndex = require('./findIndex');\nfunction createCancelError() {\n  return new Error('Cancelled');\n}\nmodule.exports = /*#__PURE__*/function () {\n  function RateLimitedQueue(limit) {\n    if (typeof limit !== 'number' || limit === 0) {\n      this.limit = Infinity;\n    } else {\n      this.limit = limit;\n    }\n    this.activeRequests = 0;\n    this.queuedHandlers = [];\n  }\n  var _proto = RateLimitedQueue.prototype;\n  _proto._call = function _call(fn) {\n    var _this = this;\n    this.activeRequests += 1;\n    var _done = false;\n    var cancelActive;\n    try {\n      cancelActive = fn();\n    } catch (err) {\n      this.activeRequests -= 1;\n      throw err;\n    }\n    return {\n      abort: function abort() {\n        if (_done) return;\n        _done = true;\n        _this.activeRequests -= 1;\n        cancelActive();\n        _this._queueNext();\n      },\n      done: function done() {\n        if (_done) return;\n        _done = true;\n        _this.activeRequests -= 1;\n        _this._queueNext();\n      }\n    };\n  };\n  _proto._queueNext = function _queueNext() {\n    var _this2 = this;\n\n    // Do it soon but not immediately, this allows clearing out the entire queue synchronously\n    // one by one without continuously _advancing_ it (and starting new tasks before immediately\n    // aborting them)\n    Promise.resolve().then(function () {\n      _this2._next();\n    });\n  };\n  _proto._next = function _next() {\n    if (this.activeRequests >= this.limit) {\n      return;\n    }\n    if (this.queuedHandlers.length === 0) {\n      return;\n    } // Dispatch the next request, and update the abort/done handlers\n    // so that cancelling it does the Right Thing (and doesn't just try\n    // to dequeue an already-running request).\n\n    var next = this.queuedHandlers.shift();\n    var handler = this._call(next.fn);\n    next.abort = handler.abort;\n    next.done = handler.done;\n  };\n  _proto._queue = function _queue(fn, options) {\n    var _this3 = this;\n    if (options === void 0) {\n      options = {};\n    }\n    var handler = {\n      fn: fn,\n      priority: options.priority || 0,\n      abort: function abort() {\n        _this3._dequeue(handler);\n      },\n      done: function done() {\n        throw new Error('Cannot mark a queued request as done: this indicates a bug');\n      }\n    };\n    var index = findIndex(this.queuedHandlers, function (other) {\n      return handler.priority > other.priority;\n    });\n    if (index === -1) {\n      this.queuedHandlers.push(handler);\n    } else {\n      this.queuedHandlers.splice(index, 0, handler);\n    }\n    return handler;\n  };\n  _proto._dequeue = function _dequeue(handler) {\n    var index = this.queuedHandlers.indexOf(handler);\n    if (index !== -1) {\n      this.queuedHandlers.splice(index, 1);\n    }\n  };\n  _proto.run = function run(fn, queueOptions) {\n    if (this.activeRequests < this.limit) {\n      return this._call(fn);\n    }\n    return this._queue(fn, queueOptions);\n  };\n  _proto.wrapPromiseFunction = function wrapPromiseFunction(fn, queueOptions) {\n    var _this4 = this;\n    return function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      var queuedRequest;\n      var outerPromise = new Promise(function (resolve, reject) {\n        queuedRequest = _this4.run(function () {\n          var cancelError;\n          var innerPromise;\n          try {\n            innerPromise = Promise.resolve(fn.apply(void 0, args));\n          } catch (err) {\n            innerPromise = Promise.reject(err);\n          }\n          innerPromise.then(function (result) {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              resolve(result);\n            }\n          }, function (err) {\n            if (cancelError) {\n              reject(cancelError);\n            } else {\n              queuedRequest.done();\n              reject(err);\n            }\n          });\n          return function () {\n            cancelError = createCancelError();\n          };\n        }, queueOptions);\n      });\n      outerPromise.abort = function () {\n        queuedRequest.abort();\n      };\n      return outerPromise;\n    };\n  };\n  return RateLimitedQueue;\n}();","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar has = require('./hasProperty');\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\n\nmodule.exports = /*#__PURE__*/function () {\n  /**\n   * @param {object|Array<object>} locales - locale or list of locales.\n   */\n  function Translator(locales) {\n    var _this = this;\n    this.locale = {\n      strings: {},\n      pluralize: function pluralize(n) {\n        if (n === 1) {\n          return 0;\n        }\n        return 1;\n      }\n    };\n    if (Array.isArray(locales)) {\n      locales.forEach(function (locale) {\n        return _this._apply(locale);\n      });\n    } else {\n      this._apply(locales);\n    }\n  }\n  var _proto = Translator.prototype;\n  _proto._apply = function _apply(locale) {\n    if (!locale || !locale.strings) {\n      return;\n    }\n    var prevLocale = this.locale;\n    this.locale = _extends({}, prevLocale, {\n      strings: _extends({}, prevLocale.strings, locale.strings)\n    });\n    this.locale.pluralize = locale.pluralize || prevLocale.pluralize;\n  }\n  /**\n   * Takes a string with placeholder variables like `%{smart_count} file selected`\n   * and replaces it with values from options `{smart_count: 5}`\n   *\n   * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n   * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n   *\n   * @param {string} phrase that needs interpolation, with placeholders\n   * @param {object} options with values that will be used to replace placeholders\n   * @returns {any[]} interpolated\n   */;\n\n  _proto.interpolate = function interpolate(phrase, options) {\n    var _String$prototype = String.prototype,\n      split = _String$prototype.split,\n      replace = _String$prototype.replace;\n    var dollarRegex = /\\$/g;\n    var dollarBillsYall = '$$$$';\n    var interpolated = [phrase];\n    for (var arg in options) {\n      if (arg !== '_' && has(options, arg)) {\n        // Ensure replacement value is escaped to prevent special $-prefixed\n        // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n        // be escaped with \"$\" itself, and we need two in the resulting output.\n        var replacement = options[arg];\n        if (typeof replacement === 'string') {\n          replacement = replace.call(options[arg], dollarRegex, dollarBillsYall);\n        } // We create a new `RegExp` each time instead of using a more-efficient\n        // string replace so that the same argument can be replaced multiple times\n        // in the same phrase.\n\n        interpolated = insertReplacement(interpolated, new RegExp(\"%\\\\{\" + arg + \"\\\\}\", 'g'), replacement);\n      }\n    }\n    return interpolated;\n    function insertReplacement(source, rx, replacement) {\n      var newParts = [];\n      source.forEach(function (chunk) {\n        // When the source contains multiple placeholders for interpolation,\n        // we should ignore chunks that are not strings, because those\n        // can be JSX objects and will be otherwise incorrectly turned into strings.\n        // Without this condition we’d get this: [object Object] hello [object Object] my <button>\n        if (typeof chunk !== 'string') {\n          return newParts.push(chunk);\n        }\n        split.call(chunk, rx).forEach(function (raw, i, list) {\n          if (raw !== '') {\n            newParts.push(raw);\n          } // Interlace with the `replacement` value\n\n          if (i < list.length - 1) {\n            newParts.push(replacement);\n          }\n        });\n      });\n      return newParts;\n    }\n  }\n  /**\n   * Public translate method\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used later to replace placeholders in string\n   * @returns {string} translated (and interpolated)\n   */;\n\n  _proto.translate = function translate(key, options) {\n    return this.translateArray(key, options).join('');\n  }\n  /**\n   * Get a translation and return the translated and interpolated parts as an array.\n   *\n   * @param {string} key\n   * @param {object} options with values that will be used to replace placeholders\n   * @returns {Array} The translated and interpolated parts, in order.\n   */;\n\n  _proto.translateArray = function translateArray(key, options) {\n    if (!has(this.locale.strings, key)) {\n      throw new Error(\"missing string: \" + key);\n    }\n    var string = this.locale.strings[key];\n    var hasPluralForms = typeof string === 'object';\n    if (hasPluralForms) {\n      if (options && typeof options.smart_count !== 'undefined') {\n        var plural = this.locale.pluralize(options.smart_count);\n        return this.interpolate(string[plural], options);\n      }\n      throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n    }\n    return this.interpolate(string, options);\n  };\n  return Translator;\n}();","module.exports = function dataURItoBlob(dataURI, opts, toFile) {\n  // get the base64 data\n  var data = dataURI.split(',')[1]; // user may provide mime type, if not get it from data URI\n\n  var mimeType = opts.mimeType || dataURI.split(',')[0].split(':')[1].split(';')[0]; // default to plain/text if data URI has no mimeType\n\n  if (mimeType == null) {\n    mimeType = 'plain/text';\n  }\n  var binary = atob(data);\n  var array = [];\n  for (var i = 0; i < binary.length; i++) {\n    array.push(binary.charCodeAt(i));\n  }\n  var bytes;\n  try {\n    bytes = new Uint8Array(array); // eslint-disable-line compat/compat\n  } catch (err) {\n    return null;\n  } // Convert to a File?\n\n  if (toFile) {\n    return new File([bytes], opts.name || '', {\n      type: mimeType\n    });\n  }\n  return new Blob([bytes], {\n    type: mimeType\n  });\n};","var throttle = require('lodash.throttle');\nfunction _emitSocketProgress(uploader, progressData, file) {\n  var progress = progressData.progress,\n    bytesUploaded = progressData.bytesUploaded,\n    bytesTotal = progressData.bytesTotal;\n  if (progress) {\n    uploader.uppy.log(\"Upload progress: \" + progress);\n    uploader.uppy.emit('upload-progress', file, {\n      uploader: uploader,\n      bytesUploaded: bytesUploaded,\n      bytesTotal: bytesTotal\n    });\n  }\n}\nmodule.exports = throttle(_emitSocketProgress, 300, {\n  leading: true,\n  trailing: true\n});","var NetworkError = require('./NetworkError');\n/**\n * Wrapper around window.fetch that throws a NetworkError when appropriate\n */\n\nmodule.exports = function fetchWithNetworkError() {\n  return fetch.apply(void 0, arguments).catch(function (err) {\n    if (err.name === 'AbortError') {\n      throw err;\n    } else {\n      throw new NetworkError(err);\n    }\n  });\n};","var isDOMElement = require('./isDOMElement');\n/**\n * Find one or more DOM elements.\n *\n * @param {string} element\n * @returns {Array|null}\n */\n\nmodule.exports = function findAllDOMElements(element) {\n  if (typeof element === 'string') {\n    var elements = [].slice.call(document.querySelectorAll(element));\n    return elements.length > 0 ? elements : null;\n  }\n  if (typeof element === 'object' && isDOMElement(element)) {\n    return [element];\n  }\n};","var isDOMElement = require('./isDOMElement');\n/**\n * Find a DOM element.\n *\n * @param {Node|string} element\n * @returns {Node|null}\n */\n\nmodule.exports = function findDOMElement(element, context) {\n  if (context === void 0) {\n    context = document;\n  }\n  if (typeof element === 'string') {\n    return context.querySelector(element);\n  }\n  if (isDOMElement(element)) {\n    return element;\n  }\n};","/**\n * Array.prototype.findIndex ponyfill for old browsers.\n *\n * @param {Array} array\n * @param {Function} predicate\n * @returns {number}\n */\nmodule.exports = function findIndex(array, predicate) {\n  for (var i = 0; i < array.length; i++) {\n    if (predicate(array[i])) return i;\n  }\n  return -1;\n};","/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n *\n * @param {object} file\n * @returns {string} the fileID\n */\nmodule.exports = function generateFileID(file) {\n  // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n  // is slower! simple string concatenation is fast\n  var id = 'uppy';\n  if (typeof file.name === 'string') {\n    id += \"-\" + encodeFilename(file.name.toLowerCase());\n  }\n  if (file.type !== undefined) {\n    id += \"-\" + file.type;\n  }\n  if (file.meta && typeof file.meta.relativePath === 'string') {\n    id += \"-\" + encodeFilename(file.meta.relativePath.toLowerCase());\n  }\n  if (file.data.size !== undefined) {\n    id += \"-\" + file.data.size;\n  }\n  if (file.data.lastModified !== undefined) {\n    id += \"-\" + file.data.lastModified;\n  }\n  return id;\n};\nfunction encodeFilename(name) {\n  var suffix = '';\n  return name.replace(/[^A-Z0-9]/ig, function (character) {\n    suffix += \"-\" + encodeCharacter(character);\n    return '/';\n  }) + suffix;\n}\nfunction encodeCharacter(character) {\n  return character.charCodeAt(0).toString(32);\n}","module.exports = function getBytesRemaining(fileProgress) {\n  return fileProgress.bytesTotal - fileProgress.bytesUploaded;\n};","var webkitGetAsEntryApi = require('./utils/webkitGetAsEntryApi/index');\nvar fallbackApi = require('./utils/fallbackApi');\n/**\n * Returns a promise that resolves to the array of dropped files (if a folder is dropped, and browser supports folder parsing - promise resolves to the flat array of all files in all directories).\n * Each file has .relativePath prop appended to it (e.g. \"/docs/Prague/ticket_from_prague_to_ufa.pdf\") if browser supports it. Otherwise it's undefined.\n *\n * @param {DataTransfer} dataTransfer\n * @param {Function} logDropError - a function that's called every time some folder or some file error out (e.g. because of the folder name being too long on Windows). Notice that resulting promise will always be resolved anyway.\n *\n * @returns {Promise} - Array<File>\n */\n\nmodule.exports = function getDroppedFiles(dataTransfer, _temp) {\n  var _ref = _temp === void 0 ? {} : _temp,\n    _ref$logDropError = _ref.logDropError,\n    logDropError = _ref$logDropError === void 0 ? function () {} : _ref$logDropError;\n\n  // Get all files from all subdirs. Works (at least) in Chrome, Mozilla, and Safari\n  if (dataTransfer.items && dataTransfer.items[0] && 'webkitGetAsEntry' in dataTransfer.items[0]) {\n    return webkitGetAsEntryApi(dataTransfer, logDropError); // Otherwise just return all first-order files\n  }\n\n  return fallbackApi(dataTransfer);\n};","var toArray = require('../../toArray'); // .files fallback, should be implemented in any browser\n\nmodule.exports = function fallbackApi(dataTransfer) {\n  var files = toArray(dataTransfer.files);\n  return Promise.resolve(files);\n};","/**\n * Recursive function, calls the original callback() when the directory is entirely parsed.\n *\n * @param {FileSystemDirectoryReader} directoryReader\n * @param {Array} oldEntries\n * @param {Function} logDropError\n * @param {Function} callback - called with ([ all files and directories in that directoryReader ])\n */\nmodule.exports = function getFilesAndDirectoriesFromDirectory(directoryReader, oldEntries, logDropError, _ref) {\n  var onSuccess = _ref.onSuccess;\n  directoryReader.readEntries(function (entries) {\n    var newEntries = [].concat(oldEntries, entries); // According to the FileSystem API spec, getFilesAndDirectoriesFromDirectory() must be called until it calls the onSuccess with an empty array.\n\n    if (entries.length) {\n      setTimeout(function () {\n        getFilesAndDirectoriesFromDirectory(directoryReader, newEntries, logDropError, {\n          onSuccess: onSuccess\n        });\n      }, 0); // Done iterating this particular directory\n    } else {\n      onSuccess(newEntries);\n    }\n  },\n  // Make sure we resolve on error anyway, it's fine if only one directory couldn't be parsed!\n  function (error) {\n    logDropError(error);\n    onSuccess(oldEntries);\n  });\n};","/**\n * Get the relative path from the FileEntry#fullPath, because File#webkitRelativePath is always '', at least onDrop.\n *\n * @param {FileEntry} fileEntry\n *\n * @returns {string|null} - if file is not in a folder - return null (this is to be consistent with .relativePath-s of files selected from My Device). If file is in a folder - return its fullPath, e.g. '/simpsons/hi.jpeg'.\n */\nmodule.exports = function getRelativePath(fileEntry) {\n  // fileEntry.fullPath - \"/simpsons/hi.jpeg\" or undefined (for browsers that don't support it)\n  // fileEntry.name - \"hi.jpeg\"\n  if (!fileEntry.fullPath || fileEntry.fullPath === \"/\" + fileEntry.name) {\n    return null;\n  }\n  return fileEntry.fullPath;\n};","var toArray = require('../../../toArray');\nvar getRelativePath = require('./getRelativePath');\nvar getFilesAndDirectoriesFromDirectory = require('./getFilesAndDirectoriesFromDirectory');\nmodule.exports = function webkitGetAsEntryApi(dataTransfer, logDropError) {\n  var files = [];\n  var rootPromises = [];\n  /**\n   * Returns a resolved promise, when :files array is enhanced\n   *\n   * @param {(FileSystemFileEntry|FileSystemDirectoryEntry)} entry\n   * @returns {Promise} - empty promise that resolves when :files is enhanced with a file\n   */\n\n  var createPromiseToAddFileOrParseDirectory = function createPromiseToAddFileOrParseDirectory(entry) {\n    return new Promise(function (resolve) {\n      // This is a base call\n      if (entry.isFile) {\n        // Creates a new File object which can be used to read the file.\n        entry.file(function (file) {\n          file.relativePath = getRelativePath(entry);\n          files.push(file);\n          resolve();\n        },\n        // Make sure we resolve on error anyway, it's fine if only one file couldn't be read!\n        function (error) {\n          logDropError(error);\n          resolve();\n        }); // This is a recursive call\n      } else if (entry.isDirectory) {\n        var directoryReader = entry.createReader();\n        getFilesAndDirectoriesFromDirectory(directoryReader, [], logDropError, {\n          onSuccess: function onSuccess(entries) {\n            var promises = entries.map(function (entry) {\n              return createPromiseToAddFileOrParseDirectory(entry);\n            });\n            Promise.all(promises).then(function () {\n              return resolve();\n            });\n          }\n        });\n      }\n    });\n  }; // For each dropped item, - make sure it's a file/directory, and start deepening in!\n\n  toArray(dataTransfer.items).forEach(function (item) {\n    var entry = item.webkitGetAsEntry(); // :entry can be null when we drop the url e.g.\n\n    if (entry) {\n      rootPromises.push(createPromiseToAddFileOrParseDirectory(entry));\n    }\n  });\n  return Promise.all(rootPromises).then(function () {\n    return files;\n  });\n};","/**\n * Takes a full filename string and returns an object {name, extension}\n *\n * @param {string} fullFileName\n * @returns {object} {name, extension}\n */\nmodule.exports = function getFileNameAndExtension(fullFileName) {\n  var lastDot = fullFileName.lastIndexOf('.'); // these count as no extension: \"no-dot\", \"trailing-dot.\"\n\n  if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n    return {\n      name: fullFileName,\n      extension: undefined\n    };\n  }\n  return {\n    name: fullFileName.slice(0, lastDot),\n    extension: fullFileName.slice(lastDot + 1)\n  };\n};","var getFileNameAndExtension = require('./getFileNameAndExtension');\nvar mimeTypes = require('./mimeTypes');\nmodule.exports = function getFileType(file) {\n  var fileExtension = file.name ? getFileNameAndExtension(file.name).extension : null;\n  fileExtension = fileExtension ? fileExtension.toLowerCase() : null;\n  if (file.type) {\n    // if mime type is set in the file object already, use that\n    return file.type;\n  }\n  if (fileExtension && mimeTypes[fileExtension]) {\n    // else, see if we can map extension to a mime type\n    return mimeTypes[fileExtension];\n  } // if all fails, fall back to a generic byte stream type\n\n  return 'application/octet-stream';\n};","module.exports = function getSocketHost(url) {\n  // get the host domain\n  var regex = /^(?:https?:\\/\\/|\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^\\n]+)/i;\n  var host = regex.exec(url)[1];\n  var socketProtocol = /^http:\\/\\//i.test(url) ? 'ws' : 'wss';\n  return socketProtocol + \"://\" + host;\n};","module.exports = function getSpeed(fileProgress) {\n  if (!fileProgress.bytesUploaded) return 0;\n  var timeElapsed = new Date() - fileProgress.uploadStarted;\n  var uploadSpeed = fileProgress.bytesUploaded / (timeElapsed / 1000);\n  return uploadSpeed;\n};","/**\n * Get the declared text direction for an element.\n *\n * @param {Node} element\n * @returns {string|undefined}\n */\nfunction getTextDirection(element) {\n  // There is another way to determine text direction using getComputedStyle(), as done here:\n  // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n  //\n  // We do not use that approach because we are interested specifically in the _declared_ text direction.\n  // If no text direction is declared, we have to provide our own explicit text direction so our\n  // bidirectional CSS style sheets work.\n  while (element && !element.dir) {\n    element = element.parentNode;\n  }\n  return element ? element.dir : undefined;\n}\nmodule.exports = getTextDirection;","/**\n * Returns a timestamp in the format of `hours:minutes:seconds`\n */\nmodule.exports = function getTimeStamp() {\n  var date = new Date();\n  var hours = pad(date.getHours().toString());\n  var minutes = pad(date.getMinutes().toString());\n  var seconds = pad(date.getSeconds().toString());\n  return hours + \":\" + minutes + \":\" + seconds;\n};\n/**\n * Adds zero to strings shorter than two characters\n */\n\nfunction pad(str) {\n  return str.length !== 2 ? 0 + str : str;\n}","module.exports = function has(object, key) {\n  return Object.prototype.hasOwnProperty.call(object, key);\n};","/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n *\n * @param {*} obj\n */\nmodule.exports = function isDOMElement(obj) {\n  return obj && typeof obj === 'object' && obj.nodeType === Node.ELEMENT_NODE;\n};","/**\n * Checks if the browser supports Drag & Drop (not supported on mobile devices, for example).\n *\n * @returns {boolean}\n */\nmodule.exports = function isDragDropSupported() {\n  var div = document.createElement('div');\n  if (!('draggable' in div) || !('ondragstart' in div && 'ondrop' in div)) {\n    return false;\n  }\n  if (!('FormData' in window)) {\n    return false;\n  }\n  if (!('FileReader' in window)) {\n    return false;\n  }\n  return true;\n};","function isNetworkError(xhr) {\n  if (!xhr) {\n    return false;\n  }\n  return xhr.readyState !== 0 && xhr.readyState !== 4 || xhr.status === 0;\n}\nmodule.exports = isNetworkError;","/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n *\n * @param {string} url\n * @returns {boolean}\n */\nmodule.exports = function isObjectURL(url) {\n  return url.indexOf('blob:') === 0;\n};","module.exports = function isPreviewSupported(fileType) {\n  if (!fileType) return false;\n  var fileTypeSpecific = fileType.split('/')[1]; // list of images that browsers can preview\n\n  if (/^(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileTypeSpecific)) {\n    return true;\n  }\n  return false;\n};","// ___Why not add the mime-types package?\n//    It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n//    https://github.com/jshttp/mime-db/blob/master/db.json\nmodule.exports = {\n  md: 'text/markdown',\n  markdown: 'text/markdown',\n  mp4: 'video/mp4',\n  mp3: 'audio/mp3',\n  svg: 'image/svg+xml',\n  jpg: 'image/jpeg',\n  png: 'image/png',\n  gif: 'image/gif',\n  heic: 'image/heic',\n  heif: 'image/heif',\n  yaml: 'text/yaml',\n  yml: 'text/yaml',\n  csv: 'text/csv',\n  tsv: 'text/tab-separated-values',\n  tab: 'text/tab-separated-values',\n  avi: 'video/x-msvideo',\n  mks: 'video/x-matroska',\n  mkv: 'video/x-matroska',\n  mov: 'video/quicktime',\n  doc: 'application/msword',\n  docm: 'application/vnd.ms-word.document.macroenabled.12',\n  docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  dot: 'application/msword',\n  dotm: 'application/vnd.ms-word.template.macroenabled.12',\n  dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n  xla: 'application/vnd.ms-excel',\n  xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n  xlc: 'application/vnd.ms-excel',\n  xlf: 'application/x-xliff+xml',\n  xlm: 'application/vnd.ms-excel',\n  xls: 'application/vnd.ms-excel',\n  xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n  xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n  xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n  xlt: 'application/vnd.ms-excel',\n  xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n  xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n  xlw: 'application/vnd.ms-excel',\n  txt: 'text/plain',\n  text: 'text/plain',\n  conf: 'text/plain',\n  log: 'text/plain',\n  pdf: 'application/pdf',\n  zip: 'application/zip',\n  '7z': 'application/x-7z-compressed',\n  rar: 'application/x-rar-compressed',\n  tar: 'application/x-tar',\n  gz: 'application/gzip',\n  dmg: 'application/x-apple-diskimage'\n};","var secondsToTime = require('./secondsToTime');\nmodule.exports = function prettyETA(seconds) {\n  var time = secondsToTime(seconds); // Only display hours and minutes if they are greater than 0 but always\n  // display minutes if hours is being displayed\n  // Display a leading zero if the there is a preceding unit: 1m 05s, but 5s\n\n  var hoursStr = time.hours ? time.hours + \"h \" : '';\n  var minutesVal = time.hours ? (\"0\" + time.minutes).substr(-2) : time.minutes;\n  var minutesStr = minutesVal ? minutesVal + \"m\" : '';\n  var secondsVal = minutesVal ? (\"0\" + time.seconds).substr(-2) : time.seconds;\n  var secondsStr = time.hours ? '' : minutesVal ? \" \" + secondsVal + \"s\" : secondsVal + \"s\";\n  return \"\" + hoursStr + minutesStr + secondsStr;\n};","module.exports = function secondsToTime(rawSeconds) {\n  var hours = Math.floor(rawSeconds / 3600) % 24;\n  var minutes = Math.floor(rawSeconds / 60) % 60;\n  var seconds = Math.floor(rawSeconds % 60);\n  return {\n    hours: hours,\n    minutes: minutes,\n    seconds: seconds\n  };\n};","module.exports = function settle(promises) {\n  var resolutions = [];\n  var rejections = [];\n  function resolved(value) {\n    resolutions.push(value);\n  }\n  function rejected(error) {\n    rejections.push(error);\n  }\n  var wait = Promise.all(promises.map(function (promise) {\n    return promise.then(resolved, rejected);\n  }));\n  return wait.then(function () {\n    return {\n      successful: resolutions,\n      failed: rejections\n    };\n  });\n};","/**\n * Converts list into array\n */\nmodule.exports = function toArray(list) {\n  return Array.prototype.slice.call(list || [], 0);\n};","/**\n * Truncates a string to the given number of chars (maxLength) by inserting '...' in the middle of that string.\n * Partially taken from https://stackoverflow.com/a/5723274/3192470.\n *\n * @param {string} string - string to be truncated\n * @param {number} maxLength - maximum size of the resulting string\n * @returns {string}\n */\nmodule.exports = function truncateString(string, maxLength) {\n  var separator = '...'; // Return original string if it's already shorter than maxLength\n\n  if (string.length <= maxLength) {\n    return string; // Return truncated substring without '...' if string can't be meaningfully truncated\n  }\n\n  if (maxLength <= separator.length) {\n    return string.substr(0, maxLength); // Return truncated string divided in half by '...'\n  }\n\n  var charsToShow = maxLength - separator.length;\n  var frontChars = Math.ceil(charsToShow / 2);\n  var backChars = Math.floor(charsToShow / 2);\n  return string.substr(0, frontChars) + separator + string.substr(string.length - backChars);\n};","var _class, _temp;\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nvar _require = require('@uppy/core'),\n  Plugin = _require.Plugin;\nvar cuid = require('cuid');\nvar Translator = require('@uppy/utils/lib/Translator');\nvar _require2 = require('@uppy/companion-client'),\n  Provider = _require2.Provider,\n  RequestClient = _require2.RequestClient,\n  Socket = _require2.Socket;\nvar emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\nvar getSocketHost = require('@uppy/utils/lib/getSocketHost');\nvar settle = require('@uppy/utils/lib/settle');\nvar EventTracker = require('@uppy/utils/lib/EventTracker');\nvar ProgressTimeout = require('@uppy/utils/lib/ProgressTimeout');\nvar RateLimitedQueue = require('@uppy/utils/lib/RateLimitedQueue');\nvar NetworkError = require('@uppy/utils/lib/NetworkError');\nvar isNetworkError = require('@uppy/utils/lib/isNetworkError');\nfunction buildResponseError(xhr, error) {\n  // No error message\n  if (!error) error = new Error('Upload error'); // Got an error message string\n\n  if (typeof error === 'string') error = new Error(error); // Got something else\n\n  if (!(error instanceof Error)) {\n    error = _extends(new Error('Upload error'), {\n      data: error\n    });\n  }\n  if (isNetworkError(xhr)) {\n    error = new NetworkError(error, xhr);\n    return error;\n  }\n  error.request = xhr;\n  return error;\n}\n/**\n * Set `data.type` in the blob to `file.meta.type`,\n * because we might have detected a more accurate file type in Uppy\n * https://stackoverflow.com/a/50875615\n *\n * @param {object} file File object with `data`, `size` and `meta` properties\n * @returns {object} blob updated with the new `type` set from `file.meta.type`\n */\n\nfunction setTypeInBlob(file) {\n  var dataWithUpdatedType = file.data.slice(0, file.data.size, file.meta.type);\n  return dataWithUpdatedType;\n}\nmodule.exports = (_temp = _class = /*#__PURE__*/function (_Plugin) {\n  _inheritsLoose(XHRUpload, _Plugin);\n  function XHRUpload(uppy, opts) {\n    var _this;\n    _this = _Plugin.call(this, uppy, opts) || this;\n    _this.type = 'uploader';\n    _this.id = _this.opts.id || 'XHRUpload';\n    _this.title = 'XHRUpload';\n    _this.defaultLocale = {\n      strings: {\n        timedOut: 'Upload stalled for %{seconds} seconds, aborting.'\n      }\n    }; // Default options\n\n    var defaultOptions = {\n      formData: true,\n      fieldName: 'files[]',\n      method: 'post',\n      metaFields: null,\n      responseUrlFieldName: 'url',\n      bundle: false,\n      headers: {},\n      timeout: 30 * 1000,\n      limit: 0,\n      withCredentials: false,\n      responseType: '',\n      /**\n       * @typedef respObj\n       * @property {string} responseText\n       * @property {number} status\n       * @property {string} statusText\n       * @property {object.<string, string>} headers\n       *\n       * @param {string} responseText the response body string\n       * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n       */\n      getResponseData: function getResponseData(responseText, response) {\n        var parsedResponse = {};\n        try {\n          parsedResponse = JSON.parse(responseText);\n        } catch (err) {\n          console.log(err);\n        }\n        return parsedResponse;\n      },\n      /**\n       *\n       * @param {string} responseText the response body string\n       * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n       */\n      getResponseError: function getResponseError(responseText, response) {\n        var error = new Error('Upload error');\n        if (isNetworkError(response)) {\n          error = new NetworkError(error, response);\n        }\n        return error;\n      },\n      /**\n       * Check if the response from the upload endpoint indicates that the upload was successful.\n       *\n       * @param {number} status the response status code\n       * @param {string} responseText the response body string\n       * @param {XMLHttpRequest | respObj} response the response object (XHR or similar)\n       */\n      validateStatus: function validateStatus(status, responseText, response) {\n        return status >= 200 && status < 300;\n      }\n    };\n    _this.opts = _extends({}, defaultOptions, opts);\n    _this.i18nInit();\n    _this.handleUpload = _this.handleUpload.bind(_assertThisInitialized(_this)); // Simultaneous upload limiting is shared across all uploads with this plugin.\n    // __queue is for internal Uppy use only!\n\n    if (_this.opts.__queue instanceof RateLimitedQueue) {\n      _this.requests = _this.opts.__queue;\n    } else {\n      _this.requests = new RateLimitedQueue(_this.opts.limit);\n    }\n    if (_this.opts.bundle && !_this.opts.formData) {\n      throw new Error('`opts.formData` must be true when `opts.bundle` is enabled.');\n    }\n    _this.uploaderEvents = Object.create(null);\n    return _this;\n  }\n  var _proto = XHRUpload.prototype;\n  _proto.setOptions = function setOptions(newOpts) {\n    _Plugin.prototype.setOptions.call(this, newOpts);\n    this.i18nInit();\n  };\n  _proto.i18nInit = function i18nInit() {\n    this.translator = new Translator([this.defaultLocale, this.uppy.locale, this.opts.locale]);\n    this.i18n = this.translator.translate.bind(this.translator);\n    this.setPluginState(); // so that UI re-renders and we see the updated locale\n  };\n\n  _proto.getOptions = function getOptions(file) {\n    var overrides = this.uppy.getState().xhrUpload;\n    var headers = this.opts.headers;\n    var opts = _extends({}, this.opts, overrides || {}, file.xhrUpload || {}, {\n      headers: {}\n    }); // Support for `headers` as a function, only in the XHRUpload settings.\n    // Options set by other plugins in Uppy state or on the files themselves are still merged in afterward.\n    //\n    // ```js\n    // headers: (file) => ({ expires: file.meta.expires })\n    // ```\n\n    if (typeof headers === 'function') {\n      opts.headers = headers(file);\n    } else {\n      _extends(opts.headers, this.opts.headers);\n    }\n    if (overrides) {\n      _extends(opts.headers, overrides.headers);\n    }\n    if (file.xhrUpload) {\n      _extends(opts.headers, file.xhrUpload.headers);\n    }\n    return opts;\n  };\n  _proto.addMetadata = function addMetadata(formData, meta, opts) {\n    var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields // Send along all fields by default.\n    : Object.keys(meta);\n    metaFields.forEach(function (item) {\n      formData.append(item, meta[item]);\n    });\n  };\n  _proto.createFormDataUpload = function createFormDataUpload(file, opts) {\n    var formPost = new FormData();\n    this.addMetadata(formPost, file.meta, opts);\n    var dataWithUpdatedType = setTypeInBlob(file);\n    if (file.name) {\n      formPost.append(opts.fieldName, dataWithUpdatedType, file.meta.name);\n    } else {\n      formPost.append(opts.fieldName, dataWithUpdatedType);\n    }\n    return formPost;\n  };\n  _proto.createBundledUpload = function createBundledUpload(files, opts) {\n    var _this2 = this;\n    var formPost = new FormData();\n    var _this$uppy$getState = this.uppy.getState(),\n      meta = _this$uppy$getState.meta;\n    this.addMetadata(formPost, meta, opts);\n    files.forEach(function (file) {\n      var opts = _this2.getOptions(file);\n      var dataWithUpdatedType = setTypeInBlob(file);\n      if (file.name) {\n        formPost.append(opts.fieldName, dataWithUpdatedType, file.name);\n      } else {\n        formPost.append(opts.fieldName, dataWithUpdatedType);\n      }\n    });\n    return formPost;\n  };\n  _proto.createBareUpload = function createBareUpload(file, opts) {\n    return file.data;\n  };\n  _proto.upload = function upload(file, current, total) {\n    var _this3 = this;\n    var opts = this.getOptions(file);\n    this.uppy.log(\"uploading \" + current + \" of \" + total);\n    return new Promise(function (resolve, reject) {\n      _this3.uppy.emit('upload-started', file);\n      var data = opts.formData ? _this3.createFormDataUpload(file, opts) : _this3.createBareUpload(file, opts);\n      var xhr = new XMLHttpRequest();\n      _this3.uploaderEvents[file.id] = new EventTracker(_this3.uppy);\n      var timer = new ProgressTimeout(opts.timeout, function () {\n        xhr.abort();\n        queuedRequest.done();\n        var error = new Error(_this3.i18n('timedOut', {\n          seconds: Math.ceil(opts.timeout / 1000)\n        }));\n        _this3.uppy.emit('upload-error', file, error);\n        reject(error);\n      });\n      var id = cuid();\n      xhr.upload.addEventListener('loadstart', function (ev) {\n        _this3.uppy.log(\"[XHRUpload] \" + id + \" started\");\n      });\n      xhr.upload.addEventListener('progress', function (ev) {\n        _this3.uppy.log(\"[XHRUpload] \" + id + \" progress: \" + ev.loaded + \" / \" + ev.total); // Begin checking for timeouts when progress starts, instead of loading,\n        // to avoid timing out requests on browser concurrency queue\n\n        timer.progress();\n        if (ev.lengthComputable) {\n          _this3.uppy.emit('upload-progress', file, {\n            uploader: _this3,\n            bytesUploaded: ev.loaded,\n            bytesTotal: ev.total\n          });\n        }\n      });\n      xhr.addEventListener('load', function (ev) {\n        _this3.uppy.log(\"[XHRUpload] \" + id + \" finished\");\n        timer.done();\n        queuedRequest.done();\n        if (_this3.uploaderEvents[file.id]) {\n          _this3.uploaderEvents[file.id].remove();\n          _this3.uploaderEvents[file.id] = null;\n        }\n        if (opts.validateStatus(ev.target.status, xhr.responseText, xhr)) {\n          var _body = opts.getResponseData(xhr.responseText, xhr);\n          var uploadURL = _body[opts.responseUrlFieldName];\n          var uploadResp = {\n            status: ev.target.status,\n            body: _body,\n            uploadURL: uploadURL\n          };\n          _this3.uppy.emit('upload-success', file, uploadResp);\n          if (uploadURL) {\n            _this3.uppy.log(\"Download \" + file.name + \" from \" + uploadURL);\n          }\n          return resolve(file);\n        }\n        var body = opts.getResponseData(xhr.responseText, xhr);\n        var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n        var response = {\n          status: ev.target.status,\n          body: body\n        };\n        _this3.uppy.emit('upload-error', file, error, response);\n        return reject(error);\n      });\n      xhr.addEventListener('error', function (ev) {\n        _this3.uppy.log(\"[XHRUpload] \" + id + \" errored\");\n        timer.done();\n        queuedRequest.done();\n        if (_this3.uploaderEvents[file.id]) {\n          _this3.uploaderEvents[file.id].remove();\n          _this3.uploaderEvents[file.id] = null;\n        }\n        var error = buildResponseError(xhr, opts.getResponseError(xhr.responseText, xhr));\n        _this3.uppy.emit('upload-error', file, error);\n        return reject(error);\n      });\n      xhr.open(opts.method.toUpperCase(), opts.endpoint, true); // IE10 does not allow setting `withCredentials` and `responseType`\n      // before `open()` is called.\n\n      xhr.withCredentials = opts.withCredentials;\n      if (opts.responseType !== '') {\n        xhr.responseType = opts.responseType;\n      }\n      var queuedRequest = _this3.requests.run(function () {\n        // When using an authentication system like JWT, the bearer token goes as a header. This\n        // header needs to be fresh each time the token is refreshed so computing and setting the\n        // headers just before the upload starts enables this kind of authentication to work properly.\n        // Otherwise, half-way through the list of uploads the token could be stale and the upload would fail.\n        var currentOpts = _this3.getOptions(file);\n        Object.keys(currentOpts.headers).forEach(function (header) {\n          xhr.setRequestHeader(header, currentOpts.headers[header]);\n        });\n        xhr.send(data);\n        return function () {\n          timer.done();\n          xhr.abort();\n        };\n      });\n      _this3.onFileRemove(file.id, function () {\n        queuedRequest.abort();\n        reject(new Error('File removed'));\n      });\n      _this3.onCancelAll(file.id, function () {\n        queuedRequest.abort();\n        reject(new Error('Upload cancelled'));\n      });\n    });\n  };\n  _proto.uploadRemote = function uploadRemote(file, current, total) {\n    var _this4 = this;\n    var opts = this.getOptions(file);\n    return new Promise(function (resolve, reject) {\n      _this4.uppy.emit('upload-started', file);\n      var fields = {};\n      var metaFields = Array.isArray(opts.metaFields) ? opts.metaFields // Send along all fields by default.\n      : Object.keys(file.meta);\n      metaFields.forEach(function (name) {\n        fields[name] = file.meta[name];\n      });\n      var Client = file.remote.providerOptions.provider ? Provider : RequestClient;\n      var client = new Client(_this4.uppy, file.remote.providerOptions);\n      client.post(file.remote.url, _extends({}, file.remote.body, {\n        endpoint: opts.endpoint,\n        size: file.data.size,\n        fieldname: opts.fieldName,\n        metadata: fields,\n        httpMethod: opts.method,\n        useFormData: opts.formData,\n        headers: opts.headers\n      })).then(function (res) {\n        var token = res.token;\n        var host = getSocketHost(file.remote.companionUrl);\n        var socket = new Socket({\n          target: host + \"/api/\" + token,\n          autoOpen: false\n        });\n        _this4.uploaderEvents[file.id] = new EventTracker(_this4.uppy);\n        _this4.onFileRemove(file.id, function () {\n          socket.send('pause', {});\n          queuedRequest.abort();\n          resolve(\"upload \" + file.id + \" was removed\");\n        });\n        _this4.onCancelAll(file.id, function () {\n          socket.send('pause', {});\n          queuedRequest.abort();\n          resolve(\"upload \" + file.id + \" was canceled\");\n        });\n        _this4.onRetry(file.id, function () {\n          socket.send('pause', {});\n          socket.send('resume', {});\n        });\n        _this4.onRetryAll(file.id, function () {\n          socket.send('pause', {});\n          socket.send('resume', {});\n        });\n        socket.on('progress', function (progressData) {\n          return emitSocketProgress(_this4, progressData, file);\n        });\n        socket.on('success', function (data) {\n          var body = opts.getResponseData(data.response.responseText, data.response);\n          var uploadURL = body[opts.responseUrlFieldName];\n          var uploadResp = {\n            status: data.response.status,\n            body: body,\n            uploadURL: uploadURL\n          };\n          _this4.uppy.emit('upload-success', file, uploadResp);\n          queuedRequest.done();\n          if (_this4.uploaderEvents[file.id]) {\n            _this4.uploaderEvents[file.id].remove();\n            _this4.uploaderEvents[file.id] = null;\n          }\n          return resolve();\n        });\n        socket.on('error', function (errData) {\n          var resp = errData.response;\n          var error = resp ? opts.getResponseError(resp.responseText, resp) : _extends(new Error(errData.error.message), {\n            cause: errData.error\n          });\n          _this4.uppy.emit('upload-error', file, error);\n          queuedRequest.done();\n          if (_this4.uploaderEvents[file.id]) {\n            _this4.uploaderEvents[file.id].remove();\n            _this4.uploaderEvents[file.id] = null;\n          }\n          reject(error);\n        });\n        var queuedRequest = _this4.requests.run(function () {\n          socket.open();\n          if (file.isPaused) {\n            socket.send('pause', {});\n          }\n          return function () {\n            return socket.close();\n          };\n        });\n      }).catch(function (err) {\n        _this4.uppy.emit('upload-error', file, err);\n        reject(err);\n      });\n    });\n  };\n  _proto.uploadBundle = function uploadBundle(files) {\n    var _this5 = this;\n    return new Promise(function (resolve, reject) {\n      var endpoint = _this5.opts.endpoint;\n      var method = _this5.opts.method;\n      var optsFromState = _this5.uppy.getState().xhrUpload;\n      var formData = _this5.createBundledUpload(files, _extends({}, _this5.opts, optsFromState || {}));\n      var xhr = new XMLHttpRequest();\n      var timer = new ProgressTimeout(_this5.opts.timeout, function () {\n        xhr.abort();\n        var error = new Error(_this5.i18n('timedOut', {\n          seconds: Math.ceil(_this5.opts.timeout / 1000)\n        }));\n        emitError(error);\n        reject(error);\n      });\n      var emitError = function emitError(error) {\n        files.forEach(function (file) {\n          _this5.uppy.emit('upload-error', file, error);\n        });\n      };\n      xhr.upload.addEventListener('loadstart', function (ev) {\n        _this5.uppy.log('[XHRUpload] started uploading bundle');\n        timer.progress();\n      });\n      xhr.upload.addEventListener('progress', function (ev) {\n        timer.progress();\n        if (!ev.lengthComputable) return;\n        files.forEach(function (file) {\n          _this5.uppy.emit('upload-progress', file, {\n            uploader: _this5,\n            bytesUploaded: ev.loaded / ev.total * file.size,\n            bytesTotal: file.size\n          });\n        });\n      });\n      xhr.addEventListener('load', function (ev) {\n        timer.done();\n        if (_this5.opts.validateStatus(ev.target.status, xhr.responseText, xhr)) {\n          var body = _this5.opts.getResponseData(xhr.responseText, xhr);\n          var uploadResp = {\n            status: ev.target.status,\n            body: body\n          };\n          files.forEach(function (file) {\n            _this5.uppy.emit('upload-success', file, uploadResp);\n          });\n          return resolve();\n        }\n        var error = _this5.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n        error.request = xhr;\n        emitError(error);\n        return reject(error);\n      });\n      xhr.addEventListener('error', function (ev) {\n        timer.done();\n        var error = _this5.opts.getResponseError(xhr.responseText, xhr) || new Error('Upload error');\n        emitError(error);\n        return reject(error);\n      });\n      _this5.uppy.on('cancel-all', function () {\n        timer.done();\n        xhr.abort();\n      });\n      xhr.open(method.toUpperCase(), endpoint, true); // IE10 does not allow setting `withCredentials` and `responseType`\n      // before `open()` is called.\n\n      xhr.withCredentials = _this5.opts.withCredentials;\n      if (_this5.opts.responseType !== '') {\n        xhr.responseType = _this5.opts.responseType;\n      }\n      Object.keys(_this5.opts.headers).forEach(function (header) {\n        xhr.setRequestHeader(header, _this5.opts.headers[header]);\n      });\n      xhr.send(formData);\n      files.forEach(function (file) {\n        _this5.uppy.emit('upload-started', file);\n      });\n    });\n  };\n  _proto.uploadFiles = function uploadFiles(files) {\n    var _this6 = this;\n    var promises = files.map(function (file, i) {\n      var current = parseInt(i, 10) + 1;\n      var total = files.length;\n      if (file.error) {\n        return Promise.reject(new Error(file.error));\n      }\n      if (file.isRemote) {\n        return _this6.uploadRemote(file, current, total);\n      }\n      return _this6.upload(file, current, total);\n    });\n    return settle(promises);\n  };\n  _proto.onFileRemove = function onFileRemove(fileID, cb) {\n    this.uploaderEvents[fileID].on('file-removed', function (file) {\n      if (fileID === file.id) cb(file.id);\n    });\n  };\n  _proto.onRetry = function onRetry(fileID, cb) {\n    this.uploaderEvents[fileID].on('upload-retry', function (targetFileID) {\n      if (fileID === targetFileID) {\n        cb();\n      }\n    });\n  };\n  _proto.onRetryAll = function onRetryAll(fileID, cb) {\n    var _this7 = this;\n    this.uploaderEvents[fileID].on('retry-all', function (filesToRetry) {\n      if (!_this7.uppy.getFile(fileID)) return;\n      cb();\n    });\n  };\n  _proto.onCancelAll = function onCancelAll(fileID, cb) {\n    var _this8 = this;\n    this.uploaderEvents[fileID].on('cancel-all', function () {\n      if (!_this8.uppy.getFile(fileID)) return;\n      cb();\n    });\n  };\n  _proto.handleUpload = function handleUpload(fileIDs) {\n    var _this9 = this;\n    if (fileIDs.length === 0) {\n      this.uppy.log('[XHRUpload] No files to upload!');\n      return Promise.resolve();\n    } // no limit configured by the user, and no RateLimitedQueue passed in by a \"parent\" plugin (basically just AwsS3) using the top secret `__queue` option\n\n    if (this.opts.limit === 0 && !this.opts.__queue) {\n      this.uppy.log('[XHRUpload] When uploading multiple files at once, consider setting the `limit` option (to `10` for example), to limit the number of concurrent uploads, which helps prevent memory and network issues: https://uppy.io/docs/xhr-upload/#limit-0', 'warning');\n    }\n    this.uppy.log('[XHRUpload] Uploading...');\n    var files = fileIDs.map(function (fileID) {\n      return _this9.uppy.getFile(fileID);\n    });\n    if (this.opts.bundle) {\n      // if bundle: true, we don’t support remote uploads\n      var isSomeFileRemote = files.some(function (file) {\n        return file.isRemote;\n      });\n      if (isSomeFileRemote) {\n        throw new Error('Can’t upload remote files when the `bundle: true` option is set');\n      }\n      if (typeof this.opts.headers === 'function') {\n        throw new TypeError('`headers` may not be a function when the `bundle: true` option is set');\n      }\n      return this.uploadBundle(files);\n    }\n    return this.uploadFiles(files).then(function () {\n      return null;\n    });\n  };\n  _proto.install = function install() {\n    if (this.opts.bundle) {\n      var _this$uppy$getState2 = this.uppy.getState(),\n        capabilities = _this$uppy$getState2.capabilities;\n      this.uppy.setState({\n        capabilities: _extends({}, capabilities, {\n          individualCancellation: false\n        })\n      });\n    }\n    this.uppy.addUploader(this.handleUpload);\n  };\n  _proto.uninstall = function uninstall() {\n    if (this.opts.bundle) {\n      var _this$uppy$getState3 = this.uppy.getState(),\n        capabilities = _this$uppy$getState3.capabilities;\n      this.uppy.setState({\n        capabilities: _extends({}, capabilities, {\n          individualCancellation: true\n        })\n      });\n    }\n    this.uppy.removeUploader(this.handleUpload);\n  };\n  return XHRUpload;\n}(Plugin), _class.VERSION = \"1.7.5\", _temp);","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\nvar getRandomValue = require('./lib/getRandomValue.js');\nvar c = 0,\n  blockSize = 4,\n  base = 36,\n  discreteValues = Math.pow(base, blockSize);\nfunction randomBlock() {\n  return pad((getRandomValue() * discreteValues << 0).toString(base), blockSize);\n}\nfunction safeCounter() {\n  c = c < discreteValues ? c : 0;\n  c++; // this is not subliminal\n  return c - 1;\n}\nfunction cuid() {\n  // Starting with a lowercase letter makes\n  // it HTML element ID friendly.\n  var letter = 'c',\n    // hard-coded allows for sequential access\n\n    // timestamp\n    // warning: this exposes the exact date and time\n    // that the uid was created.\n    timestamp = new Date().getTime().toString(base),\n    // Prevent same-machine collisions.\n    counter = pad(safeCounter().toString(base), blockSize),\n    // A few chars to generate distinct ids for different\n    // clients (so different computers are far less\n    // likely to generate the same id)\n    print = fingerprint(),\n    // Grab some more chars from Math.random()\n    random = randomBlock() + randomBlock();\n  return letter + timestamp + counter + print + random;\n}\ncuid.slug = function slug() {\n  var date = new Date().getTime().toString(36),\n    counter = safeCounter().toString(36).slice(-4),\n    print = fingerprint().slice(0, 1) + fingerprint().slice(-1),\n    random = randomBlock().slice(-2);\n  return date.slice(-2) + counter + print + random;\n};\ncuid.isCuid = function isCuid(stringToCheck) {\n  if (typeof stringToCheck !== 'string') return false;\n  if (stringToCheck.startsWith('c')) return true;\n  return false;\n};\ncuid.isSlug = function isSlug(stringToCheck) {\n  if (typeof stringToCheck !== 'string') return false;\n  var stringLength = stringToCheck.length;\n  if (stringLength >= 7 && stringLength <= 10) return true;\n  return false;\n};\ncuid.fingerprint = fingerprint;\nmodule.exports = cuid;","var pad = require('./pad.js');\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = Object.keys(env).length;\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength + navigator.userAgent.length).toString(36) + globalCount.toString(36), 4);\nmodule.exports = function fingerprint() {\n  return clientId;\n};","var getRandomValue;\nvar crypto = typeof window !== 'undefined' && (window.crypto || window.msCrypto) || typeof self !== 'undefined' && self.crypto;\nif (crypto) {\n  var lim = Math.pow(2, 32) - 1;\n  getRandomValue = function getRandomValue() {\n    return Math.abs(crypto.getRandomValues(new Uint32Array(1))[0] / lim);\n  };\n} else {\n  getRandomValue = Math.random;\n}\nmodule.exports = getRandomValue;","module.exports = function pad(num, size) {\n  var s = '000000000' + num;\n  return s.substr(s.length - size);\n};","require(\"core-js/modules/esnext.global-this.js\");\nrequire(\"core-js/modules/es.object.from-entries.js\");\n!function (e, t) {\n  \"object\" == typeof exports && \"undefined\" != typeof module ? t(exports) : \"function\" == typeof define && define.amd ? define(\"exifr\", [\"exports\"], t) : t((e = \"undefined\" != typeof globalThis ? globalThis : e || self).exifr = {});\n}(this, function (e) {\n  \"use strict\";\n\n  function t(e, t) {\n    if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n  }\n  function n(e, t) {\n    for (var n = 0; n < t.length; n++) {\n      var r = t[n];\n      r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n    }\n  }\n  function r(e, t, r) {\n    return t && n(e.prototype, t), r && n(e, r), e;\n  }\n  function i(e, t, n) {\n    return t in e ? Object.defineProperty(e, t, {\n      value: n,\n      enumerable: !0,\n      configurable: !0,\n      writable: !0\n    }) : e[t] = n, e;\n  }\n  function a(e, t) {\n    if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n    e.prototype = Object.create(t && t.prototype, {\n      constructor: {\n        value: e,\n        writable: !0,\n        configurable: !0\n      }\n    });\n    var n = [\"prototype\", \"__proto__\", \"caller\", \"arguments\", \"length\", \"name\"];\n    Object.getOwnPropertyNames(t).forEach(function (r) {\n      -1 === n.indexOf(r) && e[r] !== t[r] && (e[r] = t[r]);\n    }), t && u(e, t);\n  }\n  function s(e) {\n    return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {\n      return e.__proto__ || Object.getPrototypeOf(e);\n    })(e);\n  }\n  function u(e, t) {\n    return (u = Object.setPrototypeOf || function (e, t) {\n      return e.__proto__ = t, e;\n    })(e, t);\n  }\n  function o() {\n    if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n    if (Reflect.construct.sham) return !1;\n    if (\"function\" == typeof Proxy) return !0;\n    try {\n      return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;\n    } catch (e) {\n      return !1;\n    }\n  }\n  function f(e, t, n) {\n    return (f = o() ? Reflect.construct : function (e, t, n) {\n      var r = [null];\n      r.push.apply(r, t);\n      var i = new (Function.bind.apply(e, r))();\n      return n && u(i, n.prototype), i;\n    }).apply(null, arguments);\n  }\n  function c(e) {\n    var t = \"function\" == typeof Map ? new Map() : void 0;\n    return (c = function c(e) {\n      if (null === e || (n = e, -1 === Function.toString.call(n).indexOf(\"[native code]\"))) return e;\n      var n;\n      if (\"function\" != typeof e) throw new TypeError(\"Super expression must either be null or a function\");\n      if (void 0 !== t) {\n        if (t.has(e)) return t.get(e);\n        t.set(e, r);\n      }\n      function r() {\n        return f(e, arguments, s(this).constructor);\n      }\n      return r.prototype = Object.create(e.prototype, {\n        constructor: {\n          value: r,\n          enumerable: !1,\n          writable: !0,\n          configurable: !0\n        }\n      }), u(r, e);\n    })(e);\n  }\n  function h(e) {\n    if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return e;\n  }\n  function l(e, t) {\n    return !t || \"object\" != typeof t && \"function\" != typeof t ? h(e) : t;\n  }\n  function d(e) {\n    var t = o();\n    return function () {\n      var n,\n        r = s(e);\n      if (t) {\n        var i = s(this).constructor;\n        n = Reflect.construct(r, arguments, i);\n      } else n = r.apply(this, arguments);\n      return l(this, n);\n    };\n  }\n  function v(e, t, n) {\n    return (v = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {\n      var r = function (e, t) {\n        for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = s(e));) {\n          ;\n        }\n        return e;\n      }(e, t);\n      if (r) {\n        var i = Object.getOwnPropertyDescriptor(r, t);\n        return i.get ? i.get.call(n) : i.value;\n      }\n    })(e, t, n || e);\n  }\n  var p = Object.values || function (e) {\n      var t = [];\n      for (var n in e) {\n        t.push(e[n]);\n      }\n      return t;\n    },\n    y = Object.entries || function (e) {\n      var t = [];\n      for (var n in e) {\n        t.push([n, e[n]]);\n      }\n      return t;\n    },\n    g = Object.assign || function (e) {\n      for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) {\n        n[r - 1] = arguments[r];\n      }\n      return n.forEach(function (t) {\n        for (var n in t) {\n          e[n] = t[n];\n        }\n      }), e;\n    },\n    k = Object.fromEntries || function (e) {\n      var t = {};\n      return m(e).forEach(function (e) {\n        var n = e[0],\n          r = e[1];\n        t[n] = r;\n      }), t;\n    },\n    m = Array.from || function (e) {\n      if (e instanceof P) {\n        var t = [];\n        return e.forEach(function (e, n) {\n          return t.push([n, e]);\n        }), t;\n      }\n      return Array.prototype.slice.call(e);\n    };\n  function b(e) {\n    return -1 !== this.indexOf(e);\n  }\n  Array.prototype.includes || (Array.prototype.includes = b), String.prototype.includes || (String.prototype.includes = b), String.prototype.startsWith || (String.prototype.startsWith = function (e) {\n    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\n    return this.substring(t, t + e.length) === e;\n  }), String.prototype.endsWith || (String.prototype.endsWith = function (e) {\n    var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.length;\n    return this.substring(t - e.length, t) === e;\n  });\n  var A = \"undefined\" != typeof self ? self : global,\n    w = A.fetch || function (e) {\n      var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n      return new Promise(function (n, r) {\n        var i = new XMLHttpRequest();\n        if (i.open(\"get\", e, !0), i.responseType = \"arraybuffer\", i.onerror = r, t.headers) for (var a in t.headers) {\n          i.setRequestHeader(a, t.headers[a]);\n        }\n        i.onload = function () {\n          n({\n            ok: i.status >= 200 && i.status < 300,\n            status: i.status,\n            arrayBuffer: function arrayBuffer() {\n              return Promise.resolve(i.response);\n            }\n          });\n        }, i.send(null);\n      });\n    },\n    O = function O(e) {\n      var t = [];\n      if (Object.defineProperties(t, {\n        size: {\n          get: function get() {\n            return this.length;\n          }\n        },\n        has: {\n          value: function value(e) {\n            return -1 !== this.indexOf(e);\n          }\n        },\n        add: {\n          value: function value(e) {\n            this.has(e) || this.push(e);\n          }\n        },\n        delete: {\n          value: function value(e) {\n            if (this.has(e)) {\n              var t = this.indexOf(e);\n              this.splice(t, 1);\n            }\n          }\n        }\n      }), Array.isArray(e)) for (var n = 0; n < e.length; n++) {\n        t.add(e[n]);\n      }\n      return t;\n    },\n    S = function S(e) {\n      return new P(e);\n    },\n    P = void 0 !== A.Map && void 0 !== A.Map.prototype.keys ? A.Map : function () {\n      function e(n) {\n        if (t(this, e), this.clear(), n) for (var r = 0; r < n.length; r++) {\n          this.set(n[r][0], n[r][1]);\n        }\n      }\n      return r(e, [{\n        key: \"clear\",\n        value: function value() {\n          this._map = {}, this._keys = [];\n        }\n      }, {\n        key: \"size\",\n        get: function get() {\n          return this._keys.length;\n        }\n      }, {\n        key: \"get\",\n        value: function value(e) {\n          return this._map[\"map_\" + e];\n        }\n      }, {\n        key: \"set\",\n        value: function value(e, t) {\n          return this._map[\"map_\" + e] = t, this._keys.indexOf(e) < 0 && this._keys.push(e), this;\n        }\n      }, {\n        key: \"has\",\n        value: function value(e) {\n          return this._keys.indexOf(e) >= 0;\n        }\n      }, {\n        key: \"delete\",\n        value: function value(e) {\n          var t = this._keys.indexOf(e);\n          return !(t < 0) && (delete this._map[\"map_\" + e], this._keys.splice(t, 1), !0);\n        }\n      }, {\n        key: \"keys\",\n        value: function value() {\n          return this._keys.slice(0);\n        }\n      }, {\n        key: \"values\",\n        value: function value() {\n          var e = this;\n          return this._keys.map(function (t) {\n            return e.get(t);\n          });\n        }\n      }, {\n        key: \"entries\",\n        value: function value() {\n          var e = this;\n          return this._keys.map(function (t) {\n            return [t, e.get(t)];\n          });\n        }\n      }, {\n        key: \"forEach\",\n        value: function value(e, t) {\n          for (var n = 0; n < this._keys.length; n++) {\n            e.call(t, this._map[\"map_\" + this._keys[n]], this._keys[n], this);\n          }\n        }\n      }]), e;\n    }(),\n    U = \"undefined\" != typeof self ? self : global,\n    x = \"undefined\" != typeof navigator,\n    C = x && \"undefined\" == typeof HTMLImageElement,\n    B = !(\"undefined\" == typeof global || \"undefined\" == typeof process || !process.versions || !process.versions.node),\n    j = U.Buffer,\n    _ = !!j;\n  var V = function V(e) {\n    return void 0 !== e;\n  };\n  function I(e) {\n    return void 0 === e || (e instanceof P ? 0 === e.size : 0 === p(e).filter(V).length);\n  }\n  function L(e) {\n    var t = new Error(e);\n    throw delete t.stack, t;\n  }\n  function T(e) {\n    var t = function (e) {\n      var t = 0;\n      return e.ifd0.enabled && (t += 1024), e.exif.enabled && (t += 2048), e.makerNote && (t += 2048), e.userComment && (t += 1024), e.gps.enabled && (t += 512), e.interop.enabled && (t += 100), e.ifd1.enabled && (t += 1024), t + 2048;\n    }(e);\n    return e.jfif.enabled && (t += 50), e.xmp.enabled && (t += 2e4), e.iptc.enabled && (t += 14e3), e.icc.enabled && (t += 6e3), t;\n  }\n  var z = function z(e) {\n      return String.fromCharCode.apply(null, e);\n    },\n    F = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-8\") : void 0;\n  function E(e) {\n    return F ? F.decode(e) : _ ? Buffer.from(e).toString(\"utf8\") : decodeURIComponent(escape(z(e)));\n  }\n  var D = function () {\n    function e(n) {\n      var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0,\n        i = arguments.length > 2 ? arguments[2] : void 0,\n        a = arguments.length > 3 ? arguments[3] : void 0;\n      if (t(this, e), \"boolean\" == typeof a && (this.le = a), Array.isArray(n) && (n = new Uint8Array(n)), 0 === n) this.byteOffset = 0, this.byteLength = 0;else if (n instanceof ArrayBuffer) {\n        void 0 === i && (i = n.byteLength - r);\n        var s = new DataView(n, r, i);\n        this._swapDataView(s);\n      } else if (n instanceof Uint8Array || n instanceof DataView || n instanceof e) {\n        void 0 === i && (i = n.byteLength - r), (r += n.byteOffset) + i > n.byteOffset + n.byteLength && L(\"Creating view outside of available memory in ArrayBuffer\");\n        var u = new DataView(n.buffer, r, i);\n        this._swapDataView(u);\n      } else if (\"number\" == typeof n) {\n        var o = new DataView(new ArrayBuffer(n));\n        this._swapDataView(o);\n      } else L(\"Invalid input argument for BufferView: \" + n);\n    }\n    return r(e, [{\n      key: \"_swapArrayBuffer\",\n      value: function value(e) {\n        this._swapDataView(new DataView(e));\n      }\n    }, {\n      key: \"_swapBuffer\",\n      value: function value(e) {\n        this._swapDataView(new DataView(e.buffer, e.byteOffset, e.byteLength));\n      }\n    }, {\n      key: \"_swapDataView\",\n      value: function value(e) {\n        this.dataView = e, this.buffer = e.buffer, this.byteOffset = e.byteOffset, this.byteLength = e.byteLength;\n      }\n    }, {\n      key: \"_lengthToEnd\",\n      value: function value(e) {\n        return this.byteLength - e;\n      }\n    }, {\n      key: \"set\",\n      value: function value(t, n) {\n        var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e;\n        t instanceof DataView || t instanceof e ? t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength) : t instanceof ArrayBuffer && (t = new Uint8Array(t)), t instanceof Uint8Array || L(\"BufferView.set(): Invalid data argument.\");\n        var i = this.toUint8();\n        return i.set(t, n), new r(this, n, t.byteLength);\n      }\n    }, {\n      key: \"subarray\",\n      value: function value(t, n) {\n        return new e(this, t, n = n || this._lengthToEnd(t));\n      }\n    }, {\n      key: \"toUint8\",\n      value: function value() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.byteLength);\n      }\n    }, {\n      key: \"getUint8Array\",\n      value: function value(e, t) {\n        return new Uint8Array(this.buffer, this.byteOffset + e, t);\n      }\n    }, {\n      key: \"getString\",\n      value: function value() {\n        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,\n          t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.byteLength,\n          n = this.getUint8Array(e, t);\n        return E(n);\n      }\n    }, {\n      key: \"getLatin1String\",\n      value: function value() {\n        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,\n          t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.byteLength,\n          n = this.getUint8Array(e, t);\n        return z(n);\n      }\n    }, {\n      key: \"getUnicodeString\",\n      value: function value() {\n        for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.byteLength, n = [], r = 0; r < t && e + r < this.byteLength; r += 2) {\n          n.push(this.getUint16(e + r));\n        }\n        return z(n);\n      }\n    }, {\n      key: \"getInt8\",\n      value: function value(e) {\n        return this.dataView.getInt8(e);\n      }\n    }, {\n      key: \"getUint8\",\n      value: function value(e) {\n        return this.dataView.getUint8(e);\n      }\n    }, {\n      key: \"getInt16\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getInt16(e, t);\n      }\n    }, {\n      key: \"getInt32\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getInt32(e, t);\n      }\n    }, {\n      key: \"getUint16\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getUint16(e, t);\n      }\n    }, {\n      key: \"getUint32\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getUint32(e, t);\n      }\n    }, {\n      key: \"getFloat32\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getFloat32(e, t);\n      }\n    }, {\n      key: \"getFloat64\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getFloat64(e, t);\n      }\n    }, {\n      key: \"getFloat\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getFloat32(e, t);\n      }\n    }, {\n      key: \"getDouble\",\n      value: function value(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.le;\n        return this.dataView.getFloat64(e, t);\n      }\n    }, {\n      key: \"getUintBytes\",\n      value: function value(e, t, n) {\n        switch (t) {\n          case 1:\n            return this.getUint8(e, n);\n          case 2:\n            return this.getUint16(e, n);\n          case 4:\n            return this.getUint32(e, n);\n          case 8:\n            return this.getUint64 && this.getUint64(e, n);\n        }\n      }\n    }, {\n      key: \"getUint\",\n      value: function value(e, t, n) {\n        switch (t) {\n          case 8:\n            return this.getUint8(e, n);\n          case 16:\n            return this.getUint16(e, n);\n          case 32:\n            return this.getUint32(e, n);\n          case 64:\n            return this.getUint64 && this.getUint64(e, n);\n        }\n      }\n    }, {\n      key: \"toString\",\n      value: function value(e) {\n        return this.dataView.toString(e, this.constructor.name);\n      }\n    }, {\n      key: \"ensureChunk\",\n      value: function value() {}\n    }], [{\n      key: \"from\",\n      value: function value(t, n) {\n        return t instanceof this && t.le === n ? t : new e(t, void 0, void 0, n);\n      }\n    }]), e;\n  }();\n  function R(e, t) {\n    L(\"\".concat(e, \" '\").concat(t, \"' was not loaded, try using full build of exifr.\"));\n  }\n  var N = function (e) {\n      a(i, e);\n      var n = d(i);\n      function i(e) {\n        var r;\n        return t(this, i), (r = n.call(this)).kind = e, r;\n      }\n      return r(i, [{\n        key: \"get\",\n        value: function value(e, t) {\n          return this.has(e) || R(this.kind, e), t && (e in t || function (e, t) {\n            L(\"Unknown \".concat(e, \" '\").concat(t, \"'.\"));\n          }(this.kind, e), t[e].enabled || R(this.kind, e)), v(s(i.prototype), \"get\", this).call(this, e);\n        }\n      }, {\n        key: \"keyList\",\n        value: function value() {\n          return m(this.keys());\n        }\n      }]), i;\n    }(c(P)),\n    M = new N(\"file parser\"),\n    W = new N(\"segment parser\"),\n    K = new N(\"file reader\");\n  function H(e) {\n    return function () {\n      for (var t = [], n = 0; n < arguments.length; n++) {\n        t[n] = arguments[n];\n      }\n      try {\n        return Promise.resolve(e.apply(this, t));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    };\n  }\n  function X(e, t, n) {\n    return n ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);\n  }\n  var Y = H(function (e) {\n      return new Promise(function (t, n) {\n        var r = new FileReader();\n        r.onloadend = function () {\n          return t(r.result || new ArrayBuffer());\n        }, r.onerror = n, r.readAsArrayBuffer(e);\n      });\n    }),\n    G = H(function (e) {\n      return w(e).then(function (e) {\n        return e.arrayBuffer();\n      });\n    }),\n    J = H(function (e, t) {\n      return X(t(e), function (e) {\n        return new D(e);\n      });\n    }),\n    q = H(function (e, t, n) {\n      var r = new (K.get(n))(e, t);\n      return X(r.read(), function () {\n        return r;\n      });\n    }),\n    Q = H(function (e, t, n, r) {\n      return K.has(n) ? q(e, t, n) : r ? J(e, r) : (L(\"Parser \".concat(n, \" is not loaded\")), X());\n    }),\n    Z = \"Invalid input argument\";\n  function $(e, t) {\n    return (n = e).startsWith(\"data:\") || n.length > 1e4 ? q(e, t, \"base64\") : x ? Q(e, t, \"url\", G) : B ? q(e, t, \"fs\") : void L(Z);\n    var n;\n  }\n  var ee = function (e) {\n    a(i, e);\n    var n = d(i);\n    function i() {\n      return t(this, i), n.apply(this, arguments);\n    }\n    return r(i, [{\n      key: \"tagKeys\",\n      get: function get() {\n        return this.allKeys || (this.allKeys = m(this.keys())), this.allKeys;\n      }\n    }, {\n      key: \"tagValues\",\n      get: function get() {\n        return this.allValues || (this.allValues = m(this.values())), this.allValues;\n      }\n    }]), i;\n  }(c(P));\n  function te(e, t, n) {\n    var r = new ee(),\n      i = n;\n    Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n    for (var a = 0; a < i.length; a++) {\n      var s = i[a],\n        u = s[0],\n        o = s[1];\n      r.set(u, o);\n    }\n    if (Array.isArray(t)) {\n      var f = t;\n      Array.isArray(f) || (\"function\" == typeof f.entries && (f = f.entries()), f = m(f));\n      for (var c = 0; c < f.length; c++) {\n        var h = f[c];\n        e.set(h, r);\n      }\n    } else e.set(t, r);\n    return r;\n  }\n  function ne(e, t, n) {\n    var r,\n      i = e.get(t),\n      a = n;\n    Array.isArray(a) || (\"function\" == typeof a.entries && (a = a.entries()), a = m(a));\n    for (var s = 0; s < a.length; s++) {\n      r = a[s], i.set(r[0], r[1]);\n    }\n  }\n  var re = S(),\n    ie = S(),\n    ae = S(),\n    se = 37500,\n    ue = 37510,\n    oe = 33723,\n    fe = 34675,\n    ce = 34665,\n    he = 34853,\n    le = 40965,\n    de = [\"chunked\", \"firstChunkSize\", \"firstChunkSizeNode\", \"firstChunkSizeBrowser\", \"chunkSize\", \"chunkLimit\"],\n    ve = [\"jfif\", \"xmp\", \"icc\", \"iptc\", \"ihdr\"],\n    pe = [\"tiff\"].concat(ve),\n    ye = [\"ifd0\", \"ifd1\", \"exif\", \"gps\", \"interop\"],\n    ge = [].concat(pe, ye),\n    ke = [\"makerNote\", \"userComment\"],\n    me = [\"translateKeys\", \"translateValues\", \"reviveValues\", \"multiSegment\"],\n    be = [].concat(me, [\"sanitize\", \"mergeOutput\", \"silentErrors\"]),\n    Ae = function () {\n      function e() {\n        t(this, e);\n      }\n      return r(e, [{\n        key: \"translate\",\n        get: function get() {\n          return this.translateKeys || this.translateValues || this.reviveValues;\n        }\n      }]), e;\n    }(),\n    we = function (e) {\n      a(s, e);\n      var n = d(s);\n      function s(e, r, a, u) {\n        var o;\n        if (t(this, s), i(h(o = n.call(this)), \"enabled\", !1), i(h(o), \"skip\", O()), i(h(o), \"pick\", O()), i(h(o), \"deps\", O()), i(h(o), \"translateKeys\", !1), i(h(o), \"translateValues\", !1), i(h(o), \"reviveValues\", !1), o.key = e, o.enabled = r, o.parse = o.enabled, o.applyInheritables(u), o.canBeFiltered = ye.includes(e), o.canBeFiltered && (o.dict = re.get(e)), void 0 !== a) if (Array.isArray(a)) o.parse = o.enabled = !0, o.canBeFiltered && a.length > 0 && o.translateTagSet(a, o.pick);else if (\"object\" == typeof a) {\n          if (o.enabled = !0, o.parse = !1 !== a.parse, o.canBeFiltered) {\n            var f = a.pick,\n              c = a.skip;\n            f && f.length > 0 && o.translateTagSet(f, o.pick), c && c.length > 0 && o.translateTagSet(c, o.skip);\n          }\n          o.applyInheritables(a);\n        } else !0 === a || !1 === a ? o.parse = o.enabled = a : L(\"Invalid options argument: \".concat(a));\n        return o;\n      }\n      return r(s, [{\n        key: \"needed\",\n        get: function get() {\n          return this.enabled || this.deps.size > 0;\n        }\n      }, {\n        key: \"applyInheritables\",\n        value: function value(e) {\n          var t,\n            n,\n            r = me;\n          Array.isArray(r) || (\"function\" == typeof r.entries && (r = r.entries()), r = m(r));\n          for (var i = 0; i < r.length; i++) {\n            void 0 !== (n = e[t = r[i]]) && (this[t] = n);\n          }\n        }\n      }, {\n        key: \"translateTagSet\",\n        value: function value(e, t) {\n          if (this.dict) {\n            var n,\n              r,\n              i = this.dict,\n              a = i.tagKeys,\n              s = i.tagValues,\n              u = e;\n            Array.isArray(u) || (\"function\" == typeof u.entries && (u = u.entries()), u = m(u));\n            for (var o = 0; o < u.length; o++) {\n              \"string\" == typeof (n = u[o]) ? (-1 === (r = s.indexOf(n)) && (r = a.indexOf(Number(n))), -1 !== r && t.add(Number(a[r]))) : t.add(n);\n            }\n          } else {\n            var f = e;\n            Array.isArray(f) || (\"function\" == typeof f.entries && (f = f.entries()), f = m(f));\n            for (var c = 0; c < f.length; c++) {\n              var h = f[c];\n              t.add(h);\n            }\n          }\n        }\n      }, {\n        key: \"finalizeFilters\",\n        value: function value() {\n          !this.enabled && this.deps.size > 0 ? (this.enabled = !0, Ce(this.pick, this.deps)) : this.enabled && this.pick.size > 0 && Ce(this.pick, this.deps);\n        }\n      }]), s;\n    }(Ae),\n    Oe = {\n      jfif: !1,\n      tiff: !0,\n      xmp: !1,\n      icc: !1,\n      iptc: !1,\n      ifd0: !0,\n      ifd1: !1,\n      exif: !0,\n      gps: !0,\n      interop: !1,\n      ihdr: void 0,\n      makerNote: !1,\n      userComment: !1,\n      multiSegment: !1,\n      skip: [],\n      pick: [],\n      translateKeys: !0,\n      translateValues: !0,\n      reviveValues: !0,\n      sanitize: !0,\n      mergeOutput: !0,\n      silentErrors: !0,\n      chunked: !0,\n      firstChunkSize: void 0,\n      firstChunkSizeNode: 512,\n      firstChunkSizeBrowser: 65536,\n      chunkSize: 65536,\n      chunkLimit: 5\n    },\n    Se = S(),\n    Pe = function (e) {\n      a(i, e);\n      var n = d(i);\n      function i(e) {\n        var r;\n        return t(this, i), r = n.call(this), !0 === e ? r.setupFromTrue() : void 0 === e ? r.setupFromUndefined() : Array.isArray(e) ? r.setupFromArray(e) : \"object\" == typeof e ? r.setupFromObject(e) : L(\"Invalid options argument \".concat(e)), void 0 === r.firstChunkSize && (r.firstChunkSize = x ? r.firstChunkSizeBrowser : r.firstChunkSizeNode), r.mergeOutput && (r.ifd1.enabled = !1), r.filterNestedSegmentTags(), r.traverseTiffDependencyTree(), r.checkLoadedPlugins(), r;\n      }\n      return r(i, [{\n        key: \"setupFromUndefined\",\n        value: function value() {\n          var e,\n            t = de;\n          Array.isArray(t) || (\"function\" == typeof t.entries && (t = t.entries()), t = m(t));\n          for (var n = 0; n < t.length; n++) {\n            this[e = t[n]] = Oe[e];\n          }\n          var r = be;\n          Array.isArray(r) || (\"function\" == typeof r.entries && (r = r.entries()), r = m(r));\n          for (var i = 0; i < r.length; i++) {\n            this[e = r[i]] = Oe[e];\n          }\n          var a = ke;\n          Array.isArray(a) || (\"function\" == typeof a.entries && (a = a.entries()), a = m(a));\n          for (var s = 0; s < a.length; s++) {\n            this[e = a[s]] = Oe[e];\n          }\n          var u = ge;\n          Array.isArray(u) || (\"function\" == typeof u.entries && (u = u.entries()), u = m(u));\n          for (var o = 0; o < u.length; o++) {\n            this[e = u[o]] = new we(e, Oe[e], void 0, this);\n          }\n        }\n      }, {\n        key: \"setupFromTrue\",\n        value: function value() {\n          var e,\n            t = de;\n          Array.isArray(t) || (\"function\" == typeof t.entries && (t = t.entries()), t = m(t));\n          for (var n = 0; n < t.length; n++) {\n            this[e = t[n]] = Oe[e];\n          }\n          var r = be;\n          Array.isArray(r) || (\"function\" == typeof r.entries && (r = r.entries()), r = m(r));\n          for (var i = 0; i < r.length; i++) {\n            this[e = r[i]] = Oe[e];\n          }\n          var a = ke;\n          Array.isArray(a) || (\"function\" == typeof a.entries && (a = a.entries()), a = m(a));\n          for (var s = 0; s < a.length; s++) {\n            this[e = a[s]] = !0;\n          }\n          var u = ge;\n          Array.isArray(u) || (\"function\" == typeof u.entries && (u = u.entries()), u = m(u));\n          for (var o = 0; o < u.length; o++) {\n            this[e = u[o]] = new we(e, !0, void 0, this);\n          }\n        }\n      }, {\n        key: \"setupFromArray\",\n        value: function value(e) {\n          var t,\n            n = de;\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            this[t = n[r]] = Oe[t];\n          }\n          var i = be;\n          Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n          for (var a = 0; a < i.length; a++) {\n            this[t = i[a]] = Oe[t];\n          }\n          var s = ke;\n          Array.isArray(s) || (\"function\" == typeof s.entries && (s = s.entries()), s = m(s));\n          for (var u = 0; u < s.length; u++) {\n            this[t = s[u]] = Oe[t];\n          }\n          var o = ge;\n          Array.isArray(o) || (\"function\" == typeof o.entries && (o = o.entries()), o = m(o));\n          for (var f = 0; f < o.length; f++) {\n            this[t = o[f]] = new we(t, !1, void 0, this);\n          }\n          this.setupGlobalFilters(e, void 0, ye);\n        }\n      }, {\n        key: \"setupFromObject\",\n        value: function value(e) {\n          var t;\n          ye.ifd0 = ye.ifd0 || ye.image, ye.ifd1 = ye.ifd1 || ye.thumbnail, g(this, e);\n          var n = de;\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            this[t = n[r]] = xe(e[t], Oe[t]);\n          }\n          var i = be;\n          Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n          for (var a = 0; a < i.length; a++) {\n            this[t = i[a]] = xe(e[t], Oe[t]);\n          }\n          var s = ke;\n          Array.isArray(s) || (\"function\" == typeof s.entries && (s = s.entries()), s = m(s));\n          for (var u = 0; u < s.length; u++) {\n            this[t = s[u]] = xe(e[t], Oe[t]);\n          }\n          var o = pe;\n          Array.isArray(o) || (\"function\" == typeof o.entries && (o = o.entries()), o = m(o));\n          for (var f = 0; f < o.length; f++) {\n            this[t = o[f]] = new we(t, Oe[t], e[t], this);\n          }\n          var c = ye;\n          Array.isArray(c) || (\"function\" == typeof c.entries && (c = c.entries()), c = m(c));\n          for (var h = 0; h < c.length; h++) {\n            this[t = c[h]] = new we(t, Oe[t], e[t], this.tiff);\n          }\n          this.setupGlobalFilters(e.pick, e.skip, ye, ge), !0 === e.tiff ? this.batchEnableWithBool(ye, !0) : !1 === e.tiff ? this.batchEnableWithUserValue(ye, e) : Array.isArray(e.tiff) ? this.setupGlobalFilters(e.tiff, void 0, ye) : \"object\" == typeof e.tiff && this.setupGlobalFilters(e.tiff.pick, e.tiff.skip, ye);\n        }\n      }, {\n        key: \"batchEnableWithBool\",\n        value: function value(e, t) {\n          var n = e;\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            this[n[r]].enabled = t;\n          }\n        }\n      }, {\n        key: \"batchEnableWithUserValue\",\n        value: function value(e, t) {\n          var n = e;\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            var i = n[r],\n              a = t[i];\n            this[i].enabled = !1 !== a && void 0 !== a;\n          }\n        }\n      }, {\n        key: \"setupGlobalFilters\",\n        value: function value(e, t, n) {\n          var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : n;\n          if (e && e.length) {\n            var i = r;\n            Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n            for (var a = 0; a < i.length; a++) {\n              var s = i[a];\n              this[s].enabled = !1;\n            }\n            var u = Ue(e, n),\n              o = u;\n            Array.isArray(o) || (\"function\" == typeof o.entries && (o = o.entries()), o = m(o));\n            for (var f = 0; f < o.length; f++) {\n              var c = o[f],\n                h = c[0],\n                l = c[1];\n              Ce(this[h].pick, l), this[h].enabled = !0;\n            }\n          } else if (t && t.length) {\n            var d = Ue(t, n),\n              v = d;\n            Array.isArray(v) || (\"function\" == typeof v.entries && (v = v.entries()), v = m(v));\n            for (var p = 0; p < v.length; p++) {\n              var y = v[p],\n                g = y[0],\n                k = y[1];\n              Ce(this[g].skip, k);\n            }\n          }\n        }\n      }, {\n        key: \"filterNestedSegmentTags\",\n        value: function value() {\n          var e = this.ifd0,\n            t = this.exif,\n            n = this.xmp,\n            r = this.iptc,\n            i = this.icc;\n          this.makerNote ? t.deps.add(se) : t.skip.add(se), this.userComment ? t.deps.add(ue) : t.skip.add(ue), n.enabled || e.skip.add(700), r.enabled || e.skip.add(oe), i.enabled || e.skip.add(fe);\n        }\n      }, {\n        key: \"traverseTiffDependencyTree\",\n        value: function value() {\n          var e = this,\n            t = this.ifd0,\n            n = this.exif,\n            r = this.gps;\n          this.interop.needed && (n.deps.add(le), t.deps.add(le)), n.needed && t.deps.add(ce), r.needed && t.deps.add(he), this.tiff.enabled = ye.some(function (t) {\n            return !0 === e[t].enabled;\n          }) || this.makerNote || this.userComment;\n          var i = ye;\n          Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n          for (var a = 0; a < i.length; a++) {\n            this[i[a]].finalizeFilters();\n          }\n        }\n      }, {\n        key: \"onlyTiff\",\n        get: function get() {\n          var e = this;\n          return !ve.map(function (t) {\n            return e[t].enabled;\n          }).some(function (e) {\n            return !0 === e;\n          }) && this.tiff.enabled;\n        }\n      }, {\n        key: \"checkLoadedPlugins\",\n        value: function value() {\n          var e = pe;\n          Array.isArray(e) || (\"function\" == typeof e.entries && (e = e.entries()), e = m(e));\n          for (var t = 0; t < e.length; t++) {\n            var n = e[t];\n            this[n].enabled && !W.has(n) && R(\"segment parser\", n);\n          }\n        }\n      }], [{\n        key: \"useCached\",\n        value: function value(e) {\n          var t = Se.get(e);\n          return void 0 !== t || (t = new this(e), Se.set(e, t)), t;\n        }\n      }]), i;\n    }(Ae);\n  function Ue(e, t) {\n    var n,\n      r,\n      i,\n      a = [],\n      s = t;\n    Array.isArray(s) || (\"function\" == typeof s.entries && (s = s.entries()), s = m(s));\n    for (var u = 0; u < s.length; u++) {\n      r = s[u], n = [];\n      var o = re.get(r);\n      Array.isArray(o) || (\"function\" == typeof o.entries && (o = o.entries()), o = m(o));\n      for (var f = 0; f < o.length; f++) {\n        i = o[f], (e.includes(i[0]) || e.includes(i[1])) && n.push(i[0]);\n      }\n      n.length && a.push([r, n]);\n    }\n    return a;\n  }\n  function xe(e, t) {\n    return void 0 !== e ? e : void 0 !== t ? t : void 0;\n  }\n  function Ce(e, t) {\n    var n = t;\n    Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n    for (var r = 0; r < n.length; r++) {\n      var i = n[r];\n      e.add(i);\n    }\n  }\n  function Be(e, t, n) {\n    return n ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);\n  }\n  function je() {}\n  function _e(e, t) {\n    if (!t) return e && e.then ? e.then(je) : Promise.resolve();\n  }\n  function Ve(e, t) {\n    var n = e();\n    return n && n.then ? n.then(t) : t(n);\n  }\n  i(Pe, \"default\", Oe);\n  var Ie = function () {\n    function e(n) {\n      t(this, e), i(this, \"parsers\", {}), this.options = Pe.useCached(n);\n    }\n    return r(e, [{\n      key: \"setup\",\n      value: function value() {\n        if (!this.fileParser) {\n          var e = this.file,\n            t = e.getUint16(0),\n            n = M;\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            var i = n[r],\n              a = i[0],\n              s = i[1];\n            if (s.canHandle(e, t)) return this.fileParser = new s(this.options, this.file, this.parsers), e[a] = !0;\n          }\n          L(\"Unknown file format\");\n        }\n      }\n    }, {\n      key: \"read\",\n      value: function value(e) {\n        try {\n          var t = this;\n          return Be(function (e, t) {\n            return \"string\" == typeof e ? $(e, t) : x && !C && e instanceof HTMLImageElement ? $(e.src, t) : e instanceof Uint8Array || e instanceof ArrayBuffer || e instanceof DataView ? new D(e) : x && e instanceof Blob ? Q(e, t, \"blob\", Y) : void L(Z);\n          }(e, t.options), function (e) {\n            t.file = e;\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"parse\",\n      value: function value() {\n        try {\n          var e = this;\n          e.setup();\n          var t = {},\n            n = [];\n          return Ve(function () {\n            return e.options.silentErrors ? Be(e.doParse(t, n).catch(function (e) {\n              return n.push(e);\n            }), function () {\n              n.push.apply(n, e.fileParser.errors);\n            }) : _e(e.doParse(t, n));\n          }, function () {\n            return e.file.close && e.file.close(), e.options.silentErrors && n.length > 0 && (t.errors = n), I(r = t) ? void 0 : r;\n            var r;\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"doParse\",\n      value: function value(e, t) {\n        try {\n          var n = this;\n          return Be(n.fileParser.parse(), function () {\n            var r,\n              i = p(n.parsers).map((r = function r(t) {\n                return Be(t.parse(), function (n) {\n                  t.assignToOutput(e, n);\n                });\n              }, function () {\n                for (var e = [], t = 0; t < arguments.length; t++) {\n                  e[t] = arguments[t];\n                }\n                try {\n                  return Promise.resolve(r.apply(this, e));\n                } catch (e) {\n                  return Promise.reject(e);\n                }\n              }));\n            if (n.options.silentErrors) {\n              var a = function a(e) {\n                return t.push(e);\n              };\n              i = i.map(function (e) {\n                return e.catch(a);\n              });\n            }\n            return _e(Promise.all(i));\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"extractThumbnail\",\n      value: function value() {\n        try {\n          var e = this;\n          e.setup();\n          var t,\n            n = e.options,\n            r = e.file,\n            i = W.get(\"tiff\", n);\n          return Ve(function () {\n            if (!r.tiff) return function (e) {\n              var t = e();\n              if (t && t.then) return t.then(je);\n            }(function () {\n              if (r.jpeg) return Be(e.fileParser.getOrFindSegment(\"tiff\"), function (e) {\n                t = e;\n              });\n            });\n            t = {\n              start: 0,\n              type: \"tiff\"\n            };\n          }, function () {\n            if (void 0 !== t) return Be(e.fileParser.ensureSegmentChunk(t), function (t) {\n              return Be((e.parsers.tiff = new i(t, n, r)).extractThumbnail(), function (e) {\n                return r.close && r.close(), e;\n              });\n            });\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }]), e;\n  }();\n  var Le,\n    Te = (Le = function Le(e, t) {\n      var n,\n        r,\n        i,\n        a = new Ie(t);\n      return n = a.read(e), r = function r() {\n        return a.parse();\n      }, i ? r ? r(n) : n : (n && n.then || (n = Promise.resolve(n)), r ? n.then(r) : n);\n    }, function () {\n      for (var e = [], t = 0; t < arguments.length; t++) {\n        e[t] = arguments[t];\n      }\n      try {\n        return Promise.resolve(Le.apply(this, e));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    }),\n    ze = Object.freeze({\n      __proto__: null,\n      parse: Te,\n      Exifr: Ie,\n      fileParsers: M,\n      segmentParsers: W,\n      fileReaders: K,\n      tagKeys: re,\n      tagValues: ie,\n      tagRevivers: ae,\n      createDictionary: te,\n      extendDictionary: ne,\n      fetchUrlAsArrayBuffer: G,\n      readBlobAsArrayBuffer: Y,\n      chunkedProps: de,\n      otherSegments: ve,\n      segments: pe,\n      tiffBlocks: ye,\n      segmentsAndBlocks: ge,\n      tiffExtractables: ke,\n      inheritables: me,\n      allFormatters: be,\n      Options: Pe\n    });\n  function Fe() {}\n  var Ee = function () {\n      function e(n, r, a) {\n        var s = this;\n        t(this, e), i(this, \"errors\", []), i(this, \"ensureSegmentChunk\", function (e) {\n          return function () {\n            for (var t = [], n = 0; n < arguments.length; n++) {\n              t[n] = arguments[n];\n            }\n            try {\n              return Promise.resolve(e.apply(this, t));\n            } catch (e) {\n              return Promise.reject(e);\n            }\n          };\n        }(function (e) {\n          var t,\n            n,\n            r,\n            i = e.start,\n            a = e.size || 65536;\n          return t = function t() {\n            if (s.file.chunked) return function (e) {\n              var t = e();\n              if (t && t.then) return t.then(Fe);\n            }(function () {\n              if (!s.file.available(i, a)) return function (e) {\n                if (e && e.then) return e.then(Fe);\n              }(function (e, t) {\n                try {\n                  var n = e();\n                } catch (e) {\n                  return t(e);\n                }\n                return n && n.then ? n.then(void 0, t) : n;\n              }(function () {\n                return t = s.file.readChunk(i, a), n = function n(t) {\n                  e.chunk = t;\n                }, r ? n ? n(t) : t : (t && t.then || (t = Promise.resolve(t)), n ? t.then(n) : t);\n                var t, n, r;\n              }, function (t) {\n                L(\"Couldn't read segment: \".concat(JSON.stringify(e), \". \").concat(t.message));\n              }));\n              e.chunk = s.file.subarray(i, a);\n            });\n            s.file.byteLength > i + a ? e.chunk = s.file.subarray(i, a) : void 0 === e.size ? e.chunk = s.file.subarray(i) : L(\"Segment unreachable: \" + JSON.stringify(e));\n          }, n = function n() {\n            return e.chunk;\n          }, (r = t()) && r.then ? r.then(n) : n(r);\n        })), this.extendOptions && this.extendOptions(n), this.options = n, this.file = r, this.parsers = a;\n      }\n      return r(e, [{\n        key: \"injectSegment\",\n        value: function value(e, t) {\n          this.options[e].enabled && this.createParser(e, t);\n        }\n      }, {\n        key: \"createParser\",\n        value: function value(e, t) {\n          var n = new (W.get(e))(t, this.options, this.file);\n          return this.parsers[e] = n;\n        }\n      }, {\n        key: \"createParsers\",\n        value: function value(e) {\n          var t = e;\n          Array.isArray(t) || (\"function\" == typeof t.entries && (t = t.entries()), t = m(t));\n          for (var n = 0; n < t.length; n++) {\n            var r = t[n],\n              i = r.type,\n              a = r.chunk,\n              s = this.options[i];\n            if (s && s.enabled) {\n              var u = this.parsers[i];\n              u && u.append || u || this.createParser(i, a);\n            }\n          }\n        }\n      }, {\n        key: \"readSegments\",\n        value: function value(e) {\n          try {\n            var t = e.map(this.ensureSegmentChunk);\n            return function (e, t) {\n              if (!t) return e && e.then ? e.then(Fe) : Promise.resolve();\n            }(Promise.all(t));\n          } catch (e) {\n            return Promise.reject(e);\n          }\n        }\n      }]), e;\n    }(),\n    De = function () {\n      function e(n) {\n        var r = this,\n          a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n          s = arguments.length > 2 ? arguments[2] : void 0;\n        t(this, e), i(this, \"errors\", []), i(this, \"raw\", S()), i(this, \"handleError\", function (e) {\n          if (!r.options.silentErrors) throw e;\n          r.errors.push(e.message);\n        }), this.chunk = this.normalizeInput(n), this.file = s, this.type = this.constructor.type, this.globalOptions = this.options = a, this.localOptions = a[this.type], this.canTranslate = this.localOptions && this.localOptions.translate;\n      }\n      return r(e, [{\n        key: \"normalizeInput\",\n        value: function value(e) {\n          return e instanceof D ? e : new D(e);\n        }\n      }, {\n        key: \"translate\",\n        value: function value() {\n          this.canTranslate && (this.translated = this.translateBlock(this.raw, this.type));\n        }\n      }, {\n        key: \"output\",\n        get: function get() {\n          return this.translated ? this.translated : this.raw ? k(this.raw) : void 0;\n        }\n      }, {\n        key: \"translateBlock\",\n        value: function value(e, t) {\n          var n = ae.get(t),\n            r = ie.get(t),\n            i = re.get(t),\n            a = this.options[t],\n            s = a.reviveValues && !!n,\n            u = a.translateValues && !!r,\n            o = a.translateKeys && !!i,\n            f = {},\n            c = e;\n          Array.isArray(c) || (\"function\" == typeof c.entries && (c = c.entries()), c = m(c));\n          for (var h = 0; h < c.length; h++) {\n            var l = c[h],\n              d = l[0],\n              v = l[1];\n            s && n.has(d) ? v = n.get(d)(v) : u && r.has(d) && (v = this.translateValue(v, r.get(d))), o && i.has(d) && (d = i.get(d) || d), f[d] = v;\n          }\n          return f;\n        }\n      }, {\n        key: \"translateValue\",\n        value: function value(e, t) {\n          return t[e] || t.DEFAULT || e;\n        }\n      }, {\n        key: \"assignToOutput\",\n        value: function value(e, t) {\n          this.assignObjectToOutput(e, this.constructor.type, t);\n        }\n      }, {\n        key: \"assignObjectToOutput\",\n        value: function value(e, t, n) {\n          if (this.globalOptions.mergeOutput) return g(e, n);\n          e[t] ? g(e[t], n) : e[t] = n;\n        }\n      }], [{\n        key: \"findPosition\",\n        value: function value(e, t) {\n          var n = e.getUint16(t + 2) + 2,\n            r = \"function\" == typeof this.headerLength ? this.headerLength(e, t, n) : this.headerLength,\n            i = t + r,\n            a = n - r;\n          return {\n            offset: t,\n            length: n,\n            headerLength: r,\n            start: i,\n            size: a,\n            end: i + a\n          };\n        }\n      }, {\n        key: \"parse\",\n        value: function value(e) {\n          var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n            n = new Pe(i({}, this.type, t)),\n            r = new this(e, n);\n          return r.parse();\n        }\n      }]), e;\n    }();\n  function Re(e, t, n) {\n    return n ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);\n  }\n  i(De, \"headerLength\", 4), i(De, \"type\", void 0), i(De, \"multiSegment\", !1), i(De, \"canHandle\", function () {\n    return !1;\n  });\n  function Ne() {}\n  function Me(e, t) {\n    if (!t) return e && e.then ? e.then(Ne) : Promise.resolve();\n  }\n  function We(e) {\n    var t = e();\n    if (t && t.then) return t.then(Ne);\n  }\n  function Ke(e, t) {\n    var n = e();\n    return n && n.then ? n.then(t) : t(n);\n  }\n  function He(e, t, n) {\n    if (!e.s) {\n      if (n instanceof Xe) {\n        if (!n.s) return void (n.o = He.bind(null, e, t));\n        1 & t && (t = n.s), n = n.v;\n      }\n      if (n && n.then) return void n.then(He.bind(null, e, t), He.bind(null, e, 2));\n      e.s = t, e.v = n;\n      var r = e.o;\n      r && r(e);\n    }\n  }\n  var Xe = function () {\n    function e() {}\n    return e.prototype.then = function (t, n) {\n      var r = new e(),\n        i = this.s;\n      if (i) {\n        var a = 1 & i ? t : n;\n        if (a) {\n          try {\n            He(r, 1, a(this.v));\n          } catch (e) {\n            He(r, 2, e);\n          }\n          return r;\n        }\n        return this;\n      }\n      return this.o = function (e) {\n        try {\n          var i = e.v;\n          1 & e.s ? He(r, 1, t ? t(i) : i) : n ? He(r, 1, n(i)) : He(r, 2, i);\n        } catch (e) {\n          He(r, 2, e);\n        }\n      }, r;\n    }, e;\n  }();\n  function Ye(e) {\n    return e instanceof Xe && 1 & e.s;\n  }\n  function Ge(e, t, n) {\n    for (var r;;) {\n      var i = e();\n      if (Ye(i) && (i = i.v), !i) return a;\n      if (i.then) {\n        r = 0;\n        break;\n      }\n      var a = n();\n      if (a && a.then) {\n        if (!Ye(a)) {\n          r = 1;\n          break;\n        }\n        a = a.s;\n      }\n      if (t) {\n        var s = t();\n        if (s && s.then && !Ye(s)) {\n          r = 2;\n          break;\n        }\n      }\n    }\n    var u = new Xe(),\n      o = He.bind(null, u, 2);\n    return (0 === r ? i.then(c) : 1 === r ? a.then(f) : s.then(h)).then(void 0, o), u;\n    function f(r) {\n      a = r;\n      do {\n        if (t && (s = t()) && s.then && !Ye(s)) return void s.then(h).then(void 0, o);\n        if (!(i = e()) || Ye(i) && !i.v) return void He(u, 1, a);\n        if (i.then) return void i.then(c).then(void 0, o);\n        Ye(a = n()) && (a = a.v);\n      } while (!a || !a.then);\n      a.then(f).then(void 0, o);\n    }\n    function c(e) {\n      e ? (a = n()) && a.then ? a.then(f).then(void 0, o) : f(a) : He(u, 1, a);\n    }\n    function h() {\n      (i = e()) ? i.then ? i.then(c).then(void 0, o) : c(i) : He(u, 1, a);\n    }\n  }\n  function Je(e) {\n    return 192 === e || 194 === e || 196 === e || 219 === e || 221 === e || 218 === e || 254 === e;\n  }\n  function qe(e) {\n    return e >= 224 && e <= 239;\n  }\n  function Qe(e, t, n) {\n    var r = W;\n    Array.isArray(r) || (\"function\" == typeof r.entries && (r = r.entries()), r = m(r));\n    for (var i = 0; i < r.length; i++) {\n      var a = r[i],\n        s = a[0];\n      if (a[1].canHandle(e, t, n)) return s;\n    }\n  }\n  var Ze = function (e) {\n    a(s, e);\n    var n = d(s);\n    function s() {\n      var e;\n      t(this, s);\n      for (var r = arguments.length, a = new Array(r), u = 0; u < r; u++) {\n        a[u] = arguments[u];\n      }\n      return i(h(e = n.call.apply(n, [this].concat(a))), \"appSegments\", []), i(h(e), \"jpegSegments\", []), i(h(e), \"unknownSegments\", []), e;\n    }\n    return r(s, [{\n      key: \"parse\",\n      value: function value() {\n        try {\n          var e = this;\n          return Re(e.findAppSegments(), function () {\n            return Re(e.readSegments(e.appSegments), function () {\n              e.mergeMultiSegments(), e.createParsers(e.mergedAppSegments || e.appSegments);\n            });\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"setupSegmentFinderArgs\",\n      value: function value(e) {\n        var t = this;\n        !0 === e ? (this.findAll = !0, this.wanted = O(W.keyList())) : (e = void 0 === e ? W.keyList().filter(function (e) {\n          return t.options[e].enabled;\n        }) : e.filter(function (e) {\n          return t.options[e].enabled && W.has(e);\n        }), this.findAll = !1, this.remaining = O(e), this.wanted = O(e)), this.unfinishedMultiSegment = !1;\n      }\n    }, {\n      key: \"findAppSegments\",\n      value: function value() {\n        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0,\n          t = arguments.length > 1 ? arguments[1] : void 0;\n        try {\n          var n = this;\n          n.setupSegmentFinderArgs(t);\n          var r = n.file,\n            i = n.findAll,\n            a = n.wanted,\n            s = n.remaining;\n          return Ke(function () {\n            if (!i && n.file.chunked) return i = m(a).some(function (e) {\n              var t = W.get(e),\n                r = n.options[e];\n              return t.multiSegment && r.multiSegment;\n            }), We(function () {\n              if (i) return Me(n.file.readWhole());\n            });\n          }, function () {\n            var t = !1;\n            if (e = n.findAppSegmentsInRange(e, r.byteLength), !n.options.onlyTiff) return function () {\n              if (r.chunked) {\n                var i = !1;\n                return Ge(function () {\n                  return !t && s.size > 0 && !i && (!!r.canReadNextChunk || !!n.unfinishedMultiSegment);\n                }, void 0, function () {\n                  var a = r.nextChunkOffset,\n                    s = n.appSegments.some(function (e) {\n                      return !n.file.available(e.offset || e.start, e.length || e.size);\n                    });\n                  return Ke(function () {\n                    return e > a && !s ? Re(r.readNextChunk(e), function (e) {\n                      i = !e;\n                    }) : Re(r.readNextChunk(a), function (e) {\n                      i = !e;\n                    });\n                  }, function () {\n                    void 0 === (e = n.findAppSegmentsInRange(e, r.byteLength)) && (t = !0);\n                  });\n                });\n              }\n            }();\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"findAppSegmentsInRange\",\n      value: function value(e, t) {\n        t -= 2;\n        for (var n, r, i, a, s, u, o = this.file, f = this.findAll, c = this.wanted, h = this.remaining, l = this.options; e < t; e++) {\n          if (255 === o.getUint8(e)) if (qe(n = o.getUint8(e + 1))) {\n            if (r = o.getUint16(e + 2), (i = Qe(o, e, r)) && c.has(i) && (s = (a = W.get(i)).findPosition(o, e), u = l[i], s.type = i, this.appSegments.push(s), !f && (a.multiSegment && u.multiSegment ? (this.unfinishedMultiSegment = s.chunkNumber < s.chunkCount, this.unfinishedMultiSegment || h.delete(i)) : h.delete(i), 0 === h.size))) break;\n            l.recordUnknownSegments && ((s = De.findPosition(o, e)).marker = n, this.unknownSegments.push(s)), e += r + 1;\n          } else if (Je(n)) {\n            if (r = o.getUint16(e + 2), 218 === n && !1 !== l.stopAfterSos) return;\n            l.recordJpegSegments && this.jpegSegments.push({\n              offset: e,\n              length: r,\n              marker: n\n            }), e += r + 1;\n          }\n        }\n        return e;\n      }\n    }, {\n      key: \"mergeMultiSegments\",\n      value: function value() {\n        var e = this;\n        if (this.appSegments.some(function (e) {\n          return e.multiSegment;\n        })) {\n          var t = function (e, t) {\n            for (var n, r, i, a = S(), s = 0; s < e.length; s++) {\n              r = (n = e[s])[t], a.has(r) ? i = a.get(r) : a.set(r, i = []), i.push(n);\n            }\n            return m(a);\n          }(this.appSegments, \"type\");\n          this.mergedAppSegments = t.map(function (t) {\n            var n = t[0],\n              r = t[1],\n              i = W.get(n, e.options);\n            return i.handleMultiSegments ? {\n              type: n,\n              chunk: i.handleMultiSegments(r)\n            } : r[0];\n          });\n        }\n      }\n    }, {\n      key: \"getSegment\",\n      value: function value(e) {\n        return this.appSegments.find(function (t) {\n          return t.type === e;\n        });\n      }\n    }, {\n      key: \"getOrFindSegment\",\n      value: function value(e) {\n        try {\n          var t = this,\n            n = t.getSegment(e);\n          return Ke(function () {\n            if (void 0 === n) return Re(t.findAppSegments(0, [e]), function () {\n              n = t.getSegment(e);\n            });\n          }, function () {\n            return n;\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }], [{\n      key: \"canHandle\",\n      value: function value(e, t) {\n        return 65496 === t;\n      }\n    }]), s;\n  }(Ee);\n  function $e() {}\n  i(Ze, \"type\", \"jpeg\"), M.set(\"jpeg\", Ze);\n  function et(e, t) {\n    if (!t) return e && e.then ? e.then($e) : Promise.resolve();\n  }\n  function tt(e, t) {\n    var n = e();\n    return n && n.then ? n.then(t) : t(n);\n  }\n  var nt = [void 0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8, 4];\n  var rt = function (e) {\n    a(i, e);\n    var n = d(i);\n    function i() {\n      return t(this, i), n.apply(this, arguments);\n    }\n    return r(i, [{\n      key: \"parse\",\n      value: function value() {\n        try {\n          var e = this;\n          e.parseHeader();\n          var t = e.options;\n          return tt(function () {\n            if (t.ifd0.enabled) return et(e.parseIfd0Block());\n          }, function () {\n            return tt(function () {\n              if (t.exif.enabled) return et(e.safeParse(\"parseExifBlock\"));\n            }, function () {\n              return tt(function () {\n                if (t.gps.enabled) return et(e.safeParse(\"parseGpsBlock\"));\n              }, function () {\n                return tt(function () {\n                  if (t.interop.enabled) return et(e.safeParse(\"parseInteropBlock\"));\n                }, function () {\n                  return tt(function () {\n                    if (t.ifd1.enabled) return et(e.safeParse(\"parseThumbnailBlock\"));\n                  }, function () {\n                    return e.createOutput();\n                  });\n                });\n              });\n            });\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"safeParse\",\n      value: function value(e) {\n        var t = this[e]();\n        return void 0 !== t.catch && (t = t.catch(this.handleError)), t;\n      }\n    }, {\n      key: \"findIfd0Offset\",\n      value: function value() {\n        void 0 === this.ifd0Offset && (this.ifd0Offset = this.chunk.getUint32(4));\n      }\n    }, {\n      key: \"findIfd1Offset\",\n      value: function value() {\n        if (void 0 === this.ifd1Offset) {\n          this.findIfd0Offset();\n          var e = this.chunk.getUint16(this.ifd0Offset),\n            t = this.ifd0Offset + 2 + 12 * e;\n          this.ifd1Offset = this.chunk.getUint32(t);\n        }\n      }\n    }, {\n      key: \"parseBlock\",\n      value: function value(e, t) {\n        var n = S();\n        return this[t] = n, this.parseTags(e, t, n), n;\n      }\n    }, {\n      key: \"parseIfd0Block\",\n      value: function value() {\n        try {\n          var e = this;\n          if (e.ifd0) return;\n          var t = e.file;\n          return e.findIfd0Offset(), e.ifd0Offset < 8 && L(\"Malformed EXIF data\"), !t.chunked && e.ifd0Offset > t.byteLength && L(\"IFD0 offset points to outside of file.\\nthis.ifd0Offset: \".concat(e.ifd0Offset, \", file.byteLength: \").concat(t.byteLength)), tt(function () {\n            if (t.tiff) return et(t.ensureChunk(e.ifd0Offset, T(e.options)));\n          }, function () {\n            var t = e.parseBlock(e.ifd0Offset, \"ifd0\");\n            if (0 !== t.size) return e.exifOffset = t.get(ce), e.interopOffset = t.get(le), e.gpsOffset = t.get(he), e.xmp = t.get(700), e.iptc = t.get(oe), e.icc = t.get(fe), e.options.sanitize && (t.delete(ce), t.delete(le), t.delete(he), t.delete(700), t.delete(oe), t.delete(fe)), t;\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"parseExifBlock\",\n      value: function value() {\n        try {\n          var e = this;\n          if (e.exif) return;\n          return tt(function () {\n            if (!e.ifd0) return et(e.parseIfd0Block());\n          }, function () {\n            if (void 0 !== e.exifOffset) return tt(function () {\n              if (e.file.tiff) return et(e.file.ensureChunk(e.exifOffset, T(e.options)));\n            }, function () {\n              var t = e.parseBlock(e.exifOffset, \"exif\");\n              return e.interopOffset || (e.interopOffset = t.get(le)), e.makerNote = t.get(se), e.userComment = t.get(ue), e.options.sanitize && (t.delete(le), t.delete(se), t.delete(ue)), e.unpack(t, 41728), e.unpack(t, 41729), t;\n            });\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"unpack\",\n      value: function value(e, t) {\n        var n = e.get(t);\n        n && 1 === n.length && e.set(t, n[0]);\n      }\n    }, {\n      key: \"parseGpsBlock\",\n      value: function value() {\n        try {\n          var e = this;\n          if (e.gps) return;\n          return tt(function () {\n            if (!e.ifd0) return et(e.parseIfd0Block());\n          }, function () {\n            if (void 0 !== e.gpsOffset) {\n              var t = e.parseBlock(e.gpsOffset, \"gps\");\n              return t && t.has(2) && t.has(4) && (t.set(\"latitude\", it.apply(void 0, t.get(2).concat([t.get(1)]))), t.set(\"longitude\", it.apply(void 0, t.get(4).concat([t.get(3)])))), t;\n            }\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"parseInteropBlock\",\n      value: function value() {\n        try {\n          var e = this;\n          if (e.interop) return;\n          return tt(function () {\n            if (!e.ifd0) return et(e.parseIfd0Block());\n          }, function () {\n            return tt(function () {\n              if (void 0 === e.interopOffset && !e.exif) return et(e.parseExifBlock());\n            }, function () {\n              if (void 0 !== e.interopOffset) return e.parseBlock(e.interopOffset, \"interop\");\n            });\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"parseThumbnailBlock\",\n      value: function value() {\n        var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n        try {\n          var t = this;\n          if (t.ifd1 || t.ifd1Parsed) return;\n          if (t.options.mergeOutput && !e) return;\n          return t.findIfd1Offset(), t.ifd1Offset > 0 && (t.parseBlock(t.ifd1Offset, \"ifd1\"), t.ifd1Parsed = !0), t.ifd1;\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"extractThumbnail\",\n      value: function value() {\n        try {\n          var e = this;\n          return e.headerParsed || e.parseHeader(), tt(function () {\n            if (!e.ifd1Parsed) return et(e.parseThumbnailBlock(!0));\n          }, function () {\n            if (void 0 !== e.ifd1) {\n              var t = e.ifd1.get(513),\n                n = e.ifd1.get(514);\n              return e.chunk.getUint8Array(t, n);\n            }\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"image\",\n      get: function get() {\n        return this.ifd0;\n      }\n    }, {\n      key: \"thumbnail\",\n      get: function get() {\n        return this.ifd1;\n      }\n    }, {\n      key: \"createOutput\",\n      value: function value() {\n        var e,\n          t,\n          n,\n          r = {},\n          i = ye;\n        Array.isArray(i) || (\"function\" == typeof i.entries && (i = i.entries()), i = m(i));\n        for (var a = 0; a < i.length; a++) {\n          if (!I(e = this[t = i[a]])) if (n = this.canTranslate ? this.translateBlock(e, t) : k(e), this.options.mergeOutput) {\n            if (\"ifd1\" === t) continue;\n            g(r, n);\n          } else r[t] = n;\n        }\n        return this.makerNote && (r.makerNote = this.makerNote), this.userComment && (r.userComment = this.userComment), r;\n      }\n    }, {\n      key: \"assignToOutput\",\n      value: function value(e, t) {\n        if (this.globalOptions.mergeOutput) g(e, t);else {\n          var n = y(t);\n          Array.isArray(n) || (\"function\" == typeof n.entries && (n = n.entries()), n = m(n));\n          for (var r = 0; r < n.length; r++) {\n            var i = n[r],\n              a = i[0],\n              s = i[1];\n            this.assignObjectToOutput(e, a, s);\n          }\n        }\n      }\n    }], [{\n      key: \"canHandle\",\n      value: function value(e, t) {\n        return 225 === e.getUint8(t + 1) && 1165519206 === e.getUint32(t + 4) && 0 === e.getUint16(t + 8);\n      }\n    }]), i;\n  }(function (e) {\n    a(i, e);\n    var n = d(i);\n    function i() {\n      return t(this, i), n.apply(this, arguments);\n    }\n    return r(i, [{\n      key: \"parseHeader\",\n      value: function value() {\n        var e = this.chunk.getUint16();\n        18761 === e ? this.le = !0 : 19789 === e && (this.le = !1), this.chunk.le = this.le, this.headerParsed = !0;\n      }\n    }, {\n      key: \"parseTags\",\n      value: function value(e, t) {\n        var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : S(),\n          r = this.options[t],\n          i = r.pick,\n          a = r.skip,\n          s = (i = O(i)).size > 0,\n          u = 0 === a.size,\n          o = this.chunk.getUint16(e);\n        e += 2;\n        for (var f = 0; f < o; f++) {\n          var c = this.chunk.getUint16(e);\n          if (s) {\n            if (i.has(c) && (n.set(c, this.parseTag(e, c, t)), i.delete(c), 0 === i.size)) break;\n          } else !u && a.has(c) || n.set(c, this.parseTag(e, c, t));\n          e += 12;\n        }\n        return n;\n      }\n    }, {\n      key: \"parseTag\",\n      value: function value(e, t, n) {\n        var r,\n          i = this.chunk,\n          a = i.getUint16(e + 2),\n          s = i.getUint32(e + 4),\n          u = nt[a];\n        if (u * s <= 4 ? e += 8 : e = i.getUint32(e + 8), (a < 1 || a > 13) && L(\"Invalid TIFF value type. block: \".concat(n.toUpperCase(), \", tag: \").concat(t.toString(16), \", type: \").concat(a, \", offset \").concat(e)), e > i.byteLength && L(\"Invalid TIFF value offset. block: \".concat(n.toUpperCase(), \", tag: \").concat(t.toString(16), \", type: \").concat(a, \", offset \").concat(e, \" is outside of chunk size \").concat(i.byteLength)), 1 === a) return i.getUint8Array(e, s);\n        if (2 === a) return \"\" === (r = function (e) {\n          for (; e.endsWith(\"\\0\");) {\n            e = e.slice(0, -1);\n          }\n          return e;\n        }(r = i.getString(e, s)).trim()) ? void 0 : r;\n        if (7 === a) return i.getUint8Array(e, s);\n        if (1 === s) return this.parseTagValue(a, e);\n        for (var o = new (function (e) {\n            switch (e) {\n              case 1:\n                return Uint8Array;\n              case 3:\n                return Uint16Array;\n              case 4:\n                return Uint32Array;\n              case 5:\n                return Array;\n              case 6:\n                return Int8Array;\n              case 8:\n                return Int16Array;\n              case 9:\n                return Int32Array;\n              case 10:\n                return Array;\n              case 11:\n                return Float32Array;\n              case 12:\n                return Float64Array;\n              default:\n                return Array;\n            }\n          }(a))(s), f = u, c = 0; c < s; c++) {\n          o[c] = this.parseTagValue(a, e), e += f;\n        }\n        return o;\n      }\n    }, {\n      key: \"parseTagValue\",\n      value: function value(e, t) {\n        var n = this.chunk;\n        switch (e) {\n          case 1:\n            return n.getUint8(t);\n          case 3:\n            return n.getUint16(t);\n          case 4:\n            return n.getUint32(t);\n          case 5:\n            return n.getUint32(t) / n.getUint32(t + 4);\n          case 6:\n            return n.getInt8(t);\n          case 8:\n            return n.getInt16(t);\n          case 9:\n            return n.getInt32(t);\n          case 10:\n            return n.getInt32(t) / n.getInt32(t + 4);\n          case 11:\n            return n.getFloat(t);\n          case 12:\n            return n.getDouble(t);\n          case 13:\n            return n.getUint32(t);\n          default:\n            L(\"Invalid tiff type \".concat(e));\n        }\n      }\n    }]), i;\n  }(De));\n  function it(e, t, n, r) {\n    var i = e + t / 60 + n / 3600;\n    return \"S\" !== r && \"W\" !== r || (i *= -1), i;\n  }\n  i(rt, \"type\", \"tiff\"), i(rt, \"headerLength\", 10), W.set(\"tiff\", rt);\n  var at = Object.freeze({\n    __proto__: null,\n    default: ze,\n    Exifr: Ie,\n    fileParsers: M,\n    segmentParsers: W,\n    fileReaders: K,\n    tagKeys: re,\n    tagValues: ie,\n    tagRevivers: ae,\n    createDictionary: te,\n    extendDictionary: ne,\n    fetchUrlAsArrayBuffer: G,\n    readBlobAsArrayBuffer: Y,\n    chunkedProps: de,\n    otherSegments: ve,\n    segments: pe,\n    tiffBlocks: ye,\n    segmentsAndBlocks: ge,\n    tiffExtractables: ke,\n    inheritables: me,\n    allFormatters: be,\n    Options: Pe,\n    parse: Te\n  });\n  function st(e, t, n) {\n    return n ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);\n  }\n  function ut(e) {\n    return function () {\n      for (var t = [], n = 0; n < arguments.length; n++) {\n        t[n] = arguments[n];\n      }\n      try {\n        return Promise.resolve(e.apply(this, t));\n      } catch (e) {\n        return Promise.reject(e);\n      }\n    };\n  }\n  var ot = ut(function (e) {\n      var t = new Ie(vt);\n      return st(t.read(e), function () {\n        return st(t.parse(), function (e) {\n          if (e && e.ifd0) return e.ifd0[274];\n        });\n      });\n    }),\n    ft = ut(function (e) {\n      var t = new Ie(dt);\n      return st(t.read(e), function () {\n        return st(t.parse(), function (e) {\n          if (e && e.gps) {\n            var t = e.gps;\n            return {\n              latitude: t.latitude,\n              longitude: t.longitude\n            };\n          }\n        });\n      });\n    }),\n    ct = ut(function (e) {\n      return st(this.thumbnail(e), function (e) {\n        if (void 0 !== e) {\n          var t = new Blob([e]);\n          return URL.createObjectURL(t);\n        }\n      });\n    }),\n    ht = ut(function (e) {\n      var t = new Ie(pt);\n      return st(t.read(e), function () {\n        return st(t.extractThumbnail(), function (e) {\n          return e && _ ? j.from(e) : e;\n        });\n      });\n    }),\n    lt = {\n      ifd0: !1,\n      ifd1: !1,\n      exif: !1,\n      gps: !1,\n      interop: !1,\n      sanitize: !1,\n      reviveValues: !0,\n      translateKeys: !1,\n      translateValues: !1,\n      mergeOutput: !1\n    },\n    dt = g({}, lt, {\n      firstChunkSize: 4e4,\n      gps: [1, 2, 3, 4]\n    }),\n    vt = g({}, lt, {\n      firstChunkSize: 4e4,\n      ifd0: [274]\n    }),\n    pt = g({}, lt, {\n      tiff: !1,\n      ifd1: !0,\n      mergeOutput: !1\n    }),\n    yt = Object.freeze({\n      1: {\n        dimensionSwapped: !1,\n        scaleX: 1,\n        scaleY: 1,\n        deg: 0,\n        rad: 0\n      },\n      2: {\n        dimensionSwapped: !1,\n        scaleX: -1,\n        scaleY: 1,\n        deg: 0,\n        rad: 0\n      },\n      3: {\n        dimensionSwapped: !1,\n        scaleX: 1,\n        scaleY: 1,\n        deg: 180,\n        rad: 180 * Math.PI / 180\n      },\n      4: {\n        dimensionSwapped: !1,\n        scaleX: -1,\n        scaleY: 1,\n        deg: 180,\n        rad: 180 * Math.PI / 180\n      },\n      5: {\n        dimensionSwapped: !0,\n        scaleX: 1,\n        scaleY: -1,\n        deg: 90,\n        rad: 90 * Math.PI / 180\n      },\n      6: {\n        dimensionSwapped: !0,\n        scaleX: 1,\n        scaleY: 1,\n        deg: 90,\n        rad: 90 * Math.PI / 180\n      },\n      7: {\n        dimensionSwapped: !0,\n        scaleX: 1,\n        scaleY: -1,\n        deg: 270,\n        rad: 270 * Math.PI / 180\n      },\n      8: {\n        dimensionSwapped: !0,\n        scaleX: 1,\n        scaleY: 1,\n        deg: 270,\n        rad: 270 * Math.PI / 180\n      }\n    });\n  if (e.rotateCanvas = !0, e.rotateCss = !0, \"object\" == typeof navigator) {\n    var gt = navigator.userAgent;\n    if (gt.includes(\"iPad\") || gt.includes(\"iPhone\")) {\n      var kt = gt.match(/OS (\\d+)_(\\d+)/);\n      if (kt) {\n        var mt = kt[1],\n          bt = kt[2],\n          At = Number(mt) + .1 * Number(bt);\n        e.rotateCanvas = At < 13.4, e.rotateCss = !1;\n      }\n    } else if (gt.includes(\"OS X 10\")) {\n      var wt = gt.match(/OS X 10[_.](\\d+)/)[1];\n      e.rotateCanvas = e.rotateCss = Number(wt) < 15;\n    }\n    if (gt.includes(\"Chrome/\")) {\n      var Ot = gt.match(/Chrome\\/(\\d+)/)[1];\n      e.rotateCanvas = e.rotateCss = Number(Ot) < 81;\n    } else if (gt.includes(\"Firefox/\")) {\n      var St = gt.match(/Firefox\\/(\\d+)/)[1];\n      e.rotateCanvas = e.rotateCss = Number(St) < 77;\n    }\n  }\n  function Pt() {}\n  var Ut = function (e) {\n      a(u, e);\n      var n = d(u);\n      function u() {\n        var e;\n        t(this, u);\n        for (var r = arguments.length, a = new Array(r), s = 0; s < r; s++) {\n          a[s] = arguments[s];\n        }\n        return i(h(e = n.call.apply(n, [this].concat(a))), \"ranges\", new xt()), 0 !== e.byteLength && e.ranges.add(0, e.byteLength), e;\n      }\n      return r(u, [{\n        key: \"_tryExtend\",\n        value: function value(e, t, n) {\n          if (0 === e && 0 === this.byteLength && n) {\n            var r = new DataView(n.buffer || n, n.byteOffset, n.byteLength);\n            this._swapDataView(r);\n          } else {\n            var i = e + t;\n            if (i > this.byteLength) {\n              var a = this._extend(i).dataView;\n              this._swapDataView(a);\n            }\n          }\n        }\n      }, {\n        key: \"_extend\",\n        value: function value(e) {\n          var t;\n          t = _ ? j.allocUnsafe(e) : new Uint8Array(e);\n          var n = new DataView(t.buffer, t.byteOffset, t.byteLength);\n          return t.set(new Uint8Array(this.buffer, this.byteOffset, this.byteLength), 0), {\n            uintView: t,\n            dataView: n\n          };\n        }\n      }, {\n        key: \"subarray\",\n        value: function value(e, t) {\n          var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n          return t = t || this._lengthToEnd(e), n && this._tryExtend(e, t), this.ranges.add(e, t), v(s(u.prototype), \"subarray\", this).call(this, e, t);\n        }\n      }, {\n        key: \"set\",\n        value: function value(e, t) {\n          var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];\n          n && this._tryExtend(t, e.byteLength, e);\n          var r = v(s(u.prototype), \"set\", this).call(this, e, t);\n          return this.ranges.add(t, r.byteLength), r;\n        }\n      }, {\n        key: \"ensureChunk\",\n        value: function value(e, t) {\n          try {\n            var n = this;\n            if (!n.chunked) return;\n            if (n.ranges.available(e, t)) return;\n            return function (e, t) {\n              if (!t) return e && e.then ? e.then(Pt) : Promise.resolve();\n            }(n.readChunk(e, t));\n          } catch (e) {\n            return Promise.reject(e);\n          }\n        }\n      }, {\n        key: \"available\",\n        value: function value(e, t) {\n          return this.ranges.available(e, t);\n        }\n      }]), u;\n    }(D),\n    xt = function () {\n      function e() {\n        t(this, e), i(this, \"list\", []);\n      }\n      return r(e, [{\n        key: \"length\",\n        get: function get() {\n          return this.list.length;\n        }\n      }, {\n        key: \"add\",\n        value: function value(e, t) {\n          var n = e + t,\n            r = this.list.filter(function (t) {\n              return Ct(e, t.offset, n) || Ct(e, t.end, n);\n            });\n          if (r.length > 0) {\n            e = Math.min.apply(Math, [e].concat(r.map(function (e) {\n              return e.offset;\n            }))), t = (n = Math.max.apply(Math, [n].concat(r.map(function (e) {\n              return e.end;\n            })))) - e;\n            var i = r.shift();\n            i.offset = e, i.length = t, i.end = n, this.list = this.list.filter(function (e) {\n              return !r.includes(e);\n            });\n          } else this.list.push({\n            offset: e,\n            length: t,\n            end: n\n          });\n        }\n      }, {\n        key: \"available\",\n        value: function value(e, t) {\n          var n = e + t;\n          return this.list.some(function (t) {\n            return t.offset <= e && n <= t.end;\n          });\n        }\n      }]), e;\n    }();\n  function Ct(e, t, n) {\n    return e <= t && t <= n;\n  }\n  function Bt() {}\n  function jt(e, t) {\n    if (!t) return e && e.then ? e.then(Bt) : Promise.resolve();\n  }\n  function _t(e, t, n) {\n    return n ? t ? t(e) : e : (e && e.then || (e = Promise.resolve(e)), t ? e.then(t) : e);\n  }\n  var Vt = function (e) {\n    a(i, e);\n    var n = d(i);\n    function i() {\n      return t(this, i), n.apply(this, arguments);\n    }\n    return r(i, [{\n      key: \"readWhole\",\n      value: function value() {\n        try {\n          var e = this;\n          return e.chunked = !1, _t(Y(e.input), function (t) {\n            e._swapArrayBuffer(t);\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"readChunked\",\n      value: function value() {\n        return this.chunked = !0, this.size = this.input.size, v(s(i.prototype), \"readChunked\", this).call(this);\n      }\n    }, {\n      key: \"_readChunk\",\n      value: function value(e, t) {\n        try {\n          var n = this,\n            r = t ? e + t : void 0,\n            i = n.input.slice(e, r);\n          return _t(Y(i), function (t) {\n            return n.set(t, e, !0);\n          });\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }]), i;\n  }(function (e) {\n    a(s, e);\n    var n = d(s);\n    function s(e, r) {\n      var a;\n      return t(this, s), i(h(a = n.call(this, 0)), \"chunksRead\", 0), a.input = e, a.options = r, a;\n    }\n    return r(s, [{\n      key: \"readWhole\",\n      value: function value() {\n        try {\n          var e = this;\n          return e.chunked = !1, jt(e.readChunk(e.nextChunkOffset));\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"readChunked\",\n      value: function value() {\n        try {\n          var e = this;\n          return e.chunked = !0, jt(e.readChunk(0, e.options.firstChunkSize));\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function value(e) {\n        try {\n          var t = this;\n          if (void 0 === e && (e = t.nextChunkOffset), t.fullyRead) return t.chunksRead++, !1;\n          var n = t.options.chunkSize;\n          return r = t.readChunk(e, n), i = function i(e) {\n            return !!e && e.byteLength === n;\n          }, a ? i ? i(r) : r : (r && r.then || (r = Promise.resolve(r)), i ? r.then(i) : r);\n        } catch (e) {\n          return Promise.reject(e);\n        }\n        var r, i, a;\n      }\n    }, {\n      key: \"readChunk\",\n      value: function value(e, t) {\n        try {\n          var n = this;\n          if (n.chunksRead++, 0 === (t = n.safeWrapAddress(e, t))) return;\n          return n._readChunk(e, t);\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }\n    }, {\n      key: \"safeWrapAddress\",\n      value: function value(e, t) {\n        return void 0 !== this.size && e + t > this.size ? Math.max(0, this.size - e) : t;\n      }\n    }, {\n      key: \"nextChunkOffset\",\n      get: function get() {\n        if (0 !== this.ranges.list.length) return this.ranges.list[0].length;\n      }\n    }, {\n      key: \"canReadNextChunk\",\n      get: function get() {\n        return this.chunksRead < this.options.chunkLimit;\n      }\n    }, {\n      key: \"fullyRead\",\n      get: function get() {\n        return void 0 !== this.size && this.nextChunkOffset === this.size;\n      }\n    }, {\n      key: \"read\",\n      value: function value() {\n        return this.options.chunked ? this.readChunked() : this.readWhole();\n      }\n    }, {\n      key: \"close\",\n      value: function value() {}\n    }]), s;\n  }(Ut));\n  K.set(\"blob\", Vt), e.Exifr = Ie, e.Options = Pe, e.allFormatters = be, e.chunkedProps = de, e.createDictionary = te, e.default = at, e.disableAllOptions = lt, e.extendDictionary = ne, e.fetchUrlAsArrayBuffer = G, e.fileParsers = M, e.fileReaders = K, e.gps = ft, e.gpsOnlyOptions = dt, e.inheritables = me, e.orientation = ot, e.orientationOnlyOptions = vt, e.otherSegments = ve, e.parse = Te, e.readBlobAsArrayBuffer = Y, e.rotation = function (t) {\n    return st(ot(t), function (t) {\n      return g({\n        canvas: e.rotateCanvas,\n        css: e.rotateCss\n      }, yt[t]);\n    });\n  }, e.rotations = yt, e.segmentParsers = W, e.segments = pe, e.segmentsAndBlocks = ge, e.tagKeys = re, e.tagRevivers = ae, e.tagValues = ie, e.thumbnail = ht, e.thumbnailOnlyOptions = pt, e.thumbnailUrl = ct, e.tiffBlocks = ye, e.tiffExtractables = ke, Object.defineProperty(e, \"__esModule\", {\n    value: !0\n  });\n});","module.exports = function isShallowEqual(a, b) {\n  if (a === b) return true;\n  for (var i in a) {\n    if (!(i in b)) return false;\n  }\n  for (var i in b) {\n    if (a[i] !== b[i]) return false;\n  }\n  return true;\n};","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n  nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function now() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n    lastThis,\n    maxWait,\n    result,\n    timerId,\n    lastCallTime,\n    lastInvokeTime = 0,\n    leading = false,\n    maxing = false,\n    trailing = true;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  function invokeFunc(time) {\n    var args = lastArgs,\n      thisArg = lastThis;\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n      timeSinceLastInvoke = time - lastInvokeTime,\n      result = wait - timeSinceLastCall;\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n      timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n  }\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n  function debounced() {\n    var time = now(),\n      isInvoking = shouldInvoke(time);\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? other + '' : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = debounce;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n  nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function now() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n    lastThis,\n    maxWait,\n    result,\n    timerId,\n    lastCallTime,\n    lastInvokeTime = 0,\n    leading = false,\n    maxing = false,\n    trailing = true;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  function invokeFunc(time) {\n    var args = lastArgs,\n      thisArg = lastThis;\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n      timeSinceLastInvoke = time - lastInvokeTime,\n      result = wait - timeSinceLastCall;\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n      timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n  }\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n  function debounced() {\n    var time = now(),\n      isInvoking = shouldInvoke(time);\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n    trailing = true;\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? other + '' : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = throttle;","'use strict';\n\nmodule.exports = Math.log2 || function (x) {\n  return Math.log(x) * Math.LOG2E;\n};","var wildcard = require('wildcard');\nvar reMimePartSplit = /[\\/\\+\\.]/;\n\n/**\n  # mime-match\n\n  A simple function to checker whether a target mime type matches a mime-type\n  pattern (e.g. image/jpeg matches image/jpeg OR image/*).\n\n  ## Example Usage\n\n  <<< example.js\n\n**/\nmodule.exports = function (target, pattern) {\n  function test(pattern) {\n    var result = wildcard(pattern, target, reMimePartSplit);\n\n    // ensure that we have a valid mime type (should have two parts)\n    return result && result.length >= 2;\n  }\n  return pattern ? test(pattern.split(';')[0]) : test;\n};","/**\n* Create an event emitter with namespaces\n* @name createNamespaceEmitter\n* @example\n* var emitter = require('./index')()\n*\n* emitter.on('*', function () {\n*   console.log('all events emitted', this.event)\n* })\n*\n* emitter.on('example', function () {\n*   console.log('example event emitted')\n* })\n*/\nmodule.exports = function createNamespaceEmitter() {\n  var emitter = {};\n  var _fns = emitter._fns = {};\n\n  /**\n  * Emit an event. Optionally namespace the event. Handlers are fired in the order in which they were added with exact matches taking precedence. Separate the namespace and event with a `:`\n  * @name emit\n  * @param {String} event – the name of the event, with optional namespace\n  * @param {...*} data – up to 6 arguments that are passed to the event listener\n  * @example\n  * emitter.emit('example')\n  * emitter.emit('demo:test')\n  * emitter.emit('data', { example: true}, 'a string', 1)\n  */\n  emitter.emit = function emit(event, arg1, arg2, arg3, arg4, arg5, arg6) {\n    var toEmit = getListeners(event);\n    if (toEmit.length) {\n      emitAll(event, toEmit, [arg1, arg2, arg3, arg4, arg5, arg6]);\n    }\n  };\n\n  /**\n  * Create en event listener.\n  * @name on\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.on('example', function () {})\n  * emitter.on('demo', function () {})\n  */\n  emitter.on = function on(event, fn) {\n    if (!_fns[event]) {\n      _fns[event] = [];\n    }\n    _fns[event].push(fn);\n  };\n\n  /**\n  * Create en event listener that fires once.\n  * @name once\n  * @param {String} event\n  * @param {Function} fn\n  * @example\n  * emitter.once('example', function () {})\n  * emitter.once('demo', function () {})\n  */\n  emitter.once = function once(event, fn) {\n    function one() {\n      fn.apply(this, arguments);\n      emitter.off(event, one);\n    }\n    this.on(event, one);\n  };\n\n  /**\n  * Stop listening to an event. Stop all listeners on an event by only passing the event name. Stop a single listener by passing that event handler as a callback.\n  * You must be explicit about what will be unsubscribed: `emitter.off('demo')` will unsubscribe an `emitter.on('demo')` listener,\n  * `emitter.off('demo:example')` will unsubscribe an `emitter.on('demo:example')` listener\n  * @name off\n  * @param {String} event\n  * @param {Function} [fn] – the specific handler\n  * @example\n  * emitter.off('example')\n  * emitter.off('demo', function () {})\n  */\n  emitter.off = function off(event, fn) {\n    var keep = [];\n    if (event && fn) {\n      var fns = this._fns[event];\n      var i = 0;\n      var l = fns ? fns.length : 0;\n      for (i; i < l; i++) {\n        if (fns[i] !== fn) {\n          keep.push(fns[i]);\n        }\n      }\n    }\n    keep.length ? this._fns[event] = keep : delete this._fns[event];\n  };\n  function getListeners(e) {\n    var out = _fns[e] ? _fns[e] : [];\n    var idx = e.indexOf(':');\n    var args = idx === -1 ? [e] : [e.substring(0, idx), e.substring(idx + 1)];\n    var keys = Object.keys(_fns);\n    var i = 0;\n    var l = keys.length;\n    for (i; i < l; i++) {\n      var key = keys[i];\n      if (key === '*') {\n        out = out.concat(_fns[key]);\n      }\n      if (args.length === 2 && args[0] === key) {\n        out = out.concat(_fns[key]);\n        break;\n      }\n    }\n    return out;\n  }\n  function emitAll(e, fns, args) {\n    var i = 0;\n    var l = fns.length;\n    for (i; i < l; i++) {\n      if (!fns[i]) break;\n      fns[i].event = e;\n      fns[i].apply(fns[i], args);\n    }\n  }\n  return emitter;\n};","/** Virtual DOM Node */\nfunction VNode() {}\n\n/** Global options\n *\t@public\n *\t@namespace options {Object}\n */\nvar options = {\n\n  /** If `true`, `prop` changes trigger synchronous component updates.\n   *\t@name syncComponentUpdates\n   *\t@type Boolean\n   *\t@default true\n   */\n  //syncComponentUpdates: true,\n\n  /** Processes all created VNodes.\n   *\t@param {VNode} vnode\tA newly-created VNode to normalize/process\n   */\n  //vnode(vnode) { }\n\n  /** Hook invoked after a component is mounted. */\n  // afterMount(component) { }\n\n  /** Hook invoked after the DOM is updated with a component's latest render. */\n  // afterUpdate(component) { }\n\n  /** Hook invoked immediately before a component is unmounted. */\n  // beforeUnmount(component) { }\n};\nvar stack = [];\nvar EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a lightweight representation\n * of the structure of a DOM tree. This structure can be realized by recursively comparing it against\n * the current _actual_ DOM structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `<div id=\"foo\" name=\"bar\">Hello!</div>`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string} nodeName\tAn element name. Ex: `div`, `a`, `span`, etc.\n * @param {Object} attributes\tAny attributes/props to set on the created element.\n * @param rest\t\t\tAdditional arguments are taken to be children to append. Can be infinitely nested Arrays.\n *\n * @public\n */\nfunction h(nodeName, attributes) {\n  var children = EMPTY_CHILDREN,\n    lastSimple,\n    child,\n    simple,\n    i;\n  for (i = arguments.length; i-- > 2;) {\n    stack.push(arguments[i]);\n  }\n  if (attributes && attributes.children != null) {\n    if (!stack.length) stack.push(attributes.children);\n    delete attributes.children;\n  }\n  while (stack.length) {\n    if ((child = stack.pop()) && child.pop !== undefined) {\n      for (i = child.length; i--;) {\n        stack.push(child[i]);\n      }\n    } else {\n      if (typeof child === 'boolean') child = null;\n      if (simple = typeof nodeName !== 'function') {\n        if (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n      }\n      if (simple && lastSimple) {\n        children[children.length - 1] += child;\n      } else if (children === EMPTY_CHILDREN) {\n        children = [child];\n      } else {\n        children.push(child);\n      }\n      lastSimple = simple;\n    }\n  }\n  var p = new VNode();\n  p.nodeName = nodeName;\n  p.children = children;\n  p.attributes = attributes == null ? undefined : attributes;\n  p.key = attributes == null ? undefined : attributes.key;\n\n  // if a \"vnode hook\" is defined, pass every created VNode to it\n  if (options.vnode !== undefined) options.vnode(p);\n  return p;\n}\n\n/**\n *  Copy all properties from `props` onto `obj`.\n *  @param {Object} obj\t\tObject onto which properties should be copied.\n *  @param {Object} props\tObject from which to copy properties.\n *  @returns obj\n *  @private\n */\nfunction extend(obj, props) {\n  for (var i in props) {\n    obj[i] = props[i];\n  }\n  return obj;\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n *\n * @param {Function} callback\n */\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {VNode} vnode\t\tThe virtual DOM element to clone\n * @param {Object} props\tAttributes/props to add when cloning\n * @param {VNode} rest\t\tAny additional arguments will be used as replacement children.\n */\nfunction cloneElement(vnode, props) {\n  return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\n// DOM properties that should NOT have \"px\" added when numeric\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n/** Managed queue of dirty components to be re-rendered */\n\nvar items = [];\nfunction enqueueRender(component) {\n  if (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n    (options.debounceRendering || defer)(rerender);\n  }\n}\nfunction rerender() {\n  var p,\n    list = items;\n  items = [];\n  while (p = list.pop()) {\n    if (p._dirty) renderComponent(p);\n  }\n}\n\n/**\n * Check if two nodes are equivalent.\n *\n * @param {Node} node\t\t\tDOM Node to compare\n * @param {VNode} vnode\t\t\tVirtual DOM node to compare\n * @param {boolean} [hydrating=false]\tIf true, ignores component constructors when comparing.\n * @private\n */\nfunction isSameNodeType(node, vnode, hydrating) {\n  if (typeof vnode === 'string' || typeof vnode === 'number') {\n    return node.splitText !== undefined;\n  }\n  if (typeof vnode.nodeName === 'string') {\n    return !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n  }\n  return hydrating || node._componentConstructor === vnode.nodeName;\n}\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n *\n * @param {Element} node\tA DOM Element to inspect the name of.\n * @param {String} nodeName\tUnnormalized name to compare against.\n */\nfunction isNamedNode(node, nodeName) {\n  return node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n *\n * @param {VNode} vnode\n * @returns {Object} props\n */\nfunction getNodeProps(vnode) {\n  var props = extend({}, vnode.attributes);\n  props.children = vnode.children;\n  var defaultProps = vnode.nodeName.defaultProps;\n  if (defaultProps !== undefined) {\n    for (var i in defaultProps) {\n      if (props[i] === undefined) {\n        props[i] = defaultProps[i];\n      }\n    }\n  }\n  return props;\n}\n\n/** Create an element with the given nodeName.\n *\t@param {String} nodeName\n *\t@param {Boolean} [isSvg=false]\tIf `true`, creates an element within the SVG namespace.\n *\t@returns {Element} node\n */\nfunction createNode(nodeName, isSvg) {\n  var node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n  node.normalizedNodeName = nodeName;\n  return node;\n}\n\n/** Remove a child node from its parent if attached.\n *\t@param {Element} node\t\tThe node to remove\n */\nfunction removeNode(node) {\n  var parentNode = node.parentNode;\n  if (parentNode) parentNode.removeChild(node);\n}\n\n/** Set a named attribute on the given Node, with special behavior for some names and event handlers.\n *\tIf `value` is `null`, the attribute/handler will be removed.\n *\t@param {Element} node\tAn element to mutate\n *\t@param {string} name\tThe name/key to set, such as an event or attribute name\n *\t@param {any} old\tThe last value that was set for this name/node pair\n *\t@param {any} value\tAn attribute value, such as a function to be used as an event handler\n *\t@param {Boolean} isSvg\tAre we currently diffing inside an svg?\n *\t@private\n */\nfunction setAccessor(node, name, old, value, isSvg) {\n  if (name === 'className') name = 'class';\n  if (name === 'key') {\n    // ignore\n  } else if (name === 'ref') {\n    if (old) old(null);\n    if (value) value(node);\n  } else if (name === 'class' && !isSvg) {\n    node.className = value || '';\n  } else if (name === 'style') {\n    if (!value || typeof value === 'string' || typeof old === 'string') {\n      node.style.cssText = value || '';\n    }\n    if (value && typeof value === 'object') {\n      if (typeof old !== 'string') {\n        for (var i in old) {\n          if (!(i in value)) node.style[i] = '';\n        }\n      }\n      for (var i in value) {\n        node.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n      }\n    }\n  } else if (name === 'dangerouslySetInnerHTML') {\n    if (value) node.innerHTML = value.__html || '';\n  } else if (name[0] == 'o' && name[1] == 'n') {\n    var useCapture = name !== (name = name.replace(/Capture$/, ''));\n    name = name.toLowerCase().substring(2);\n    if (value) {\n      if (!old) node.addEventListener(name, eventProxy, useCapture);\n    } else {\n      node.removeEventListener(name, eventProxy, useCapture);\n    }\n    (node._listeners || (node._listeners = {}))[name] = value;\n  } else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n    setProperty(node, name, value == null ? '' : value);\n    if (value == null || value === false) node.removeAttribute(name);\n  } else {\n    var ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n    if (value == null || value === false) {\n      if (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n    } else if (typeof value !== 'function') {\n      if (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n    }\n  }\n}\n\n/** Attempt to set a DOM property to the given value.\n *\tIE & FF throw for certain property-value combinations.\n */\nfunction setProperty(node, name, value) {\n  try {\n    node[name] = value;\n  } catch (e) {}\n}\n\n/** Proxy an event to hooked event handlers\n *\t@private\n */\nfunction eventProxy(e) {\n  return this._listeners[e.type](options.event && options.event(e) || e);\n}\n\n/** Queue of components that have been mounted and are awaiting componentDidMount */\nvar mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nvar diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nvar isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nvar hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nfunction flushMounts() {\n  var c;\n  while (c = mounts.pop()) {\n    if (options.afterMount) options.afterMount(c);\n    if (c.componentDidMount) c.componentDidMount();\n  }\n}\n\n/** Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n *\t@param {Element} [dom=null]\t\tA DOM node to mutate into the shape of the `vnode`\n *\t@param {VNode} vnode\t\t\tA VNode (with descendants forming a tree) representing the desired DOM structure\n *\t@returns {Element} dom\t\t\tThe created/mutated element\n *\t@private\n */\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n  // diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n  if (!diffLevel++) {\n    // when first starting the diff, check if we're diffing an SVG or within an SVG\n    isSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n    // hydration is indicated by the existing element to be diffed not having a prop cache\n    hydrating = dom != null && !('__preactattr_' in dom);\n  }\n  var ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n  // append the element if its a new parent\n  if (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n  // diffLevel being reduced to 0 means we're exiting the diff\n  if (! --diffLevel) {\n    hydrating = false;\n    // invoke queued componentDidMount lifecycle methods\n    if (!componentRoot) flushMounts();\n  }\n  return ret;\n}\n\n/** Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing. */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n  var out = dom,\n    prevSvgMode = isSvgMode;\n\n  // empty values (null, undefined, booleans) render as empty Text nodes\n  if (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n  // Fast case: Strings & Numbers create/update Text nodes.\n  if (typeof vnode === 'string' || typeof vnode === 'number') {\n    // update if it's already a Text node:\n    if (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n      /* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n      if (dom.nodeValue != vnode) {\n        dom.nodeValue = vnode;\n      }\n    } else {\n      // it wasn't a Text node: replace it with one and recycle the old Element\n      out = document.createTextNode(vnode);\n      if (dom) {\n        if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n        recollectNodeTree(dom, true);\n      }\n    }\n    out['__preactattr_'] = true;\n    return out;\n  }\n\n  // If the VNode represents a Component, perform a component diff:\n  var vnodeName = vnode.nodeName;\n  if (typeof vnodeName === 'function') {\n    return buildComponentFromVNode(dom, vnode, context, mountAll);\n  }\n\n  // Tracks entering and exiting SVG namespace when descending through the tree.\n  isSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n  // If there's no existing element or it's the wrong type, create a new one:\n  vnodeName = String(vnodeName);\n  if (!dom || !isNamedNode(dom, vnodeName)) {\n    out = createNode(vnodeName, isSvgMode);\n    if (dom) {\n      // move children into the replacement node\n      while (dom.firstChild) {\n        out.appendChild(dom.firstChild);\n      } // if the previous Element was mounted into the DOM, replace it inline\n      if (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n      // recycle the old element (skips non-Element node types)\n      recollectNodeTree(dom, true);\n    }\n  }\n  var fc = out.firstChild,\n    props = out['__preactattr_'],\n    vchildren = vnode.children;\n  if (props == null) {\n    props = out['__preactattr_'] = {};\n    for (var a = out.attributes, i = a.length; i--;) {\n      props[a[i].name] = a[i].value;\n    }\n  }\n\n  // Optimization: fast-path for elements containing a single TextNode:\n  if (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n    if (fc.nodeValue != vchildren[0]) {\n      fc.nodeValue = vchildren[0];\n    }\n  }\n  // otherwise, if there are existing or new children, diff them:\n  else if (vchildren && vchildren.length || fc != null) {\n    innerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n  }\n\n  // Apply attributes/props from VNode to the DOM Element:\n  diffAttributes(out, vnode.attributes, props);\n\n  // restore previous SVG mode: (in case we're exiting an SVG namespace)\n  isSvgMode = prevSvgMode;\n  return out;\n}\n\n/** Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n *\t@param {Element} dom\t\t\tElement whose children should be compared & mutated\n *\t@param {Array} vchildren\t\tArray of VNodes to compare to `dom.childNodes`\n *\t@param {Object} context\t\t\tImplicitly descendant context object (from most recent `getChildContext()`)\n *\t@param {Boolean} mountAll\n *\t@param {Boolean} isHydrating\tIf `true`, consumes externally created elements similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n  var originalChildren = dom.childNodes,\n    children = [],\n    keyed = {},\n    keyedLen = 0,\n    min = 0,\n    len = originalChildren.length,\n    childrenLen = 0,\n    vlen = vchildren ? vchildren.length : 0,\n    j,\n    c,\n    f,\n    vchild,\n    child;\n\n  // Build up a map of keyed children and an Array of unkeyed children:\n  if (len !== 0) {\n    for (var i = 0; i < len; i++) {\n      var _child = originalChildren[i],\n        props = _child['__preactattr_'],\n        key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n      if (key != null) {\n        keyedLen++;\n        keyed[key] = _child;\n      } else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n        children[childrenLen++] = _child;\n      }\n    }\n  }\n  if (vlen !== 0) {\n    for (var i = 0; i < vlen; i++) {\n      vchild = vchildren[i];\n      child = null;\n\n      // attempt to find a node based on key matching\n      var key = vchild.key;\n      if (key != null) {\n        if (keyedLen && keyed[key] !== undefined) {\n          child = keyed[key];\n          keyed[key] = undefined;\n          keyedLen--;\n        }\n      }\n      // attempt to pluck a node of the same type from the existing children\n      else if (!child && min < childrenLen) {\n        for (j = min; j < childrenLen; j++) {\n          if (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n            child = c;\n            children[j] = undefined;\n            if (j === childrenLen - 1) childrenLen--;\n            if (j === min) min++;\n            break;\n          }\n        }\n      }\n\n      // morph the matched/found/created DOM child to match vchild (deep)\n      child = idiff(child, vchild, context, mountAll);\n      f = originalChildren[i];\n      if (child && child !== dom && child !== f) {\n        if (f == null) {\n          dom.appendChild(child);\n        } else if (child === f.nextSibling) {\n          removeNode(f);\n        } else {\n          dom.insertBefore(child, f);\n        }\n      }\n    }\n  }\n\n  // remove unused keyed children:\n  if (keyedLen) {\n    for (var i in keyed) {\n      if (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n    }\n  }\n\n  // remove orphaned unkeyed children:\n  while (min <= childrenLen) {\n    if ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n  }\n}\n\n/** Recursively recycle (or just unmount) a node and its descendants.\n *\t@param {Node} node\t\t\t\t\t\tDOM node to start unmount/removal from\n *\t@param {Boolean} [unmountOnly=false]\tIf `true`, only triggers unmount lifecycle, skips removal\n */\nfunction recollectNodeTree(node, unmountOnly) {\n  var component = node._component;\n  if (component) {\n    // if node is owned by a Component, unmount that component (ends up recursing back here)\n    unmountComponent(component);\n  } else {\n    // If the node's VNode had a ref function, invoke it with null here.\n    // (this is part of the React spec, and smart for unsetting references)\n    if (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n    if (unmountOnly === false || node['__preactattr_'] == null) {\n      removeNode(node);\n    }\n    removeChildren(node);\n  }\n}\n\n/** Recollect/unmount all children.\n *\t- we use .lastChild here because it causes less reflow than .firstChild\n *\t- it's also cheaper than accessing the .childNodes Live NodeList\n */\nfunction removeChildren(node) {\n  node = node.lastChild;\n  while (node) {\n    var next = node.previousSibling;\n    recollectNodeTree(node, true);\n    node = next;\n  }\n}\n\n/** Apply differences in attributes from a VNode to the given DOM Element.\n *\t@param {Element} dom\t\tElement with attributes to diff `attrs` against\n *\t@param {Object} attrs\t\tThe desired end-state key-value attribute pairs\n *\t@param {Object} old\t\t\tCurrent/previous attributes (from previous VNode or element's prop cache)\n */\nfunction diffAttributes(dom, attrs, old) {\n  var name;\n\n  // remove attributes no longer present on the vnode by setting them to undefined\n  for (name in old) {\n    if (!(attrs && attrs[name] != null) && old[name] != null) {\n      setAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n    }\n  }\n\n  // add new & update changed attributes\n  for (name in attrs) {\n    if (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n      setAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n    }\n  }\n}\n\n/** Retains a pool of Components for re-use, keyed on component name.\n *\tNote: since component names are not unique or even necessarily available, these are primarily a form of sharding.\n *\t@private\n */\nvar components = {};\n\n/** Reclaim a component for later re-use by the recycler. */\nfunction collectComponent(component) {\n  var name = component.constructor.name;\n  (components[name] || (components[name] = [])).push(component);\n}\n\n/** Create a component. Normalizes differences between PFC's and classful Components. */\nfunction createComponent(Ctor, props, context) {\n  var list = components[Ctor.name],\n    inst;\n  if (Ctor.prototype && Ctor.prototype.render) {\n    inst = new Ctor(props, context);\n    Component.call(inst, props, context);\n  } else {\n    inst = new Component(props, context);\n    inst.constructor = Ctor;\n    inst.render = doRender;\n  }\n  if (list) {\n    for (var i = list.length; i--;) {\n      if (list[i].constructor === Ctor) {\n        inst.nextBase = list[i].nextBase;\n        list.splice(i, 1);\n        break;\n      }\n    }\n  }\n  return inst;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n  return this.constructor(props, context);\n}\n\n/** Set a component's `props` (generally derived from JSX attributes).\n *\t@param {Object} props\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.renderSync=false]\tIf `true` and {@link options.syncComponentUpdates} is `true`, triggers synchronous rendering.\n *\t@param {boolean} [opts.render=true]\t\t\tIf `false`, no render will be triggered.\n */\nfunction setComponentProps(component, props, opts, context, mountAll) {\n  if (component._disable) return;\n  component._disable = true;\n  if (component.__ref = props.ref) delete props.ref;\n  if (component.__key = props.key) delete props.key;\n  if (!component.base || mountAll) {\n    if (component.componentWillMount) component.componentWillMount();\n  } else if (component.componentWillReceiveProps) {\n    component.componentWillReceiveProps(props, context);\n  }\n  if (context && context !== component.context) {\n    if (!component.prevContext) component.prevContext = component.context;\n    component.context = context;\n  }\n  if (!component.prevProps) component.prevProps = component.props;\n  component.props = props;\n  component._disable = false;\n  if (opts !== 0) {\n    if (opts === 1 || options.syncComponentUpdates !== false || !component.base) {\n      renderComponent(component, 1, mountAll);\n    } else {\n      enqueueRender(component);\n    }\n  }\n  if (component.__ref) component.__ref(component);\n}\n\n/** Render a Component, triggering necessary lifecycle events and taking High-Order Components into account.\n *\t@param {Component} component\n *\t@param {Object} [opts]\n *\t@param {boolean} [opts.build=false]\t\tIf `true`, component will build and store a DOM node if not already associated with one.\n *\t@private\n */\nfunction renderComponent(component, opts, mountAll, isChild) {\n  if (component._disable) return;\n  var props = component.props,\n    state = component.state,\n    context = component.context,\n    previousProps = component.prevProps || props,\n    previousState = component.prevState || state,\n    previousContext = component.prevContext || context,\n    isUpdate = component.base,\n    nextBase = component.nextBase,\n    initialBase = isUpdate || nextBase,\n    initialChildComponent = component._component,\n    skip = false,\n    rendered,\n    inst,\n    cbase;\n\n  // if updating\n  if (isUpdate) {\n    component.props = previousProps;\n    component.state = previousState;\n    component.context = previousContext;\n    if (opts !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n      skip = true;\n    } else if (component.componentWillUpdate) {\n      component.componentWillUpdate(props, state, context);\n    }\n    component.props = props;\n    component.state = state;\n    component.context = context;\n  }\n  component.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n  component._dirty = false;\n  if (!skip) {\n    rendered = component.render(props, state, context);\n\n    // context to pass to the child, can be updated via (grand-)parent component\n    if (component.getChildContext) {\n      context = extend(extend({}, context), component.getChildContext());\n    }\n    var childComponent = rendered && rendered.nodeName,\n      toUnmount,\n      base;\n    if (typeof childComponent === 'function') {\n      // set up high order component link\n\n      var childProps = getNodeProps(rendered);\n      inst = initialChildComponent;\n      if (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n        setComponentProps(inst, childProps, 1, context, false);\n      } else {\n        toUnmount = inst;\n        component._component = inst = createComponent(childComponent, childProps, context);\n        inst.nextBase = inst.nextBase || nextBase;\n        inst._parentComponent = component;\n        setComponentProps(inst, childProps, 0, context, false);\n        renderComponent(inst, 1, mountAll, true);\n      }\n      base = inst.base;\n    } else {\n      cbase = initialBase;\n\n      // destroy high order component link\n      toUnmount = initialChildComponent;\n      if (toUnmount) {\n        cbase = component._component = null;\n      }\n      if (initialBase || opts === 1) {\n        if (cbase) cbase._component = null;\n        base = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n      }\n    }\n    if (initialBase && base !== initialBase && inst !== initialChildComponent) {\n      var baseParent = initialBase.parentNode;\n      if (baseParent && base !== baseParent) {\n        baseParent.replaceChild(base, initialBase);\n        if (!toUnmount) {\n          initialBase._component = null;\n          recollectNodeTree(initialBase, false);\n        }\n      }\n    }\n    if (toUnmount) {\n      unmountComponent(toUnmount);\n    }\n    component.base = base;\n    if (base && !isChild) {\n      var componentRef = component,\n        t = component;\n      while (t = t._parentComponent) {\n        (componentRef = t).base = base;\n      }\n      base._component = componentRef;\n      base._componentConstructor = componentRef.constructor;\n    }\n  }\n  if (!isUpdate || mountAll) {\n    mounts.unshift(component);\n  } else if (!skip) {\n    // Ensure that pending componentDidMount() hooks of child components\n    // are called before the componentDidUpdate() hook in the parent.\n    // Note: disabled as it causes duplicate hooks, see https://github.com/developit/preact/issues/750\n    // flushMounts();\n\n    if (component.componentDidUpdate) {\n      component.componentDidUpdate(previousProps, previousState, previousContext);\n    }\n    if (options.afterUpdate) options.afterUpdate(component);\n  }\n  if (component._renderCallbacks != null) {\n    while (component._renderCallbacks.length) {\n      component._renderCallbacks.pop().call(component);\n    }\n  }\n  if (!diffLevel && !isChild) flushMounts();\n}\n\n/** Apply the Component referenced by a VNode to the DOM.\n *\t@param {Element} dom\tThe DOM node to mutate\n *\t@param {VNode} vnode\tA Component-referencing VNode\n *\t@returns {Element} dom\tThe created/mutated element\n *\t@private\n */\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n  var c = dom && dom._component,\n    originalComponent = c,\n    oldDom = dom,\n    isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n    isOwner = isDirectOwner,\n    props = getNodeProps(vnode);\n  while (c && !isOwner && (c = c._parentComponent)) {\n    isOwner = c.constructor === vnode.nodeName;\n  }\n  if (c && isOwner && (!mountAll || c._component)) {\n    setComponentProps(c, props, 3, context, mountAll);\n    dom = c.base;\n  } else {\n    if (originalComponent && !isDirectOwner) {\n      unmountComponent(originalComponent);\n      dom = oldDom = null;\n    }\n    c = createComponent(vnode.nodeName, props, context);\n    if (dom && !c.nextBase) {\n      c.nextBase = dom;\n      // passing dom/oldDom as nextBase will recycle it if unused, so bypass recycling on L229:\n      oldDom = null;\n    }\n    setComponentProps(c, props, 1, context, mountAll);\n    dom = c.base;\n    if (oldDom && dom !== oldDom) {\n      oldDom._component = null;\n      recollectNodeTree(oldDom, false);\n    }\n  }\n  return dom;\n}\n\n/** Remove a component from the DOM and recycle it.\n *\t@param {Component} component\tThe Component instance to unmount\n *\t@private\n */\nfunction unmountComponent(component) {\n  if (options.beforeUnmount) options.beforeUnmount(component);\n  var base = component.base;\n  component._disable = true;\n  if (component.componentWillUnmount) component.componentWillUnmount();\n  component.base = null;\n\n  // recursively tear down & recollect high-order component children:\n  var inner = component._component;\n  if (inner) {\n    unmountComponent(inner);\n  } else if (base) {\n    if (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n    component.nextBase = base;\n    removeNode(base);\n    collectComponent(component);\n    removeChildren(base);\n  }\n  if (component.__ref) component.__ref(null);\n}\n\n/** Base Component class.\n *\tProvides `setState()` and `forceUpdate()`, which trigger rendering.\n *\t@public\n *\n *\t@example\n *\tclass MyFoo extends Component {\n *\t\trender(props, state) {\n *\t\t\treturn <div />;\n *\t\t}\n *\t}\n */\nfunction Component(props, context) {\n  this._dirty = true;\n\n  /** @public\n   *\t@type {object}\n   */\n  this.context = context;\n\n  /** @public\n   *\t@type {object}\n   */\n  this.props = props;\n\n  /** @public\n   *\t@type {object}\n   */\n  this.state = this.state || {};\n}\nextend(Component.prototype, {\n  /** Returns a `boolean` indicating if the component should re-render when receiving the given `props` and `state`.\n   *\t@param {object} nextProps\n   *\t@param {object} nextState\n   *\t@param {object} nextContext\n   *\t@returns {Boolean} should the component re-render\n   *\t@name shouldComponentUpdate\n   *\t@function\n   */\n\n  /** Update component state by copying properties from `state` to `this.state`.\n   *\t@param {object} state\t\tA hash of state properties to update with new values\n   *\t@param {function} callback\tA function to be called once component state is updated\n   */\n  setState: function setState(state, callback) {\n    var s = this.state;\n    if (!this.prevState) this.prevState = extend({}, s);\n    extend(s, typeof state === 'function' ? state(s, this.props) : state);\n    if (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n    enqueueRender(this);\n  },\n  /** Immediately perform a synchronous re-render of the component.\n   *\t@param {function} callback\t\tA function to be called after component is re-rendered.\n   *\t@private\n   */\n  forceUpdate: function forceUpdate(callback) {\n    if (callback) (this._renderCallbacks = this._renderCallbacks || []).push(callback);\n    renderComponent(this, 2);\n  },\n  /** Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n   *\tVirtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n   *\t@param {object} props\t\tProps (eg: JSX attributes) received from parent element/component\n   *\t@param {object} state\t\tThe component's current state\n   *\t@param {object} context\t\tContext object (if a parent component has provided context)\n   *\t@returns VNode\n   */\n  render: function render() {}\n});\n\n/** Render JSX into a `parent` Element.\n *\t@param {VNode} vnode\t\tA (JSX) VNode to render\n *\t@param {Element} parent\t\tDOM element to render into\n *\t@param {Element} [merge]\tAttempt to re-use an existing DOM tree rooted at `merge`\n *\t@public\n *\n *\t@example\n *\t// render a div into <body>:\n *\trender(<div id=\"hello\">hello!</div>, document.body);\n *\n *\t@example\n *\t// render a \"Thing\" component into #foo:\n *\tconst Thing = ({ name }) => <span>{ name }</span>;\n *\trender(<Thing name=\"one\" />, document.querySelector('#foo'));\n */\nfunction render(vnode, parent, merge) {\n  return diff(merge, vnode, {}, false, parent, false);\n}\nvar preact = {\n  h: h,\n  createElement: h,\n  cloneElement: cloneElement,\n  Component: Component,\n  render: render,\n  rerender: rerender,\n  options: options\n};\nexport default preact;\nexport { h, h as createElement, cloneElement, Component, render, rerender, options };","var has = Object.prototype.hasOwnProperty;\n\n/**\n * Stringify an object for use in a query string.\n *\n * @param {Object} obj - The object.\n * @param {string} prefix - When nesting, the parent key.\n *     keys in `obj` will be stringified as `prefix[key]`.\n * @returns {string}\n */\n\nmodule.exports = function queryStringify(obj, prefix) {\n  var pairs = [];\n  for (var key in obj) {\n    if (!has.call(obj, key)) {\n      continue;\n    }\n    var value = obj[key];\n    var enkey = encodeURIComponent(key);\n    var pair;\n    if (typeof value === 'object') {\n      pair = queryStringify(value, prefix ? prefix + '[' + enkey + ']' : enkey);\n    } else {\n      pair = (prefix ? prefix + '[' + enkey + ']' : enkey) + '=' + encodeURIComponent(value);\n    }\n    pairs.push(pair);\n  }\n  return pairs.join('&');\n};","'use strict';\n\nvar has = Object.prototype.hasOwnProperty,\n  undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g,\n    result = {},\n    part;\n  while (part = parser.exec(query)) {\n    var key = decode(part[1]),\n      value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n  var pairs = [],\n    value,\n    key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key + '=' + value);\n    }\n  }\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n  if (!port) return false;\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n      return port !== 80;\n    case 'https':\n    case 'wss':\n      return port !== 443;\n    case 'ftp':\n      return port !== 21;\n    case 'gopher':\n      return port !== 70;\n    case 'file':\n      return false;\n  }\n  return port !== 0;\n};","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n  if (typeof Map !== 'undefined') {\n    return Map;\n  }\n  /**\r\n   * Returns index in provided array that matches the specified key.\r\n   *\r\n   * @param {Array<Array>} arr\r\n   * @param {*} key\r\n   * @returns {number}\r\n   */\n  function getIndex(arr, key) {\n    var result = -1;\n    arr.some(function (entry, index) {\n      if (entry[0] === key) {\n        result = index;\n        return true;\n      }\n      return false;\n    });\n    return result;\n  }\n  return (/** @class */function () {\n      function class_1() {\n        this.__entries__ = [];\n      }\n      Object.defineProperty(class_1.prototype, \"size\", {\n        /**\r\n         * @returns {boolean}\r\n         */\n        get: function get() {\n          return this.__entries__.length;\n        },\n        enumerable: true,\n        configurable: true\n      });\n      /**\r\n       * @param {*} key\r\n       * @returns {*}\r\n       */\n      class_1.prototype.get = function (key) {\n        var index = getIndex(this.__entries__, key);\n        var entry = this.__entries__[index];\n        return entry && entry[1];\n      };\n      /**\r\n       * @param {*} key\r\n       * @param {*} value\r\n       * @returns {void}\r\n       */\n      class_1.prototype.set = function (key, value) {\n        var index = getIndex(this.__entries__, key);\n        if (~index) {\n          this.__entries__[index][1] = value;\n        } else {\n          this.__entries__.push([key, value]);\n        }\n      };\n      /**\r\n       * @param {*} key\r\n       * @returns {void}\r\n       */\n      class_1.prototype.delete = function (key) {\n        var entries = this.__entries__;\n        var index = getIndex(entries, key);\n        if (~index) {\n          entries.splice(index, 1);\n        }\n      };\n      /**\r\n       * @param {*} key\r\n       * @returns {void}\r\n       */\n      class_1.prototype.has = function (key) {\n        return !!~getIndex(this.__entries__, key);\n      };\n      /**\r\n       * @returns {void}\r\n       */\n      class_1.prototype.clear = function () {\n        this.__entries__.splice(0);\n      };\n      /**\r\n       * @param {Function} callback\r\n       * @param {*} [ctx=null]\r\n       * @returns {void}\r\n       */\n      class_1.prototype.forEach = function (callback, ctx) {\n        if (ctx === void 0) {\n          ctx = null;\n        }\n        for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n          var entry = _a[_i];\n          callback.call(ctx, entry[1], entry[0]);\n        }\n      };\n      return class_1;\n    }()\n  );\n}();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = function () {\n  if (typeof global !== 'undefined' && global.Math === Math) {\n    return global;\n  }\n  if (typeof self !== 'undefined' && self.Math === Math) {\n    return self;\n  }\n  if (typeof window !== 'undefined' && window.Math === Math) {\n    return window;\n  }\n  // eslint-disable-next-line no-new-func\n  return Function('return this')();\n}();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = function () {\n  if (typeof requestAnimationFrame === 'function') {\n    // It's required to use a bounded function because IE sometimes throws\n    // an \"Invalid calling object\" error if rAF is invoked without the global\n    // object on the left hand side.\n    return requestAnimationFrame.bind(global$1);\n  }\n  return function (callback) {\n    return setTimeout(function () {\n      return callback(Date.now());\n    }, 1000 / 60);\n  };\n}();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nfunction throttle(callback, delay) {\n  var leadingCall = false,\n    trailingCall = false,\n    lastCallTime = 0;\n  /**\r\n   * Invokes the original callback function and schedules new invocation if\r\n   * the \"proxy\" was called during current request.\r\n   *\r\n   * @returns {void}\r\n   */\n  function resolvePending() {\n    if (leadingCall) {\n      leadingCall = false;\n      callback();\n    }\n    if (trailingCall) {\n      proxy();\n    }\n  }\n  /**\r\n   * Callback invoked after the specified delay. It will further postpone\r\n   * invocation of the original function delegating it to the\r\n   * requestAnimationFrame.\r\n   *\r\n   * @returns {void}\r\n   */\n  function timeoutCallback() {\n    requestAnimationFrame$1(resolvePending);\n  }\n  /**\r\n   * Schedules invocation of the original function.\r\n   *\r\n   * @returns {void}\r\n   */\n  function proxy() {\n    var timeStamp = Date.now();\n    if (leadingCall) {\n      // Reject immediately following calls.\n      if (timeStamp - lastCallTime < trailingTimeout) {\n        return;\n      }\n      // Schedule new call to be in invoked when the pending one is resolved.\n      // This is important for \"transitions\" which never actually start\n      // immediately so there is a chance that we might miss one if change\n      // happens amids the pending invocation.\n      trailingCall = true;\n    } else {\n      leadingCall = true;\n      trailingCall = false;\n      setTimeout(timeoutCallback, delay);\n    }\n    lastCallTime = timeStamp;\n  }\n  return proxy;\n}\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = /** @class */function () {\n  /**\r\n   * Creates a new instance of ResizeObserverController.\r\n   *\r\n   * @private\r\n   */\n  function ResizeObserverController() {\n    /**\r\n     * Indicates whether DOM listeners have been added.\r\n     *\r\n     * @private {boolean}\r\n     */\n    this.connected_ = false;\n    /**\r\n     * Tells that controller has subscribed for Mutation Events.\r\n     *\r\n     * @private {boolean}\r\n     */\n    this.mutationEventsAdded_ = false;\n    /**\r\n     * Keeps reference to the instance of MutationObserver.\r\n     *\r\n     * @private {MutationObserver}\r\n     */\n    this.mutationsObserver_ = null;\n    /**\r\n     * A list of connected observers.\r\n     *\r\n     * @private {Array<ResizeObserverSPI>}\r\n     */\n    this.observers_ = [];\n    this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n    this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n  }\n  /**\r\n   * Adds observer to observers list.\r\n   *\r\n   * @param {ResizeObserverSPI} observer - Observer to be added.\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.addObserver = function (observer) {\n    if (!~this.observers_.indexOf(observer)) {\n      this.observers_.push(observer);\n    }\n    // Add listeners if they haven't been added yet.\n    if (!this.connected_) {\n      this.connect_();\n    }\n  };\n  /**\r\n   * Removes observer from observers list.\r\n   *\r\n   * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.removeObserver = function (observer) {\n    var observers = this.observers_;\n    var index = observers.indexOf(observer);\n    // Remove observer if it's present in registry.\n    if (~index) {\n      observers.splice(index, 1);\n    }\n    // Remove listeners if controller has no connected observers.\n    if (!observers.length && this.connected_) {\n      this.disconnect_();\n    }\n  };\n  /**\r\n   * Invokes the update of observers. It will continue running updates insofar\r\n   * it detects changes.\r\n   *\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.refresh = function () {\n    var changesDetected = this.updateObservers_();\n    // Continue running updates if changes have been detected as there might\n    // be future ones caused by CSS transitions.\n    if (changesDetected) {\n      this.refresh();\n    }\n  };\n  /**\r\n   * Updates every observer from observers list and notifies them of queued\r\n   * entries.\r\n   *\r\n   * @private\r\n   * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n   *      dimensions of it's elements.\r\n   */\n  ResizeObserverController.prototype.updateObservers_ = function () {\n    // Collect observers that have active observations.\n    var activeObservers = this.observers_.filter(function (observer) {\n      return observer.gatherActive(), observer.hasActive();\n    });\n    // Deliver notifications in a separate cycle in order to avoid any\n    // collisions between observers, e.g. when multiple instances of\n    // ResizeObserver are tracking the same element and the callback of one\n    // of them changes content dimensions of the observed target. Sometimes\n    // this may result in notifications being blocked for the rest of observers.\n    activeObservers.forEach(function (observer) {\n      return observer.broadcastActive();\n    });\n    return activeObservers.length > 0;\n  };\n  /**\r\n   * Initializes DOM listeners.\r\n   *\r\n   * @private\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.connect_ = function () {\n    // Do nothing if running in a non-browser environment or if listeners\n    // have been already added.\n    if (!isBrowser || this.connected_) {\n      return;\n    }\n    // Subscription to the \"Transitionend\" event is used as a workaround for\n    // delayed transitions. This way it's possible to capture at least the\n    // final state of an element.\n    document.addEventListener('transitionend', this.onTransitionEnd_);\n    window.addEventListener('resize', this.refresh);\n    if (mutationObserverSupported) {\n      this.mutationsObserver_ = new MutationObserver(this.refresh);\n      this.mutationsObserver_.observe(document, {\n        attributes: true,\n        childList: true,\n        characterData: true,\n        subtree: true\n      });\n    } else {\n      document.addEventListener('DOMSubtreeModified', this.refresh);\n      this.mutationEventsAdded_ = true;\n    }\n    this.connected_ = true;\n  };\n  /**\r\n   * Removes DOM listeners.\r\n   *\r\n   * @private\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.disconnect_ = function () {\n    // Do nothing if running in a non-browser environment or if listeners\n    // have been already removed.\n    if (!isBrowser || !this.connected_) {\n      return;\n    }\n    document.removeEventListener('transitionend', this.onTransitionEnd_);\n    window.removeEventListener('resize', this.refresh);\n    if (this.mutationsObserver_) {\n      this.mutationsObserver_.disconnect();\n    }\n    if (this.mutationEventsAdded_) {\n      document.removeEventListener('DOMSubtreeModified', this.refresh);\n    }\n    this.mutationsObserver_ = null;\n    this.mutationEventsAdded_ = false;\n    this.connected_ = false;\n  };\n  /**\r\n   * \"Transitionend\" event handler.\r\n   *\r\n   * @private\r\n   * @param {TransitionEvent} event\r\n   * @returns {void}\r\n   */\n  ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n    var _b = _a.propertyName,\n      propertyName = _b === void 0 ? '' : _b;\n    // Detect whether transition may affect dimensions of an element.\n    var isReflowProperty = transitionKeys.some(function (key) {\n      return !!~propertyName.indexOf(key);\n    });\n    if (isReflowProperty) {\n      this.refresh();\n    }\n  };\n  /**\r\n   * Returns instance of the ResizeObserverController.\r\n   *\r\n   * @returns {ResizeObserverController}\r\n   */\n  ResizeObserverController.getInstance = function () {\n    if (!this.instance_) {\n      this.instance_ = new ResizeObserverController();\n    }\n    return this.instance_;\n  };\n  /**\r\n   * Holds reference to the controller's instance.\r\n   *\r\n   * @private {ResizeObserverController}\r\n   */\n  ResizeObserverController.instance_ = null;\n  return ResizeObserverController;\n}();\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = function defineConfigurable(target, props) {\n  for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n    var key = _a[_i];\n    Object.defineProperty(target, key, {\n      value: props[key],\n      enumerable: false,\n      writable: false,\n      configurable: true\n    });\n  }\n  return target;\n};\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = function getWindowOf(target) {\n  // Assume that the element is an instance of Node, which means that it\n  // has the \"ownerDocument\" property from which we can retrieve a\n  // corresponding global object.\n  var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n  // Return the local global object if it's not possible extract one from\n  // provided element.\n  return ownerGlobal || global$1;\n};\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n  return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n  var positions = [];\n  for (var _i = 1; _i < arguments.length; _i++) {\n    positions[_i - 1] = arguments[_i];\n  }\n  return positions.reduce(function (size, position) {\n    var value = styles['border-' + position + '-width'];\n    return size + toFloat(value);\n  }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n  var positions = ['top', 'right', 'bottom', 'left'];\n  var paddings = {};\n  for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n    var position = positions_1[_i];\n    var value = styles['padding-' + position];\n    paddings[position] = toFloat(value);\n  }\n  return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n  var bbox = target.getBBox();\n  return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n  // Client width & height properties can't be\n  // used exclusively as they provide rounded values.\n  var clientWidth = target.clientWidth,\n    clientHeight = target.clientHeight;\n  // By this condition we can catch all non-replaced inline, hidden and\n  // detached elements. Though elements with width & height properties less\n  // than 0.5 will be discarded as well.\n  //\n  // Without it we would need to implement separate methods for each of\n  // those cases and it's not possible to perform a precise and performance\n  // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n  // gives wrong results for elements with width & height less than 0.5.\n  if (!clientWidth && !clientHeight) {\n    return emptyRect;\n  }\n  var styles = getWindowOf(target).getComputedStyle(target);\n  var paddings = getPaddings(styles);\n  var horizPad = paddings.left + paddings.right;\n  var vertPad = paddings.top + paddings.bottom;\n  // Computed styles of width & height are being used because they are the\n  // only dimensions available to JS that contain non-rounded values. It could\n  // be possible to utilize the getBoundingClientRect if only it's data wasn't\n  // affected by CSS transformations let alone paddings, borders and scroll bars.\n  var width = toFloat(styles.width),\n    height = toFloat(styles.height);\n  // Width & height include paddings and borders when the 'border-box' box\n  // model is applied (except for IE).\n  if (styles.boxSizing === 'border-box') {\n    // Following conditions are required to handle Internet Explorer which\n    // doesn't include paddings and borders to computed CSS dimensions.\n    //\n    // We can say that if CSS dimensions + paddings are equal to the \"client\"\n    // properties then it's either IE, and thus we don't need to subtract\n    // anything, or an element merely doesn't have paddings/borders styles.\n    if (Math.round(width + horizPad) !== clientWidth) {\n      width -= getBordersSize(styles, 'left', 'right') + horizPad;\n    }\n    if (Math.round(height + vertPad) !== clientHeight) {\n      height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n    }\n  }\n  // Following steps can't be applied to the document's root element as its\n  // client[Width/Height] properties represent viewport area of the window.\n  // Besides, it's as well not necessary as the <html> itself neither has\n  // rendered scroll bars nor it can be clipped.\n  if (!isDocumentElement(target)) {\n    // In some browsers (only in Firefox, actually) CSS width & height\n    // include scroll bars size which can be removed at this step as scroll\n    // bars are the only difference between rounded dimensions + paddings\n    // and \"client\" properties, though that is not always true in Chrome.\n    var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n    var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n    // Chrome has a rather weird rounding of \"client\" properties.\n    // E.g. for an element with content width of 314.2px it sometimes gives\n    // the client width of 315px and for the width of 314.7px it may give\n    // 314px. And it doesn't happen all the time. So just ignore this delta\n    // as a non-relevant.\n    if (Math.abs(vertScrollbar) !== 1) {\n      width -= vertScrollbar;\n    }\n    if (Math.abs(horizScrollbar) !== 1) {\n      height -= horizScrollbar;\n    }\n  }\n  return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = function () {\n  // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n  // interface.\n  if (typeof SVGGraphicsElement !== 'undefined') {\n    return function (target) {\n      return target instanceof getWindowOf(target).SVGGraphicsElement;\n    };\n  }\n  // If it's so, then check that element is at least an instance of the\n  // SVGElement and that it has the \"getBBox\" method.\n  // eslint-disable-next-line no-extra-parens\n  return function (target) {\n    return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n  };\n}();\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n  return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n  if (!isBrowser) {\n    return emptyRect;\n  }\n  if (isSVGGraphicsElement(target)) {\n    return getSVGContentRect(target);\n  }\n  return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(_a) {\n  var x = _a.x,\n    y = _a.y,\n    width = _a.width,\n    height = _a.height;\n  // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n  var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n  var rect = Object.create(Constr.prototype);\n  // Rectangle's properties are not writable and non-enumerable.\n  defineConfigurable(rect, {\n    x: x,\n    y: y,\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: height + y,\n    left: x\n  });\n  return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n  return {\n    x: x,\n    y: y,\n    width: width,\n    height: height\n  };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = /** @class */function () {\n  /**\r\n   * Creates an instance of ResizeObservation.\r\n   *\r\n   * @param {Element} target - Element to be observed.\r\n   */\n  function ResizeObservation(target) {\n    /**\r\n     * Broadcasted width of content rectangle.\r\n     *\r\n     * @type {number}\r\n     */\n    this.broadcastWidth = 0;\n    /**\r\n     * Broadcasted height of content rectangle.\r\n     *\r\n     * @type {number}\r\n     */\n    this.broadcastHeight = 0;\n    /**\r\n     * Reference to the last observed content rectangle.\r\n     *\r\n     * @private {DOMRectInit}\r\n     */\n    this.contentRect_ = createRectInit(0, 0, 0, 0);\n    this.target = target;\n  }\n  /**\r\n   * Updates content rectangle and tells whether it's width or height properties\r\n   * have changed since the last broadcast.\r\n   *\r\n   * @returns {boolean}\r\n   */\n  ResizeObservation.prototype.isActive = function () {\n    var rect = getContentRect(this.target);\n    this.contentRect_ = rect;\n    return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n  };\n  /**\r\n   * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n   * from the corresponding properties of the last observed content rectangle.\r\n   *\r\n   * @returns {DOMRectInit} Last observed content rectangle.\r\n   */\n  ResizeObservation.prototype.broadcastRect = function () {\n    var rect = this.contentRect_;\n    this.broadcastWidth = rect.width;\n    this.broadcastHeight = rect.height;\n    return rect;\n  };\n  return ResizeObservation;\n}();\nvar ResizeObserverEntry = /** @class */function () {\n  /**\r\n   * Creates an instance of ResizeObserverEntry.\r\n   *\r\n   * @param {Element} target - Element that is being observed.\r\n   * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n   */\n  function ResizeObserverEntry(target, rectInit) {\n    var contentRect = createReadOnlyRect(rectInit);\n    // According to the specification following properties are not writable\n    // and are also not enumerable in the native implementation.\n    //\n    // Property accessors are not being used as they'd require to define a\n    // private WeakMap storage which may cause memory leaks in browsers that\n    // don't support this type of collections.\n    defineConfigurable(this, {\n      target: target,\n      contentRect: contentRect\n    });\n  }\n  return ResizeObserverEntry;\n}();\nvar ResizeObserverSPI = /** @class */function () {\n  /**\r\n   * Creates a new instance of ResizeObserver.\r\n   *\r\n   * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n   *      when one of the observed elements changes it's content dimensions.\r\n   * @param {ResizeObserverController} controller - Controller instance which\r\n   *      is responsible for the updates of observer.\r\n   * @param {ResizeObserver} callbackCtx - Reference to the public\r\n   *      ResizeObserver instance which will be passed to callback function.\r\n   */\n  function ResizeObserverSPI(callback, controller, callbackCtx) {\n    /**\r\n     * Collection of resize observations that have detected changes in dimensions\r\n     * of elements.\r\n     *\r\n     * @private {Array<ResizeObservation>}\r\n     */\n    this.activeObservations_ = [];\n    /**\r\n     * Registry of the ResizeObservation instances.\r\n     *\r\n     * @private {Map<Element, ResizeObservation>}\r\n     */\n    this.observations_ = new MapShim();\n    if (typeof callback !== 'function') {\n      throw new TypeError('The callback provided as parameter 1 is not a function.');\n    }\n    this.callback_ = callback;\n    this.controller_ = controller;\n    this.callbackCtx_ = callbackCtx;\n  }\n  /**\r\n   * Starts observing provided element.\r\n   *\r\n   * @param {Element} target - Element to be observed.\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.observe = function (target) {\n    if (!arguments.length) {\n      throw new TypeError('1 argument required, but only 0 present.');\n    }\n    // Do nothing if current environment doesn't have the Element interface.\n    if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n      return;\n    }\n    if (!(target instanceof getWindowOf(target).Element)) {\n      throw new TypeError('parameter 1 is not of type \"Element\".');\n    }\n    var observations = this.observations_;\n    // Do nothing if element is already being observed.\n    if (observations.has(target)) {\n      return;\n    }\n    observations.set(target, new ResizeObservation(target));\n    this.controller_.addObserver(this);\n    // Force the update of observations.\n    this.controller_.refresh();\n  };\n  /**\r\n   * Stops observing provided element.\r\n   *\r\n   * @param {Element} target - Element to stop observing.\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.unobserve = function (target) {\n    if (!arguments.length) {\n      throw new TypeError('1 argument required, but only 0 present.');\n    }\n    // Do nothing if current environment doesn't have the Element interface.\n    if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n      return;\n    }\n    if (!(target instanceof getWindowOf(target).Element)) {\n      throw new TypeError('parameter 1 is not of type \"Element\".');\n    }\n    var observations = this.observations_;\n    // Do nothing if element is not being observed.\n    if (!observations.has(target)) {\n      return;\n    }\n    observations.delete(target);\n    if (!observations.size) {\n      this.controller_.removeObserver(this);\n    }\n  };\n  /**\r\n   * Stops observing all elements.\r\n   *\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.disconnect = function () {\n    this.clearActive();\n    this.observations_.clear();\n    this.controller_.removeObserver(this);\n  };\n  /**\r\n   * Collects observation instances the associated element of which has changed\r\n   * it's content rectangle.\r\n   *\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.gatherActive = function () {\n    var _this = this;\n    this.clearActive();\n    this.observations_.forEach(function (observation) {\n      if (observation.isActive()) {\n        _this.activeObservations_.push(observation);\n      }\n    });\n  };\n  /**\r\n   * Invokes initial callback function with a list of ResizeObserverEntry\r\n   * instances collected from active resize observations.\r\n   *\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.broadcastActive = function () {\n    // Do nothing if observer doesn't have active observations.\n    if (!this.hasActive()) {\n      return;\n    }\n    var ctx = this.callbackCtx_;\n    // Create ResizeObserverEntry instance for every active observation.\n    var entries = this.activeObservations_.map(function (observation) {\n      return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n    });\n    this.callback_.call(ctx, entries, ctx);\n    this.clearActive();\n  };\n  /**\r\n   * Clears the collection of active observations.\r\n   *\r\n   * @returns {void}\r\n   */\n  ResizeObserverSPI.prototype.clearActive = function () {\n    this.activeObservations_.splice(0);\n  };\n  /**\r\n   * Tells whether observer has active observations.\r\n   *\r\n   * @returns {boolean}\r\n   */\n  ResizeObserverSPI.prototype.hasActive = function () {\n    return this.activeObservations_.length > 0;\n  };\n  return ResizeObserverSPI;\n}();\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = /** @class */function () {\n  /**\r\n   * Creates a new instance of ResizeObserver.\r\n   *\r\n   * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n   *      dimensions of the observed elements change.\r\n   */\n  function ResizeObserver(callback) {\n    if (!(this instanceof ResizeObserver)) {\n      throw new TypeError('Cannot call a class as a function.');\n    }\n    if (!arguments.length) {\n      throw new TypeError('1 argument required, but only 0 present.');\n    }\n    var controller = ResizeObserverController.getInstance();\n    var observer = new ResizeObserverSPI(callback, controller, this);\n    observers.set(this, observer);\n  }\n  return ResizeObserver;\n}();\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n  ResizeObserver.prototype[method] = function () {\n    var _a;\n    return (_a = observers.get(this))[method].apply(_a, arguments);\n  };\n});\nvar index = function () {\n  // Export existing implementation if available.\n  if (typeof global$1.ResizeObserver !== 'undefined') {\n    return global$1.ResizeObserver;\n  }\n  return ResizeObserver;\n}();\nexport default index;","'use strict';\n\nrequire(\"core-js/modules/es.string.trim-start.js\");\nvar required = require('requires-port'),\n  qs = require('querystringify'),\n  controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/,\n  CRHTLF = /[\\n\\r\\t]/g,\n  slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//,\n  port = /:\\d+$/,\n  protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i,\n  windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [['#', 'hash'],\n// Extract from the back.\n['?', 'query'],\n// Extract from the back.\nfunction sanitize(address, url) {\n  // Sanitize what is left of the address\n  return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n}, ['/', 'pathname'],\n// Extract from the back.\n['@', 'auth', 1],\n// Extract from the front.\n[NaN, 'host', undefined, 1, 1],\n// Set left over value.\n[/:(\\d*)$/, 'port', undefined, 1],\n// RegExp the back.\n[NaN, 'hostname', undefined, 1, 1] // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = {\n  hash: 1,\n  query: 1\n};\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n  if (typeof window !== 'undefined') globalVar = window;else if (typeof global !== 'undefined') globalVar = global;else if (typeof self !== 'undefined') globalVar = self;else globalVar = {};\n  var location = globalVar.location || {};\n  loc = loc || location;\n  var finaldestination = {},\n    type = typeof loc,\n    key;\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) {\n      delete finaldestination[key];\n    }\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return scheme === 'file:' || scheme === 'ftp:' || scheme === 'http:' || scheme === 'https:' || scheme === 'ws:' || scheme === 'wss:';\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4];\n    }\n  }\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/')),\n    i = path.length,\n    last = path[i - 1],\n    unshift = false,\n    up = 0;\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n  var relative,\n    extracted,\n    parse,\n    instruction,\n    index,\n    key,\n    instructions = rules.slice(),\n    type = typeof location,\n    url = this,\n    i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (extracted.protocol === 'file:' && (extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) || !extracted.slashes && (extracted.protocol || extracted.slashesCount < 2 || !isSpecial(url.protocol))) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n    parse = instruction[0];\n    key = instruction[1];\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@' ? address.lastIndexOf(parse) : address.indexOf(parse);\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if (index = parse.exec(address)) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n    url[key] = url[key] || (relative && instruction[3] ? location[key] || '' : '');\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (relative && location.slashes && url.pathname.charAt(0) !== '/' && (url.pathname !== '' || location.pathname !== '')) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password));\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n    url.auth = url.password ? url.username + ':' + url.password : url.username;\n  }\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host ? url.protocol + '//' + url.host : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n      url[part] = value;\n      break;\n    case 'port':\n      url[part] = value;\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname + ':' + value;\n      }\n      break;\n    case 'hostname':\n      url[part] = value;\n      if (url.port) value += ':' + url.port;\n      url.host = value;\n      break;\n    case 'host':\n      url[part] = value;\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n      break;\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n    case 'auth':\n      var index = value.indexOf(':');\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n  url.auth = url.password ? url.username + ':' + url.password : url.username;\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host ? url.protocol + '//' + url.host : 'null';\n  url.href = url.toString();\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n  var query,\n    url = this,\n    host = url.host,\n    protocol = url.protocol;\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n  var result = protocol + (url.protocol && url.slashes || isSpecial(url.protocol) ? '//' : '');\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':' + url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':' + url.password;\n    result += '@';\n  } else if (url.protocol !== 'file:' && isSpecial(url.protocol) && !host && url.pathname !== '/') {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || port.test(url.hostname) && !url.port) {\n    host += ':';\n  }\n  result += host + url.pathname;\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?' + query : query;\n  if (url.hash) result += url.hash;\n  return result;\n}\nUrl.prototype = {\n  set: set,\n  toString: toString\n};\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\nmodule.exports = Url;","/* jshint node: true */\n'use strict';\n\n/**\n  # wildcard\n\n  Very simple wildcard matching, which is designed to provide the same\n  functionality that is found in the\n  [eve](https://github.com/adobe-webplatform/eve) eventing library.\n\n  ## Usage\n\n  It works with strings:\n\n  <<< examples/strings.js\n\n  Arrays:\n\n  <<< examples/arrays.js\n\n  Objects (matching against keys):\n\n  <<< examples/objects.js\n\n  While the library works in Node, if you are are looking for file-based\n  wildcard matching then you should have a look at:\n\n  <https://github.com/isaacs/node-glob>\n**/\nfunction WildcardMatcher(text, separator) {\n  this.text = text = text || '';\n  this.hasWild = ~text.indexOf('*');\n  this.separator = separator;\n  this.parts = text.split(separator);\n}\nWildcardMatcher.prototype.match = function (input) {\n  var matches = true;\n  var parts = this.parts;\n  var ii;\n  var partsCount = parts.length;\n  var testParts;\n  if (typeof input == 'string' || input instanceof String) {\n    if (!this.hasWild && this.text != input) {\n      matches = false;\n    } else {\n      testParts = (input || '').split(this.separator);\n      for (ii = 0; matches && ii < partsCount; ii++) {\n        if (parts[ii] === '*') {\n          continue;\n        } else if (ii < testParts.length) {\n          matches = parts[ii] === testParts[ii];\n        } else {\n          matches = false;\n        }\n      }\n\n      // If matches, then return the component parts\n      matches = matches && testParts;\n    }\n  } else if (typeof input.splice == 'function') {\n    matches = [];\n    for (ii = input.length; ii--;) {\n      if (this.match(input[ii])) {\n        matches[matches.length] = input[ii];\n      }\n    }\n  } else if (typeof input == 'object') {\n    matches = {};\n    for (var key in input) {\n      if (this.match(key)) {\n        matches[key] = input[key];\n      }\n    }\n  }\n  return matches;\n};\nmodule.exports = function (text, test, separator) {\n  var matcher = new WildcardMatcher(text, separator || /[\\/\\.]/);\n  if (typeof test != 'undefined') {\n    return matcher.match(test);\n  }\n  return matcher;\n};","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n  return fails(function () {\n    return !!whitespaces[METHOD_NAME]()\n      || non[METHOD_NAME]() !== non\n      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n  });\n};\n","'use strict';\nvar $trimStart = require('../internals/string-trim').start;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.{ trimStart, trimLeft }` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// https://tc39.es/ecma262/#String.prototype.trimleft\nmodule.exports = forcedStringTrimMethod('trimStart') ? function trimStart() {\n  return $trimStart(this);\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n} : ''.trimStart;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true, forced: global.globalThis !== global }, {\n  globalThis: global\n});\n","var $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n  fromEntries: function fromEntries(iterable) {\n    var obj = {};\n    iterate(iterable, function (k, v) {\n      createProperty(obj, k, v);\n    }, { AS_ENTRIES: true });\n    return obj;\n  }\n});\n","var $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimLeft` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimleft\n// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimLeft !== trimStart }, {\n  trimLeft: trimStart\n});\n","// TODO: Remove this line from `core-js@4`\nrequire('../modules/es.string.trim-left');\nvar $ = require('../internals/export');\nvar trimStart = require('../internals/string-trim-start');\n\n// `String.prototype.trimStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.trimstart\n// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe\n$({ target: 'String', proto: true, name: 'trimStart', forced: ''.trimStart !== trimStart }, {\n  trimStart: trimStart\n});\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.global-this');\n","import React from 'react'\n\nconst Fieldset = props => {\n  const { legend, children } = props\n  return (\n    <fieldset className=\"w-full mb-8\">\n      <legend className=\"block w-full mb-4 text-xl font-semibold\">\n        {legend}\n      </legend>\n      <div className=\"flex flex-wrap -mx-2\">{children}</div>\n    </fieldset>\n  )\n}\n\nconst Item = props => {\n  const { children, width } = props\n  return (\n    <div\n      className={`px-2 w-full ${width === 2 ? 'sm:w-1/2' : ''} ${\n        width === 3 ? 'sm:w-1/3' : ''\n      }`}\n    >\n      {children}\n    </div>\n  )\n}\n\nexport const Form = {\n  Fieldset,\n  Item,\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst propTypes = {\n  children: PropTypes.node,\n  className: PropTypes.string,\n}\n\nconst Layout = ({ children, className }) => {\n  return (\n    <section\n      className={`mb-12 xxl:mb-16 block w-full ${className ? className : ''}`}\n    >\n      {children}\n    </section>\n  )\n}\n\nLayout.propTypes = propTypes\n\nexport default Layout\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nconst Note = props => {\n  return (\n    <div className=\"bg-primary-lightest p-4 rounded-lg mb-10 shadow-md\">\n      <div className=\"block border-l-2 border-secondary pl-4 py-1 markdown\">\n        <div className=\"mb-3\">\n          <h4 className=\"text-secondary text-lg font-semibold\">Note</h4>\n        </div>\n        <div className=\"-mb-4 text-md\">{props.children}</div>\n      </div>\n    </div>\n  )\n}\n\nNote.propTypes = {\n  copy: PropTypes.string,\n}\n\nexport default Note\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport Note from 'src/components/Note'\nimport Icon from 'src/components/Icon'\n\nconst propTypes = {\n  topic: PropTypes.string.isRequired,\n}\n\nconst getContent = topic => {\n  switch (topic) {\n    case 'not-received-fiver':\n      return (\n        <>\n          <p className=\"mb-4\">\n            Once you&apos;ve earned 5,000 More Points, you&apos;ll receive a £5\n            More Voucher, at the till on your next shop. You can save your\n            vouchers and redeem as many as you like on a future shopping trip.\n            Remember you can view your current points balance by logging into\n            your Morrisons More card account &nbsp;\n            <a\n              href=\"https://my.morrisons.com/more/#/\"\n              className=\"underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              here\n            </a>\n            &nbsp; or by downloading the Morrisons More Card app to your phone.\n          </p>\n          <p className=\"mb-4\">\n            If you&apos;ve set your in store vouchers to be requested rather\n            than automatically printed at the checkout, you will need to request\n            them, You can do that by logging into your Morrisons More card\n            account &nbsp;\n            <a\n              href=\"https://my.morrisons.com/more/#/\"\n              className=\"underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              here\n            </a>\n            &nbsp; or by downloading the Morrisons More Card app to your phone.\n          </p>\n          <p>\n            If you think you should have had a Morrisons More voucher but you\n            haven’t please complete the details below and we will look into this\n          </p>\n        </>\n      )\n    case 'requested-wrong-fiver':\n      return (\n        <>\n          <p className=\"mb-4\">\n            If you have chosen to use your Morrisons fivers in store but would\n            prefer to use them online or you have been using them online but\n            would now like to use them in store you can change your preferences\n            by logging into your Morrisons More card account &nbsp;\n            <a\n              href=\"https://my.morrisons.com/more/#/\"\n              className=\"underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              here\n            </a>\n            &nbsp; or by downloading the Morrisons More Card app to your phone.\n          </p>\n\n          <p>\n            If you have already requested your Morrisons fivers and want to\n            change them please complete the details below and we will look into\n            this\n          </p>\n        </>\n      )\n    case 'requested-many-fivers':\n      return (\n        <>\n          <p className=\"mb-4\">\n            If you are using your Fivers in store we can arrange to cancel any\n            extra vouchers and put the point back on your More card so that you\n            can request whatever number of fivers you wish to.\n          </p>\n\n          <p className=\"mb-4\">\n            If you are using your Fivers online you will need to tell us how you\n            want your online voucher made up so that we can issue new online\n            voucher codes to the value you require.\n          </p>\n\n          <p>\n            Please complete all the information requested below and we will\n            arrange to make the changes for you.\n          </p>\n        </>\n      )\n    case 'how-do-i-return-my-order-get-a-refund':\n      return (\n        <>\n          <p className=\"font-semibold\">Returning an unwanted item(s)</p>\n          <p>\n            If you would like to return an item you have bought online, just\n            return the item within 30 days of receipt. You will need to provide\n            proof of purchase, which is in your parcel and we will return the\n            cost of your purchase.\n          </p>\n          <p>\n            If you have simply changed your mind and no longer require the item,\n            that&apos;s fine but, the item must be returned in its original\n            packaging and in a re-saleable condition. This does not affect your\n            statutory rights if goods are faulty or not as described. Please see\n            our terms and conditions of sale for more information regarding the\n            return of any faulty or not as described items received.\n          </p>\n          <p className=\"font-semibold\">\n            We have 3 options for you to return your unwanted item(s):\n          </p>\n          <div className=\"mb-6\">\n            <span className=\"block\">To any Morrisons store - FREE</span>\n            <span className=\"block\">Return by Post - at your Cost</span>\n            <span className=\"block\">\n              Return via Hermes - fixed price of £2.97\n            </span>\n          </div>\n          <div className=\"mb-6\">\n            <a\n              href=\"https://nutmeg.morrisons.com/eshop/cms/action/view/contentId/594533/?utm_source=nutmeg&utm_medium=Internal&utm_campaign=footer_link\"\n              className=\"flex underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              <span>\n                Find out more information on your return options on the Nutmeg\n                website\n              </span>\n              <span>\n                <Icon\n                  icon=\"openNewWindow\"\n                  className=\"w-5 h-5 ml-2 fill-current\"\n                />\n              </span>\n            </a>\n          </div>\n        </>\n      )\n    case 'how-do-i-check-if-something-is-in-stock':\n      return (\n        <>\n          <p>\n            The Nutmeg website shows current availability &amp; sizes for your\n            selected item(s).\n          </p>\n          <p>\n            We&apos;re sorry if a particular item or size is currently\n            unavailable, the website will be updated when new stock becomes\n            available.\n          </p>\n          <div className=\"mb-6\">\n            <a\n              href=\"https://nutmeg.morrisons.com?utm_source=nutmeg&utm_medium=Internal&utm_campaign=footer_link\"\n              className=\"flex underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              <span>\n                Check the latest size and availability on the Nutmeg website\n              </span>\n              <span>\n                <Icon\n                  icon=\"openNewWindow\"\n                  className=\"w-5 h-5 ml-2 fill-current\"\n                />\n              </span>\n            </a>\n          </div>\n        </>\n      )\n    case 'what-are-the-delivery-options-charges':\n      return (\n        <>\n          <p className=\"font-semibold\">Home Delivery</p>\n          <p>\n            Hermes is our Nutmeg courier service. When we hand your order over\n            to Hermes they will provide you with email confirmation and full\n            tracking of your order. On the day of delivery, they will give you a\n            4-hour window, for you to be available to receive the order at your\n            specified delivery location. If you miss your delivery, via the\n            Hermes email you will be able to rearrange delivery for your\n            convenience.\n          </p>\n          <div className=\"mb-6\">\n            <a\n              href=\"https://nutmeg.morrisons.com/expressdelivery?utm_source=nutmeg&utm_medium=Internal&utm_campaign=footer_link\"\n              className=\"flex h-2underline text-secondary\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              <span>\n                Find out more information on our delivery options &amp; prices\n                on the Nutmeg website{' '}\n              </span>\n              <span>\n                <Icon\n                  icon=\"openNewWindow\"\n                  className=\"w-5 h-5 ml-2 fill-current\"\n                />\n              </span>\n            </a>\n          </div>\n        </>\n      )\n    case 'i-have-a-question-about-my-old-points-balance':\n      return (\n        <>\n          <p>\n            To view your current points balance please log into your account via\n            the app or log in at morrisons.com.\n          </p>\n          <p>\n            If you have enough points for a £5 voucher just click on request my\n            voucher.\n          </p>\n          <a\n            href=\"https://morrisons.com\"\n            className=\"flex underline text-secondary\"\n            rel=\"noopener noreferrer\"\n            target=\"_blank\"\n          >\n            <span>Visit morrisons.com</span>\n            <span>\n              <Icon\n                icon=\"openNewWindow\"\n                className=\"w-5 h-5 ml-2 fill-current\"\n              />\n            </span>\n          </a>\n          <p></p>\n        </>\n      )\n    default:\n      return null\n  }\n}\n\nconst TopicNote = ({ topic }) => {\n  const content = getContent(topic)\n  if (!content) {\n    return null\n  }\n  return <Note>{content}</Note>\n}\n\nTopicNote.propTypes = propTypes\n\nexport default TopicNote\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields/'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Product name',\n}\n\nconst ProductName = ({ label }) => {\n  return (\n    <>\n      <Label fieldId=\"product_name\" labelText={label} />\n      <FastField\n        name=\"product_name\"\n        id=\"product_name\"\n        maxLength=\"50\"\n        component={InputField}\n        validate={value => validateString(value, 'Product name', true)}\n      />\n    </>\n  )\n}\n\nProductName.propTypes = propTypes\nProductName.defaultProps = defaultProps\n\nexport default ProductName\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields'\nimport { validateNumber } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  validate: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Product bar code',\n  validate: 'Yes',\n}\n\nconst ProductBarCode = ({ label, validate }) => {\n  const validateProp =\n    validate === 'Yes'\n      ? { validate: value => validateNumber(value, 'Product barcode', true) }\n      : {}\n\n  return (\n    <>\n      <Label\n        fieldId=\"product_barcode\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Product barcode</h3><p>The barcode is the 13 digit long number under the black & white stripes.</p>\"\n      />\n      <FastField\n        name=\"product_barcode\"\n        id=\"product_barcode\"\n        maxLength=\"25\"\n        component={InputField}\n        {...validateProp}\n      />\n    </>\n  )\n}\n\nProductBarCode.propTypes = propTypes\nProductBarCode.defaultProps = defaultProps\n\nexport default ProductBarCode\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Product batch code',\n}\nconst ProductBatchCode = ({ label }) => {\n  return (\n    <>\n      <Label\n        fieldId=\"product_batchcode\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Product Batch Code</h3><p>This information is usually found with the date as demonstrated in the picture below.</p><div style='margin:16px auto 16px 0'><img style='border:1px green solid;' alt='Product batch Code' src='https://images.morrisons.com/helphub/tip-product-batch-code.png' /></div><p>In the example, the product was manufactured in 2019 on the 312 day of the year.  which is the 9312. It was packed at 01:08 on machine E1B in the Corby factory.  This enables the manufacturer to identify the specific batch.</p>\"\n      />\n      <FastField\n        name=\"product_batchcode\"\n        id=\"product_batchcode\"\n        maxLength=\"25\"\n        component={InputField}\n        validate={value => validateString(value, 'Product batch code', true)}\n      />\n    </>\n  )\n}\n\nProductBatchCode.propTypes = propTypes\nProductBatchCode.defaultProps = defaultProps\n\nexport default ProductBatchCode\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateEmail } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Email address',\n  id: 'email',\n}\n\nconst CustomerEmail = ({ label, id }) => {\n  return (\n    <>\n      <Label\n        labelText={label}\n        fieldId={id}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Email address</h3><p>If you have a Morrisons.com or Morrisons Loyalty Account already registered, please enter the email used to log into your account.</p>\"\n      />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"80\"\n        type=\"email\"\n        validate={value => validateEmail(value, true)}\n      />\n    </>\n  )\n}\n\nCustomerEmail.propTypes = propTypes\nCustomerEmail.defaultProps = defaultProps\n\nexport default CustomerEmail\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Last name',\n  id: 'surname',\n}\n\nconst CustomerLastName = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"80\"\n        validate={value => validateString(value, 'Last name', true)}\n      />\n    </>\n  )\n}\n\nCustomerLastName.propTypes = propTypes\nCustomerLastName.defaultProps = defaultProps\n\nexport default CustomerLastName\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'First name',\n  id: 'first_name',\n}\n\nconst CustomerFirstName = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"80\"\n        validate={value => validateString(value, 'First name', true)}\n      />\n    </>\n  )\n}\n\nCustomerFirstName.propTypes = propTypes\nCustomerFirstName.defaultProps = defaultProps\n\nexport default CustomerFirstName\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateNumber } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Telephone',\n  id: 'telephone',\n}\n\nconst CustomerEmail = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        type=\"tel\"\n        maxLength=\"40\"\n        component={InputField}\n        validate={value => validateNumber(value, 'Telephone number', true)}\n      />\n    </>\n  )\n}\n\nCustomerEmail.propTypes = propTypes\nCustomerEmail.defaultProps = defaultProps\n\nexport default CustomerEmail\n","import React, { useState } from 'react'\nimport { FastField } from 'formik'\nimport { Label, FormError } from '../../fields'\nimport { validateMoreCardNumber } from '../validation'\nimport Icon from 'src/components/Icon'\n\nconst SelectNumbers = ({ field, form, handleChange, ...props }) => {\n  const { name, value } = field\n  const onChange = event => {\n    handleChange(event)\n    if (event.target.value === '') {\n      form.setFieldValue('more_card_last_digits', '')\n    }\n    field.onChange(event)\n  }\n  return (\n    <>\n      <div className=\"relative flex flex-1\">\n        <select\n          {...field}\n          onChange={onChange}\n          className=\"block w-full px-6 py-4 text-lg rounded-lg appearance-none bg-primary-lighter\"\n        >\n          <option value=\"\">Card Starts with</option>\n          <option value=\"982613580\">9826 13580</option>\n          <option value=\"982613590\">9826 13590</option>\n        </select>\n        <div className=\"absolute inset-y-0 right-0 flex items-center text-gray-700 pointer-events-none\">\n          <Icon icon=\"selectArrows\" className=\"w-5 h-5 mr-2 fill-current\" />\n        </div>\n      </div>\n    </>\n  )\n}\n\nconst InputField = ({ field, form, ...props }) => {\n  const { errors, touched } = form\n  const { name, value } = field\n  return (\n    <>\n      <div className=\"flex flex-1\">\n        <input\n          {...field}\n          {...props}\n          maxLength=\"11\"\n          value={value || ''}\n          className=\"w-full px-6 py-4 ml-2 text-lg placeholder-black rounded-lg bg-primary-lighter\"\n        />\n      </div>\n      {value && errors[name] && touched[name] ? (\n        <div className=\"\">\n          <FormError error={errors[name]} />\n        </div>\n      ) : (\n        value &&\n        !validateMoreCardNumber(value) && (\n          <p className=\"flex items-center w-full mt-2 mb-3 text-secondary\">\n            <Icon\n              icon=\"check\"\n              className=\"w-6 h-6 p-1 mr-2 rounded-full text-secondary bg-primary-lighter\"\n            />\n            Great! You added a valid Morrisons More Card Number\n          </p>\n        )\n      )}\n    </>\n  )\n}\n\nconst MoreCardNumber = () => {\n  const [selectedNumbers, setSelectedNumbers] = useState('')\n  const handleSelectChange = e => {\n    setSelectedNumbers(e.target.value)\n  }\n  return (\n    <>\n      <Label\n        labelText=\"Morrisons More Card Number\"\n        fieldId=\"more_card_last_digits\"\n        helpText=\"(Optional)\"\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Morrisons More Card Number</h3><p>Your Morrisons More Card number can be found on your physical card, or on your Morrisons Loyalty App.</p>\"\n      />\n      <div className=\"flex flex-wrap\">\n        <div className=\"flex flex-1\">\n          <FastField\n            defaultValue=\"\"\n            id=\"more_card_first_digits\"\n            name=\"more_card_first_digits\"\n            component={props => (\n              <SelectNumbers {...props} handleChange={handleSelectChange} />\n            )}\n          />\n        </div>\n\n        {selectedNumbers && (\n          <FastField\n            id=\"more_card_last_digits\"\n            name=\"more_card_last_digits\"\n            component={InputField}\n            validate={validateMoreCardNumber}\n          />\n        )}\n      </div>\n    </>\n  )\n}\n\nexport default MoreCardNumber\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { validateString } from '../validation'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Town',\n  id: 'town',\n}\n\nconst AddressPostcode = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText=\"Town\" fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        maxLength=\"255\"\n        component={InputField}\n        validate={value => validateString(value, 'Town', true)}\n      />\n    </>\n  )\n}\n\nAddressPostcode.propTypes = propTypes\nAddressPostcode.defaultProps = defaultProps\n\nexport default AddressPostcode\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validatePostcode } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Postcode',\n  id: 'postcode',\n}\n\nconst AddressPostcode = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"8\"\n        validate={validatePostcode}\n      />\n    </>\n  )\n}\n\nAddressPostcode.propTypes = propTypes\nAddressPostcode.defaultProps = defaultProps\n\nexport default AddressPostcode\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { validateString } from '../validation'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'First line of address',\n  id: 'address',\n}\n\nconst AddressFirstLine = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"255\"\n        validate={value => validateString(value, 'First line of address', true)}\n      />\n    </>\n  )\n}\n\nAddressFirstLine.propTypes = propTypes\nAddressFirstLine.defaultProps = defaultProps\n\nexport default AddressFirstLine\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Second line of address',\n  id: 'address2',\n}\n\nconst AddressSecondLine = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} helpText=\"(Optional)\" />\n      <FastField id={id} name={id} component={InputField} maxLength=\"255\" />\n    </>\n  )\n}\n\nAddressSecondLine.propTypes = propTypes\nAddressSecondLine.defaultProps = defaultProps\n\nexport default AddressSecondLine\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { validateString } from '../validation'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Town',\n  id: 'townPrevious',\n}\n\nconst AddressTownPrevious = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText=\"Town\" fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        maxLength=\"255\"\n        component={InputField}\n        validate={value => validateString(value, 'Town', true)}\n      />\n    </>\n  )\n}\n\nAddressTownPrevious.propTypes = propTypes\nAddressTownPrevious.defaultProps = defaultProps\n\nexport default AddressTownPrevious\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validatePostcode } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Postcode',\n  id: 'postcodePrevious',\n}\n\nconst AddressPostcodePrevious = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"8\"\n        validate={validatePostcode}\n      />\n    </>\n  )\n}\n\nAddressPostcodePrevious.propTypes = propTypes\nAddressPostcodePrevious.defaultProps = defaultProps\n\nexport default AddressPostcodePrevious\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { validateString } from '../validation'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'First line of address',\n  id: 'addressPrevious',\n}\n\nconst AddressFirstLinePrevious = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"255\"\n        validate={value => validateString(value, 'First line of address', true)}\n      />\n    </>\n  )\n}\n\nAddressFirstLinePrevious.propTypes = propTypes\nAddressFirstLinePrevious.defaultProps = defaultProps\n\nexport default AddressFirstLinePrevious\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Second line of address',\n  id: 'address2Previous',\n}\n\nconst AddressSecondLinePrevious = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} helpText=\"(Optional)\" />\n      <FastField id={id} name={id} component={InputField} maxLength=\"255\" />\n    </>\n  )\n}\n\nAddressSecondLinePrevious.propTypes = propTypes\nAddressSecondLinePrevious.defaultProps = defaultProps\n\nexport default AddressSecondLinePrevious\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, TextAreaField } from '../../fields'\nimport { validateTextArea } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n  value: PropTypes.string,\n  helpText: PropTypes.string,\n  isDynamic: PropTypes.bool,\n}\n\nconst defaultProps = {\n  label: 'Tell us about your enquiry',\n  id: 'description',\n  value: '',\n  helpText: '',\n  rows: '5',\n  required: true,\n  isDynamic: false,\n}\n\nconst Message = ({ label, id, value, helpText, rows, required, isDynamic }) => {\n  if (isDynamic) {\n    return (\n      <>\n        <textarea hidden id={id} name={id} value={value} rows={rows} />\n      </>\n    )\n  } else {\n    return (\n      <>\n        <Label fieldId={id} labelText={label} helpText={helpText} />\n        <FastField\n          id={id}\n          name={id}\n          rows={rows}\n          component={TextAreaField}\n          validate={value =>\n            validateTextArea(value, 'Enquiry information', required)\n          }\n        />\n      </>\n    )\n  }\n}\n\nMessage.propTypes = propTypes\nMessage.defaultProps = defaultProps\n\nexport default Message\n","import React, { useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, TextAreaField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n  value: PropTypes.string,\n  helpText: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Tell us about your enquiry',\n  id: 'description',\n  value: '',\n  helpText: '',\n  rows: '5',\n  required: false,\n}\n\nconst MessageAndAddress = ({ label, id, value, helpText, rows, required }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} helpText={helpText} />\n      <p>{value}</p>\n      <FastField\n        id={id}\n        name={id}\n        value={value}\n        rows={rows}\n        component={TextAreaField}\n      />\n    </>\n  )\n}\n\nMessageAndAddress.propTypes = propTypes\nMessageAndAddress.defaultProps = defaultProps\n\nexport default MessageAndAddress\n","import React, { useState, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { Field, connect } from 'formik'\nimport { Form } from '../Form'\nimport Icon from 'src/components/Icon'\nimport { validateString } from '../validation'\nimport { getStoresFromLocation } from '../../../../../core'\nimport { Label, SelectField, StoreFinderInput } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n  morrisonsDaily: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Postcode',\n  id: 'store_name',\n  morrisonsDaily: 'both',\n}\n\nconst StoreFinder = props => {\n  const { label, morrisonsDaily, id, formik } = props\n  const {\n    values: { postcode_1: location },\n    setFieldValue,\n  } = formik\n\n  const [stores, setStores] = useState()\n  const [loading, setLoading] = useState(false)\n  const [error, setError] = useState('')\n  const storeNameWrapperRef = useRef(null)\n\n  const getStoreList = async () => {\n    if (location) {\n      setStores(null)\n      setLoading(true)\n      setError('')\n      try {\n        let storesList = await getStoresFromLocation(location, morrisonsDaily)\n        setStores(storesList.stores)\n        if (storeNameWrapperRef.current) {\n          setFieldValue(id, '')\n        }\n        setLoading(false)\n      } catch (error) {\n        setLoading(false)\n        setError('error')\n      }\n    }\n  }\n\n  const handleClick = e => {\n    e.preventDefault()\n    getStoreList()\n  }\n\n  const handleKeyDown = e => {\n    if (e.keyCode === 13) {\n      e.preventDefault()\n      getStoreList()\n    }\n  }\n\n  return (\n    <div className=\"flex flex-wrap -mx-2\">\n      <Form.Item width={2}>\n        <Label fieldId=\"postcode_1\" labelText={label} />\n        <Field\n          id=\"postcode_1\"\n          name=\"postcode_1\"\n          validate={() => {\n            if (storeNameWrapperRef.current) {\n              return\n            } else {\n              setError('error')\n            }\n          }}\n          component={StoreFinderInput}\n          onKeyDown={e => handleKeyDown(e)}\n        >\n          <button\n            onClick={e => handleClick(e)}\n            className={`px-4 sm:px-5 text-center rounded-r-lg bg-secondary border border-secondary text-white\n             font-semibold hover:bg-secondary-dark disabled:opacity-50 disabled:cursor-not-allowed relative`}\n          >\n            <span className={`${loading ? 'opacity-0' : ''}`}>\n              Find a store\n            </span>\n            <span\n              className={`${\n                loading ? '' : 'opacity-0'\n              } absolute left-0 top-0 right-0 mx-auto w-10 mt-1`}\n            >\n              <Icon icon=\"searchIconLoading\" />\n            </span>\n          </button>\n        </Field>\n      </Form.Item>\n      <Form.Item width={2}>\n        {stores && (\n          <div\n            className={`${loading ? 'opacity-0' : ' transition-all'}`}\n            ref={storeNameWrapperRef}\n          >\n            <Label\n              fieldId={id}\n              labelText={`${\n                morrisonsDaily === 'yes' ? 'Morrisons Daily' : 'Store'\n              }`}\n            />\n            <Field\n              key={location}\n              id={id}\n              name={id}\n              component={SelectField}\n              validate={value => validateString(value, 'Store', true)}\n              className=\"relative inline-block\"\n            >\n              {[\n                <option value=\"\" key=\"default-store\">\n                  {morrisonsDaily === 'yes'\n                    ? 'Select a Morrisons Daily'\n                    : 'Select a store'}\n                </option>,\n              ].concat(\n                stores.length &&\n                  stores.map(store => (\n                    <option\n                      key={store.name}\n                      value={`${store.name} ${store.storeName}`}\n                    >\n                      {store.storeFormat === 'pfs'\n                        ? `Morrisons ${store.storeName}`\n                        : store.storeFormat === 'supermarket' &&\n                          Number(store.name) < 1000\n                        ? `Morrisons ${store.storeName} Store`\n                        : store.storeName}\n                    </option>\n                  ))\n              )}\n            </Field>\n          </div>\n        )}\n      </Form.Item>\n      {error && (\n        <div className=\"mb-3 ml-2 -mt-3 text-base text-error\">\n          Please enter a valid Postcode, then click &apos;Find a store&apos;\n        </div>\n      )}\n    </div>\n  )\n}\n\nStoreFinder.defaultProps = defaultProps\nStoreFinder.propTypes = propTypes\n\nexport default connect(StoreFinder)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field, connect } from 'formik'\nimport { Label, SearchableSelect } from '../../fields'\nimport { useGardeningItemsListData } from '../../../../../core/customHooks'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Choose from the list below',\n  id: 'product',\n}\n\nconst GardeningLeisureProducts = ({ label, id }) => {\n  const { items, loading } = useGardeningItemsListData()\n  let options = []\n\n  if (items && items.length) {\n    options = [{ value: '', label: 'Select...' }].concat(\n      items.map(item => ({\n        value: item.Product_ID,\n        label: item.Product_Description,\n      }))\n    )\n  }\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <Field\n        id={id}\n        name={id}\n        options={options}\n        isLoading={loading}\n        component={SearchableSelect}\n      ></Field>\n    </>\n  )\n}\n\nGardeningLeisureProducts.propTypes = propTypes\nGardeningLeisureProducts.defaultProps = defaultProps\n\nexport default connect(GardeningLeisureProducts)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { DateField, Label } from '../../fields'\nimport { validateDate } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst Date = ({ label, id }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} />\n      <FastField\n        name={id}\n        id={id}\n        component={DateField}\n        validate={value => validateDate(value, 'Date', true)}\n      />\n    </>\n  )\n}\n\nDate.propTypes = propTypes\n\nexport default Date\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { DateTimeField, Label } from '../../fields'\nimport { validateDate } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst DateTime = ({ label, id }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} />\n      <FastField\n        name={id}\n        id={id}\n        component={DateTimeField}\n        validate={value => validateDate(value, 'Date/Time', true)}\n      />\n    </>\n  )\n}\n\nDateTime.propTypes = propTypes\n\nexport default DateTime\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { DateField, Label } from '../../fields'\nimport { validateDate } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst defaultProps = {\n  label: 'Product best before or use by date',\n}\n\nconst DateBestBefore = ({ label }) => {\n  return (\n    <>\n      <Label\n        fieldId=\"product_useby\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Product best before or use by date</h3><p>You can find this generally on the front of the product packaging.</p>\"\n      />\n      <FastField\n        name=\"product_useby\"\n        id=\"product_useby\"\n        component={DateField}\n        validate={value => validateDate(value, 'Date', true)}\n      />\n    </>\n  )\n}\n\nDateBestBefore.propTypes = propTypes\nDateBestBefore.defaultProps = defaultProps\n\nexport default DateBestBefore\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { DateField, Label } from '../../fields'\nimport { validateDate } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst defaultProps = {\n  label: 'Date Of Issue',\n}\n\nconst DateOfIssue = ({ label }) => {\n  return (\n    <>\n      <Label\n        fieldId=\"parking_charge_issue_date\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Date Of Issue</h3><p>The parking charge issue date is detailed on the top of the letter you have received.</p>\"\n      />\n      <FastField\n        name=\"parking_charge_issue_date\"\n        id=\"parking_charge_issue_date\"\n        component={DateField}\n        validate={value => validateDate(value, 'Date', true)}\n      />\n    </>\n  )\n}\n\nDateOfIssue.propTypes = propTypes\nDateOfIssue.defaultProps = defaultProps\n\nexport default DateOfIssue\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { DateField, Label } from '../../fields'\nimport { validateDate } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst defaultProps = {\n  label: 'Date of Delivery',\n}\n\nconst DateOfDelivery = ({ label }) => {\n  return (\n    <>\n      <Label\n        fieldId=\"Date_of_Delivery\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Date of Delivery</h3><p>This is the date your order was scheduled for delivery or collection.</p>\"\n      />\n      <FastField\n        name=\"Date_of_Delivery\"\n        id=\"Date_of_Delivery\"\n        component={DateField}\n        validate={value => validateDate(value, 'Date', true)}\n      />\n    </>\n  )\n}\n\nDateOfDelivery.propTypes = propTypes\nDateOfDelivery.defaultProps = defaultProps\n\nexport default DateOfDelivery\n","import React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { connect } from 'formik'\nimport { Label } from '../../fields/'\nimport Uppy from '@uppy/core'\nimport XHRUpload from '@uppy/xhr-upload'\nimport { Dashboard } from '@uppy/react'\nimport '@uppy/core/dist/style.css'\nimport '@uppy/dashboard/dist/style.css'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Supporting files',\n  id: 'supporting_files',\n}\n\nconst uppy = Uppy({\n  autoProceed: true,\n  restrictions: {\n    maxFileSize: 10485760,\n    maxNumberOfFiles: 10,\n    allowedFileTypes: ['image/*', '.jpg', '.jpeg', '.png'],\n  },\n})\n\nuppy.use(XHRUpload, {\n  endpoint: `${process.env.BASE_URL}api/contacthub/mediaupload`,\n  fieldName: 'UploadedImage[]',\n})\n\nlet uploaded = []\n\nconst SupportingFiles = props => {\n  const { label, id } = props\n  const {\n    formik: { setFieldValue },\n  } = props\n\n  useEffect(() => {\n    uppy.off('complete').on('complete', result => {\n      if (!result.successful || !result.successful.length) return\n      uploaded = [...uploaded, result.successful[0].response.body[0].S3_Url]\n      setFieldValue(id, uploaded.join('\\n'))\n    })\n\n    return () => {\n      uploaded = []\n      uppy.reset()\n    }\n  }, [id, setFieldValue])\n\n  return (\n    <>\n      <Label labelText={label} />\n      <div className=\"mb-6 bg-primary-lighter\">\n        <Dashboard\n          uppy={uppy}\n          height=\"300px\"\n          width=\"100%\"\n          inline={true}\n          note=\"Maximum file size is 10MB\"\n        />\n      </div>\n    </>\n  )\n}\n\nSupportingFiles.propTypes = propTypes\nSupportingFiles.defaultProps = defaultProps\n\nexport default connect(React.memo(SupportingFiles))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport SecondaryButton from '../../../../SecondaryButton'\n\nconst propTypes = {\n  text: PropTypes.string,\n}\n\nconst defaultProps = {\n  text: 'Send message',\n}\n\nconst SubmitButton = ({ text }) => {\n  return (\n    <div className=\"my-8\">\n      <SecondaryButton type=\"submit\" cy=\"send-message\">\n        {text}\n      </SecondaryButton>\n    </div>\n  )\n}\n\nSubmitButton.propTypes = propTypes\nSubmitButton.defaultProps = defaultProps\n\nexport default SubmitButton\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { SelectField, Label } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Tell us what region you are in',\n  id: 'region_select',\n}\n\nconst RegionSelect = ({ label, id }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} />\n      <FastField\n        defaultValue=\"\"\n        id={id}\n        name={id}\n        component={SelectField}\n        className=\"inline-block relative\"\n      >\n        <option value=\"\" disabled=\"disabled\">\n          Please select a region\n        </option>\n        <option value=\"east-of-england\">East of England</option>\n        <option value=\"east-midlands\">East Midlands</option>\n        <option value=\"london\">London</option>\n        <option value=\"north-east\">North East</option>\n        <option value=\"north-west\">North West</option>\n        <option value=\"scotland\">Scotland</option>\n        <option value=\"south-east\">South East</option>\n        <option value=\"south-west\">South West</option>\n        <option value=\"west-midlands\">West Midlands</option>\n        <option value=\"wales\">Wales</option>\n        <option value=\"yorkshire-&amp;-the-humber\">\n          Yorkshire &amp; the Humber\n        </option>\n      </FastField>\n    </>\n  )\n}\n\nRegionSelect.propTypes = propTypes\nRegionSelect.defaultProps = defaultProps\n\nexport default RegionSelect\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField, connect } from 'formik'\nimport { RadioField, FormError } from '../../fields'\nimport { validateRadio } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst hasErrors = ({ id, formik: { errors, submitCount } }) => {\n  if (submitCount > 0 && errors[id]) {\n    return true\n  }\n  return false\n}\n\nconst OptionGroup = ({ formik, label, id }) => {\n  return (\n    <div\n      className=\"mb-6\"\n      role=\"radiogroup\"\n      aria-labelledby={id}\n      aria-describedby={id}\n    >\n      <p className=\"mb-2 font-semibold text-md text-body-light\" id={id}>\n        {label}\n      </p>\n      <div className=\"flex flex-wrap -mx-2\">\n        <div className=\"px-2\">\n          <FastField\n            component={RadioField}\n            id={`${id}_yes`}\n            radioValue=\"Yes\"\n            name={id}\n            text=\"Yes\"\n            validate={validateRadio}\n          />\n        </div>\n        <div className=\"px-2\">\n          <FastField\n            component={RadioField}\n            id={`${id}_no`}\n            name={id}\n            radioValue=\"No\"\n            text=\"No\"\n            validate={validateRadio}\n          />\n        </div>\n      </div>\n\n      {hasErrors({ id, formik }) && <FormError error={formik.errors[id]} />}\n    </div>\n  )\n}\n\nOptionGroup.propTypes = propTypes\n\nexport default connect(OptionGroup)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField, connect } from 'formik'\nimport { RadioField, FormError } from '../../fields'\nimport { validateRadio } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  id: PropTypes.string.isRequired,\n}\n\nconst hasErrors = ({ id, formik: { errors, submitCount } }) => {\n  if (submitCount > 0 && errors[id]) {\n    return true\n  }\n  return false\n}\n\nconst OptionGroupRedirect = ({ formik, label, id }) => {\n  return (\n    <div\n      className=\"mb-6\"\n      role=\"radiogroup\"\n      aria-labelledby={id}\n      aria-describedby={id}\n    >\n      <p className=\"mb-2 font-semibold text-md text-body-light\" id={id}>\n        {label}\n      </p>\n      <div className=\"flex flex-wrap -mx-2\">\n        <div className=\"px-2\">\n          <FastField\n            component={RadioField}\n            id={`${id}_instore`}\n            radioValue=\"Instore\"\n            name={id}\n            text=\"Instore\"\n            validate={validateRadio}\n          />\n        </div>\n        <div className=\"px-2\">\n          <FastField\n            component={RadioField}\n            id={`${id}_online`}\n            name={id}\n            radioValue=\"online-shopping\"\n            text=\"Online/Click and Collect\"\n            validate={validateRadio}\n          />\n        </div>\n      </div>\n\n      {hasErrors({ id, formik }) && <FormError error={formik.errors[id]} />}\n    </div>\n  )\n}\n\nOptionGroupRedirect.propTypes = propTypes\n\nexport default connect(OptionGroupRedirect)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { CheckboxField } from '../../fields'\nimport { validateCheckbox } from '../validation'\n\nconst propTypes = {\n  required: PropTypes.bool,\n  id: PropTypes.string.isRequired,\n  label: PropTypes.string.isRequired,\n}\n\nconst Confirmation = ({ id, label, required }) => {\n  return (\n    <>\n      <FastField\n        text={label}\n        fieldId={id}\n        name={id}\n        cy={id}\n        component={CheckboxField}\n        validate={value => {\n          if (required) {\n            return validateCheckbox(value, true)\n          }\n        }}\n      />\n    </>\n  )\n}\n\nConfirmation.propTypes = propTypes\n\nexport default Confirmation\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { SelectField, Label } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Name of company issuing the parking charge notice',\n  id: 'parking_company_select',\n}\n\nconst CarParkingCompanySelect = ({ label, id }) => {\n  return (\n    <>\n      <Label\n        fieldId={id}\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Name of company issuing the parking charge notice</h3><p>The parking company selected is detailed on the top of the letter you have received.</p>\"\n      />\n      <FastField\n        defaultValue=\"\"\n        id={id}\n        name={id}\n        component={SelectField}\n        validate={value => {\n          if (!value) return 'Issuing company is required'\n        }}\n      >\n        <option value=\"\">Please select a company</option>\n        <option value=\"Parking Eye\">Parking Eye</option>\n        <option value=\"Euro Car Parks\">Euro Car Parks</option>\n        <option value=\"Other\">Other</option>\n      </FastField>\n    </>\n  )\n}\n\nCarParkingCompanySelect.propTypes = propTypes\nCarParkingCompanySelect.defaultProps = defaultProps\n\nexport default CarParkingCompanySelect\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateCarParkingChargeRef } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Parking charge Ref number',\n  id: 'parking_charge_ref_number',\n}\n\nconst CarParkingChargeRefNo = ({ label, id }) => {\n  return (\n    <>\n      <Label\n        labelText={label}\n        fieldId={id}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Parking charge Ref number</h3><p>The parking charge reference number is detailed on the top of the letter you have received.</p>\"\n      />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"50\"\n        validate={value => validateCarParkingChargeRef(value, true)}\n      />\n    </>\n  )\n}\n\nCarParkingChargeRefNo.propTypes = propTypes\nCarParkingChargeRefNo.defaultProps = defaultProps\n\nexport default CarParkingChargeRefNo\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport { validateCarReg } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Car Registration',\n  id: 'parking_car_reg',\n}\n\nconst CarRegistration = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"10\"\n        validate={value => validateCarReg(value, true)}\n      />\n    </>\n  )\n}\n\nCarRegistration.propTypes = propTypes\nCarRegistration.defaultProps = defaultProps\n\nexport default CarRegistration\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Order ID',\n}\n\nconst BoxOrderId = ({ label }) => {\n  return (\n    <>\n      <Label fieldId=\"box_order_id\" labelText={label} />\n      <FastField\n        name=\"box_order_id\"\n        id=\"box_order_id\"\n        maxLength=\"50\"\n        component={InputField}\n        validate={value => validateString(value, 'Order ID', true)}\n      />\n    </>\n  )\n}\n\nBoxOrderId.propTypes = propTypes\nBoxOrderId.defaultProps = defaultProps\n\nexport default BoxOrderId\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields'\nimport { validateExternalOrderId, validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  isOnlineForm: PropTypes.bool,\n}\n\nconst defaultProps = {\n  label: 'Order ID',\n  isOnlineForm: false,\n}\n\nconst ExternalOrderId = ({ label, isOnlineForm }) => {\n  return (\n    <>\n      <Label\n        fieldId=\"external_order_id\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Order ID</h3><p>This is the order reference number included in your order confirmation email.</p>\"\n      />\n      <FastField\n        name=\"external_order_id\"\n        id=\"external_order_id\"\n        maxLength=\"50\"\n        component={InputField}\n        validate={value =>\n          isOnlineForm\n            ? validateExternalOrderId(value, true)\n            : validateString(value, 'Order ID', true)\n        }\n      />\n    </>\n  )\n}\n\nExternalOrderId.propTypes = propTypes\nExternalOrderId.defaultProps = defaultProps\n\nexport default ExternalOrderId\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { SelectField, Label } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Type of food box ordered',\n  id: 'food_box_type',\n}\n\nconst BoxSelect = ({ label, id }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} />\n      <FastField\n        defaultValue=\"\"\n        id={id}\n        name={id}\n        component={SelectField}\n        validate={value => {\n          if (!value) return 'Please select a box type'\n        }}\n        className=\"relative inline-block\"\n      >\n        <option value=\"\" disabled=\"disabled\">\n          Please select\n        </option>\n        <option value=\"5 Meals to Feed a Family of 4 Box\">\n          5 Meals to Feed a Family of 4 Box\n        </option>\n        <option value=\"Afternoon Tea Box\">Afternoon Tea Box</option>\n        <option value=\"Alstroemeria Mono Pastel Bouquet\">\n          Alstroemeria Mono Pastel Bouquet\n        </option>\n        <option value=\"BBQ Box\">BBQ Box</option>\n        <option value=\"Best Flower Bouquet with Prosecco & Chocolate Truffles\">\n          Best Flower Bouquet with Prosecco & Chocolate Truffles\n        </option>\n        <option value=\"Best Meat Box\">Best Meat Box</option>\n        <option value=\"Big Match Bundle\">Big Match Bundle</option>\n        <option value=\"Big Night In\">Big Night In</option>\n        <option value=\"Bright Rose Bouquet\">Bright Rose Bouquet</option>\n        <option value=\"British Box\">British Box</option>\n        <option value=\"Chocolate Celebration Cake Box\">\n          Chocolate Celebration Cake Box\n        </option>\n        <option value=\"Craft Beer Box - 12 Ales, 10 Brewers\">\n          Craft Beer Box - 12 Ales, 10 Brewers\n        </option>\n        <option value=\"Craft Beer Box Little & Large Cans\">\n          Craft Beer Box Little & Large Cans\n        </option>\n        <option value=\"Craft Beer - Northern Favourites\">\n          Craft Beer - Northern Favourites\n        </option>\n        <option value=\"Craft Beer - Siren, Thornbridge & Northern Monk\">\n          Craft Beer - Siren, Thornbridge & Northern Monk\n        </option>\n        <option value=\"Cupboard Essentials\">Cupboard Essentials</option>\n        <option value=\"Decorate your own Celebration Cake Box\">\n          Decorate your own Celebration Cake Box\n        </option>\n        <option value=\"Dr Oetker Baking Box\">Dr Oetker Baking Box</option>\n        <option value=\"Family Picnic Box\">Family Picnic Box</option>\n        <option value=\"Fish Box\">Fish Box</option>\n        <option value=\"Fruity Favourites Box\">Fruity Favourites Box</option>\n        <option value=\"Letterbox Flowers Bright Box\">\n          Letterbox Flowers Bright Box\n        </option>\n        <option value=\"Letterbox Flowers Green & White Box\">\n          Letterbox Flowers Green & White Box\n        </option>\n        <option value=\"Letterbox Flowers Pastel Box\">\n          Letterbox Flowers Pastel Box\n        </option>\n        <option value=\"Letterbox Flowers The Summer Blooms\">\n          Letterbox Flowers The Summer Blooms\n        </option>\n        <option value=\"Luxury Ploughman's Picnic Box\">\n          Luxury Ploughman&apos;s Picnic Box\n        </option>\n        <option value=\"Meat\">Meat</option>\n        <option value=\"Mixed Wine Selection\">Mixed Wine Selection</option>\n        <option value=\"Our Florist's Summer Bouquet\">\n          Our Florist&apos;s Summer Bouquet\n        </option>\n        <option value=\"Red Wine Selection\">Red Wine Selection</option>\n        <option value=\"School Meals Box\">School Meals Box</option>\n        <option value=\"Seasonal Bright Bouquet\">Seasonal Bright Bouquet</option>\n        <option value=\"Seasonal Vegetables Box\">Seasonal Vegetables Box</option>\n        <option value=\"Squealing Pig Cheese & Wine Box\">\n          Squealing Pig Cheese & Wine Box\n        </option>\n        <option value=\"The Aperol Cocktail Box\">The Aperol Cocktail Box</option>\n        <option value=\"The Award Winning Wine Box\">\n          The Award Winning Wine Box\n        </option>\n        <option value=\"The Best Medium Hamper\">The Best Medium Hamper</option>\n        <option value=\"The Best Large Hamper\">The Best Large Hamper</option>\n        <option value=\"The Breakfast in Bed Box\">\n          The Breakfast in Bed Box\n        </option>\n        <option value=\"The Sparkling Selection\">The Sparkling Selection</option>\n        <option value=\"The Sports Nutrition Box\">\n          The Sports Nutrition Box\n        </option>\n        <option value=\" The Tennis Treats Box\">The Tennis Treats Box</option>\n        <option value=\"The White Wine Selection\">\n          The White Wine Selection\n        </option>\n        <option value=\"Ultimate Gin Box\">Ultimate Gin Box</option>\n        <option value=\"Vegetarian\">Vegetarian</option>\n        <option value=\"White & Green Mixed Flower Bouquet\">\n          White & Green Mixed Flower Bouquet\n        </option>\n        <option value=\"Woodsman Whisky & S'more Box\">\n          Woodsman Whisky & S&apos;more Box\n        </option>\n        <option value=\"WW Meals in Minutes Selection\">\n          WW Meals in Minutes Selection\n        </option>\n      </FastField>\n    </>\n  )\n}\n\nBoxSelect.propTypes = propTypes\nBoxSelect.defaultProps = defaultProps\n\nexport default BoxSelect\n","import React from 'react'\nimport { FastField, connect, FieldArray } from 'formik'\nimport { Form } from '../Form'\nimport {\n  FieldArrayInputField,\n  FieldArrayTextAreaField,\n  Label,\n  Button,\n} from '../../fields'\nimport { validateString } from '../validation'\n\nconst ProductDetails = props => {\n  const {\n    withSubstitutions,\n    newlabel,\n    singleProduct,\n    formik: { values, errors, touched },\n  } = props\n\n  function hasErrors(index, field) {\n    return errors.product_details &&\n      errors.product_details[index] &&\n      errors.product_details[index][field] &&\n      touched.product_details &&\n      touched.product_details[index] &&\n      touched.product_details[index][field]\n      ? true\n      : false\n  }\n\n  return (\n    <>\n      <FieldArray\n        name=\"product_details\"\n        render={arrayHelpers => {\n          const { remove, push } = arrayHelpers\n          return (\n            <>\n              {values.product_details?.length > 0 &&\n                values.product_details.map((product, index) => {\n                  return (\n                    <section\n                      key={`${index}-product-section`}\n                      className=\"flex flex-wrap min-w-full pt-8 mt-4 border-t border-primary-lighter first:border-transparent first:pt-0 first:mt-0\"\n                    >\n                      <Form.Item width={2}>\n                        <Label\n                          fieldId={`product_details.${index}.item_ordered`}\n                          labelText={\n                            withSubstitutions\n                              ? `Item ordered by you`\n                              : `Item name`\n                          }\n                        />\n                        <FastField\n                          name={`product_details.${index}.item_ordered`}\n                          id={`product_details.${index}.item_ordered`}\n                          component={FieldArrayInputField}\n                          validate={value =>\n                            validateString(value, 'Item name', true)\n                          }\n                          error={\n                            hasErrors(index, 'item_ordered')\n                              ? errors.product_details[index].item_ordered\n                              : ''\n                          }\n                        />\n                      </Form.Item>\n                      {withSubstitutions && (\n                        <Form.Item width={2}>\n                          <Label\n                            fieldId={`product_details.${index}.item_substituted`}\n                            labelText=\"Item sent by Morrisons\"\n                          />\n                          <FastField\n                            name={`product_details.${index}.item_substituted`}\n                            id={`product_details.${index}.item_substituted`}\n                            component={FieldArrayInputField}\n                            validate={value =>\n                              validateString(\n                                value,\n                                'Item sent by Morrisons',\n                                true\n                              )\n                            }\n                            error={\n                              hasErrors(index, 'item_substituted')\n                                ? errors.product_details[index].item_substituted\n                                : ''\n                            }\n                          />\n                        </Form.Item>\n                      )}\n                      <Form.Item width={1}>\n                        {!newlabel && (\n                          <Label\n                            fieldId={`product_details.${index}.feedback`}\n                            labelText={\n                              withSubstitutions\n                                ? `Feedback as to why this isn't a reasonable substitution`\n                                : `Feedback on item`\n                            }\n                          />\n                        )}\n                        {newlabel && (\n                          <Label\n                            fieldId={`product_details.${index}.feedback`}\n                            labelText={newlabel}\n                          />\n                        )}\n                        <FastField\n                          name={`product_details.${index}.feedback`}\n                          id={`product_details.${index}.feedback`}\n                          component={FieldArrayTextAreaField}\n                          validate={value =>\n                            validateString(value, 'Feedback on item', true)\n                          }\n                          error={\n                            hasErrors(index, 'feedback')\n                              ? errors.product_details[index].feedback\n                              : ''\n                          }\n                        />\n                      </Form.Item>\n                      {index > 0 && (\n                        <Form.Item width={1}>\n                          <Button onClick={() => remove(index)}>Remove</Button>\n                        </Form.Item>\n                      )}\n                    </section>\n                  )\n                })}\n              {!singleProduct && (\n                <div className=\"w-full pt-4 my-4 border-t border-primary-lighter\">\n                  <Form.Item width={1}>\n                    <Button\n                      onClick={e => {\n                        e.preventDefault()\n                        push({\n                          item_ordered: '',\n                          item_substituted: '',\n                          feedback: '',\n                        })\n                      }}\n                    >\n                      Add another product +\n                    </Button>\n                  </Form.Item>\n                </div>\n              )}\n            </>\n          )\n        }}\n      />\n    </>\n  )\n}\n\nexport default connect(ProductDetails)\n","import React from 'react'\nimport { FastField, connect, FieldArray } from 'formik'\nimport { Form } from '../Form'\nimport {\n  FieldArrayInputField,\n  FieldArrayTextAreaField,\n  Label,\n  Button,\n} from '../../fields'\nimport { validateString } from '../validation'\n\nconst ProductDetailsFoodBoxes = props => {\n  const {\n    withSecondLabel,\n    firstLabel,\n    secondLabel,\n    formik: { values, errors, touched },\n  } = props\n\n  function hasErrors(index, field) {\n    return errors.product_details &&\n      errors.product_details[index] &&\n      errors.product_details[index][field] &&\n      touched.product_details &&\n      touched.product_details[index] &&\n      touched.product_details[index][field]\n      ? true\n      : false\n  }\n\n  return (\n    <>\n      <FieldArray\n        name=\"product_details\"\n        render={arrayHelpers => {\n          const { remove, push } = arrayHelpers\n          return (\n            <>\n              {values.product_details?.length > 0 &&\n                values.product_details.map((product, index) => {\n                  return (\n                    <section\n                      key={`${index}-product-section`}\n                      className=\"flex flex-wrap min-w-full pt-8 mt-4 border-t border-primary-lighter first:border-transparent first:pt-0 first:mt-0\"\n                    >\n                      <Form.Item width={2}>\n                        <Label\n                          fieldId={`product_details.${index}.item_ordered`}\n                          labelText={firstLabel}\n                        />\n                        <FastField\n                          name={`product_details.${index}.item_ordered`}\n                          id={`product_details.${index}.item_ordered`}\n                          component={FieldArrayInputField}\n                          validate={value =>\n                            validateString(value, 'Item name', true)\n                          }\n                          error={\n                            hasErrors(index, 'item_ordered')\n                              ? errors.product_details[index].item_ordered\n                              : ''\n                          }\n                        />\n                      </Form.Item>\n                      {withSecondLabel && (\n                        <Form.Item width={2}>\n                          <Label\n                            fieldId={`product_details.${index}.item_problem`}\n                            labelText={secondLabel}\n                          />\n                          <FastField\n                            name={`product_details.${index}.item_problem`}\n                            id={`product_details.${index}.item_problem`}\n                            component={FieldArrayInputField}\n                            validate={value =>\n                              validateString(\n                                value,\n                                'Item sent by Morrisons',\n                                true\n                              )\n                            }\n                            error={\n                              hasErrors(index, 'item_problem')\n                                ? errors.product_details[index].item_problem\n                                : ''\n                            }\n                          />\n                        </Form.Item>\n                      )}\n                      <Form.Item width={1}>\n                        <Label\n                          fieldId={`product_details.${index}.feedback`}\n                          labelText=\"Your Feedback\"\n                        />\n                        <FastField\n                          name={`product_details.${index}.feedback`}\n                          id={`product_details.${index}.feedback`}\n                          component={FieldArrayTextAreaField}\n                          validate={value =>\n                            validateString(value, 'Feedback on item', true)\n                          }\n                          error={\n                            hasErrors(index, 'feedback')\n                              ? errors.product_details[index].feedback\n                              : ''\n                          }\n                        />\n                      </Form.Item>\n                      {index > 0 && (\n                        <Form.Item width={1}>\n                          <Button onClick={() => remove(index)}>Remove</Button>\n                        </Form.Item>\n                      )}\n                    </section>\n                  )\n                })}\n              <div className=\"w-full pt-4 my-4 border-t border-primary-lighter\">\n                <Form.Item width={1}>\n                  <Button\n                    onClick={e => {\n                      e.preventDefault()\n                      push({\n                        item_ordered: '',\n                        item_problem: '',\n                        feedback: '',\n                      })\n                    }}\n                  >\n                    Add another product +\n                  </Button>\n                </Form.Item>\n              </div>\n            </>\n          )\n        }}\n      />\n    </>\n  )\n}\n\nexport default connect(ProductDetailsFoodBoxes)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { SelectField, Label } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: \"Please select the issue you're having with Scan & Shop\",\n  id: 'scan_shop_issues',\n}\n\nconst ScanShopSelect = ({ label, id }) => {\n  return (\n    <>\n      <Label fieldId={id} labelText={label} />\n      <FastField\n        defaultValue=\"\"\n        id={id}\n        name={id}\n        component={SelectField}\n        validate={value => {\n          if (!value)\n            return \"Please select the issue you're having with Scan & Shop\"\n        }}\n        className=\"relative inline-block\"\n      >\n        <option value=\"\" disabled=\"disabled\">\n          Please select\n        </option>\n        <option value=\"Internet\">Internet</option>\n        <option value=\"App Barcode\">App Barcode</option>\n        <option value=\"Basket Transfer\">Basket Transfer</option>\n        <option value=\"Payment\">Payment</option>\n        <option value=\"In Store Colleagues\">In Store Colleagues</option>\n        <option value=\"Basket Re-scan\">Basket Re-scan</option>\n      </FastField>\n    </>\n  )\n}\n\nScanShopSelect.propTypes = propTypes\nScanShopSelect.defaultProps = defaultProps\n\nexport default ScanShopSelect\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { InputField, Label } from '../../fields/'\n\nconst propTypes = {\n  label: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Name of the Staff Member',\n}\n\nconst StaffName = ({ label }) => {\n  return (\n    <>\n      <Label fieldId=\"staff_name\" labelText={label} />\n      <FastField\n        name=\"staff_name\"\n        id=\"staff_name\"\n        maxLength=\"50\"\n        component={InputField}\n      />\n    </>\n  )\n}\n\nStaffName.propTypes = propTypes\nStaffName.defaultProps = defaultProps\n\nexport default StaffName\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Parking charge Ref number',\n  id: 'parking_charge_ref_number',\n}\n\nconst CafeMealPurchased = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField id={id} name={id} component={InputField} maxLength=\"50\" />\n    </>\n  )\n}\n\nCafeMealPurchased.propTypes = propTypes\nCafeMealPurchased.defaultProps = defaultProps\n\nexport default CafeMealPurchased\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field } from 'formik'\nimport { HiddenField } from '../../fields/'\n\nconst propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.string,\n}\n\nconst defaultProps = {\n  id: 'dynamic_case_category',\n  value: 'none',\n}\n\nconst DynamicValuesCaseCategory = ({ id, value }) => {\n  return (\n    <>\n      <Field name={id} id={id} component={HiddenField} value={value} />\n    </>\n  )\n}\n\nDynamicValuesCaseCategory.propTypes = propTypes\nDynamicValuesCaseCategory.defaultProps = defaultProps\n\nexport default DynamicValuesCaseCategory\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field } from 'formik'\nimport { HiddenField } from '../../fields/'\n\nconst propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.string,\n}\n\nconst defaultProps = {\n  id: 'dynamic_case_type',\n  value: 'none',\n}\n\nconst DynamicValuesCaseType = ({ id, value }) => {\n  return (\n    <>\n      <Field name={id} id={id} component={HiddenField} value={value} />\n    </>\n  )\n}\n\nDynamicValuesCaseType.propTypes = propTypes\nDynamicValuesCaseType.defaultProps = defaultProps\n\nexport default DynamicValuesCaseType\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field } from 'formik'\nimport { HiddenField } from '../../fields/'\n\nconst propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.string,\n}\n\nconst defaultProps = {\n  id: 'dynamic_case_reason',\n  value: 'none',\n}\n\nconst DynamicValuesCaseReason = ({ id, value }) => {\n  return (\n    <>\n      <Field name={id} id={id} component={HiddenField} value={value} />\n    </>\n  )\n}\n\nDynamicValuesCaseReason.propTypes = propTypes\nDynamicValuesCaseReason.defaultProps = defaultProps\n\nexport default DynamicValuesCaseReason\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field } from 'formik'\nimport { HiddenField } from '../../fields/'\n\nconst propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.string,\n}\n\nconst defaultProps = {\n  id: 'dynamic_detailed_reason',\n  value: 'none',\n}\n\nconst DynamicValuesDetailedReason = ({ id, value }) => {\n  return (\n    <>\n      <Field name={id} id={id} component={HiddenField} value={value} />\n    </>\n  )\n}\n\nDynamicValuesDetailedReason.propTypes = propTypes\nDynamicValuesDetailedReason.defaultProps = defaultProps\n\nexport default DynamicValuesDetailedReason\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { Field } from 'formik'\nimport { HiddenField } from '../../fields/'\n\nconst propTypes = {\n  id: PropTypes.string,\n  value: PropTypes.string,\n}\n\nconst defaultProps = {\n  id: 'dynamic_subject',\n  value: 'none',\n}\n\nconst DynamicValuesSubject = ({ id, value }) => {\n  return (\n    <>\n      <Field name={id} id={id} component={HiddenField} value={value} />\n    </>\n  )\n}\n\nDynamicValuesSubject.propTypes = propTypes\nDynamicValuesSubject.defaultProps = defaultProps\n\nexport default DynamicValuesSubject\n","import React, { useEffect, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField, connect } from 'formik'\nimport { Label, InputField } from '../../fields'\nimport Uppy from '@uppy/core'\nimport XHRUpload from '@uppy/xhr-upload'\nimport { Dashboard } from '@uppy/react'\nimport '@uppy/core/dist/style.css'\nimport '@uppy/dashboard/dist/style.css'\nimport { validateString } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Supporting files',\n  id: 'supporting_files',\n}\n\nconst uppy = Uppy({\n  autoProceed: true,\n  restrictions: {\n    maxFileSize: 10485760,\n    maxNumberOfFiles: 10,\n    allowedFileTypes: ['image/*', '.jpg', '.jpeg', '.png'],\n  },\n})\n\nuppy.use(XHRUpload, {\n  endpoint: `${process.env.BASE_URL}api/contacthub/mediaupload`,\n  fieldName: 'UploadedImage[]',\n})\n\nlet uploaded = []\n\nconst SupportingFilesRequired = props => {\n  const { label, id } = props\n  const {\n    formik: { setFieldValue },\n  } = props\n\n  const [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    uppy.off('complete').on('complete', result => {\n      if (!result.successful || !result.successful.length) return\n      uploaded = [...uploaded, result.successful[0].response.body[0].S3_Url]\n      setFieldValue(id, uploaded.join('\\n'))\n      setUploadSuccess(uploaded)\n    })\n\n    return () => {\n      uploaded = []\n      uppy.reset()\n    }\n  }, [id, setFieldValue])\n\n  return (\n    <>\n      <Label labelText={label} />\n      <div className=\"mb-6 bg-primary-lighter\">\n        <Dashboard\n          uppy={uppy}\n          height=\"300px\"\n          width=\"100%\"\n          inline={true}\n          note=\"Maximum file size is 10MB\"\n        />\n      </div>\n      <FastField\n        hidden\n        id=\"hidden-id-to-show-validation-for-uppy\"\n        component={InputField}\n        value={uploadSuccess}\n        validate={value =>\n          validateString(uploadSuccess, 'An uploaded image', true)\n        }\n      />\n    </>\n  )\n}\n\nSupportingFilesRequired.propTypes = propTypes\nSupportingFilesRequired.defaultProps = defaultProps\n\nexport default connect(React.memo(SupportingFilesRequired))\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { validateString } from '../validation'\nimport { Label, InputField } from '../../fields'\n\nconst propTypes = {\n  label: PropTypes.string,\n  id: PropTypes.string,\n}\nconst defaultProps = {\n  label: 'Voucher Code',\n  id: 'Voucher_Code',\n}\n\nconst VoucherCode = ({ label, id }) => {\n  return (\n    <>\n      <Label labelText={label} fieldId={id} />\n      <FastField\n        id={id}\n        name={id}\n        component={InputField}\n        maxLength=\"255\"\n        validate={value => validateString(value, 'Voucher Code', true)}\n      />\n    </>\n  )\n}\n\nVoucherCode.propTypes = propTypes\nVoucherCode.defaultProps = defaultProps\n\nexport default VoucherCode\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { FastField } from 'formik'\nimport { Label, TextAreaField } from '../../fields'\nimport { validateTextArea } from '../validation'\n\nconst propTypes = {\n  label: PropTypes.string.isRequired,\n  helpText: PropTypes.string,\n}\n\nconst defaultProps = {\n  label: 'Description of Staff Member',\n  helpText: '',\n  rows: '5',\n  required: false,\n}\n\nconst StaffDescription = ({ label, helpText, rows, required }) => {\n  return (\n    <>\n      <Label\n        helpText={helpText}\n        fieldId=\"staff_description\"\n        labelText={label}\n        toolTip\n        tipText=\"<h3 style='font-size: 1.125rem; font-weight: 600;padding-bottom:0.5rem;'>Staff Description</h3><p>Please list a brief description, and if possible, the name of the relevant staff member.</p>\"\n      />\n      <FastField\n        name=\"staff_description\"\n        id=\"staff_description\"\n        rows={rows}\n        component={TextAreaField}\n        validate={value => validateTextArea(value, 'This field', required)}\n      />\n    </>\n  )\n}\n\nStaffDescription.propTypes = propTypes\nStaffDescription.defaultProps = defaultProps\n\nexport default StaffDescription\n","import React from 'react'\nimport { Form } from '../Form'\nimport * as Input from '../Input'\n\nconst Customer = () => {\n  return (\n    <>\n      <Form.Item width={2}>\n        <Input.CustomerFirstName />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.CustomerLastName />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.CustomerTelephone />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.CustomerEmail />\n      </Form.Item>\n    </>\n  )\n}\n\nexport default Customer\n","import React from 'react'\nimport { Form } from '../Form'\nimport * as Input from '../Input'\n\nconst Address = () => {\n  return (\n    <>\n      <Form.Item width={2}>\n        <Input.AddressPostcode />\n      </Form.Item>\n      <Form.Item width={1}>\n        <Input.AddressFirstLine />\n      </Form.Item>\n      <Form.Item width={1}>\n        <Input.AddressSecondLine />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.AddressTown label=\"Postcode\" />\n      </Form.Item>\n    </>\n  )\n}\n\nexport default Address\n","import React from 'react'\nimport * as Input from '../Input'\n\nconst Confirmations = () => {\n  return (\n    <>\n      <Input.Confirmation id=\"reply\" label=\"I do not need a reply\" />\n      <Input.Confirmation\n        required\n        id=\"confirm\"\n        label=\"<strong>I confirm</strong> I have not entered bank details, personal data or account information in the enquiry details box\"\n      />\n    </>\n  )\n}\n\nexport default Confirmations\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport Note from '../../Note'\nimport PropTypes from 'prop-types'\n\nconst ProductInstoreOnlineRedirect = ({ formik: { values } }, enquiry) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroupRedirect\n          id=\"instore_or_online\"\n          label=\"Was this product bought Instore or Online?\"\n        />\n      </Form.Item>\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <Form.Item>\n          <Note>\n            {enquiry === 'product' && (\n              <p className=\"mb-4\">\n                If you bought this product online, you will need to complete one\n                of our Online Shopping Enquiry Forms.\n              </p>\n            )}\n            <div className=\"mb-4\">\n              <a href=\"/help/form/contact-us/online-shopping-experience\">\n                See our list of Online Shopping Enquiries\n              </a>\n            </div>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nProductInstoreOnlineRedirect.propTypes = {\n  enquiry: PropTypes.string,\n}\n\nexport default connect(ProductInstoreOnlineRedirect)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductForeignBodyForm = ({ formik: { values } }) => {\n  const {\n    instore_or_online,\n    is_morrisons_product,\n    can_share_info,\n    has_packaging,\n  } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"Type of product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <Form.Item>\n            <Input.OptionGroup\n              id=\"is_morrisons_product\"\n              label=\"Is the product a Morrisons branded product?\"\n            />\n          </Form.Item>\n        )}\n        {is_morrisons_product &&\n          is_morrisons_product === 'No' &&\n          instore_or_online &&\n          instore_or_online === 'Instore' && (\n            <>\n              <Form.Item>\n                <Note>\n                  <p className=\"mb-4\">\n                    As this product is not made by Morrisons, a full\n                    investigation of your complaint will involve the\n                    manufacturer of the product, who will need to contact you\n                    directly once they have completed their investigation.\n                  </p>\n                  <p className=\"mb-4\">\n                    You can contact the manufacturer directly following the\n                    directions on the product packaging, or we can pass the\n                    details on to them, as long as you give us your permission\n                    to do so. Please be aware that this may take slightly longer\n                    than contacting the manufacturer directly.\n                  </p>\n                  <p>\n                    If you wish for us to pass on the details please complete\n                    the below form\n                  </p>\n                </Note>\n              </Form.Item>\n\n              <Form.Item>\n                <Input.OptionGroup\n                  id=\"can_share_info\"\n                  label=\"Are you happy for us to share your details with the brand owner?\"\n                />\n              </Form.Item>\n              {can_share_info === 'Yes' && (\n                <Form.Item>\n                  <Note>\n                    <p className=\"mb-4\">\n                      Brand owner will be in touch in due course. Please keep\n                      sample safe as they may require it.\n                    </p>\n                  </Note>\n                </Form.Item>\n              )}\n            </>\n          )}\n      </Form.Fieldset>\n      {(is_morrisons_product === 'Yes' ||\n        (is_morrisons_product === 'No' && can_share_info)) &&\n        instore_or_online &&\n        instore_or_online === 'Instore' && (\n          <>\n            <Form.Fieldset legend=\"About the product\">\n              <>\n                <Form.Item>\n                  <Input.OptionGroup\n                    id=\"has_foreign_body\"\n                    label=\"Do you still have the foreign body?\"\n                  />\n                </Form.Item>\n                <Form.Item>\n                  <Input.OptionGroup\n                    id=\"has_packaging\"\n                    label=\"Do you still have the product packaging?\"\n                  />\n                </Form.Item>\n              </>\n              <Form.Item width={2}>\n                <Input.Date\n                  label=\"Product purchase date\"\n                  id=\"product_purchase_date\"\n                />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.ProductName label=\"Product name\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.ProductBarCode\n                  label=\"Product bar code\"\n                  validate={has_packaging}\n                  key={has_packaging}\n                />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.ProductBatchCode label=\"Product batch code\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.DateBestBefore label=\"Product best before or use by date\" />\n              </Form.Item>\n              <Form.Item>\n                <Input.StoreFinder label=\"Postcode where product purchased\" />\n              </Form.Item>\n\n              <Form.Item>\n                <Input.SupportingFiles label=\"Please upload a picture of the packaging\" />\n              </Form.Item>\n\n              <Form.Item>\n                <Input.Message label=\"Tell us about your complaint\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n    </>\n  )\n}\n\nexport default connect(ProductForeignBodyForm)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductFoodOutOfDateForm = ({ formik: { values } }) => {\n  const { instore_or_online } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"About the product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item width={2}>\n              <Input.ProductName label=\"Product name\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.ProductBarCode label=\"Product bar code\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.ProductBatchCode label=\"Product batch code\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateBestBefore label=\"Product best before or use by date\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date\n                label=\"Product purchase date\"\n                id=\"product_purchase_date\"\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.StoreFinder label=\"Postcode where product purchased\" />\n            </Form.Item>\n          </>\n        )}\n      </Form.Fieldset>\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <>\n          <Form.Fieldset legend=\"About your complaint\">\n            <Form.Item>\n              <Input.Message label=\"Tell us about your complaint\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\nexport default connect(ProductFoodOutOfDateForm)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst StoresIllnessForm = ({ formik: { values } }) => {\n  const {\n    instore_or_online,\n    is_morrisons_product,\n    was_medical_sought,\n    can_share_info,\n  } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"About the illness\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item width={2}>\n              <Input.Date\n                label=\"Product purchase date\"\n                id=\"product_purchase_date\"\n              />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateTime\n                label=\"Time product consumed\"\n                id=\"time_consumed\"\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.Message\n                label=\"What was the first symptom of the illness?\"\n                id=\"illness_symptoms\"\n                required\n              />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateTime\n                label=\"Time first symptom occurred\"\n                id=\"time_symptoms_started\"\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.Message\n                label=\"Were there any symptoms that followed? What were these?\"\n                id=\"followed_symptoms\"\n                rows=\"2\"\n                required\n              />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date\n                label=\"When did all symptoms stop?\"\n                id=\"stopped_symptoms\"\n                rows=\"2\"\n                required\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.Message\n                label=\"What did you eat 48 hours prior to the symptoms occurring?\"\n                id=\"prior_symptoms_eaten\"\n                rows=\"2\"\n                required\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.Message\n                label=\"Do you have any allergies? If so, what are they?\"\n                id=\"have_allergies_and_what\"\n                rows=\"2\"\n                required\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"was_medical_sought\"\n                label=\"Was medical attention sought?\"\n              />\n            </Form.Item>\n\n            {was_medical_sought === 'Yes' && (\n              <Form.Item>\n                <Input.Message\n                  label=\"What was the diagnosis?\"\n                  id=\"medical_sought_diagnosis\"\n                  required\n                />\n              </Form.Item>\n            )}\n          </>\n        )}\n      </Form.Fieldset>\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <>\n          <Form.Fieldset legend=\"About the product\">\n            <Form.Item width={2}>\n              <Input.ProductName label=\"Product name\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.ProductBarCode label=\"Product barcode\" />\n            </Form.Item>\n\n            <Form.Item width={2}>\n              <Input.ProductBatchCode label=\"Product batch code\" />\n            </Form.Item>\n\n            <Form.Item width={2}>\n              <Input.DateBestBefore label=\"Product use by date\" />\n            </Form.Item>\n\n            <Form.Item>\n              <Input.StoreFinder label=\"Store postcode where product bought\" />\n            </Form.Item>\n\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"has_sample\"\n                label=\"Do you have a sample left?\"\n              />\n            </Form.Item>\n\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload a picture of the packaging\" />\n            </Form.Item>\n\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"is_morrisons_product\"\n                label=\"Is the product a Morrisons branded product?\"\n              />\n            </Form.Item>\n            {is_morrisons_product === 'No' && (\n              <>\n                <Form.Item>\n                  <Note>\n                    <p className=\"mb-4\">\n                      As this product is not made by Morrisons, a full\n                      investigation of your complaint will involve the\n                      manufacturer of the product, who will need to contact you\n                      directly once they have completed their investigation.\n                    </p>\n                    <p className=\"mb-4\">\n                      You can contact the manufacturer directly following the\n                      directions on the product packaging, or we can pass the\n                      details on to them, as long as you give us your permission\n                      to do so. Please be aware that this may take slightly\n                      longer than contacting the manufacturer directly.\n                    </p>\n                    <p>\n                      If you wish for us to pass on the details please complete\n                      the below form\n                    </p>\n                  </Note>\n                </Form.Item>\n\n                <Form.Item>\n                  <Input.OptionGroup\n                    id=\"can_share_info\"\n                    label=\"Are you happy for us to share your details with the brand owner?\"\n                  />\n                </Form.Item>\n\n                {can_share_info === 'Yes' && (\n                  <Form.Item>\n                    <Note>\n                      <p className=\"mb-4\">\n                        The brand owner will be in touch with you. Please keep\n                        the sample safe.\n                      </p>\n                    </Note>\n                  </Form.Item>\n                )}\n                {can_share_info === 'No' && (\n                  <Form.Item>\n                    <Note>\n                      <p className=\"mb-4\">\n                        A member of our team will contact you.\n                      </p>\n                    </Note>\n                  </Form.Item>\n                )}\n              </>\n            )}\n          </Form.Fieldset>\n        </>\n      )}\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <>\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(StoresIllnessForm)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst StoresIncidentDamageForm = () => (\n  <>\n    <Form.Fieldset legend=\"About the incident\">\n      <Form.Item width={1}>\n        <Input.Message label=\"Tell us about the incident\" />\n      </Form.Item>\n\n      <Form.Item width={1}>\n        <Input.StoreFinder label=\"Store Postcode\" />\n      </Form.Item>\n\n      <Form.Item width={2}>\n        <Input.DateTime\n          label=\"Date and approx Time when incident occurred\"\n          id=\"incident_date_time\"\n        />\n      </Form.Item>\n\n      <Form.Item width={1}>\n        <Input.SupportingFiles />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default StoresIncidentDamageForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxOrderId />\n          <Input.BoxSelect />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithEatFreshOrderIDForm = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxOrderId />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithEatFreshOrderIDForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithScanAndShopReason = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your issue\">\n        <Form.Item width={2}>\n          <Input.ScanShopSelect />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithScanAndShopReason\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithOrderID = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithOrderID\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithOrderIDAndDate = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithOrderIDAndDate\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithImagesOrderID = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId isOnlineForm />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Item>\n        <Input.SupportingFiles label=\"Please upload a picture of the packaging\" />\n      </Form.Item>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithImagesOrderID\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithBestBeforeDate = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.VoucherCode />\n        </Form.Item>\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithBestBeforeDate\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithStore = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithStore\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithStoreAndDate = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item width={2}>\n        <Input.DateTime\n          label=\"Date and approx time of incident\"\n          id=\"incident_date_time\"\n        />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.StaffName />\n      </Form.Item>\n      <Form.Item width={1}>\n        <Input.StaffDescription\n          label=\"Description of Staff Member if no name\"\n          rows=\"2\"\n        />\n      </Form.Item>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithStoreAndDate\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithDate = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item width={2}>\n        <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n      </Form.Item>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithDate\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithDateButNoStore = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryWithDateButNoStore\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst GeneralEnquiryWithStoreAndOnlineRedirect = ({ formik: { values } }) => {\n  const { instore_or_online } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item>\n              <Input.Message label=\"Tell us about your enquiry\" />\n            </Form.Item>\n          </>\n        )}\n      </Form.Fieldset>\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <>\n          <Form.Fieldset legend=\"About the store\">\n            <Form.Item>\n              <Input.StoreFinder labelText=\"Store Postcode\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(GeneralEnquiryWithStoreAndOnlineRedirect)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\n\nconst QuestionsYesNo = ({ formik: { values } }) => {\n  const { yes_or_no_one, yes_or_no_two } = values\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"Did you activate your promotion via the App / Online account?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <Form.Item>\n          <Input.OptionGroup\n            id=\"yes_or_no_two\"\n            label=\"Did you spend the amount needed?\"\n          />\n        </Form.Item>\n      )}\n      {yes_or_no_two && yes_or_no_two === 'Yes' && (\n        <Form.Item>\n          <Input.OptionGroup\n            id=\"yes_or_no_three\"\n            label=\"Did you shop on the valid dates?\"\n          />\n        </Form.Item>\n      )}\n    </>\n  )\n}\n\nexport default connect(QuestionsYesNo)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport QuestionsYesNo from './QuestionsYesNo'\nimport Note from '../../Note'\n\nconst GeneralEnquiryWithYesNo = ({ formik: { values } }) => {\n  const { yes_or_no_one, yes_or_no_two, yes_or_no_three } = values\n  return (\n    <>\n      <QuestionsYesNo />\n      {yes_or_no_one &&\n        yes_or_no_one !== 'No' &&\n        yes_or_no_two &&\n        yes_or_no_two !== 'No' &&\n        yes_or_no_three &&\n        yes_or_no_three === 'Yes' && (\n          <>\n            <Form.Fieldset legend=\"About your enquiry\">\n              <Form.Item width={1}>\n                <Input.Message label=\"Tell us about your enquiry\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n      {yes_or_no_one === 'No' && yes_or_no_two !== 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Sorry you have not met the terms & conditions of the promotion\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n      {yes_or_no_two === 'No' && yes_or_no_three !== 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Sorry you have not met the terms & conditions of the promotion\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n      {yes_or_no_three === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Sorry you have not met the terms & conditions of the promotion\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquiryWithYesNo)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\n\nconst QuestionsGoodToGrow = ({ formik: { values } }) => {\n  const { yes_or_no_one } = values\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"Did you scan your card or your app when you made your purchase?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <Form.Item>\n          <Input.OptionGroup\n            id=\"yes_or_no_two\"\n            label=\"Did you complete your purchase more than 72 hours ago?\"\n          />\n        </Form.Item>\n      )}\n    </>\n  )\n}\n\nexport default connect(QuestionsGoodToGrow)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport QuestionsYesNo from './QuestionsGoodToGrow'\nimport Note from '../../Note'\n\nconst GeneralEnquiryGoodToGrow = ({ formik: { values } }) => {\n  const { yes_or_no_one, yes_or_no_two } = values\n  return (\n    <>\n      <QuestionsYesNo />\n      {yes_or_no_one &&\n        yes_or_no_one !== 'No' &&\n        yes_or_no_two &&\n        yes_or_no_two !== 'No' && (\n          <>\n            <Form.Fieldset legend=\"About your enquiry\">\n              <Form.Item width={1}>\n                <Input.Message label=\"Tell us about your enquiry\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About the store\">\n              <Form.Item>\n                <Input.StoreFinder labelText=\"Store Postcode\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.Date label=\"Date of visit\" id=\"date_of_visit\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n      {yes_or_no_one === 'No' && yes_or_no_two !== 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Unfortunately we are unable to apply the tokens retrospectively.\n              In order to collect your Grow Tokens you must remember to swipe\n              your app or My Morrisons card at checkout, so please don&apos;t\n              forget when you next shop.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n      {yes_or_no_two === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Please allow up to 72 hours for your tokens to appear. If they are\n              still not showing after this period please contact our Customer\n              Services team on this website.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquiryGoodToGrow)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\n\nconst QuestionsChristmasSavers = ({ formik: { values } }) => {\n  const { yes_or_no_one, yes_or_no_two } = values\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"If you receive your Christmas Savers via E Code have you checked your Junk / Spam folder?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <Form.Item>\n          <Input.OptionGroup\n            id=\"yes_or_no_two\"\n            label=\"If you receive your Christmas Savers vouchers at the till have you scanned your card in store since the last time you shopped?\"\n          />\n        </Form.Item>\n      )}\n      {yes_or_no_two && yes_or_no_two === 'Yes' && (\n        <Form.Item>\n          <Input.OptionGroup\n            id=\"yes_or_no_three\"\n            label=\"If you receive your card via Load to My Morrisons Card, have you shopped since the last time you visited store and did you scan your card?\"\n          />\n        </Form.Item>\n      )}\n    </>\n  )\n}\n\nexport default connect(QuestionsChristmasSavers)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport QuestionsYesNo from './QuestionsChristmasSavers'\nimport Note from '../../Note'\n\nconst GeneralEnquirySaversYesNo = ({ formik: { values } }) => {\n  const { yes_or_no_one, yes_or_no_two, yes_or_no_three } = values\n  return (\n    <>\n      <QuestionsYesNo />\n      {yes_or_no_one &&\n        yes_or_no_one !== 'No' &&\n        yes_or_no_two &&\n        yes_or_no_two !== 'No' &&\n        yes_or_no_three &&\n        yes_or_no_three === 'Yes' && (\n          <>\n            <Form.Fieldset legend=\"About your enquiry\">\n              <Form.Item width={1}>\n                <Input.Message label=\"Tell us about your enquiry\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n      {yes_or_no_one === 'No' && yes_or_no_two !== 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">Please check you junk and spam folder.</p>\n          </Note>\n        </Form.Item>\n      )}\n      {yes_or_no_two === 'No' && yes_or_no_three !== 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Your vouchers should print when you next shop and scan your my\n              morrisons card.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n      {yes_or_no_three === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              You need to scan your My Morrisons card to redeem your Christmas\n              savers.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquirySaversYesNo)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\n\nconst GeneralEnquiryChristmasYesNo = ({ formik: { values } }) => {\n  const { yes_or_no_one } = values\n\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"Did you activate your promotion and complete your shop more than 72 hours ago?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <>\n          <Form.Fieldset legend=\"About your enquiry\">\n            <Form.Item width={1}>\n              <Input.Message label=\"Tell us about your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n      {yes_or_no_one === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Please allow 72 hours for the last shop to register.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquiryChristmasYesNo)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\n\nconst GeneralEnquiryChristmasYesNoStoreOnline = ({ formik: { values } }) => {\n  const { yes_or_no_one } = values\n\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"Has it been 72 hours since you had your online shop delivered?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <>\n          <Form.Fieldset legend=\"About your enquiry\">\n            <Form.Item width={1}>\n              <Input.Message label=\"Tell us about your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n      {yes_or_no_one === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              Your shop does take up to 72 hours to register so please allow\n              this to pass before contacting us to investigate further.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquiryChristmasYesNoStoreOnline)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\n\nconst GeneralEnquiryChristmasYesNoStartCollecting = ({\n  formik: { values },\n}) => {\n  const { yes_or_no_one } = values\n\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroup\n          id=\"yes_or_no_one\"\n          label=\"Did you activate your promotion and complete your shop more than 72 hours ago?\"\n        />\n      </Form.Item>\n      {yes_or_no_one && yes_or_no_one === 'Yes' && (\n        <>\n          <Form.Fieldset legend=\"About your enquiry\">\n            <Form.Item width={1}>\n              <Input.Message label=\"Tell us about your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n      {yes_or_no_one === 'No' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              {' '}\n              Please allow 72 hours for your last shop to register.\n            </p>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nexport default connect(GeneralEnquiryChristmasYesNoStartCollecting)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryFormWithReceipt = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n        <Form.Item>\n          <Input.SupportingFiles label=\"Please upload your receipt\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryFormWithReceipt\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport { FastField, connect } from 'formik'\nimport { Label, TextAreaField, InputField } from './fields'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { validateString, validatePostcode } from './utils/validation'\n\nconst propTypes = {\n  description: PropTypes.array,\n  formik: PropTypes.object.isRequired,\n}\n\nconst GeneralEnquiryWithPreviousAddress = ({ formik }) => {\n  const [message, setMessage] = useState('')\n\n  useEffect(() => {\n    const hiddenFieldValue = `Enquiry: ${message} | Previous Address: ${formik.values.addressPrevious} ${formik.values.address2Previous}, ${formik.values.townPrevious}, ${formik.values.postcodePrevious}`\n    formik.setFieldValue('description', hiddenFieldValue)\n  }, [\n    message,\n    formik.values.addressPrevious,\n    formik.values.address2Previous,\n    formik.values.townPrevious,\n    formik.values.postcodePrevious,\n    formik.setFieldValue,\n  ])\n\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Label\n            fieldId={'initial-description'}\n            labelText=\"Tell us about your enquiry\"\n          />\n          <FastField\n            id={'initial-description'}\n            name={'initial-description'}\n            rows=\"5\"\n            component={TextAreaField}\n            onChange={e => setMessage(e.target.value)}\n          />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Current Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Previous Address\">\n        <Form.Item width={2}>\n          <Label labelText=\"Previous Postcode\" fieldId=\"postcodePrevious\" />\n          <FastField\n            id=\"postcodePrevious\"\n            name=\"postcodePrevious\"\n            component={InputField}\n            maxLength=\"8\"\n            validate={validatePostcode}\n          />\n        </Form.Item>\n        <Form.Item width={1}>\n          <Label\n            labelText=\"First line of previous address\"\n            fieldId=\"addressPrevious\"\n          />\n          <FastField\n            id=\"addressPrevious\"\n            name=\"addressPrevious\"\n            component={InputField}\n            maxLength=\"255\"\n            validate={value =>\n              validateString(value, 'First line of previous address', true)\n            }\n          />\n        </Form.Item>\n        <Form.Item width={1}>\n          <Label\n            labelText=\"Second line of previous address\"\n            fieldId=\"address2Previous\"\n            helpText=\"(Optional)\"\n          />\n          <FastField\n            id=\"address2Previous\"\n            name=\"address2Previous\"\n            component={InputField}\n            maxLength=\"255\"\n          />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Label labelText=\"Town\" fieldId=\"townPrevious\" />\n          <FastField\n            id=\"townPrevious\"\n            name=\"townPrevious\"\n            maxLength=\"255\"\n            component={InputField}\n            validate={value => validateString(value, 'Town', true)}\n          />\n        </Form.Item>\n        <Input.Message id=\"description\" value={message} isDynamic={true} />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nGeneralEnquiryWithPreviousAddress.propTypes = propTypes\n\nexport default connect(GeneralEnquiryWithPreviousAddress)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductComplaintForm = ({ formik: { values } }) => {\n  const { instore_or_online, is_morrisons_product, can_share_info } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"Type of product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"is_morrisons_product\"\n                label=\"Is the product a Morrisons branded product?\"\n              />\n            </Form.Item>\n            {is_morrisons_product && is_morrisons_product === 'No' && (\n              <>\n                <Form.Item>\n                  <Note>\n                    <p className=\"mb-4\">\n                      As this product is not made by Morrisons, a full\n                      investigation of your complaint will involve the\n                      manufacturer of the product, who will need to contact you\n                      directly once they have completed their investigation.\n                    </p>\n                    <p className=\"mb-4\">\n                      You can contact the manufacturer directly following the\n                      directions on the product packaging, or we can pass the\n                      details on to them, as long as you give us your permission\n                      to do so. Please be aware that this may take slightly\n                      longer than contacting the manufacturer directly.\n                    </p>\n                    <p>\n                      If you wish for us to pass on the details please complete\n                      the below form\n                    </p>\n                  </Note>\n                  <Input.OptionGroup\n                    id=\"can_share_info\"\n                    label=\"Are you happy for us to share your details with the brand owner?\"\n                  />\n                </Form.Item>\n                {can_share_info === 'No' && (\n                  <Form.Item>\n                    <Note>\n                      <p className=\"mb-4\">\n                        A member of our team will contact you.\n                      </p>\n                    </Note>\n                  </Form.Item>\n                )}\n              </>\n            )}\n          </>\n        )}\n      </Form.Fieldset>\n      {is_morrisons_product &&\n        instore_or_online &&\n        instore_or_online === 'Instore' && (\n          <>\n            <Form.Fieldset legend=\"About the product\">\n              <Form.Item width={2}>\n                <Input.ProductName label=\"Product name\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.ProductBarCode label=\"Product bar code\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.ProductBatchCode label=\"Product batch code\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.DateBestBefore label=\"Product best before or use by date\" />\n              </Form.Item>\n              <Form.Item width={2}>\n                <Input.Date\n                  label=\"Product purchase date\"\n                  id=\"product_purchase_date\"\n                />\n              </Form.Item>\n              <Form.Item>\n                <Input.StoreFinder label=\"Postcode where product purchased\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload a picture of the product\" />\n            </Form.Item>\n\n            <Form.Fieldset legend=\"About your complaint\">\n              <Form.Item>\n                <Input.Message label=\"Tell us about your complaint\" />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n    </>\n  )\n}\n\nexport default connect(ProductComplaintForm)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst ProductRefundForm = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About the product\">\n        <Form.Item width={2}>\n          <Input.ProductName label=\"Product name\" />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.ProductBarCode label=\"Product bar code\" />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.ProductBatchCode label=\"Product batch code\" />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.DateBestBefore label=\"Product best before date\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId isOnlineForm />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.DateOfDelivery label=\"Date of Delivery\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Item>\n        <Input.SupportingFiles label=\"Please upload a picture of the product\" />\n      </Form.Item>\n\n      <Form.Fieldset legend=\"About your Refund\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your refund enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default ProductRefundForm\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductAllegedAllergenForm = ({ formik: { values } }) => {\n  const { instore_or_online, is_morrisons_product, can_share_info } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"Type of product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"is_morrisons_product\"\n                label=\"Is the product a Morrisons branded product?\"\n              />\n            </Form.Item>\n            {is_morrisons_product && is_morrisons_product === 'No' && (\n              <>\n                <Form.Item>\n                  <Note>\n                    <p className=\"mb-4\">\n                      As this product is not made by Morrisons, a full\n                      investigation of your complaint will involve the\n                      manufacturer of the product, who will need to contact you\n                      directly once they have completed their investigation.\n                    </p>\n                    <p className=\"mb-4\">\n                      You can contact the manufacturer directly following the\n                      directions on the product packaging, or we can pass the\n                      details on to them, as long as you give us your permission\n                      to do so. Please be aware that this may take slightly\n                      longer than contacting the manufacturer directly.\n                    </p>\n                    <p>\n                      If you wish for us to pass on the details please complete\n                      the below form\n                    </p>\n                  </Note>\n                  <Input.OptionGroup\n                    id=\"can_share_info\"\n                    label=\"Are you happy for us to share your details with the brand owner?\"\n                  />\n                </Form.Item>\n                {can_share_info === 'No' && (\n                  <Form.Item>\n                    <Note>\n                      <p className=\"mb-4\">\n                        A member of our team will contact you.\n                      </p>\n                    </Note>\n                  </Form.Item>\n                )}\n              </>\n            )}\n          </>\n        )}\n      </Form.Fieldset>\n      {is_morrisons_product &&\n        instore_or_online &&\n        instore_or_online === 'Instore' && (\n          <>\n            {(is_morrisons_product === 'Yes' ||\n              (can_share_info && can_share_info === 'Yes')) && (\n              <>\n                <Form.Fieldset legend=\"About the product\">\n                  <Form.Item width={2}>\n                    <Input.ProductName label=\"Product name\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.ProductBarCode label=\"Product bar code\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.ProductBatchCode label=\"Product batch code\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.DateBestBefore label=\"Product best before date\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.Date\n                      label=\"Product purchase date\"\n                      id=\"product_purchase_date\"\n                    />\n                  </Form.Item>\n                  <Form.Item>\n                    <Input.StoreFinder label=\"Postcode where product purchased\" />\n                  </Form.Item>\n                </Form.Fieldset>\n\n                <Form.Item>\n                  <Input.SupportingFiles label=\"Please upload a picture of the product\" />\n                </Form.Item>\n\n                <Form.Fieldset legend=\"About your complaint\">\n                  <Form.Item>\n                    <Input.Message label=\"Tell us about your complaint\" />\n                  </Form.Item>\n                </Form.Fieldset>\n              </>\n            )}\n\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n    </>\n  )\n}\n\nexport default connect(ProductAllegedAllergenForm)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductEnquiryWithBarcode = ({ formik: { values } }) => {\n  const { instore_or_online } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"About the product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item width={2}>\n              <Input.ProductName label=\"Product name\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.ProductBarCode label=\"Product bar code\" />\n            </Form.Item>\n            <Form.Item>\n              <Input.StoreFinder label=\"Postcode where product purchased\" />\n            </Form.Item>\n          </>\n        )}\n      </Form.Fieldset>\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <>\n          <Form.Fieldset legend=\"About your enquiry\">\n            <Form.Item>\n              <Input.Message label=\"Tell us about your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\nexport default connect(ProductEnquiryWithBarcode)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport Icon from '../../../components/Icon'\n\nconst OnlineShoppingEnquiryForm = ({ formik: { values } }) => {\n  const { region_select: selectedRegion } = values\n\n  return (\n    <>\n      <Form.Fieldset legend=\"Your region\">\n        <Form.Item width={1}>\n          <Input.RegionSelect />\n        </Form.Item>\n      </Form.Fieldset>\n\n      {selectedRegion === 'north-east' && (\n        <>\n          <Form.Fieldset legend=\"About your enquiry\">\n            <Form.Item width={1}>\n              <Input.Message label=\"Details of your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n\n      {selectedRegion && selectedRegion !== 'north-east' && (\n        <Note>\n          <p className=\"mb-4\">\n            If you&apos;ve got a question, query or comment please email us.\n            We&apos;ll look into the details and get back to you as quickly as\n            we can.\n          </p>\n          <p className=\"flex items-center text-secondary\">\n            <Icon icon=\"mail\" className=\"w-5 h-5 mr-4 fill-current\" />\n            <a href=\"mailto:fresh@morrisons.com\">fresh@morrisons.com</a>\n          </p>\n        </Note>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingEnquiryForm)\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\n\nconst Questions = ({ questions, formId, formik: { values } }) => {\n  return (\n    <>\n      <Form.Fieldset legend=\"Additional information\">\n        {questions.map((question, index) => {\n          if (index === 0) {\n            return (\n              <Form.Item key={`question-${index}`}>\n                <Input.OptionGroup id={question.id} label={question.name} />\n              </Form.Item>\n            )\n          } else if (values[`${formId}-q${index}`] === 'No') {\n            return (\n              <Form.Item key={`question-${index}`}>\n                <Input.OptionGroup id={question.id} label={question.name} />\n              </Form.Item>\n            )\n          } else return null\n        })}\n      </Form.Fieldset>\n    </>\n  )\n}\n\nexport default connect(Questions)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\n\nconst OnlineShoppingWithProducts = ({ questions }) => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId isOnlineForm />\n        </Form.Item>\n      </Form.Fieldset>\n\n      {questions && (\n        <Questions\n          questions={questions}\n          formId=\"online-shopping-product-complaint-form\"\n        />\n      )}\n\n      <Form.Fieldset legend=\"About the products\">\n        <Input.ProductDetails withSubstitutions={false} />\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default OnlineShoppingWithProducts\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport Note from '../../Note'\nimport PropTypes from 'prop-types'\n\nconst ProductOnlineInstoreRedirect = ({ formik: { values } }, enquiry) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <Form.Item>\n        <Input.OptionGroupRedirect\n          id=\"instore_or_online\"\n          label=\"Was this product bought Instore or Online?\"\n        />\n      </Form.Item>\n      {instore_or_online && instore_or_online === 'Instore' && (\n        <Form.Item>\n          <Note>\n            <p className=\"mb-4\">\n              If you bought this product in one of our stores, you will need to\n              complete one of our Instore Product Enquiry Forms.\n            </p>\n\n            <div className=\"mb-4\">\n              <a href=\"/help/form/contact-us/products\">\n                See our list of Instore Product Enquiries\n              </a>\n            </div>\n          </Note>\n        </Form.Item>\n      )}\n    </>\n  )\n}\nProductOnlineInstoreRedirect.propTypes = {\n  enquiry: PropTypes.string,\n}\n\nexport default connect(ProductOnlineInstoreRedirect)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingOutOfDate = ({ questions, formik: { values } }) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Best Before or Use By Date\" id=\"Use_BY_BBD\" />\n            </Form.Item>\n          </Form.Fieldset>\n          <Form.Fieldset legend=\"Type of enquiry\">\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload any images that may help your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              withSubstitutions={false}\n              newlabel={'Feedback on item'}\n            />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingOutOfDate)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingSubstitute = ({ questions, formik: { values } }) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n          <Form.Fieldset legend=\"Type of enquiry\">\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload any images that may help your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              withSubstitutions={true}\n              newlabel={\n                \"Feedback as to why this isn't a reasonable substitution\"\n              }\n            />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingSubstitute)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingMissingItem = ({ questions, formik: { values } }) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              withSubstitutions={false}\n              newlabel={'Feedback on item'}\n            />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingMissingItem)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingWithProductsWithImages = ({\n  questions,\n  formik: { values },\n}) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateOfDelivery label=\"Date of Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails withSubstitutions={false} />\n          </Form.Fieldset>\n\n          <Form.Item>\n            <Input.SupportingFiles label=\"Please upload images of your damaged or leaking\" />\n          </Form.Item>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingWithProductsWithImages)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingWithProductsWithReceipt = ({\n  questions,\n  formik: { values },\n}) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateOfDelivery label=\"Date of Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails withSubstitutions={false} />\n          </Form.Fieldset>\n\n          {/* <Form.Item>\n            <Input.SupportingFiles label=\"Please upload images of your receipt\" />\n          </Form.Item> */}\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingWithProductsWithReceipt)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst OnlineShoppingWithSubstitutions = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.ExternalOrderId isOnlineForm />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the products\">\n        <Input.ProductDetails withSubstitutions={true} />\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default OnlineShoppingWithSubstitutions\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Questions from './Questions'\nimport { connect } from 'formik'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n\nconst OnlineShoppingWithProductsOrderIDAndDate = ({\n  questions,\n  formik: { values },\n}) => {\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Date of Delivery\" id=\"Date_of_Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          {questions && (\n            <Questions\n              questions={questions}\n              formId=\"online-shopping-product-complaint-form\"\n            />\n          )}\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              withSubstitutions={false}\n              newlabel={'Feedback on item (what was the promotion?)'}\n            />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(OnlineShoppingWithProductsOrderIDAndDate)\n","import React from 'react'\nimport { connect } from 'formik'\nimport moment from 'moment'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from 'src/components/Note'\n\nconst PromotionPointsNotEarnedForm = ({ formik: { values } }) => {\n  const {\n    promo_date_of_purchase: purchaseDate,\n    'more-promotion_criteria_option': promotionCriteria,\n  } = values\n\n  let purchasePast3Days\n\n  if (purchaseDate) {\n    const today = moment().startOf('day')\n    let computedDate = moment(purchaseDate, 'DD/MM/YYYY').add(3, 'days')\n    purchasePast3Days = computedDate.isBefore(today)\n  }\n\n  return (\n    <>\n      {!promotionCriteria && (\n        <Form.Fieldset>\n          <Form.Item>\n            <Note>\n              <p className=\"mb-4\">\n                In order to qualify for promotional points:\n              </p>\n              <div className=\"mx-8\">\n                <ul className=\"my-8 list-disc\">\n                  <li>\n                    Your purchase must fall within the offer dates specified on\n                    the coupon\n                  </li>\n                  <li>\n                    Your coupon must have been issued to the more card used at\n                    the time of your purchase\n                  </li>\n                  <li>\n                    Your purchase must have included any specific qualifying\n                    products\n                  </li>\n                  <li>\n                    Any qualifying spend must have been met (After any listed\n                    excluded items have been deducted from the total)\n                  </li>\n                </ul>\n              </div>\n              <p>Does your purchase meet these criteria?</p>\n            </Note>\n            <Input.OptionGroup\n              id=\"more-promotion_criteria_option\"\n              label=\"Do you meet the above criteria?\"\n            />\n          </Form.Item>\n        </Form.Fieldset>\n      )}\n\n      {promotionCriteria === 'Yes' && (\n        <>\n          <Form.Fieldset>\n            <Form.Item width={1}>\n              <Note>\n                <p>\n                  You have confirmed that you meet the qualifying criteria for\n                  this promotional offer\n                </p>\n              </Note>\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date\n                label=\"Date of the qualifying purchase\"\n                id=\"promo_date_of_purchase\"\n              />\n            </Form.Item>\n            {purchasePast3Days === false && (\n              <Form.Item width={1}>\n                <Note>\n                  <p className=\"mb-4\">\n                    It can take up to 72 hours for your Extra More Points to\n                    show up on your Morrisons More account, and they won&apos;t\n                    show on your receipt. Don&apos;t worry if you can&apos;t see\n                    them straight away - as long as your Morrisons More card was\n                    scanned when you paid for your shop, they will be added.\n                  </p>\n                  <p>\n                    Remember you can view all the points you have earned by\n                    logging into your Morrisons More card account &nbsp;\n                    <a\n                      href=\"https://my.morrisons.com/more/#/\"\n                      rel=\"noopener noreferrer\"\n                      target=\"_blank\"\n                      className=\"underline text-secondary\"\n                    >\n                      here\n                    </a>\n                    &nbsp; or via the Morrisons More App on your phone.\n                  </p>\n                </Note>\n              </Form.Item>\n            )}\n          </Form.Fieldset>\n          {purchasePast3Days === true && (\n            <>\n              <Form.Fieldset legend=\"About you\">\n                <Group.Customer />\n              </Form.Fieldset>\n\n              <Form.Fieldset legend=\"Purchase details\">\n                <Form.Item width={2}>\n                  <Input.MoreCardNumber />\n                </Form.Item>\n\n                <Form.Item width={1}>\n                  <Input.Message label=\"Promo details\" />\n                </Form.Item>\n              </Form.Fieldset>\n\n              <Group.Confirmations />\n\n              <Input.SubmitButton />\n            </>\n          )}\n        </>\n      )}\n\n      {promotionCriteria === 'No' && (\n        <Form.Fieldset>\n          <Form.Item width={1}>\n            <Note>\n              <p>\n                You have confirmed that you did not meet the qualifying criteria\n                for this promotional offer\n              </p>\n            </Note>\n          </Form.Item>\n        </Form.Fieldset>\n      )}\n    </>\n  )\n}\n\nexport default connect(PromotionPointsNotEarnedForm)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst CarParkingForm = () => (\n  <>\n    <Form.Fieldset legend=\"About car parking charge\">\n      <Form.Item>\n        <Input.CarParkingCompanySelect />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.DateOfIssue label=\"Date Of Issue\" />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.CarRegistration />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.CarParkingChargeRefNo />\n      </Form.Item>\n      <Form.Item>\n        <Input.OptionGroup id=\"pcn_paid\" label=\"Have you paid the PCN?\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n\n      <Form.Item>\n        <Input.SupportingFilesRequired label=\"Please upload your receipt\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default CarParkingForm\n","import React from 'react'\n\nconst BlankForm = () => <></>\n\nexport default BlankForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = ({ questions }) => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxOrderId />\n          <Input.BoxSelect />\n        </Form.Item>\n      </Form.Fieldset>\n      {questions && (\n        <>\n          {questions.map((question, index) => {\n            if (index === 0) {\n              return (\n                <Form.Fieldset legend=\"About the products\" key={index}>\n                  <Input.ProductDetailsFoodBoxes\n                    firstLabel={question.title}\n                    withSecondLabel={false}\n                  />\n                </Form.Fieldset>\n              )\n            } else return null\n          })}\n        </>\n      )}\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxSelect />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={1}>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = ({ questions }) => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxOrderId />\n        </Form.Item>\n      </Form.Fieldset>\n      {questions && (\n        <>\n          {questions.map((question, index) => {\n            if (index === 0) {\n              return (\n                <Form.Fieldset legend=\"About the products\" key={index}>\n                  <Input.ProductDetailsFoodBoxes\n                    firstLabel=\"Recipe number or name ordered by you\"\n                    secondLabel={question.title}\n                    withSecondLabel={true}\n                  />\n                </Form.Fieldset>\n              )\n            } else return null\n          })}\n        </>\n      )}\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryForm = ({ questions }) => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your order\">\n        <Form.Item width={2}>\n          <Input.BoxOrderId />\n        </Form.Item>\n      </Form.Fieldset>\n      {questions && (\n        <>\n          {questions.map((question, index) => {\n            if (index === 0) {\n              return (\n                <Form.Fieldset legend=\"About the products\" key={index}>\n                  <Input.ProductDetailsFoodBoxes\n                    firstLabel={question.title}\n                    secondLabel={question.title}\n                    withSecondLabel={false}\n                  />\n                </Form.Fieldset>\n              )\n            } else return null\n          })}\n        </>\n      )}\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default GeneralEnquiryForm\n","import React, { useState } from 'react'\nimport { connect } from 'formik'\nimport { Label } from './fields'\nimport Icon from '../../Icon'\nimport Select from '../../Select'\nimport { useGardeningItemsListData } from '../../../core'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\n\nconst GardenInstructionsAndPartsForm = ({ formik }) => {\n  const [show, setShow] = useState(false)\n  const [selectedProduct, setSelectedProduct] = useState({\n    value: '',\n    label: '',\n    pdf: '',\n    allowed: '',\n    message: '',\n  })\n  const [manualLink, setManualLink] = useState('')\n  const [isAllowed, setisAllowed] = useState(false)\n  const [hasMessage, setHasMessage] = useState('')\n  const [selectedProductPart, setSelectedProductPart] = useState('')\n  const { items, loading: loadingList, error } = useGardeningItemsListData()\n\n  const { value: selectedProductValue } = selectedProduct\n\n  const getGardenItemOptions = () => {\n    let options = []\n    if (items && items.length) {\n      options = [{ value: '', label: 'Select...', pdf: '' }].concat(\n        items.map(item => ({\n          value: item.Product_ID,\n          label: item.Product_Description,\n          pdf: item.Product_Manual,\n        }))\n      )\n    }\n    return options\n  }\n\n  const getItemPartOptions = () => {\n    let options = []\n    if (items?.length && selectedProductValue) {\n      const productParts = items.find(\n        item => item.Product_ID === selectedProductValue\n      )?.Product_Parts\n      if (productParts?.length)\n        options = [\n          { value: '', label: 'Select...', allowed: '', message: '' },\n        ].concat(\n          productParts.map(item => ({\n            value: item.Value,\n            label: item.Value,\n            allowed: item.Allowed,\n            message: item.Message,\n          }))\n        )\n    }\n    return options\n  }\n\n  const handleProductChange = option => {\n    const { value } = option\n    const { label } = option\n    const { pdf } = option\n    setSelectedProduct(option)\n    formik.setFieldValue('gardening_electric_product', label)\n    setSelectedProductPart('')\n    if (!value) {\n      setManualLink('')\n      return\n    }\n    setManualLink(pdf)\n  }\n\n  const handlePartChange = option => {\n    const { value } = option\n    const { allowed } = option\n    const { message } = option\n    if (!value) {\n      setSelectedProductPart('')\n      return\n    }\n    setSelectedProductPart(value)\n    formik.setFieldValue('gardening_electric_part', value)\n    setHasMessage(message)\n    setisAllowed(allowed)\n  }\n\n  return (\n    <>\n      <Form.Fieldset legend=\"About your Product\">\n        <Form.Item width={1}>\n          <Label\n            fieldId=\"gardening_electric_product\"\n            labelText=\"Select your product from the list below.\"\n          />\n          <Select\n            options={getGardenItemOptions()}\n            isLoading={loadingList}\n            onChange={handleProductChange}\n            name=\"gardening_electric_product\"\n            value={\n              getGardenItemOptions()\n                ? getGardenItemOptions().find(\n                    option => option.value === selectedProductValue\n                  )\n                : null\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <div className=\"mb-10\">\n        {manualLink && (\n          <>\n            <div className=\"pb-6\">\n              <a\n                target=\"_blank\"\n                href={manualLink}\n                rel=\"noopener noreferrer\"\n                className=\"inline-flex py-2 text-lg font-semibold rounded-lg text-secondary-dark\"\n              >\n                Download the Instruction Manual for this product\n                <Icon icon=\"save\" className=\"ml-4 fill-current\" />\n              </a>\n            </div>\n            <button\n              className={`iinline-block px-8 py-3 pb-4 font-semibold text-white rounded-lg sm:px-5 bg-secondary hover:bg-secondary-dark hover:cursor-pointer  ${\n                !show ? 'opacity-100' : 'opacity-25'\n              }`}\n              onClick={e => {\n                e.preventDefault()\n                setShow(!show)\n              }}\n            >\n              <span className=\"flex items-center justify-start \">\n                Or click to proceed and request part\n                <Icon\n                  icon=\"forwardArrow\"\n                  className=\"w-2 h-5 ml-3 opacity-50 fill-current\"\n                />\n              </span>\n            </button>\n          </>\n        )}\n        {error && <div className=\"p-4 text-lg text-error\">{error}</div>}\n      </div>\n      {show && (\n        <>\n          <Form.Fieldset legend=\"About the required part\">\n            <Form.Item width={1}>\n              <Label\n                fieldId=\"gardening_electric_part\"\n                labelText=\"Select your part from the list below.\"\n              />\n              <Select\n                options={getItemPartOptions()}\n                isLoading={loadingList}\n                onChange={handlePartChange}\n                name=\"gardening_electric_part\"\n                value={\n                  getItemPartOptions()\n                    ? getItemPartOptions().find(\n                        option => option.value === selectedProductPart\n                      )\n                    : null\n                }\n              />\n            </Form.Item>\n            {hasMessage && (\n              <div className=\"w-full px-2 py-6\">\n                <Note>\n                  <p className=\"text-lg font-medium\">{hasMessage}</p>\n                </Note>\n              </div>\n            )}\n          </Form.Fieldset>\n\n          {isAllowed && (\n            <>\n              <Form.Fieldset>\n                <Form.Item width={1}>\n                  <Input.Message label=\"Further information (please provide specific reasons for your request)\" />\n                </Form.Item>\n              </Form.Fieldset>\n\n              <Form.Fieldset legend=\"About you\">\n                <Group.Customer />\n                <Form.Item width={2}>\n                  <Input.MoreCardNumber />\n                </Form.Item>\n              </Form.Fieldset>\n\n              <Form.Fieldset legend=\"Address\">\n                <Group.Address />\n              </Form.Fieldset>\n\n              <Group.Confirmations />\n\n              <Input.SubmitButton />\n            </>\n          )}\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(GardenInstructionsAndPartsForm)\n","import React, { useState } from 'react'\nimport { connect } from 'formik'\nimport { Label } from './fields'\nimport Icon from '../../Icon'\nimport Select from '../../Select'\nimport { useSDAItemsListData } from '../../../core'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\n\nconst ElectricalInstructionsAndPartsForm = ({ formik }) => {\n  const [show, setShow] = useState(false)\n  const [selectedProduct, setSelectedProduct] = useState({\n    value: '',\n    label: '',\n    pdf: '',\n    allowed: '',\n    message: '',\n  })\n  const [manualLink, setManualLink] = useState('')\n  const [isAllowed, setisAllowed] = useState(false)\n  const [hasMessage, setHasMessage] = useState('')\n  const [selectedProductPart, setSelectedProductPart] = useState('')\n  const { items, loading: loadingList, error } = useSDAItemsListData()\n\n  const { value: selectedProductValue } = selectedProduct\n\n  const getGardenItemOptions = () => {\n    let options = []\n    if (items && items.length) {\n      options = [{ value: '', label: 'Select...', pdf: '' }].concat(\n        items.map(item => ({\n          value: item.Product_ID,\n          label: item.Product_Description,\n          pdf: item.Product_Manual,\n        }))\n      )\n    }\n    return options\n  }\n\n  const getItemPartOptions = () => {\n    let options = []\n    if (items?.length && selectedProductValue) {\n      const productParts = items.find(\n        item => item.Product_ID === selectedProductValue\n      )?.Product_Parts\n      if (productParts?.length)\n        options = [\n          { value: '', label: 'Select...', allowed: '', message: '' },\n        ].concat(\n          productParts.map(item => ({\n            value: item.Value,\n            label: item.Value,\n            allowed: item.Allowed,\n            message: item.Message,\n          }))\n        )\n    }\n    return options\n  }\n\n  const handleProductChange = option => {\n    const { value } = option\n    const { label } = option\n    const { pdf } = option\n    setSelectedProduct(option)\n    formik.setFieldValue('gardening_electric_product', label)\n    setSelectedProductPart('')\n    if (!value) {\n      setManualLink('')\n      return\n    }\n    setManualLink(pdf)\n  }\n\n  const handlePartChange = option => {\n    const { value } = option\n    const { allowed } = option\n    const { message } = option\n    if (!value) {\n      setSelectedProductPart('')\n      return\n    }\n    setSelectedProductPart(value)\n    formik.setFieldValue('gardening_electric_part', value)\n    setHasMessage(message)\n    setisAllowed(allowed)\n  }\n\n  return (\n    <>\n      <Form.Fieldset legend=\"About your Product\">\n        <Form.Item width={1}>\n          <Label\n            fieldId=\"gardening_electric_product\"\n            labelText=\"Select your product from the list below.\"\n          />\n          <Select\n            options={getGardenItemOptions()}\n            isLoading={loadingList}\n            onChange={handleProductChange}\n            name=\"gardening_electric_product\"\n            value={\n              getGardenItemOptions()\n                ? getGardenItemOptions().find(\n                    option => option.value === selectedProductValue\n                  )\n                : null\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <div className=\"mb-10\">\n        {manualLink && (\n          <>\n            <div className=\"pb-6\">\n              <a\n                target=\"_blank\"\n                href={manualLink}\n                rel=\"noopener noreferrer\"\n                className=\"inline-flex py-2 text-lg font-semibold rounded-lg text-secondary-dark\"\n              >\n                Download the Instruction Manual for this product\n                <Icon icon=\"save\" className=\"ml-4 fill-current\" />\n              </a>\n            </div>\n            <button\n              className={`iinline-block px-8 py-3 pb-4 font-semibold text-white rounded-lg sm:px-5 bg-secondary hover:bg-secondary-dark hover:cursor-pointer  ${\n                !show ? 'opacity-100' : 'opacity-25'\n              }`}\n              onClick={e => {\n                e.preventDefault()\n                setShow(!show)\n              }}\n            >\n              <span className=\"flex items-center justify-start \">\n                Or click to proceed and request part\n                <Icon\n                  icon=\"forwardArrow\"\n                  className=\"w-2 h-5 ml-3 opacity-50 fill-current\"\n                />\n              </span>\n            </button>\n          </>\n        )}\n        {error && <div className=\"p-4 text-lg text-error\">{error}</div>}\n      </div>\n      {show && (\n        <>\n          <Form.Fieldset legend=\"About the required part\">\n            <Form.Item width={1}>\n              <Label\n                fieldId=\"gardening_electric_part\"\n                labelText=\"Select your part from the list below.\"\n              />\n              <Select\n                options={getItemPartOptions()}\n                isLoading={loadingList}\n                onChange={handlePartChange}\n                name=\"gardening_electric_part\"\n                value={\n                  getItemPartOptions()\n                    ? getItemPartOptions().find(\n                        option => option.value === selectedProductPart\n                      )\n                    : null\n                }\n              />\n            </Form.Item>\n            {hasMessage && (\n              <div className=\"w-full px-2 py-6\">\n                <Note>\n                  <p className=\"text-lg font-medium\">{hasMessage}</p>\n                </Note>\n              </div>\n            )}\n          </Form.Fieldset>\n\n          {isAllowed && (\n            <>\n              <Form.Fieldset>\n                <Form.Item width={1}>\n                  <Input.Message label=\"Further information (please provide specific reasons for your request)\" />\n                </Form.Item>\n              </Form.Fieldset>\n\n              <Form.Fieldset legend=\"About you\">\n                <Group.Customer />\n                <Form.Item width={2}>\n                  <Input.MoreCardNumber />\n                </Form.Item>\n              </Form.Fieldset>\n\n              <Form.Fieldset legend=\"Address\">\n                <Group.Address />\n              </Form.Fieldset>\n\n              <Group.Confirmations />\n\n              <Input.SubmitButton />\n            </>\n          )}\n        </>\n      )}\n    </>\n  )\n}\n\nexport default connect(ElectricalInstructionsAndPartsForm)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicEnquiryWithStore = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue('dynamic_case_category', selectedReason.caseCategory)\n    setFieldValue('dynamic_case_reason', selectedReason.caseReason)\n    setFieldValue('dynamic_case_type', selectedReason.caseType)\n    setFieldValue('dynamic_detailed_reason', selectedReason.detailedReason)\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  return (\n    <>\n      {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n        <CaseDetailsReasons\n          subject={dynamicReasons[getID].subject}\n          category={dynamicReasons[getID].caseCategory}\n          reason={dynamicReasons[getID].caseReason}\n          type={dynamicReasons[getID].caseType}\n          detailed={dynamicReasons[getID].detailedReason}\n        />\n      )} */}\n      <Form.Fieldset legend=\"Type of enquiry\">\n        <Form.Item width={1}>\n          <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n          <Select\n            required\n            name=\"category\"\n            options={dynamicReasons?.map(dropdowns => ({\n              value: dropdowns.id,\n              label: dropdowns.dropdown,\n            }))}\n            value={selectedType}\n            onChange={selectedType => {\n              setSelectedType(selectedType)\n            }}\n          />\n          <Field\n            hidden\n            id=\"hidden-id-to-show-validation-for-dynamic-select\"\n            component={InputField}\n            value={uploadSuccess}\n            validate={value =>\n              validateString(uploadSuccess, 'The type of enquiry', true)\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n      <Group.Confirmations />\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nDynamicEnquiryWithStore.propTypes = propTypes\n\nexport default connect(DynamicEnquiryWithStore)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicEnquiryWithStoreAndDate = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue('dynamic_case_category', selectedReason.caseCategory)\n    setFieldValue('dynamic_case_reason', selectedReason.caseReason)\n    setFieldValue('dynamic_case_type', selectedReason.caseType)\n    setFieldValue('dynamic_detailed_reason', selectedReason.detailedReason)\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  return (\n    <>\n      {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n        <CaseDetailsReasons\n          subject={dynamicReasons[getID].subject}\n          category={dynamicReasons[getID].caseCategory}\n          reason={dynamicReasons[getID].caseReason}\n          type={dynamicReasons[getID].caseType}\n          detailed={dynamicReasons[getID].detailedReason}\n        />\n      )} */}\n      <Form.Fieldset legend=\"Type of enquiry\">\n        <Form.Item width={1}>\n          <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n          <Select\n            required\n            name=\"category\"\n            options={dynamicReasons?.map(dropdowns => ({\n              value: dropdowns.id,\n              label: dropdowns.dropdown,\n            }))}\n            value={selectedType}\n            onChange={selectedType => {\n              setSelectedType(selectedType)\n            }}\n          />\n          <Field\n            hidden\n            id=\"hidden-id-to-show-validation-for-dynamic-select\"\n            component={InputField}\n            value={uploadSuccess}\n            validate={value =>\n              validateString(uploadSuccess, 'The type of enquiry', true)\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.DateTime\n            label=\"Date and approx time of incident\"\n            id=\"incident_date_time\"\n          />\n        </Form.Item>\n\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nDynamicEnquiryWithStoreAndDate.propTypes = propTypes\n\nexport default connect(DynamicEnquiryWithStoreAndDate)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicCafeEnquiryWithDateAndReceipt = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue('dynamic_case_category', selectedReason.caseCategory)\n    setFieldValue('dynamic_case_reason', selectedReason.caseReason)\n    setFieldValue('dynamic_case_type', selectedReason.caseType)\n    setFieldValue('dynamic_detailed_reason', selectedReason.detailedReason)\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  return (\n    <>\n      {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n        <CaseDetailsReasons\n          subject={dynamicReasons[getID].subject}\n          category={dynamicReasons[getID].caseCategory}\n          reason={dynamicReasons[getID].caseReason}\n          type={dynamicReasons[getID].caseType}\n          detailed={dynamicReasons[getID].detailedReason}\n        />\n      )} */}\n      <Form.Fieldset legend=\"Type of enquiry\">\n        <Form.Item width={1}>\n          <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n          <Select\n            required\n            name=\"category\"\n            options={dynamicReasons?.map(dropdowns => ({\n              value: dropdowns.id,\n              label: dropdowns.dropdown,\n            }))}\n            value={selectedType}\n            onChange={selectedType => {\n              setSelectedType(selectedType)\n            }}\n          />\n          <Field\n            hidden\n            id=\"hidden-id-to-show-validation-for-dynamic-select\"\n            component={InputField}\n            value={uploadSuccess}\n            validate={value =>\n              validateString(uploadSuccess, 'The type of enquiry', true)\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.DateTime\n            label=\"Date and approx time of your visit\"\n            id=\"incident_date_time\"\n          />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.CafeMealPurchased\n            label=\"Name of the Meal Purchased\"\n            id=\"meal_purchased\"\n          />\n        </Form.Item>\n        <Form.Item>\n          <Input.SupportingFiles label=\"Please upload your receipt\" />\n        </Form.Item>\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nDynamicCafeEnquiryWithDateAndReceipt.propTypes = propTypes\n\nexport default connect(DynamicCafeEnquiryWithDateAndReceipt)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue('dynamic_case_category', selectedReason.caseCategory)\n    setFieldValue('dynamic_case_reason', selectedReason.caseReason)\n    setFieldValue('dynamic_case_type', selectedReason.caseType)\n    setFieldValue('dynamic_detailed_reason', selectedReason.detailedReason)\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  return (\n    <>\n      {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n        <CaseDetailsReasons\n          subject={dynamicReasons[getID].subject}\n          category={dynamicReasons[getID].caseCategory}\n          reason={dynamicReasons[getID].caseReason}\n          type={dynamicReasons[getID].caseType}\n          detailed={dynamicReasons[getID].detailedReason}\n        />\n      )} */}\n      <Form.Fieldset legend=\"Type of enquiry\">\n        <Form.Item width={1}>\n          <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n          <Select\n            required\n            name=\"category\"\n            options={dynamicReasons?.map(dropdowns => ({\n              value: dropdowns.id,\n              label: dropdowns.dropdown,\n            }))}\n            value={selectedType}\n            onChange={selectedType => {\n              setSelectedType(selectedType)\n            }}\n          />\n          <Field\n            hidden\n            id=\"hidden-id-to-show-validation-for-dynamic-select\"\n            component={InputField}\n            value={uploadSuccess}\n            validate={value =>\n              validateString(uploadSuccess, 'The type of enquiry', true)\n            }\n          />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.DateTime\n            label=\"Date and approx time of incident\"\n            id=\"incident_date_time\"\n          />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.ProductName label=\"Product name\" />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.ProductBarCode label=\"Product bar code\" />\n        </Form.Item>\n        <Form.Item>\n          <Input.SupportingFilesRequired label=\"Please upload your receipt\" />\n        </Form.Item>\n\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nDynamicEnquiryWithStoreAndDateAndReceiptAndBarcode.propTypes = propTypes\n\nexport default connect(DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicOnlineShoppingEnquiryForm = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue, values },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue(\n      'dynamic_case_category_online',\n      selectedReason.onlineCaseCategory\n    )\n    setFieldValue('dynamic_case_reason_online', selectedReason.onlineCaseReason)\n    setFieldValue('dynamic_case_type_online', selectedReason.onlineCaseType)\n    setFieldValue(\n      'dynamic_detailed_reason_online',\n      selectedReason.onlineDetailedReason\n    )\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n            <CaseDetailsReasons\n              subject={dynamicReasons[getID].subject}\n              category={dynamicReasons[getID].onlineCaseCategory}\n              reason={dynamicReasons[getID].onlineCaseReason}\n              type={dynamicReasons[getID].onlineCaseType}\n              detailed={dynamicReasons[getID].onlineDetailedReason}\n            />\n          )} */}\n\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateOfDelivery label=\"Date of Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Type of enquiry\">\n            <Form.Item width={1}>\n              <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n              <Select\n                required\n                name=\"category\"\n                options={dynamicReasons?.map(dropdowns => ({\n                  value: dropdowns.id,\n                  label: dropdowns.dropdown,\n                }))}\n                value={selectedType}\n                onChange={selectedType => {\n                  setSelectedType(selectedType)\n                }}\n              />\n              <Field\n                hidden\n                id=\"hidden-id-to-show-validation-for-dynamic-select\"\n                component={InputField}\n                value={uploadSuccess}\n                validate={value =>\n                  validateString(uploadSuccess, 'The type of enquiry', true)\n                }\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload any images that may help your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              wwithSubstitutions={false}\n              singleProduct={true}\n            />\n            <Form.Item width={2}>\n              <Input.Date label=\"Date on Item\" id=\"Use_BY_BBD\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.ProductBarCode label=\"Item bar code\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nDynamicOnlineShoppingEnquiryForm.propTypes = propTypes\n\nexport default connect(DynamicOnlineShoppingEnquiryForm)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicOnlineShoppingEnquiryComplaintForm = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue, values },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue(\n      'dynamic_case_category_online',\n      selectedReason.onlineCaseCategory\n    )\n    setFieldValue('dynamic_case_reason_online', selectedReason.onlineCaseReason)\n    setFieldValue('dynamic_case_type_online', selectedReason.onlineCaseType)\n    setFieldValue(\n      'dynamic_detailed_reason_online',\n      selectedReason.onlineDetailedReason\n    )\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n            <CaseDetailsReasons\n              subject={dynamicReasons[getID].subject}\n              category={dynamicReasons[getID].onlineCaseCategory}\n              reason={dynamicReasons[getID].onlineCaseReason}\n              type={dynamicReasons[getID].onlineCaseType}\n              detailed={dynamicReasons[getID].onlineDetailedReason}\n            />\n          )} */}\n\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateOfDelivery label=\"Date of Delivery\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Type of enquiry\">\n            <Form.Item width={1}>\n              <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n              <Select\n                required\n                name=\"category\"\n                options={dynamicReasons?.map(dropdowns => ({\n                  value: dropdowns.id,\n                  label: dropdowns.dropdown,\n                }))}\n                value={selectedType}\n                onChange={selectedType => {\n                  setSelectedType(selectedType)\n                }}\n              />\n              <Field\n                hidden\n                id=\"hidden-id-to-show-validation-for-dynamic-select\"\n                component={InputField}\n                value={uploadSuccess}\n                validate={value =>\n                  validateString(uploadSuccess, 'The type of enquiry', true)\n                }\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload any images that may help your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails withSubstitutions={true} />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nDynamicOnlineShoppingEnquiryComplaintForm.propTypes = propTypes\n\nexport default connect(DynamicOnlineShoppingEnquiryComplaintForm)\n","import React, { useState, useEffect } from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport PropTypes from 'prop-types'\nimport { Label, InputField } from './fields'\nimport Select from '../../Select'\nimport { Field, connect } from 'formik'\nimport { validateString } from './utils/validation'\nimport ProductOnlineInstoreRedirect from './ProductOnlineInstoreRedirect'\n// import CaseDetailsReasons from './CaseDetailsReasons'\n\nconst propTypes = {\n  dynamicReasons: PropTypes.array,\n  dynamicDropdownTitle: PropTypes.string,\n}\n\nconst DynamicOnlineShoppingWithDatesForm = ({\n  dynamicReasons,\n  dynamicDropdownTitle,\n  formik: { setFieldValue, values },\n}) => {\n  // let [getID, setGetID] = useState(0)\n\n  const [selectedType, setSelectedType] = useState({\n    value: dynamicReasons[0].id,\n    label: 'Select...',\n  })\n\n  let [uploadSuccess, setUploadSuccess] = useState('')\n\n  useEffect(() => {\n    const selectedReason = dynamicReasons.find(\n      reason => reason.id === selectedType.value\n    )\n    setFieldValue('dynamic_subject', selectedReason.subject)\n    setFieldValue(\n      'dynamic_case_category_online',\n      selectedReason.onlineCaseCategory\n    )\n    setFieldValue('dynamic_case_reason_online', selectedReason.onlineCaseReason)\n    setFieldValue('dynamic_case_type_online', selectedReason.onlineCaseType)\n    setFieldValue(\n      'dynamic_detailed_reason_online',\n      selectedReason.onlineDetailedReason\n    )\n    // setGetID(selectedReason.id)\n  }, [selectedType, dynamicReasons, setFieldValue])\n\n  useEffect(() => {\n    if (selectedType.label !== 'Select...') {\n      setUploadSuccess('yesplease')\n      // setGetID(selectedReason.id)\n    }\n  }, [selectedType, uploadSuccess])\n\n  const { instore_or_online } = values\n\n  return (\n    <>\n      <ProductOnlineInstoreRedirect enquiry=\"product\" />\n      {instore_or_online && instore_or_online === 'online-shopping' && (\n        <>\n          {/* {`${process.env.FORM_DETAILS}` === 'show' && (\n            <CaseDetailsReasons\n              subject={dynamicReasons[getID].subject}\n              category={dynamicReasons[getID].onlineCaseCategory}\n              reason={dynamicReasons[getID].onlineCaseReason}\n              type={dynamicReasons[getID].onlineCaseType}\n              detailed={dynamicReasons[getID].onlineDetailedReason}\n            />\n          )} */}\n          <Form.Fieldset legend=\"About your order\">\n            <Form.Item width={2}>\n              <Input.ExternalOrderId isOnlineForm />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.DateOfDelivery label=\"Date of Delivery\" />\n            </Form.Item>\n            <Form.Item width={2}>\n              <Input.Date label=\"Best Before or Use By Date\" id=\"Use_BY_BBD\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Type of enquiry\">\n            <Form.Item width={1}>\n              <Label fieldId=\"category\" labelText={dynamicDropdownTitle} />\n              <Select\n                required\n                name=\"category\"\n                options={dynamicReasons?.map(dropdowns => ({\n                  value: dropdowns.id,\n                  label: dropdowns.dropdown,\n                }))}\n                value={selectedType}\n                onChange={selectedType => {\n                  setSelectedType(selectedType)\n                }}\n              />\n              <Field\n                hidden\n                id=\"hidden-id-to-show-validation-for-dynamic-select\"\n                component={InputField}\n                value={uploadSuccess}\n                validate={value =>\n                  validateString(uploadSuccess, 'The type of enquiry', true)\n                }\n              />\n            </Form.Item>\n            <Form.Item>\n              <Input.SupportingFiles label=\"Please upload any images that may help your enquiry\" />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About the products\">\n            <Input.ProductDetails\n              withSubstitutions={false}\n              singleProduct={true}\n            />\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"About you\">\n            <Group.Customer />\n            <Form.Item width={2}>\n              <Input.MoreCardNumber />\n            </Form.Item>\n          </Form.Fieldset>\n\n          <Form.Fieldset legend=\"Address\">\n            <Group.Address />\n          </Form.Fieldset>\n\n          <Group.Confirmations />\n\n          <Input.SubmitButton />\n        </>\n      )}\n    </>\n  )\n}\n\nDynamicOnlineShoppingWithDatesForm.propTypes = propTypes\n\nexport default connect(DynamicOnlineShoppingWithDatesForm)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst CafeEnquiryWithDate = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item width={2}>\n        <Input.DateTime\n          label=\"Date and approx time of incident\"\n          id=\"incident_date_time\"\n        />\n      </Form.Item>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default CafeEnquiryWithDate\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst CafeEnquiryWithDateAndReceipt = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.DateTime\n            label=\"Date and approx time of your visit\"\n            id=\"incident_date_time\"\n          />\n        </Form.Item>\n        <Form.Item width={2}>\n          <Input.CafeMealPurchased\n            label=\"Name of the Meal Purchased\"\n            id=\"meal_purchased\"\n          />\n        </Form.Item>\n        <Form.Item>\n          <Input.SupportingFiles label=\"Please upload your receipt\" />\n        </Form.Item>\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default CafeEnquiryWithDateAndReceipt\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst PetrolEnquiryWithDateAndReceipt = () => {\n  return (\n    <>\n      <Form.Fieldset legend=\"About your enquiry\">\n        <Form.Item width={2}>\n          <Input.DateTime\n            label=\"Date and approx time of your visit\"\n            id=\"incident_date_time\"\n          />\n        </Form.Item>\n\n        <Form.Item>\n          <Input.SupportingFilesRequired label=\"Please upload your receipt\" />\n        </Form.Item>\n        <Form.Item>\n          <Input.Message label=\"Tell us about your enquiry\" />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"About the store\">\n        <Form.Item>\n          <Input.StoreFinder labelText=\"Store Postcode\" />\n        </Form.Item>\n      </Form.Fieldset>\n      <Form.Fieldset legend=\"About you\">\n        <Group.Customer />\n        <Form.Item width={2}>\n          <Input.MoreCardNumber />\n        </Form.Item>\n      </Form.Fieldset>\n\n      <Form.Fieldset legend=\"Address\">\n        <Group.Address />\n      </Form.Fieldset>\n\n      <Group.Confirmations />\n\n      <Input.SubmitButton />\n    </>\n  )\n}\n\nexport default PetrolEnquiryWithDateAndReceipt\n","import React from 'react'\n\nconst TrolleywiseForm = () => {\n  return (\n    <section className=\"p-0 -m-2\">\n      <iframe\n        title=\"Morrisons Lost Trolley Form\"\n        src=\"https://trolleywiseapp.com/AdminApplication/#/public/retailer-trolley-report?apiKey=dpb2G6eUKpA2bDXh&countryCode=UK\"\n        height=\"1400px\"\n        width=\"100%\"\n      ></iframe>\n    </section>\n  )\n}\n\nexport default TrolleywiseForm\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithMorrisonsDaily = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the Morrisons Daily\">\n      <Form.Item>\n        <Input.StoreFinder\n          label=\"Postcode of your Morrisons Daily\"\n          morrisonsDaily=\"oldmccolls\"\n        />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithMorrisonsDaily\n","import React from 'react'\nimport { connect } from 'formik'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\nimport Note from '../../Note'\nimport ProductInstoreOnlineRedirect from './ProductInstoreOnlineRedirect'\n\nconst ProductComplaintWithMorrisonsDaily = ({ formik: { values } }) => {\n  const { instore_or_online, is_morrisons_product, can_share_info } = values\n  return (\n    <>\n      <Form.Fieldset legend=\"Type of product\">\n        <ProductInstoreOnlineRedirect enquiry=\"product\" />\n        {instore_or_online && instore_or_online === 'Instore' && (\n          <>\n            <Form.Item>\n              <Input.OptionGroup\n                id=\"is_morrisons_product\"\n                label=\"Is the product a Morrisons branded product?\"\n              />\n            </Form.Item>\n            {is_morrisons_product && is_morrisons_product === 'No' && (\n              <>\n                <Form.Item>\n                  <Note>\n                    <p className=\"mb-4\">\n                      As this product is not made by Morrisons, a full\n                      investigation of your complaint will involve the\n                      manufacturer of the product, who will need to contact you\n                      directly once they have completed their investigation.\n                    </p>\n                    <p className=\"mb-4\">\n                      You can contact the manufacturer directly following the\n                      directions on the product packaging, or we can pass the\n                      details on to them, as long as you give us your permission\n                      to do so. Please be aware that this may take slightly\n                      longer than contacting the manufacturer directly.\n                    </p>\n                    <p>\n                      If you wish for us to pass on the details please complete\n                      the below form\n                    </p>\n                  </Note>\n                  <Input.OptionGroup\n                    id=\"can_share_info\"\n                    label=\"Are you happy for us to share your details with the brand owner?\"\n                  />\n                </Form.Item>\n                {can_share_info === 'No' && (\n                  <Form.Item>\n                    <Note>\n                      <p className=\"mb-4\">\n                        A member of our team will contact you.\n                      </p>\n                    </Note>\n                  </Form.Item>\n                )}\n              </>\n            )}\n          </>\n        )}\n      </Form.Fieldset>\n      {is_morrisons_product &&\n        instore_or_online &&\n        instore_or_online === 'Instore' && (\n          <>\n            {(is_morrisons_product === 'Yes' ||\n              (can_share_info && can_share_info === 'Yes')) && (\n              <>\n                <Form.Fieldset legend=\"About the product\">\n                  <Form.Item width={2}>\n                    <Input.ProductName label=\"Product name\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.ProductBarCode label=\"Product bar code\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.ProductBatchCode label=\"Product batch code\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.DateBestBefore label=\"Product best before or use by date\" />\n                  </Form.Item>\n                  <Form.Item width={2}>\n                    <Input.Date\n                      label=\"Product purchase date\"\n                      id=\"product_purchase_date\"\n                    />\n                  </Form.Item>\n                </Form.Fieldset>\n\n                <Form.Item>\n                  <Input.SupportingFiles label=\"Please upload a picture of the product\" />\n                </Form.Item>\n\n                <Form.Fieldset legend=\"About your complaint\">\n                  <Form.Item>\n                    <Input.Message label=\"Tell us about your complaint\" />\n                  </Form.Item>\n                </Form.Fieldset>\n              </>\n            )}\n            <Form.Fieldset legend=\"About the store\">\n              <Form.Item>\n                <Input.StoreFinder\n                  label=\"Postcode of your Morrisons Daily\"\n                  morrisonsDaily=\"yes\"\n                />\n              </Form.Item>\n            </Form.Fieldset>\n            <Form.Fieldset legend=\"About you\">\n              <Group.Customer />\n              <Form.Item width={2}>\n                <Input.MoreCardNumber />\n              </Form.Item>\n            </Form.Fieldset>\n\n            <Form.Fieldset legend=\"Address\">\n              <Group.Address />\n            </Form.Fieldset>\n\n            <Group.Confirmations />\n\n            <Input.SubmitButton />\n          </>\n        )}\n    </>\n  )\n}\n\nexport default connect(ProductComplaintWithMorrisonsDaily)\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithDateAndMorrisonsDaily = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item width={2}>\n        <Input.DateTime\n          label=\"Date and approx time of incident\"\n          id=\"incident_date_time\"\n        />\n      </Form.Item>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder\n          label=\"Postcode of your Morrisons Daily\"\n          morrisonsDaily=\"yes\"\n        />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithDateAndMorrisonsDaily\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item width={2}>\n        <Input.DateTime\n          label=\"Date and approx time of incident\"\n          id=\"incident_date_time\"\n        />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.ProductName label=\"Product name\" />\n      </Form.Item>\n      <Form.Item width={2}>\n        <Input.ProductBarCode label=\"Product bar code\" />\n      </Form.Item>\n      <Form.Item>\n        <Input.SupportingFilesRequired label=\"Please upload your receipt\" />\n      </Form.Item>\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder\n          label=\"Postcode of your Morrisons Daily\"\n          morrisonsDaily=\"yes\"\n        />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily\n","import React from 'react'\nimport { Form } from './utils/Form'\nimport * as Input from './utils/Input'\nimport * as Group from './utils/Groups'\n\nconst GeneralEnquiryJustStores = () => (\n  <>\n    <Form.Fieldset legend=\"About your enquiry\">\n      <Form.Item>\n        <Input.Message label=\"Tell us about your enquiry\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About the store\">\n      <Form.Item>\n        <Input.StoreFinder labelText=\"Store Postcode\" morrisonsDaily=\"no\" />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"About you\">\n      <Group.Customer />\n      <Form.Item width={2}>\n        <Input.MoreCardNumber />\n      </Form.Item>\n    </Form.Fieldset>\n\n    <Form.Fieldset legend=\"Address\">\n      <Group.Address />\n    </Form.Fieldset>\n\n    <Group.Confirmations />\n\n    <Input.SubmitButton />\n  </>\n)\n\nexport default GeneralEnquiryJustStores\n","import ProductForeignBodyForm from './forms/ProductForeignBodyForm'\nimport ProductFoodOutOfDateForm from './forms/ProductFoodOutOfDateForm'\nimport ProductIllnessForm from './forms/ProductIllnessForm'\nimport StoresIncidentDamageForm from './forms/StoresIncidentDamageForm'\nimport GeneralEnquiryWithFoodBoxOrderID from './forms/GeneralEnquiryWithFoodBoxOrderID'\nimport GeneralEnquiryWithEatFreshOrderID from './forms/GeneralEnquiryWithEatFreshOrderID'\nimport GeneralEnquiryForm from './forms/GeneralEnquiryForm'\nimport GeneralEnquiryWithScanAndShopReason from './forms/GeneralEnquiryWithScanAndShopReason'\nimport GeneralEnquiryWithOrderID from './forms/GeneralEnquiryWithOrderID'\nimport GeneralEnquiryWithOrderIDAndDate from './forms/GeneralEnquiryWithOrderIDAndDate'\nimport GeneralEnquiryWithImagesOrderID from './forms/GeneralEnquiryWithImagesOrderID'\nimport GeneralEnquiryWithBestBeforeDate from './forms/GeneralEnquiryWithBestBeforeDate'\nimport GeneralEnquiryWithStore from './forms/GeneralEnquiryWithStore'\nimport GeneralEnquiryWithStoreAndDate from './forms/GeneralEnquiryWithStoreAndDate'\nimport GeneralEnquiryWithDate from './forms/GeneralEnquiryWithDate'\nimport GeneralEnquiryWithDateButNoStore from './forms/GeneralEnquiryWithDateButNoStore'\nimport GeneralEnquiryWithStoreAndOnlineRedirect from './forms/GeneralEnquiryWithStoreAndOnlineRedirect'\nimport GeneralEnquiryWithYesNo from './forms/GeneralEnquiryWithYesNo'\nimport GeneralEnquiryGoodToGrow from './forms/GeneralEnquiryGoodToGrow'\nimport GeneralEnquirySaversYesNo from './forms/GeneralEnquirySaversYesNo'\nimport GeneralEnquiryChristmasYesNo from './forms/GeneralEnquiryChristmasYesNo'\nimport GeneralEnquiryChristmasYesNoStoreOnline from './forms/GeneralEnquiryChristmasYesNoStoreOnline'\nimport GeneralEnquiryChristmasYesNoStartCollecting from './forms/GeneralEnquiryChristmasYesNoStartCollecting'\nimport GeneralEnquiryFormWithReceipt from './forms/GeneralEnquiryFormWithReceipt'\nimport GeneralEnquiryWithPreviousAddress from './forms/GeneralEnquiryWithPreviousAddress'\nimport ProductComplaintForm from './forms/ProductComplaintForm'\nimport ProductRefundForm from './forms/ProductRefundForm'\nimport ProductAllegedAllergenForm from './forms/ProductAllegedAllergenForm'\nimport ProductEnquiryWithBarcode from './forms/ProductEnquiryWithBarcode'\nimport OnlineShoppingEnquiryForm from './forms/OnlineShoppingEnquiryForm'\nimport OnlineShoppingWithProducts from './forms/OnlineShoppingWithProducts'\nimport OnlineShoppingOutOfDate from './forms/OnlineShoppingOutOfDate'\nimport OnlineShoppingSubstitute from './forms/OnlineShoppingSubstitute'\nimport OnlineShoppingMissingItem from './forms/OnlineShoppingMissingItem'\nimport OnlineShoppingWithProductsWithImages from './forms/OnlineShoppingWithProductsWithImages'\nimport OnlineShoppingWithProductsWithReceipt from './forms/OnlineShoppingWithProductsWithReceipt'\nimport OnlineShoppingWithSubstitutions from './forms/OnlineShoppingWithSubstitutions'\nimport OnlineShoppingWithProductsOrderIDAndDate from './forms/OnlineShoppingWithProductsOrderIDAndDate'\nimport PromotionPointsNotEarnedForm from './forms/PromotionPointsNotEarnedForm'\nimport CarParkingForm from './forms/CarParkingForm'\nimport BlankForm from './forms/BlankForm'\nimport FoodBoxGeneralEnquiry from './forms/FoodBoxGeneralEnquiry'\nimport GeneralEnquiryWithFoodBox from './forms/GeneralEnquiryWithFoodBox'\nimport EatFreshGeneralEnquiry from './forms/EatFreshGeneralEnquiry'\nimport EatFreshWrongBoxEnquiry from './forms/EatFreshWrongBoxEnquiry'\nimport GardenInstructionsAndPartsForm from './forms/GardenInstructionsAndPartsForm'\nimport ElectricalInstructionsAndPartsForm from './forms/ElectricalInstructionsAndPartsForm'\nimport DynamicEnquiryWithStore from './forms/DynamicEnquiryWithStore'\nimport DynamicEnquiryWithStoreAndDate from './forms/DynamicEnquiryWithStoreAndDate'\nimport DynamicCafeEnquiryWithDateAndReceipt from './forms/DynamicCafeEnquiryWithDateAndReceipt'\nimport DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode from './forms/DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode'\nimport DynamicOnlineShoppingEnquiryForm from './forms/DynamicOnlineShoppingEnquiryForm'\nimport DynamicOnlineShoppingEnquiryComplaintForm from './forms/DynamicOnlineShoppingEnquiryComplaintForm'\nimport DynamicOnlineShoppingWithDatesForm from './forms/DynamicOnlineShoppingWithDatesForm'\nimport CafeEnquiryWithDate from './forms/CafeEnquiryWithDate'\nimport CafeEnquiryWithDateAndReceipt from './forms/CafeEnquiryWithDateAndReceipt'\nimport PetrolEnquiryWithDateAndReceipt from './forms/PetrolEnquiryWithDateAndReceipt'\nimport TrolleywiseForm from './forms/TrolleywiseForm'\n// New forms for Morrisons Daily below\nimport GeneralEnquiryWithMorrisonsDaily from './forms/GeneralEnquiryWithMorrisonsDaily'\nimport ProductComplaintWithMorrisonsDaily from './forms/ProductComplaintWithMorrisonsDaily'\nimport GeneralEnquiryWithDateAndMorrisonsDaily from './forms/GeneralEnquiryWithDateAndMorrisonsDaily'\nimport GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily from './forms/GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily'\n//New for just stores\nimport GeneralEnquiryJustStores from './forms/GeneralEnquiryJustStores'\n\nconst getFormComponent = formId => {\n  let component\n  switch (formId) {\n    case 'general-enquiry-form':\n      component = GeneralEnquiryForm\n      break\n    case 'enquiry-with-scan-and-shop-reason':\n      component = GeneralEnquiryWithScanAndShopReason\n      break\n    case 'enquiry-with-store':\n      component = GeneralEnquiryWithStore\n      break\n    case 'enquiry-with-store-and-date':\n      component = GeneralEnquiryWithStoreAndDate\n      break\n    case 'enquiry-with-date':\n      component = GeneralEnquiryWithDate\n      break\n    case 'enquiry-with-store-and-online-redirect':\n      component = GeneralEnquiryWithStoreAndOnlineRedirect\n      break\n    case 'enquiry-with-foodbox-orderid':\n      component = GeneralEnquiryWithFoodBoxOrderID\n      break\n    case 'enquiry-with-eatfresh-orderid':\n      component = GeneralEnquiryWithEatFreshOrderID\n      break\n    case 'enquiry-with-orderid':\n      component = GeneralEnquiryWithOrderID\n      break\n    case 'enquiry-with-orderid-and-date':\n      component = GeneralEnquiryWithOrderIDAndDate\n      break\n    case 'enquiry-with-date-but-no-store':\n      component = GeneralEnquiryWithDateButNoStore\n      break\n    case 'enquiry-with-images-orderid':\n      component = GeneralEnquiryWithImagesOrderID\n      break\n    case 'enquiry-form-with-bbd':\n      component = GeneralEnquiryWithBestBeforeDate\n      break\n    case 'general-enquiry-with-yes-no':\n      component = GeneralEnquiryWithYesNo\n      break\n    case 'general-enquiry-good-to-grow':\n      component = GeneralEnquiryGoodToGrow\n      break\n    case 'general-enquiry-savers-yes-no':\n      component = GeneralEnquirySaversYesNo\n      break\n    case 'general-enquiry-christmas-yes-no':\n      component = GeneralEnquiryChristmasYesNo\n      break\n    case 'general-enquiry-christmas-yes-no-store-online':\n      component = GeneralEnquiryChristmasYesNoStoreOnline\n      break\n    case 'general-enquiry-christmas-yes-no-start-collecting':\n      component = GeneralEnquiryChristmasYesNoStartCollecting\n      break\n    case 'general-enquiry-form-with-receipt':\n      component = GeneralEnquiryFormWithReceipt\n      break\n    case 'general-enquiry-with-previous-address':\n      component = GeneralEnquiryWithPreviousAddress\n      break\n    case 'product-complaint-form':\n      component = ProductComplaintForm\n      break\n    case 'product-refund-form':\n      component = ProductRefundForm\n      break\n    case 'foreign-body-form':\n      component = ProductForeignBodyForm\n      break\n    case 'alleged-allergen-form':\n      component = ProductAllegedAllergenForm\n      break\n    case 'out-of-date-form':\n      component = ProductFoodOutOfDateForm\n      break\n    case 'product-enquiry-with-barcode':\n      component = ProductEnquiryWithBarcode\n      break\n    case 'incident-damage-form':\n      component = StoresIncidentDamageForm\n      break\n    case 'online-shopping-enquiry-form':\n      component = OnlineShoppingEnquiryForm\n      break\n    case 'online-shopping-product-complaint-form':\n      component = OnlineShoppingWithProducts\n      break\n    case 'online-shopping-product-complaint-form-missing-item':\n      component = OnlineShoppingMissingItem\n      break\n    case 'online-shopping-product-complaint-form-substitute':\n      component = OnlineShoppingSubstitute\n      break\n    case 'online-shopping-product-complaint-form-date':\n      component = OnlineShoppingOutOfDate\n      break\n    case 'online-shopping-product-complaint-form-with-image':\n      component = OnlineShoppingWithProductsWithImages\n      break\n    case 'online-shopping-product-complaint-form-with-receipt':\n      component = OnlineShoppingWithProductsWithReceipt\n      break\n    case 'online-shopping-substitution-complaint-form':\n      component = OnlineShoppingWithSubstitutions\n      break\n    case 'online-shopping-product-id-date-form':\n      component = OnlineShoppingWithProductsOrderIDAndDate\n      break\n    case 'product-illness-form':\n      component = ProductIllnessForm\n      break\n    case 'activated-used-points-not-earned-form':\n      component = PromotionPointsNotEarnedForm\n      break\n    case 'car-parking-form':\n      component = CarParkingForm\n      break\n    case 'no-form-needed':\n      component = BlankForm\n      break\n    case 'food-box-general-enquiry':\n      component = FoodBoxGeneralEnquiry\n      break\n    case 'enquiry-with-foodbox':\n      component = GeneralEnquiryWithFoodBox\n      break\n    case 'eat-fresh-general-enquiry':\n      component = EatFreshGeneralEnquiry\n      break\n    case 'eat-fresh-wrong-box':\n      component = EatFreshWrongBoxEnquiry\n      break\n    case 'electrical-instructions-and-parts-form':\n      component = ElectricalInstructionsAndPartsForm\n      break\n    case 'garden-instructions-and-parts-form':\n      component = GardenInstructionsAndPartsForm\n      break\n    case 'enquiry-with-store-dynamic':\n      component = DynamicEnquiryWithStore\n      break\n    case 'enquiry-with-store-and-date-dynamic':\n      component = DynamicEnquiryWithStoreAndDate\n      break\n    case 'cafe-enquiry-with-date-and-receipt-dynamic':\n      component = DynamicCafeEnquiryWithDateAndReceipt\n      break\n    case 'enquiry-with-store-and-date-receipt-barcode-dynamic':\n      component = DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode\n      break\n    case 'online-shopping-product-dynamic':\n      component = DynamicOnlineShoppingEnquiryForm\n      break\n    case 'online-shopping-product-complaint-dynamic':\n      component = DynamicOnlineShoppingEnquiryComplaintForm\n      break\n    case 'online-shopping-product-with-dates-dynamic':\n      component = DynamicOnlineShoppingWithDatesForm\n      break\n    case 'cafe-enquiry-with-date':\n      component = CafeEnquiryWithDate\n      break\n    case 'cafe-enquiry-with-date-and-receipt':\n      component = CafeEnquiryWithDateAndReceipt\n      break\n    case 'petrol-enquiry-with-date-and-receipt':\n      component = PetrolEnquiryWithDateAndReceipt\n      break\n    case 'trolleywise-form':\n      component = TrolleywiseForm\n      break\n    case 'enquiry-with-morrisons-daily':\n      component = GeneralEnquiryWithMorrisonsDaily\n      break\n    case 'product-complaint-morrisons-daily':\n      component = ProductComplaintWithMorrisonsDaily\n      break\n    case 'enquiry-with-date-morrisons-daily':\n      component = GeneralEnquiryWithDateAndMorrisonsDaily\n      break\n    case 'enquiry-with-barcode-receipt-morrisons-daily':\n      component = GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily\n      break\n    case 'enquiry-just-stores':\n      component = GeneralEnquiryJustStores\n      break\n    default:\n      component = GeneralEnquiryForm\n      break\n  }\n  return component\n}\n\nexport default getFormComponent\n","const useProdIds = process.env.GATSBY_ACTIVE_ENV === 'production' ? true : false\n\nconst IdConfig = [\n  {\n    field: 'first_name',\n    prod: '00ND0000004zbjg',\n    nonProd: '00ND0000004zbjg',\n  },\n  {\n    field: 'surname',\n    prod: '00ND0000004zbjh',\n    nonProd: '00ND0000004zbjh',\n  },\n  {\n    field: 'email',\n    prod: 'email',\n    nonProd: 'email',\n  },\n  {\n    field: 'telephone',\n    prod: '00ND00000050NtK',\n    nonProd: '00ND00000050NtK',\n  },\n  {\n    field: 'address',\n    prod: '00ND0000004zbjb',\n    nonProd: '00ND0000004zbjb',\n  },\n  {\n    field: 'address2',\n    prod: '00ND0000004zbjc',\n    nonProd: '00ND0000004zbjc',\n  },\n  {\n    field: 'town',\n    prod: '00ND0000004zbjd',\n    nonProd: '00ND0000004zbjd',\n  },\n  {\n    field: 'postcode',\n    prod: '00ND0000004zbjj',\n    nonProd: '00ND0000004zbjj',\n  },\n  {\n    field: 'store_name',\n    prod: '00ND00000051Ocb',\n    nonProd: '00ND00000051Ocb',\n  },\n  {\n    field: 'more_card_no',\n    prod: '00ND0000005b5EP',\n    nonProd: '00ND0000005b5EP',\n  },\n  {\n    field: 'is_morrisons_product',\n    prod: '00N3z000006lGnW',\n    nonProd: '00N3z000006lGnW',\n  },\n  {\n    field: 'can_share_info',\n    prod: '00N3z000006lGnq',\n    nonProd: '00N3z000006lGnq',\n  },\n  {\n    field: 'product_packaging',\n    prod: '00N3z000006lGnl',\n    nonProd: '00N3z000006lGnl',\n  },\n  {\n    field: 'product_name',\n    prod: '00ND0000005YBH1',\n    nonProd: '00ND0000005YBH1',\n  },\n  {\n    field: 'product_barcode',\n    prod: '00ND0000004zbje',\n    nonProd: '00ND0000004zbje',\n  },\n  {\n    field: 'product_batchcode',\n    prod: '00ND0000006O4k0',\n    nonProd: '00ND0000006O4k0',\n  },\n  {\n    field: 'product_useby',\n    prod: '00ND0000006O4k1',\n    nonProd: '00ND0000006O4k1',\n  },\n  {\n    field: 'description',\n    prod: 'description',\n    nonProd: 'description',\n  },\n  {\n    field: 'reply',\n    prod: '00ND0000004zbja',\n    nonProd: '00ND0000004zbja',\n  },\n  {\n    field: 'confirm',\n    prod: 'confirm',\n    nonProd: 'confirm',\n  },\n  {\n    field: 'incident_details',\n    prod: '00ND00000050Ntc',\n    nonProd: '00ND00000050Ntc',\n  },\n  {\n    field: 'incident_date',\n    prod: '00ND00000050NtU',\n    nonProd: '00ND00000050NtU',\n  },\n  {\n    field: 'supporting_files',\n    prod: '00ND0000006O3w0',\n    nonProd: '00ND0000006O3w0',\n  },\n  {\n    field: 'has_foreign_body',\n    prod: '00N3z000006lGnv',\n    nonProd: '00N3z000006lGnv',\n  },\n  {\n    field: 'has_packaging',\n    prod: '00N3z000006lGnl',\n    nonProd: '00N3z000006lGnl',\n  },\n  {\n    field: 'is_nappy_related',\n    prod: '00N3z000006lL83',\n    nonProd: '00N3z000006lL83',\n  },\n  {\n    field: 'is_food_product',\n    prod: '00N3z000006lL86',\n    nonProd: '00N3z000006lL86',\n  },\n  {\n    field: 'has_sample',\n    prod: '00N3z000006lL82',\n    nonProd: '00N3z000006lL82',\n  },\n  {\n    field: 'sample_location',\n    prod: '00ND00000050Nti',\n    nonProd: '00ND00000050Nti',\n  },\n  {\n    field: 'promo_date_of_purchase',\n    prod: '00N3z000006lGng',\n    nonProd: '00N3z000006lGng',\n  },\n  {\n    field: 'medication_or_illness',\n    prod: '00N3z000006lL7v',\n    nonProd: '00N3z000006lL7v',\n  },\n  {\n    field: 'used_product_without_issue',\n    prod: '00N3z000006lL8I',\n    nonProd: '00N3z000006lL8I',\n  },\n  {\n    field: 'date_of_first_use',\n    prod: '00N3z000006lL80',\n    nonProd: '00N3z000006lL80',\n  },\n  {\n    field: 'date_of_first_symptoms',\n    prod: '00N3z000006lL7z',\n    nonProd: '00N3z000006lL7z',\n  },\n  {\n    field: 'symptoms_stopped_use',\n    prod: '00N3z000006lL8E',\n    nonProd: '00N3z000006lL8E',\n  },\n  {\n    field: 'had_treatment',\n    prod: '00N3z000006lLAZ',\n    nonProd: '00N3z000006lLAZ',\n  },\n  {\n    field: 'treatment_details',\n    prod: '00N3z000006lL8G',\n    nonProd: '00N3z000006lL8G',\n  },\n  {\n    field: 'customer_outcome',\n    prod: '00N3z000006lL7y',\n    nonProd: '00N3z000006lL7y',\n  },\n  {\n    field: 'reaction_details',\n    prod: '00N3z000006lL8i',\n    nonProd: '00N3z000006lL8i',\n  },\n  {\n    field: 'product_before_after',\n    prod: '00N3z000006lLAj',\n    nonProd: '00N3z000006lLAj',\n  },\n  {\n    field: 'product_purchase_date',\n    prod: '00N3z000006lGng',\n    nonProd: '00N3z000006lGng',\n  },\n  {\n    field: 'time_product_consumed',\n    prod: '00ND0000006O4k5',\n    nonProd: '00ND0000006O4k5',\n  },\n  {\n    field: 'time_symptoms_started',\n    prod: '00ND0000006O4k8',\n    nonProd: '00ND0000006O4k8',\n  },\n  {\n    field: 'illness_symptoms',\n    prod: '00ND0000006O4k4',\n    nonProd: '00ND0000006O4k4',\n  },\n  {\n    field: 'followed_symptoms',\n    prod: '00ND0000006O4k6',\n    nonProd: '00ND0000006O4k6',\n  },\n  {\n    field: 'stopped_symptoms',\n    prod: '00N3z000006lLVI',\n    nonProd: '00N3z000006lLVI',\n  },\n  {\n    field: 'prior_symptoms_eaten',\n    prod: '00ND0000006O4k7',\n    nonProd: '00ND0000006O4k7',\n  },\n  {\n    field: 'medical_sought_diagnosis',\n    prod: '00N3z000006lL87',\n    nonProd: '00N3z000006lL87',\n  },\n  {\n    field: 'was_medical_sought',\n    prod: '00N3z000006lLRp',\n    nonProd: '00N3z000006lLRp',\n  },\n  {\n    field: 'time_consumed',\n    prod: '00ND0000006O4k5',\n    nonProd: '00ND0000006O4k5',\n  },\n  {\n    field: 'age_and_allergies',\n    prod: '00N3z000006lL7u',\n    nonProd: '00N3z000006lL7u',\n  },\n  {\n    field: 'customer_actual_allergy',\n    prod: '00N3z000006lL8J',\n    nonProd: '00N3z000006lL8J',\n  },\n  {\n    field: 'branded_share_details',\n    prod: '00N3z000006lL7w',\n    nonProd: '00N3z000006lL7w',\n  },\n  {\n    field: 'sick_note_length',\n    prod: '00N3z000006lL8D',\n    nonProd: '00N3z000006lL8D',\n  },\n  {\n    field: 'used_other_products',\n    prod: '00N3z000006lL8H',\n    nonProd: '00N3z000006lL8H',\n  },\n  {\n    field: 'parking_charge_issue_date',\n    prod: '00N3z000006lL81',\n    nonProd: '00N3z000006lL81',\n  },\n  {\n    field: 'parking_car_reg',\n    prod: '00N3z000006lL7x',\n    nonProd: '00N3z000006lL7x',\n  },\n  {\n    field: 'parking_charge_ref_number',\n    prod: '00N3z000006lL8A',\n    nonProd: '00N3z000006lL8A',\n  },\n  {\n    field: 'parking_company_select',\n    prod: '00N3z000006lL89',\n    nonProd: '00N3z000006lL89',\n  },\n  {\n    field: 'have_allergies_and_what',\n    prod: '00N3z000006lL84',\n    nonProd: '00N3z000006lL84',\n  },\n  {\n    field: 'box_order_id',\n    prod: '00N3z00000AEznM',\n    nonProd: '00N3z00000AEznM',\n  },\n  {\n    field: 'external_order_id',\n    prod: '00N3z000006lGB5',\n    nonProd: '00N3z000006lGB5',\n  },\n  {\n    field: 'food_box_type',\n    prod: '00N3z00000AFmWD',\n    nonProd: '00N3z00000AFmWD',\n  },\n  {\n    field: 'product_feedback',\n    prod: 'description',\n    nonProd: 'description',\n  },\n  {\n    field: 'gardening_electric_product',\n    prod: '00N3z00000Cr6bE',\n    nonProd: '00N3z00000Cr6bE',\n  },\n  {\n    field: 'gardening_electric_part',\n    prod: '00N3z00000Cr6bF',\n    nonProd: '00N3z00000Cr6bF',\n  },\n  {\n    field: 'scan_shop_issues',\n    prod: '00ND00000053hva',\n    nonProd: '00ND00000053hva',\n  },\n  {\n    field: 'staff_name',\n    prod: '00N3z000006lNoM',\n    nonProd: '00N3z000006lNoM',\n  },\n  {\n    field: 'staff_description',\n    prod: '00N3z000006lNoR',\n    nonProd: '00N3z000006lNoR',\n  },\n  {\n    field: 'incident_date_time',\n    prod: '00N3z00000Cr8g7',\n    nonProd: '00N3z00000Cr8g7',\n  },\n  {\n    field: 'date_of_visit',\n    prod: '00ND00000064OGL',\n    nonProd: '00ND00000064OGL',\n  },\n  {\n    field: 'dynamic_subject',\n    prod: 'subject',\n    nonProd: 'subject',\n  },\n  {\n    field: 'dynamic_case_type',\n    prod: '00ND0000004zbjY',\n    nonProd: '00ND0000004zbjY',\n  },\n  {\n    field: 'dynamic_case_category',\n    prod: '00ND00000050NtJ',\n    nonProd: '00ND00000050NtJ',\n  },\n  {\n    field: 'dynamic_case_reason',\n    prod: '00ND00000050NtL',\n    nonProd: '00ND00000050NtL',\n  },\n  {\n    field: 'dynamic_detailed_reason',\n    prod: '00ND00000053hva',\n    nonProd: '00ND00000053hva',\n  },\n  {\n    field: 'dynamic_case_type_online',\n    prod: '00ND0000004zbjY',\n    nonProd: '00ND0000004zbjY',\n  },\n  {\n    field: 'dynamic_case_category_online',\n    prod: '00ND00000050NtJ',\n    nonProd: '00ND00000050NtJ',\n  },\n  {\n    field: 'dynamic_case_reason_online',\n    prod: '00ND00000050NtL',\n    nonProd: '00ND00000050NtL',\n  },\n  {\n    field: 'dynamic_detailed_reason_online',\n    prod: '00ND00000053hva',\n    nonProd: '00ND00000053hva',\n  },\n  {\n    field: 'pcn_paid',\n    prod: '00N3G000006ORKk',\n    nonProd: '00N3G000006ORKk',\n  },\n  {\n    field: 'meal_purchased',\n    prod: '00N3G000006ORKf',\n    nonProd: '00N3G000006ORKf',\n  },\n  {\n    field: 'Date_of_Delivery',\n    prod: '00ND00000050Ntq',\n    nonProd: '00ND00000050Ntq',\n  },\n  {\n    field: 'Use_BY_BBD',\n    prod: '00N3z00000Crqzl',\n    nonProd: '00N3z00000Crqzl',\n  },\n  {\n    field: 'Voucher_Code',\n    prod: '00N3z00000CsJWC',\n    nonProd: '00N3z00000CsJWC',\n  },\n]\n\nconst metaData = [\n  {\n    nonProd_id: 'orgid',\n    prod_id: 'orgid',\n    nonProd_value: '00DQz000004WgMs',\n    prod_value: '00DD0000000ojDb',\n  },\n  {\n    nonProd_id: 'status',\n    prod_id: 'status',\n    nonProd_value: 'Open',\n    prod_value: 'Open',\n  },\n]\n\nexport const mapToSFFields = data => {\n  if (\n    typeof data !== 'object' ||\n    !Object.keys(data) ||\n    !Object.keys(data).length\n  )\n    return\n\n  let matchedId\n  const mappedData = Object.keys(data)\n    .map(key => {\n      matchedId = IdConfig.find(item => item.field === key)\n      return !matchedId\n        ? {}\n        : {\n            [useProdIds ? matchedId.prod : matchedId.nonProd]: data[key],\n          }\n    })\n    .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n\n  const metaDataObj = metaData.reduce((acc, curr) => {\n    return {\n      ...acc,\n      [useProdIds ? curr.prod_id : curr.nonProd_id]: useProdIds\n        ? curr.prod_value\n        : curr.nonProd_value,\n    }\n  }, {})\n\n  return {\n    ...mappedData,\n    ...metaDataObj,\n  }\n}\n","export const franchiseStoresList = {\n  '60924': 'Morrisons Daily',\n  '61005': 'Morrisons Daily',\n  '61093': 'Morrisons Daily',\n  '61094': 'Morrisons Daily',\n  '61095': 'Morrisons Daily',\n  '61096': 'Morrisons Daily',\n  '61097': 'Morrisons Daily',\n  '61098': 'Morrisons Daily',\n  '61100': 'Morrisons Daily',\n  '61105': 'Morrisons Daily',\n  '61427': 'Morrisons Daily',\n  '61448': 'Morrisons Daily',\n  '61495': 'Morrisons Daily',\n  '61522': 'Morrisons Daily',\n  '62287': 'Morrisons Daily',\n  '64604': 'Morrisons Daily',\n  '64605': 'Morrisons Daily',\n  '64615': 'Morrisons Daily',\n  '64617': 'Morrisons Daily',\n  '64622': 'Morrisons Daily',\n  '64629': 'Morrisons Daily',\n  '64641': 'Morrisons Daily',\n  '64643': 'Morrisons Daily',\n  '66486': 'Morrisons Daily',\n  '61154': 'Morrisons Daily',\n  '61204': 'Morrisons Daily',\n  '61225': 'Morrisons Daily',\n  '61279': 'Morrisons Daily',\n  '61539': 'Morrisons Daily',\n  '61544': 'Morrisons Daily',\n  '61639': 'Morrisons Daily',\n  '61678': 'Morrisons Daily',\n  '62082': 'Morrisons Daily',\n  '62241': 'Morrisons Daily',\n  '62283': 'Morrisons Daily',\n  '62424': 'Morrisons Daily',\n  '63276': 'Morrisons Daily',\n  '64024': 'Morrisons Daily',\n  '64607': 'Morrisons Daily',\n  '64611': 'Morrisons Daily',\n  '64612': 'Morrisons Daily',\n  '64625': 'Morrisons Daily',\n  '64627': 'Morrisons Daily',\n  '64633': 'Morrisons Daily',\n  '64636': 'Morrisons Daily',\n  '64642': 'Morrisons Daily',\n  '64650': 'Morrisons Daily',\n  '64651': 'Morrisons Daily',\n  '64652': 'Morrisons Daily',\n  '64653': 'Morrisons Daily',\n  '64654': 'Morrisons Daily',\n  '64655': 'Morrisons Daily',\n  '68363': 'Morrisons Daily',\n  '60847': 'Morrisons Daily',\n  '61057': 'Morrisons Daily',\n  '61104': 'Morrisons Daily',\n  '61255': 'Morrisons Daily',\n  '61290': 'Morrisons Daily',\n  '61404': 'Morrisons Daily',\n  '61450': 'Morrisons Daily',\n  '61468': 'Morrisons Daily',\n  '61494': 'Morrisons Daily',\n  '61508': 'Morrisons Daily',\n  '61513': 'Morrisons Daily',\n  '61549': 'Morrisons Daily',\n  '61567': 'Morrisons Daily',\n  '62495': 'Morrisons Daily',\n  '62851': 'Morrisons Daily',\n  '62999': 'Morrisons Daily',\n  '63741': 'Morrisons Daily',\n  '64608': 'Morrisons Daily',\n  '64610': 'Morrisons Daily',\n  '64621': 'Morrisons Daily',\n  '64626': 'Morrisons Daily',\n  '64632': 'Morrisons Daily',\n  '64638': 'Morrisons Daily',\n  '64639': 'Morrisons Daily',\n  '64640': 'Morrisons Daily',\n  '64645': 'Morrisons Daily',\n  '67010': 'Morrisons Daily',\n  '67144': 'Morrisons Daily',\n  '67304': 'Morrisons Daily',\n  '61001': 'Morrisons Daily',\n  '61021': 'Morrisons Daily',\n  '61033': 'Morrisons Daily',\n  '61049': 'Morrisons Daily',\n  '61172': 'Morrisons Daily',\n  '61173': 'Morrisons Daily',\n  '61244': 'Morrisons Daily',\n  '61267': 'Morrisons Daily',\n  '61272': 'Morrisons Daily',\n  '61289': 'Morrisons Daily',\n  '61314': 'Morrisons Daily',\n  '61325': 'Morrisons Daily',\n  '61349': 'Morrisons Daily',\n  '61381': 'Morrisons Daily',\n  '61387': 'Morrisons Daily',\n  '61507': 'Morrisons Daily',\n  '61509': 'Morrisons Daily',\n  '63611': 'Morrisons Daily',\n  '64601': 'Morrisons Daily',\n  '64602': 'Morrisons Daily',\n  '64637': 'Morrisons Daily',\n  '64644': 'Morrisons Daily',\n  '64646': 'Morrisons Daily',\n  '64658': 'Morrisons Daily',\n  '64659': 'Morrisons Daily',\n  '64804': 'Morrisons Daily',\n  '64811': 'Morrisons Daily',\n  '64855': 'Morrisons Daily',\n  '64856': 'Morrisons Daily',\n  '61108': 'Morrisons Daily',\n  '61174': 'Morrisons Daily',\n  '61199': 'Morrisons Daily',\n  '61234': 'Morrisons Daily',\n  '61288': 'Morrisons Daily',\n  '61304': 'Morrisons Daily',\n  '61324': 'Morrisons Daily',\n  '61332': 'Morrisons Daily',\n  '61378': 'Morrisons Daily',\n  '61503': 'Morrisons Daily',\n  '61520': 'Morrisons Daily',\n  '62129': 'Morrisons Daily',\n  '62174': 'Morrisons Daily',\n  '62199': 'Morrisons Daily',\n  '64030': 'Morrisons Daily',\n  '64600': 'Morrisons Daily',\n  '64603': 'Morrisons Daily',\n  '64606': 'Morrisons Daily',\n  '64609': 'Morrisons Daily',\n  '64614': 'Morrisons Daily',\n  '64616': 'Morrisons Daily',\n  '64618': 'Morrisons Daily',\n  '64619': 'Morrisons Daily',\n  '64620': 'Morrisons Daily',\n  '64628': 'Morrisons Daily',\n  '64630': 'Morrisons Daily',\n  '64631': 'Morrisons Daily',\n  '64656': 'Morrisons Daily',\n  '66329': 'Morrisons Daily',\n  '68176': 'Morrisons Daily',\n  '60918': 'Morrisons Daily',\n  '61081': 'Morrisons Daily',\n  '61150': 'Morrisons Daily',\n  '61152': 'Morrisons Daily',\n  '61192': 'Morrisons Daily',\n  '61257': 'Morrisons Daily',\n  '61291': 'Morrisons Daily',\n  '61359': 'Morrisons Daily',\n  '61363': 'Morrisons Daily',\n  '61376': 'Morrisons Daily',\n  '61410': 'Morrisons Daily',\n  '61479': 'Morrisons Daily',\n  '61492': 'Morrisons Daily',\n  '64301': 'Morrisons Daily',\n  '64730': 'Morrisons Daily',\n  '64734': 'Morrisons Daily',\n  '64736': 'Morrisons Daily',\n  '64737': 'Morrisons Daily',\n  '64740': 'Morrisons Daily',\n  '64741': 'Morrisons Daily',\n  '64742': 'Morrisons Daily',\n  '64743': 'Morrisons Daily',\n  '64744': 'Morrisons Daily',\n  '64745': 'Morrisons Daily',\n  '65011': 'Morrisons Daily',\n  '65150': 'Morrisons Daily',\n  '65577': 'Morrisons Daily',\n  '66496': 'Morrisons Daily',\n  '66568': 'Morrisons Daily',\n  '66576': 'Morrisons Daily',\n  '60457': 'Morrisons Daily',\n  '61203': 'Morrisons Daily',\n  '61247': 'Morrisons Daily',\n  '61280': 'Morrisons Daily',\n  '61299': 'Morrisons Daily',\n  '61312': 'Morrisons Daily',\n  '61316': 'Morrisons Daily',\n  '61320': 'Morrisons Daily',\n  '61321': 'Morrisons Daily',\n  '61341': 'Morrisons Daily',\n  '61385': 'Morrisons Daily',\n  '61398': 'Morrisons Daily',\n  '61433': 'Morrisons Daily',\n  '64317': 'Morrisons Daily',\n  '64322': 'Morrisons Daily',\n  '64702': 'Morrisons Daily',\n  '64924': 'Morrisons Daily',\n  '64929': 'Morrisons Daily',\n  '64941': 'Morrisons Daily',\n  '64943': 'Morrisons Daily',\n  '64949': 'Morrisons Daily',\n  '64952': 'Morrisons Daily',\n  '64953': 'Morrisons Daily',\n  '64954': 'Morrisons Daily',\n  '64957': 'Morrisons Daily',\n  '64958': 'Morrisons Daily',\n  '66424': 'Morrisons Daily',\n  '66644': 'Morrisons Daily',\n  '66780': 'Morrisons Daily',\n  '66823': 'Morrisons Daily',\n  '60207': 'Morrisons Daily',\n  '61183': 'Morrisons Daily',\n  '61193': 'Morrisons Daily',\n  '61252': 'Morrisons Daily',\n  '61271': 'Morrisons Daily',\n  '61274': 'Morrisons Daily',\n  '61319': 'Morrisons Daily',\n  '61329': 'Morrisons Daily',\n  '61339': 'Morrisons Daily',\n  '61340': 'Morrisons Daily',\n  '61386': 'Morrisons Daily',\n  '64302': 'Morrisons Daily',\n  '64303': 'Morrisons Daily',\n  '64307': 'Morrisons Daily',\n  '64308': 'Morrisons Daily',\n  '64309': 'Morrisons Daily',\n  '64731': 'Morrisons Daily',\n  '64732': 'Morrisons Daily',\n  '64733': 'Morrisons Daily',\n  '64735': 'Morrisons Daily',\n  '64738': 'Morrisons Daily',\n  '64747': 'Morrisons Daily',\n  '64748': 'Morrisons Daily',\n  '64749': 'Morrisons Daily',\n  '64932': 'Morrisons Daily',\n  '64961': 'Morrisons Daily',\n  '66368': 'Morrisons Daily',\n  '66373': 'Morrisons Daily',\n  '66670': 'Morrisons Daily',\n  '60472': 'Morrisons Daily',\n  '60512': 'Morrisons Daily',\n  '60514': 'Morrisons Daily',\n  '61043': 'Morrisons Daily',\n  '61055': 'Morrisons Daily',\n  '61074': 'Morrisons Daily',\n  '61088': 'Morrisons Daily',\n  '61168': 'Morrisons Daily',\n  '61277': 'Morrisons Daily',\n  '61315': 'Morrisons Daily',\n  '61334': 'Morrisons Daily',\n  '61348': 'Morrisons Daily',\n  '61357': 'Morrisons Daily',\n  '61368': 'Morrisons Daily',\n  '61407': 'Morrisons Daily',\n  '61408': 'Morrisons Daily',\n  '61441': 'Morrisons Daily',\n  '61472': 'Morrisons Daily',\n  '61524': 'Morrisons Daily',\n  '64928': 'Morrisons Daily',\n  '64945': 'Morrisons Daily',\n  '64956': 'Morrisons Daily',\n  '64959': 'Morrisons Daily',\n  '66310': 'Morrisons Daily',\n  '66352': 'Morrisons Daily',\n  '66490': 'Morrisons Daily',\n  '66660': 'Morrisons Daily',\n  '66880': 'Morrisons Daily',\n  '61119': 'Morrisons Daily',\n  '61141': 'Morrisons Daily',\n  '61184': 'Morrisons Daily',\n  '61239': 'Morrisons Daily',\n  '61266': 'Morrisons Daily',\n  '61310': 'Morrisons Daily',\n  '61322': 'Morrisons Daily',\n  '61344': 'Morrisons Daily',\n  '61361': 'Morrisons Daily',\n  '61446': 'Morrisons Daily',\n  '61447': 'Morrisons Daily',\n  '61473': 'Morrisons Daily',\n  '61476': 'Morrisons Daily',\n  '64319': 'Morrisons Daily',\n  '64320': 'Morrisons Daily',\n  '64761': 'Morrisons Daily',\n  '64926': 'Morrisons Daily',\n  '64936': 'Morrisons Daily',\n  '64938': 'Morrisons Daily',\n  '64942': 'Morrisons Daily',\n  '64944': 'Morrisons Daily',\n  '64948': 'Morrisons Daily',\n  '64950': 'Morrisons Daily',\n  '64951': 'Morrisons Daily',\n  '64955': 'Morrisons Daily',\n  '66152': 'Morrisons Daily',\n  '66153': 'Morrisons Daily',\n  '66425': 'Morrisons Daily',\n  '60230': 'Morrisons Daily',\n  '61103': 'Morrisons Daily',\n  '61253': 'Morrisons Daily',\n  '61265': 'Morrisons Daily',\n  '61330': 'Morrisons Daily',\n  '61335': 'Morrisons Daily',\n  '61342': 'Morrisons Daily',\n  '61360': 'Morrisons Daily',\n  '61396': 'Morrisons Daily',\n  '61465': 'Morrisons Daily',\n  '61480': 'Morrisons Daily',\n  '61481': 'Morrisons Daily',\n  '61482': 'Morrisons Daily',\n  '61529': 'Morrisons Daily',\n  '61551': 'Morrisons Daily',\n  '64757': 'Morrisons Daily',\n  '64762': 'Morrisons Daily',\n  '64763': 'Morrisons Daily',\n  '64773': 'Morrisons Daily',\n  '64774': 'Morrisons Daily',\n  '64775': 'Morrisons Daily',\n  '64776': 'Morrisons Daily',\n  '64777': 'Morrisons Daily',\n  '64794': 'Morrisons Daily',\n  '64801': 'Morrisons Daily',\n  '64802': 'Morrisons Daily',\n  '64810': 'Morrisons Daily',\n  '64815': 'Morrisons Daily',\n  '64818': 'Morrisons Daily',\n  '64819': 'Morrisons Daily',\n  '66335': 'Morrisons Daily',\n  '68282': 'Morrisons Daily',\n  '60017': 'Morrisons Daily',\n  '61010': 'Morrisons Daily',\n  '61133': 'Morrisons Daily',\n  '61240': 'Morrisons Daily',\n  '61377': 'Morrisons Daily',\n  '61390': 'Morrisons Daily',\n  '61414': 'Morrisons Daily',\n  '61424': 'Morrisons Daily',\n  '61432': 'Morrisons Daily',\n  '61439': 'Morrisons Daily',\n  '61443': 'Morrisons Daily',\n  '61471': 'Morrisons Daily',\n  '64755': 'Morrisons Daily',\n  '64770': 'Morrisons Daily',\n  '64785': 'Morrisons Daily',\n  '64788': 'Morrisons Daily',\n  '64791': 'Morrisons Daily',\n  '64805': 'Morrisons Daily',\n  '64807': 'Morrisons Daily',\n  '64817': 'Morrisons Daily',\n  '64820': 'Morrisons Daily',\n  '64860': 'Morrisons Daily',\n  '65168': 'Morrisons Daily',\n  '65626': 'Morrisons Daily',\n  '66063': 'Morrisons Daily',\n  '66084': 'Morrisons Daily',\n  '66092': 'Morrisons Daily',\n  '66100': 'Morrisons Daily',\n  '66148': 'Morrisons Daily',\n  '66380': 'Morrisons Daily',\n  '66477': 'Morrisons Daily',\n  '61069': 'Morrisons Daily',\n  '61129': 'Morrisons Daily',\n  '61139': 'Morrisons Daily',\n  '61175': 'Morrisons Daily',\n  '61209': 'Morrisons Daily',\n  '61233': 'Morrisons Daily',\n  '61273': 'Morrisons Daily',\n  '61295': 'Morrisons Daily',\n  '61331': 'Morrisons Daily',\n  '61367': 'Morrisons Daily',\n  '61379': 'Morrisons Daily',\n  '61380': 'Morrisons Daily',\n  '61388': 'Morrisons Daily',\n  '61393': 'Morrisons Daily',\n  '61397': 'Morrisons Daily',\n  '61505': 'Morrisons Daily',\n  '64781': 'Morrisons Daily',\n  '64782': 'Morrisons Daily',\n  '64784': 'Morrisons Daily',\n  '64795': 'Morrisons Daily',\n  '64803': 'Morrisons Daily',\n  '64813': 'Morrisons Daily',\n  '64814': 'Morrisons Daily',\n  '64852': 'Morrisons Daily',\n  '64853': 'Morrisons Daily',\n  '64854': 'Morrisons Daily',\n  '64859': 'Morrisons Daily',\n  '66539': 'Morrisons Daily',\n  '66674': 'Morrisons Daily',\n  '66829': 'Morrisons Daily',\n  '66924': 'Morrisons Daily',\n  '60103': 'Morrisons Daily',\n  '61020': 'Morrisons Daily',\n  '61037': 'Morrisons Daily',\n  '61056': 'Morrisons Daily',\n  '61242': 'Morrisons Daily',\n  '61346': 'Morrisons Daily',\n  '61351': 'Morrisons Daily',\n  '61352': 'Morrisons Daily',\n  '61411': 'Morrisons Daily',\n  '61415': 'Morrisons Daily',\n  '61467': 'Morrisons Daily',\n  '61478': 'Morrisons Daily',\n  '66136': 'Morrisons Daily',\n  '66138': 'Morrisons Daily',\n  '66143': 'Morrisons Daily',\n  '66144': 'Morrisons Daily',\n  '66146': 'Morrisons Daily',\n  '66167': 'Morrisons Daily',\n  '66169': 'Morrisons Daily',\n  '66179': 'Morrisons Daily',\n  '66202': 'Morrisons Daily',\n  '66493': 'Morrisons Daily',\n  '66505': 'Morrisons Daily',\n  '66909': 'Morrisons Daily',\n  '60783': 'Morrisons Daily',\n  '61063': 'Morrisons Daily',\n  '61118': 'Morrisons Daily',\n  '61120': 'Morrisons Daily',\n  '61128': 'Morrisons Daily',\n  '61166': 'Morrisons Daily',\n  '61196': 'Morrisons Daily',\n  '61278': 'Morrisons Daily',\n  '61297': 'Morrisons Daily',\n  '61298': 'Morrisons Daily',\n  '61311': 'Morrisons Daily',\n  '61405': 'Morrisons Daily',\n  '61416': 'Morrisons Daily',\n  '61521': 'Morrisons Daily',\n  '61535': 'Morrisons Daily',\n  '64903': 'Morrisons Daily',\n  '64908': 'Morrisons Daily',\n  '64909': 'Morrisons Daily',\n  '65922': 'Morrisons Daily',\n  '65947': 'Morrisons Daily',\n  '65956': 'Morrisons Daily',\n  '65987': 'Morrisons Daily',\n  '66196': 'Morrisons Daily',\n  '66404': 'Morrisons Daily',\n  '66572': 'Morrisons Daily',\n  '66677': 'Morrisons Daily',\n  '66700': 'Morrisons Daily',\n  '66773': 'Morrisons Daily',\n  '66920': 'Morrisons Daily',\n  '66944': 'Morrisons Daily',\n  '60352': 'Morrisons Daily',\n  '61023': 'Morrisons Daily',\n  '61190': 'Morrisons Daily',\n  '61227': 'Morrisons Daily',\n  '61231': 'Morrisons Daily',\n  '61250': 'Morrisons Daily',\n  '61254': 'Morrisons Daily',\n  '61343': 'Morrisons Daily',\n  '61362': 'Morrisons Daily',\n  '61369': 'Morrisons Daily',\n  '61384': 'Morrisons Daily',\n  '61417': 'Morrisons Daily',\n  '61421': 'Morrisons Daily',\n  '61431': 'Morrisons Daily',\n  '64703': 'Morrisons Daily',\n  '64704': 'Morrisons Daily',\n  '64705': 'Morrisons Daily',\n  '64707': 'Morrisons Daily',\n  '64709': 'Morrisons Daily',\n  '64710': 'Morrisons Daily',\n  '64712': 'Morrisons Daily',\n  '64779': 'Morrisons Daily',\n  '66351': 'Morrisons Daily',\n  '66379': 'Morrisons Daily',\n  '66514': 'Morrisons Daily',\n  '66807': 'Morrisons Daily',\n  '66811': 'Morrisons Daily',\n  '69155': 'Morrisons Daily',\n  '61025': 'Morrisons Daily',\n  '61116': 'Morrisons Daily',\n  '61208': 'Morrisons Daily',\n  '61241': 'Morrisons Daily',\n  '61249': 'Morrisons Daily',\n  '61260': 'Morrisons Daily',\n  '61261': 'Morrisons Daily',\n  '61262': 'Morrisons Daily',\n  '61501': 'Morrisons Daily',\n  '61502': 'Morrisons Daily',\n  '61504': 'Morrisons Daily',\n  '64752': 'Morrisons Daily',\n  '64756': 'Morrisons Daily',\n  '64759': 'Morrisons Daily',\n  '64760': 'Morrisons Daily',\n  '64766': 'Morrisons Daily',\n  '64767': 'Morrisons Daily',\n  '64771': 'Morrisons Daily',\n  '64772': 'Morrisons Daily',\n  '64787': 'Morrisons Daily',\n  '64796': 'Morrisons Daily',\n  '64797': 'Morrisons Daily',\n  '64806': 'Morrisons Daily',\n  '64812': 'Morrisons Daily',\n  '66001': 'Morrisons Daily',\n  '66029': 'Morrisons Daily',\n  '66049': 'Morrisons Daily',\n  '66053': 'Morrisons Daily',\n  '66093': 'Morrisons Daily',\n  '66448': 'Morrisons Daily',\n  '66824': 'Morrisons Daily',\n  '66871': 'Morrisons Daily',\n  '60962': 'Morrisons Daily',\n  '61061': 'Morrisons Daily',\n  '61131': 'Morrisons Daily',\n  '61143': 'Morrisons Daily',\n  '61161': 'Morrisons Daily',\n  '61162': 'Morrisons Daily',\n  '61181': 'Morrisons Daily',\n  '61189': 'Morrisons Daily',\n  '61198': 'Morrisons Daily',\n  '61205': 'Morrisons Daily',\n  '61275': 'Morrisons Daily',\n  '61286': 'Morrisons Daily',\n  '61300': 'Morrisons Daily',\n  '61309': 'Morrisons Daily',\n  '61353': 'Morrisons Daily',\n  '61527': 'Morrisons Daily',\n  '61546': 'Morrisons Daily',\n  '64851': 'Morrisons Daily',\n  '64905': 'Morrisons Daily',\n  '64906': 'Morrisons Daily',\n  '64910': 'Morrisons Daily',\n  '64911': 'Morrisons Daily',\n  '65834': 'Morrisons Daily',\n  '66064': 'Morrisons Daily',\n  '66102': 'Morrisons Daily',\n  '66110': 'Morrisons Daily',\n  '66417': 'Morrisons Daily',\n  '66596': 'Morrisons Daily',\n  '66740': 'Morrisons Daily',\n  '66743': 'Morrisons Daily',\n  '60084': 'Morrisons Daily',\n  '60085': 'Morrisons Daily',\n  '60180': 'Morrisons Daily',\n  '60196': 'Morrisons Daily',\n  '60359': 'Morrisons Daily',\n  '60405': 'Morrisons Daily',\n  '61071': 'Morrisons Daily',\n  '61148': 'Morrisons Daily',\n  '61400': 'Morrisons Daily',\n  '61425': 'Morrisons Daily',\n  '61454': 'Morrisons Daily',\n  '61469': 'Morrisons Daily',\n  '61483': 'Morrisons Daily',\n  '61518': 'Morrisons Daily',\n  '64313': 'Morrisons Daily',\n  '64318': 'Morrisons Daily',\n  '64708': 'Morrisons Daily',\n  '66407': 'Morrisons Daily',\n  '66436': 'Morrisons Daily',\n  '66666': 'Morrisons Daily',\n  '66791': 'Morrisons Daily',\n  '66840': 'Morrisons Daily',\n  '66842': 'Morrisons Daily',\n  '66851': 'Morrisons Daily',\n  '66873': 'Morrisons Daily',\n  '66878': 'Morrisons Daily',\n  '66891': 'Morrisons Daily',\n  '60026': 'Morrisons Daily',\n  '60054': 'Morrisons Daily',\n  '60592': 'Morrisons Daily',\n  '61029': 'Morrisons Daily',\n  '61111': 'Morrisons Daily',\n  '61112': 'Morrisons Daily',\n  '61214': 'Morrisons Daily',\n  '61218': 'Morrisons Daily',\n  '61284': 'Morrisons Daily',\n  '61285': 'Morrisons Daily',\n  '61292': 'Morrisons Daily',\n  '61419': 'Morrisons Daily',\n  '61428': 'Morrisons Daily',\n  '64789': 'Morrisons Daily',\n  '64790': 'Morrisons Daily',\n  '64798': 'Morrisons Daily',\n  '64816': 'Morrisons Daily',\n  '64913': 'Morrisons Daily',\n  '64915': 'Morrisons Daily',\n  '64916': 'Morrisons Daily',\n  '64917': 'Morrisons Daily',\n  '64918': 'Morrisons Daily',\n  '64919': 'Morrisons Daily',\n  '64920': 'Morrisons Daily',\n  '64921': 'Morrisons Daily',\n  '64922': 'Morrisons Daily',\n  '66161': 'Morrisons Daily',\n  '66421': 'Morrisons Daily',\n  '66458': 'Morrisons Daily',\n  '66928': 'Morrisons Daily',\n  '60891': 'Morrisons Daily',\n  '60913': 'Morrisons Daily',\n  '60931': 'Morrisons Daily',\n  '60966': 'Morrisons Daily',\n  '61041': 'Morrisons Daily',\n  '61052': 'Morrisons Daily',\n  '61059': 'Morrisons Daily',\n  '61073': 'Morrisons Daily',\n  '61085': 'Morrisons Daily',\n  '61086': 'Morrisons Daily',\n  '61089': 'Morrisons Daily',\n  '61115': 'Morrisons Daily',\n  '61333': 'Morrisons Daily',\n  '61402': 'Morrisons Daily',\n  '61426': 'Morrisons Daily',\n  '61485': 'Morrisons Daily',\n  '61486': 'Morrisons Daily',\n  '61489': 'Morrisons Daily',\n  '61528': 'Morrisons Daily',\n  '66269': 'Morrisons Daily',\n  '66280': 'Morrisons Daily',\n  '66282': 'Morrisons Daily',\n  '66289': 'Morrisons Daily',\n  '66349': 'Morrisons Daily',\n  '66481': 'Morrisons Daily',\n  '66491': 'Morrisons Daily',\n  '66605': 'Morrisons Daily',\n  '66827': 'Morrisons Daily',\n  '66838': 'Morrisons Daily',\n  '60006': 'Morrisons Daily',\n  '60046': 'Morrisons Daily',\n  '60083': 'Morrisons Daily',\n  '60108': 'Morrisons Daily',\n  '60202': 'Morrisons Daily',\n  '60223': 'Morrisons Daily',\n  '60235': 'Morrisons Daily',\n  '60269': 'Morrisons Daily',\n  '60301': 'Morrisons Daily',\n  '60395': 'Morrisons Daily',\n  '60396': 'Morrisons Daily',\n  '60460': 'Morrisons Daily',\n  '60547': 'Morrisons Daily',\n  '60950': 'Morrisons Daily',\n  '61048': 'Morrisons Daily',\n  '61083': 'Morrisons Daily',\n  '61126': 'Morrisons Daily',\n  '61317': 'Morrisons Daily',\n  '61337': 'Morrisons Daily',\n  '61532': 'Morrisons Daily',\n  '64714': 'Morrisons Daily',\n  '64717': 'Morrisons Daily',\n  '66272': 'Morrisons Daily',\n  '66273': 'Morrisons Daily',\n  '66274': 'Morrisons Daily',\n  '66300': 'Morrisons Daily',\n  '66344': 'Morrisons Daily',\n  '66411': 'Morrisons Daily',\n  '66533': 'Morrisons Daily',\n  '66547': 'Morrisons Daily',\n  '60079': 'Morrisons Daily',\n  '60132': 'Morrisons Daily',\n  '60133': 'Morrisons Daily',\n  '60343': 'Morrisons Daily',\n  '60425': 'Morrisons Daily',\n  '60461': 'Morrisons Daily',\n  '60676': 'Morrisons Daily',\n  '60860': 'Morrisons Daily',\n  '60877': 'Morrisons Daily',\n  '60907': 'Morrisons Daily',\n  '60960': 'Morrisons Daily',\n  '60981': 'Morrisons Daily',\n  '61026': 'Morrisons Daily',\n  '61053': 'Morrisons Daily',\n  '61458': 'Morrisons Daily',\n  '64725': 'Morrisons Daily',\n  '66246': 'Morrisons Daily',\n  '66249': 'Morrisons Daily',\n  '66255': 'Morrisons Daily',\n  '66320': 'Morrisons Daily',\n  '66399': 'Morrisons Daily',\n  '66438': 'Morrisons Daily',\n  '66467': 'Morrisons Daily',\n  '66532': 'Morrisons Daily',\n  '66535': 'Morrisons Daily',\n  '66591': 'Morrisons Daily',\n  '66639': 'Morrisons Daily',\n  '66744': 'Morrisons Daily',\n  '66753': 'Morrisons Daily',\n  '66948': 'Morrisons Daily',\n  '60043': 'Morrisons Daily',\n  '60060': 'Morrisons Daily',\n  '60131': 'Morrisons Daily',\n  '60162': 'Morrisons Daily',\n  '60225': 'Morrisons Daily',\n  '60229': 'Morrisons Daily',\n  '60274': 'Morrisons Daily',\n  '60327': 'Morrisons Daily',\n  '60476': 'Morrisons Daily',\n  '60853': 'Morrisons Daily',\n  '60955': 'Morrisons Daily',\n  '61012': 'Morrisons Daily',\n  '61356': 'Morrisons Daily',\n  '61429': 'Morrisons Daily',\n  '61497': 'Morrisons Daily',\n  '64867': 'Morrisons Daily',\n  '64870': 'Morrisons Daily',\n  '64875': 'Morrisons Daily',\n  '66227': 'Morrisons Daily',\n  '66237': 'Morrisons Daily',\n  '66243': 'Morrisons Daily',\n  '66252': 'Morrisons Daily',\n  '66256': 'Morrisons Daily',\n  '66258': 'Morrisons Daily',\n  '66391': 'Morrisons Daily',\n  '66395': 'Morrisons Daily',\n  '66397': 'Morrisons Daily',\n  '66578': 'Morrisons Daily',\n  '66590': 'Morrisons Daily',\n  '66721': 'Morrisons Daily',\n  '60158': 'Morrisons Daily',\n  '60495': 'Morrisons Daily',\n  '60558': 'Morrisons Daily',\n  '60893': 'Morrisons Daily',\n  '60980': 'Morrisons Daily',\n  '61070': 'Morrisons Daily',\n  '61106': 'Morrisons Daily',\n  '61123': 'Morrisons Daily',\n  '61354': 'Morrisons Daily',\n  '61466': 'Morrisons Daily',\n  '61536': 'Morrisons Daily',\n  '64869': 'Morrisons Daily',\n  '64871': 'Morrisons Daily',\n  '64872': 'Morrisons Daily',\n  '64874': 'Morrisons Daily',\n  '66213': 'Morrisons Daily',\n  '66219': 'Morrisons Daily',\n  '66221': 'Morrisons Daily',\n  '66225': 'Morrisons Daily',\n  '66241': 'Morrisons Daily',\n  '66242': 'Morrisons Daily',\n  '66338': 'Morrisons Daily',\n  '66453': 'Morrisons Daily',\n  '66456': 'Morrisons Daily',\n  '66479': 'Morrisons Daily',\n  '66511': 'Morrisons Daily',\n  '66647': 'Morrisons Daily',\n  '66738': 'Morrisons Daily',\n  '66802': 'Morrisons Daily',\n  '66951': 'Morrisons Daily',\n  '60088': 'Morrisons Daily',\n  '60224': 'Morrisons Daily',\n  '60335': 'Morrisons Daily',\n  '60353': 'Morrisons Daily',\n  '60362': 'Morrisons Daily',\n  '60463': 'Morrisons Daily',\n  '60465': 'Morrisons Daily',\n  '60520': 'Morrisons Daily',\n  '60526': 'Morrisons Daily',\n  '60646': 'Morrisons Daily',\n  '60797': 'Morrisons Daily',\n  '61084': 'Morrisons Daily',\n  '61403': 'Morrisons Daily',\n  '64715': 'Morrisons Daily',\n  '64724': 'Morrisons Daily',\n  '66188': 'Morrisons Daily',\n  '66232': 'Morrisons Daily',\n  '66248': 'Morrisons Daily',\n  '66270': 'Morrisons Daily',\n  '66306': 'Morrisons Daily',\n  '66309': 'Morrisons Daily',\n  '66354': 'Morrisons Daily',\n  '66356': 'Morrisons Daily',\n  '66371': 'Morrisons Daily',\n  '66390': 'Morrisons Daily',\n  '66476': 'Morrisons Daily',\n  '66531': 'Morrisons Daily',\n  '66711': 'Morrisons Daily',\n  '66764': 'Morrisons Daily',\n  '66900': 'Morrisons Daily',\n  '60019': 'Morrisons Daily',\n  '60100': 'Morrisons Daily',\n  '60107': 'Morrisons Daily',\n  '60176': 'Morrisons Daily',\n  '60191': 'Morrisons Daily',\n  '60199': 'Morrisons Daily',\n  '60304': 'Morrisons Daily',\n  '60325': 'Morrisons Daily',\n  '60551': 'Morrisons Daily',\n  '60870': 'Morrisons Daily',\n  '60930': 'Morrisons Daily',\n  '64713': 'Morrisons Daily',\n  '64723': 'Morrisons Daily',\n  '64728': 'Morrisons Daily',\n  '64864': 'Morrisons Daily',\n  '64866': 'Morrisons Daily',\n  '66259': 'Morrisons Daily',\n  '66263': 'Morrisons Daily',\n  '66287': 'Morrisons Daily',\n  '66346': 'Morrisons Daily',\n  '66508': 'Morrisons Daily',\n  '66583': 'Morrisons Daily',\n  '66659': 'Morrisons Daily',\n  '66664': 'Morrisons Daily',\n  '66675': 'Morrisons Daily',\n  '66704': 'Morrisons Daily',\n  '66772': 'Morrisons Daily',\n  '66815': 'Morrisons Daily',\n  '66937': 'Morrisons Daily',\n  '60164': 'Morrisons Daily',\n  '60181': 'Morrisons Daily',\n  '60331': 'Morrisons Daily',\n  '60371': 'Morrisons Daily',\n  '60415': 'Morrisons Daily',\n  '60443': 'Morrisons Daily',\n  '60586': 'Morrisons Daily',\n  '60609': 'Morrisons Daily',\n  '61206': 'Morrisons Daily',\n  '61464': 'Morrisons Daily',\n  '64863': 'Morrisons Daily',\n  '64865': 'Morrisons Daily',\n  '64912': 'Morrisons Daily',\n  '66180': 'Morrisons Daily',\n  '66183': 'Morrisons Daily',\n  '66191': 'Morrisons Daily',\n  '66192': 'Morrisons Daily',\n  '66197': 'Morrisons Daily',\n  '66199': 'Morrisons Daily',\n  '66205': 'Morrisons Daily',\n  '66468': 'Morrisons Daily',\n  '66473': 'Morrisons Daily',\n  '66506': 'Morrisons Daily',\n  '66550': 'Morrisons Daily',\n  '66593': 'Morrisons Daily',\n  '66678': 'Morrisons Daily',\n  '66679': 'Morrisons Daily',\n  '66864': 'Morrisons Daily',\n  '66866': 'Morrisons Daily',\n  '66949': 'Morrisons Daily',\n  '60242': 'Morrisons Daily',\n  '61079': 'Morrisons Daily',\n  '61125': 'Morrisons Daily',\n  '61134': 'Morrisons Daily',\n  '61153': 'Morrisons Daily',\n  '61159': 'Morrisons Daily',\n  '61201': 'Morrisons Daily',\n  '61370': 'Morrisons Daily',\n  '61463': 'Morrisons Daily',\n  '65900': 'Morrisons Daily',\n  '65904': 'Morrisons Daily',\n  '65909': 'Morrisons Daily',\n  '65913': 'Morrisons Daily',\n  '65923': 'Morrisons Daily',\n  '65926': 'Morrisons Daily',\n  '65930': 'Morrisons Daily',\n  '65933': 'Morrisons Daily',\n  '65936': 'Morrisons Daily',\n  '65941': 'Morrisons Daily',\n  '65944': 'Morrisons Daily',\n  '65945': 'Morrisons Daily',\n  '65948': 'Morrisons Daily',\n  '65949': 'Morrisons Daily',\n  '65952': 'Morrisons Daily',\n  '65953': 'Morrisons Daily',\n  '66211': 'Morrisons Daily',\n  '66403': 'Morrisons Daily',\n  '66566': 'Morrisons Daily',\n  '66586': 'Morrisons Daily',\n  '66685': 'Morrisons Daily',\n  '60184': 'Morrisons Daily',\n  '60888': 'Morrisons Daily',\n  '60932': 'Morrisons Daily',\n  '61077': 'Morrisons Daily',\n  '61080': 'Morrisons Daily',\n  '61245': 'Morrisons Daily',\n  '61371': 'Morrisons Daily',\n  '61512': 'Morrisons Daily',\n  '64877': 'Morrisons Daily',\n  '64880': 'Morrisons Daily',\n  '64886': 'Morrisons Daily',\n  '64895': 'Morrisons Daily',\n  '64896': 'Morrisons Daily',\n  '64897': 'Morrisons Daily',\n  '64900': 'Morrisons Daily',\n  '64901': 'Morrisons Daily',\n  '64902': 'Morrisons Daily',\n  '65919': 'Morrisons Daily',\n  '65965': 'Morrisons Daily',\n  '65974': 'Morrisons Daily',\n  '65976': 'Morrisons Daily',\n  '65978': 'Morrisons Daily',\n  '65979': 'Morrisons Daily',\n  '65980': 'Morrisons Daily',\n  '66548': 'Morrisons Daily',\n  '66768': 'Morrisons Daily',\n  '66787': 'Morrisons Daily',\n  '66830': 'Morrisons Daily',\n  '66837': 'Morrisons Daily',\n  '60261': 'Morrisons Daily',\n  '60826': 'Morrisons Daily',\n  '60827': 'Morrisons Daily',\n  '60830': 'Morrisons Daily',\n  '61040': 'Morrisons Daily',\n  '61350': 'Morrisons Daily',\n  '61372': 'Morrisons Daily',\n  '61373': 'Morrisons Daily',\n  '61374': 'Morrisons Daily',\n  '61375': 'Morrisons Daily',\n  '61437': 'Morrisons Daily',\n  '64876': 'Morrisons Daily',\n  '64878': 'Morrisons Daily',\n  '64879': 'Morrisons Daily',\n  '64882': 'Morrisons Daily',\n  '64890': 'Morrisons Daily',\n  '65901': 'Morrisons Daily',\n  '65906': 'Morrisons Daily',\n  '65910': 'Morrisons Daily',\n  '65924': 'Morrisons Daily',\n  '65939': 'Morrisons Daily',\n  '65957': 'Morrisons Daily',\n  '65961': 'Morrisons Daily',\n  '65962': 'Morrisons Daily',\n  '65963': 'Morrisons Daily',\n  '65971': 'Morrisons Daily',\n  '65975': 'Morrisons Daily',\n  '65983': 'Morrisons Daily',\n  '65985': 'Morrisons Daily',\n  '60058': 'Morrisons Daily',\n  '60110': 'Morrisons Daily',\n  '60590': 'Morrisons Daily',\n  '60836': 'Morrisons Daily',\n  '60842': 'Morrisons Daily',\n  '60941': 'Morrisons Daily',\n  '61035': 'Morrisons Daily',\n  '61051': 'Morrisons Daily',\n  '61146': 'Morrisons Daily',\n  '61178': 'Morrisons Daily',\n  '61220': 'Morrisons Daily',\n  '61270': 'Morrisons Daily',\n  '61442': 'Morrisons Daily',\n  '64887': 'Morrisons Daily',\n  '64888': 'Morrisons Daily',\n  '64889': 'Morrisons Daily',\n  '64899': 'Morrisons Daily',\n  '65932': 'Morrisons Daily',\n  '65943': 'Morrisons Daily',\n  '65960': 'Morrisons Daily',\n  '65984': 'Morrisons Daily',\n  '66210': 'Morrisons Daily',\n  '66261': 'Morrisons Daily',\n  '66370': 'Morrisons Daily',\n  '66488': 'Morrisons Daily',\n  '66653': 'Morrisons Daily',\n  '66712': 'Morrisons Daily',\n  '66856': 'Morrisons Daily',\n  '66875': 'Morrisons Daily',\n  '60344': 'Morrisons Daily',\n  '60444': 'Morrisons Daily',\n  '60483': 'Morrisons Daily',\n  '60844': 'Morrisons Daily',\n  '60849': 'Morrisons Daily',\n  '60856': 'Morrisons Daily',\n  '60897': 'Morrisons Daily',\n  '60983': 'Morrisons Daily',\n  '61064': 'Morrisons Daily',\n  '61109': 'Morrisons Daily',\n  '61127': 'Morrisons Daily',\n  '61177': 'Morrisons Daily',\n  '61186': 'Morrisons Daily',\n  '61202': 'Morrisons Daily',\n  '61294': 'Morrisons Daily',\n  '61430': 'Morrisons Daily',\n  '61498': 'Morrisons Daily',\n  '64861': 'Morrisons Daily',\n  '64873': 'Morrisons Daily',\n  '66385': 'Morrisons Daily',\n  '66502': 'Morrisons Daily',\n  '66523': 'Morrisons Daily',\n  '66534': 'Morrisons Daily',\n  '66559': 'Morrisons Daily',\n  '66563': 'Morrisons Daily',\n  '66565': 'Morrisons Daily',\n  '66569': 'Morrisons Daily',\n  '66624': 'Morrisons Daily',\n  '66748': 'Morrisons Daily',\n  '66770': 'Morrisons Daily',\n  '34598': 'Franchise',\n  '34599': 'Franchise',\n  '34588': 'Franchise',\n  '34593': 'Franchise',\n  '34591': 'Franchise',\n  '34600': 'Franchise',\n  '34620': 'Franchise',\n  '34613': 'Franchise',\n  '34621': 'Franchise',\n  '34592': 'Franchise',\n  '34610': 'Franchise',\n  '34614': 'Franchise',\n  '34596': 'Franchise',\n  '34624': 'Franchise',\n  '34607': 'Franchise',\n  '34601': 'Franchise',\n  '39578': 'Franchise',\n  '38851': 'Franchise',\n  '37399': 'Franchise',\n  '32677': 'Franchise',\n  '39583': 'Franchise',\n  '32923': 'Franchise',\n  '39567': 'Franchise',\n  '32555': 'Franchise',\n  '39585': 'Franchise',\n  '38822': 'Franchise',\n  '37430': 'Franchise',\n  '37440': 'Franchise',\n  '36702': 'Franchise',\n  '37419': 'Franchise',\n  '38866': 'Franchise',\n  '35153': 'Franchise',\n  '32789': 'Franchise',\n  '31796': 'Franchise',\n  '34623': 'Franchise',\n  '34606': 'Franchise',\n  '39580': 'Franchise',\n  '39576': 'Franchise',\n  '35134': 'Franchise',\n  '39587': 'Franchise',\n  '31032': 'Franchise',\n  '35326': 'Franchise',\n  '36703': 'Franchise',\n  '38849': 'Franchise',\n  '35810': 'Franchise',\n  '38869': 'Franchise',\n  '38859': 'Franchise',\n  '34626': 'Franchise',\n  '38814': 'Franchise',\n  '34609': 'Franchise',\n  '34629': 'Franchise',\n  '34631': 'Franchise',\n  '39574': 'Franchise',\n  '34633': 'Franchise',\n  '35015': 'Franchise',\n  '34642': 'Franchise',\n  '34639': 'Franchise',\n  '34638': 'Franchise',\n  '34640': 'Franchise',\n  '34637': 'Franchise',\n  '34615': 'Franchise',\n  '34643': 'Franchise',\n  '31335': 'Franchise',\n  '37398': 'Franchise',\n  '39579': 'Franchise',\n  '38821': 'Franchise',\n  '37405': 'Franchise',\n  '39581': 'Franchise',\n  '34604': 'Franchise',\n  '37402': 'Franchise',\n  '39569': 'Franchise',\n  '37432': 'Franchise',\n  '38824': 'Franchise',\n  '38836': 'Franchise',\n  '32768': 'Franchise',\n  '37434': 'Franchise',\n  '34647': 'Franchise',\n  '34645': 'Franchise',\n  '38861': 'Franchise',\n  '37445': 'Franchise',\n  '37437': 'Franchise',\n  '34644': 'Franchise',\n  '34649': 'Franchise',\n  '31264': 'Franchise',\n  '32299': 'Franchise',\n  '44646': 'Franchise',\n  '31837': 'Franchise',\n  '31952': 'Franchise',\n  '31779': 'Franchise',\n  '44652': 'Franchise',\n  '32926': 'Franchise',\n  '38870': 'Franchise',\n  '44653': 'Franchise',\n  '39575': 'Franchise',\n  '35300': 'Franchise',\n  '37427': 'Franchise',\n  '34648': 'Franchise',\n  '33025': 'Franchise',\n  '35102': 'Franchise',\n  '38806': 'Franchise',\n  '30005': 'Franchise',\n  '30025': 'Franchise',\n  '30106': 'Franchise',\n  '30013': 'Franchise',\n  '30014': 'Franchise',\n  '30103': 'Franchise',\n  '41056': 'Franchise',\n  '41408': 'Franchise',\n  '30670': 'Franchise',\n  '30134': 'Franchise',\n  '30169': 'Franchise',\n  '30024': 'Franchise',\n  '38025': 'Franchise',\n  '40028': 'Franchise',\n  '30052': 'Franchise',\n  '30046': 'Franchise',\n  '30047': 'Franchise',\n  '30117': 'Franchise',\n  '40132': 'Franchise',\n  '40026': 'Franchise',\n  '30171': 'Franchise',\n  '30283': 'Franchise',\n  '30060': 'Franchise',\n  '40058': 'Franchise',\n  '40059': 'Franchise',\n  '30725': 'Franchise',\n  '30724': 'Franchise',\n  '30726': 'Franchise',\n  '30727': 'Franchise',\n  '30740': 'Franchise',\n  '30741': 'Franchise',\n  '30743': 'Franchise',\n  '40756': 'Franchise',\n  '40053': 'Franchise',\n  '30054': 'Franchise',\n  '40056': 'Franchise',\n  '40055': 'Franchise',\n  '30057': 'Franchise',\n  '30301': 'Franchise',\n  '30039': 'Franchise',\n  '30042': 'Franchise',\n  '30044': 'Franchise',\n  '30420': 'Franchise',\n  '30440': 'Franchise',\n  '32808': 'Franchise',\n  '50018': 'Franchise',\n  '30123': 'Franchise',\n  '30124': 'Franchise',\n  '40202': 'Franchise',\n  '40119': 'Franchise',\n  '30120': 'Franchise',\n  '30287': 'Franchise',\n  '40013': 'Franchise',\n  '30116': 'Franchise',\n  '30018': 'Franchise',\n  '30099': 'Franchise',\n  '30001': 'Franchise',\n  '30638': 'Franchise',\n  '40003': 'Franchise',\n  '30004': 'Franchise',\n  '40175': 'Franchise',\n  '30007': 'Franchise',\n  '30010': 'Franchise',\n  '30690': 'Franchise',\n  '3662': 'Franchise',\n  '3660': 'Franchise',\n  '60012': 'Franchise',\n  '30752': 'Franchise',\n  '30064': 'Franchise',\n  '30127': 'Franchise',\n  '40019': 'Franchise',\n  '30787': 'Franchise',\n  '30671': 'Franchise',\n  '30019': 'Franchise',\n  '40676': 'Franchise',\n  '30071': 'Franchise',\n  '30700': 'Franchise',\n  '30699': 'Franchise',\n  '30074': 'Franchise',\n  '30020': 'Franchise',\n  '40075': 'Franchise',\n  '30092': 'Franchise',\n  '30045': 'Franchise',\n  '36308': 'Franchise',\n  '36141': 'Franchise',\n  '36509': 'Franchise',\n  '30645': 'Franchise',\n  '30096': 'Franchise',\n  '30097': 'Franchise',\n  '30095': 'Franchise',\n  '30100': 'Franchise',\n  '30138': 'Franchise',\n  '31042': 'Franchise',\n  '30779': 'Franchise',\n  '40017': 'Franchise',\n  '30101': 'Franchise',\n  '40098': 'Franchise',\n  '50108': 'Franchise',\n  '30753': 'Franchise',\n  '50107': 'Franchise',\n  '30061': 'Franchise',\n  '30008': 'Franchise',\n  '30760': 'Franchise',\n  '40106': 'Franchise',\n  '40105': 'Franchise',\n  '30770': 'Franchise',\n  '30149': 'Franchise',\n  '30776': 'Franchise',\n  '30775': 'Franchise',\n  '30137': 'Franchise',\n  '30799': 'Franchise',\n  '30021': 'Franchise',\n  '30148': 'Franchise',\n  '30786': 'Franchise',\n  '30785': 'Franchise',\n  '30177': 'Franchise',\n  '30165': 'Franchise',\n  '30186': 'Franchise',\n  '30191': 'Franchise',\n  '30189': 'Franchise',\n  '30161': 'Franchise',\n  '30182': 'Franchise',\n  '30801': 'Franchise',\n  '30802': 'Franchise',\n  '30194': 'Franchise',\n  '30791': 'Franchise',\n  '30197': 'Franchise',\n  '40204': 'Franchise',\n  '30133': 'Franchise',\n  '30201': 'Franchise',\n  '30207': 'Franchise',\n  '30808': 'Franchise',\n  '30185': 'Franchise',\n  '30829': 'Franchise',\n  '30804': 'Franchise',\n  '30823': 'Franchise',\n  '30112': 'Franchise',\n  '30153': 'Franchise',\n  '30152': 'Franchise',\n  '30119': 'Franchise',\n  '30174': 'Franchise',\n  '40110': 'Franchise',\n  '30111': 'Franchise',\n  '30190': 'Franchise',\n  '30154': 'Franchise',\n  '40108': 'Franchise',\n  '40103': 'Franchise',\n  '30109': 'Franchise',\n  '30204': 'Franchise',\n  '30151': 'Franchise',\n  '30202': 'Franchise',\n  '30281': 'Franchise',\n  '30158': 'Franchise',\n  '30175': 'Franchise',\n  '30168': 'Franchise',\n  '30800': 'Franchise',\n  '30216': 'Franchise',\n  '30200': 'Franchise',\n  '30285': 'Franchise',\n  '30557': 'Franchise',\n  '2002': 'Franchise',\n  '2003': 'Franchise',\n  '2004': 'Franchise',\n  '2005': 'Franchise',\n  '2007': 'Franchise',\n  '2008': 'Franchise',\n  '2011': 'Franchise',\n  '2014': 'Franchise',\n  '2015': 'Franchise',\n  '2016': 'Franchise',\n  '2019': 'Franchise',\n  '2021': 'Franchise',\n  '2022': 'Franchise',\n  '2023': 'Franchise',\n  '2024': 'Franchise',\n  '2026': 'Franchise',\n  '2027': 'Franchise',\n  '2028': 'Franchise',\n  '2029': 'Franchise',\n  '2031': 'Franchise',\n  '2032': 'Franchise',\n  '2033': 'Franchise',\n  '2035': 'Franchise',\n  '2037': 'Franchise',\n  '2039': 'Franchise',\n  '2040': 'Franchise',\n  '2041': 'Franchise',\n  '2042': 'Franchise',\n  '2044': 'Franchise',\n  '2045': 'Franchise',\n  '2046': 'Franchise',\n  '2047': 'Franchise',\n  '2049': 'Franchise',\n  '2050': 'Franchise',\n  '2052': 'Franchise',\n  '2053': 'Franchise',\n  '2054': 'Franchise',\n  '2055': 'Franchise',\n  '2056': 'Franchise',\n  '2057': 'Franchise',\n  '2058': 'Franchise',\n  '2059': 'Franchise',\n  '2060': 'Franchise',\n  '2061': 'Franchise',\n  '2062': 'Franchise',\n  '2063': 'Franchise',\n  '2064': 'Franchise',\n  '2065': 'Franchise',\n  '2066': 'Franchise',\n  '2067': 'Franchise',\n  '2068': 'Franchise',\n  '2069': 'Franchise',\n  '2070': 'Franchise',\n  '2071': 'Franchise',\n  '2072': 'Franchise',\n  '2073': 'Franchise',\n  '2074': 'Franchise',\n  '2075': 'Franchise',\n  '2076': 'Franchise',\n  '2077': 'Franchise',\n  '2078': 'Franchise',\n  '2079': 'Franchise',\n  '2080': 'Franchise',\n  '2081': 'Franchise',\n  '2082': 'Franchise',\n  '2083': 'Franchise',\n  '2084': 'Franchise',\n  '2085': 'Franchise',\n  '2086': 'Franchise',\n  '2087': 'Franchise',\n  '2088': 'Franchise',\n  '2089': 'Franchise',\n  '2090': 'Franchise',\n  '2091': 'Franchise',\n  '2093': 'Franchise',\n  '2094': 'Franchise',\n  '2095': 'Franchise',\n  '2096': 'Franchise',\n  '2097': 'Franchise',\n  '2098': 'Franchise',\n  '2099': 'Franchise',\n  '2100': 'Franchise',\n  '2101': 'Franchise',\n  '2102': 'Franchise',\n  '2103': 'Franchise',\n  '2104': 'Franchise',\n  '2105': 'Franchise',\n  '2106': 'Franchise',\n  '2107': 'Franchise',\n  '2108': 'Franchise',\n  '2109': 'Franchise',\n  '2110': 'Franchise',\n  '2111': 'Franchise',\n  '2112': 'Franchise',\n  '2113': 'Franchise',\n  '2114': 'Franchise',\n  '2115': 'Franchise',\n  '2116': 'Franchise',\n  '2117': 'Franchise',\n  '2118': 'Franchise',\n  '2119': 'Franchise',\n  '2120': 'Franchise',\n  '2121': 'Franchise',\n  '2122': 'Franchise',\n  '2123': 'Franchise',\n  '2124': 'Franchise',\n  '2125': 'Franchise',\n  '2127': 'Franchise',\n  '2128': 'Franchise',\n  '2129': 'Franchise',\n  '2130': 'Franchise',\n  '2131': 'Franchise',\n  '2132': 'Franchise',\n  '2133': 'Franchise',\n  '2134': 'Franchise',\n  '2135': 'Franchise',\n  '2137': 'Franchise',\n  '2138': 'Franchise',\n  '2139': 'Franchise',\n  '2140': 'Franchise',\n  '2143': 'Franchise',\n  '2144': 'Franchise',\n  '2145': 'Franchise',\n  '2147': 'Franchise',\n  '2148': 'Franchise',\n  '2149': 'Franchise',\n  '2150': 'Franchise',\n  '2151': 'Franchise',\n  '2152': 'Franchise',\n  '2153': 'Franchise',\n  '2155': 'Franchise',\n  '2156': 'Franchise',\n  '2157': 'Franchise',\n  '2158': 'Franchise',\n  '2159': 'Franchise',\n  '2160': 'Franchise',\n  '2161': 'Franchise',\n  '2162': 'Franchise',\n  '2163': 'Franchise',\n  '2164': 'Franchise',\n  '2165': 'Franchise',\n  '2166': 'Franchise',\n  '2167': 'Franchise',\n  '2168': 'Franchise',\n  '2169': 'Franchise',\n  '2170': 'Franchise',\n  '2171': 'Franchise',\n  '2172': 'Franchise',\n  '2173': 'Franchise',\n  '2175': 'Franchise',\n  '2176': 'Franchise',\n  '2177': 'Franchise',\n  '2178': 'Franchise',\n  '2179': 'Franchise',\n  '2180': 'Franchise',\n  '2182': 'Franchise',\n  '2183': 'Franchise',\n  '2184': 'Franchise',\n  '2185': 'Franchise',\n  '2187': 'Franchise',\n  '2188': 'Franchise',\n  '2189': 'Franchise',\n  '2192': 'Franchise',\n  '2193': 'Franchise',\n  '2194': 'Franchise',\n  '2195': 'Franchise',\n  '2196': 'Franchise',\n  '2197': 'Franchise',\n  '2198': 'Franchise',\n  '2199': 'Franchise',\n  '2200': 'Franchise',\n  '2204': 'Franchise',\n  '2206': 'Franchise',\n  '2207': 'Franchise',\n  '2208': 'Franchise',\n  '2209': 'Franchise',\n  '2210': 'Franchise',\n  '2212': 'Franchise',\n  '2214': 'Franchise',\n  '2215': 'Franchise',\n  '2217': 'Franchise',\n  '2218': 'Franchise',\n  '2220': 'Franchise',\n  '2221': 'Franchise',\n  '2223': 'Franchise',\n  '2224': 'Franchise',\n  '2225': 'Franchise',\n  '2227': 'Franchise',\n  '2229': 'Franchise',\n  '2231': 'Franchise',\n  '2232': 'Franchise',\n  '2233': 'Franchise',\n  '2234': 'Franchise',\n  '2235': 'Franchise',\n  '2237': 'Franchise',\n  '2238': 'Franchise',\n  '2239': 'Franchise',\n  '2240': 'Franchise',\n  '2242': 'Franchise',\n  '2243': 'Franchise',\n  '2245': 'Franchise',\n  '2246': 'Franchise',\n  '2247': 'Franchise',\n  '2250': 'Franchise',\n  '2251': 'Franchise',\n  '2252': 'Franchise',\n  '2253': 'Franchise',\n  '2254': 'Franchise',\n  '2255': 'Franchise',\n  '2256': 'Franchise',\n  '2257': 'Franchise',\n  '2258': 'Franchise',\n  '2259': 'Franchise',\n  '2262': 'Franchise',\n  '2263': 'Franchise',\n  '2266': 'Franchise',\n  '2267': 'Franchise',\n  '2268': 'Franchise',\n  '2269': 'Franchise',\n  '2270': 'Franchise',\n  '2272': 'Franchise',\n  '2273': 'Franchise',\n  '2274': 'Franchise',\n  '2275': 'Franchise',\n  '2276': 'Franchise',\n  '2277': 'Franchise',\n  '2279': 'Franchise',\n  '2280': 'Franchise',\n  '2282': 'Franchise',\n  '2283': 'Franchise',\n  '2285': 'Franchise',\n  '2286': 'Franchise',\n  '2287': 'Franchise',\n  '2288': 'Franchise',\n  '2289': 'Franchise',\n  '2290': 'Franchise',\n  '2293': 'Franchise',\n  '2295': 'Franchise',\n  '2298': 'Franchise',\n  '2300': 'Franchise',\n  '2301': 'Franchise',\n  '2307': 'Franchise',\n  '2311': 'Franchise',\n  '2315': 'Franchise',\n  '2317': 'Franchise',\n  '2319': 'Franchise',\n  '2321': 'Franchise',\n  '2322': 'Franchise',\n  '2323': 'Franchise',\n  '2324': 'Franchise',\n  '2325': 'Franchise',\n  '2326': 'Franchise',\n  '2327': 'Franchise',\n  '2328': 'Franchise',\n  '2329': 'Franchise',\n  '2330': 'Franchise',\n  '2331': 'Franchise',\n  '2333': 'Franchise',\n  '2334': 'Franchise',\n  '2335': 'Franchise',\n  '2336': 'Franchise',\n  '2337': 'Franchise',\n  '2338': 'Franchise',\n  '2339': 'Franchise',\n  '2341': 'Franchise',\n  '2342': 'Franchise',\n  '2343': 'Franchise',\n  '2344': 'Franchise',\n  '2345': 'Franchise',\n  '2347': 'Franchise',\n  '2348': 'Franchise',\n  '2351': 'Franchise',\n  '2353': 'Franchise',\n  '2354': 'Franchise',\n  '2355': 'Franchise',\n  '2359': 'Franchise',\n  '2361': 'Franchise',\n  '2362': 'Franchise',\n  '2364': 'Franchise',\n  '2366': 'Franchise',\n  '2367': 'Franchise',\n  '2372': 'Franchise',\n  '2381': 'Franchise',\n  '2383': 'Franchise',\n  '2388': 'Franchise',\n  '2391': 'Franchise',\n  '2395': 'Franchise',\n  '2397': 'Franchise',\n  '2398': 'Franchise',\n  '2409': 'Franchise',\n  '2414': 'Franchise',\n  '2416': 'Franchise',\n  '2417': 'Franchise',\n  '2422': 'Franchise',\n  '2425': 'Franchise',\n  '2429': 'Franchise',\n  '2442': 'Franchise',\n  '2469': 'Franchise',\n  '2472': 'Franchise',\n  '2475': 'Franchise',\n  '2488': 'Franchise',\n  '2496': 'Franchise',\n  '2508': 'Franchise',\n  '2511': 'Franchise',\n  '2515': 'Franchise',\n  '2533': 'Franchise',\n  '2546': 'Franchise',\n  '2547': 'Franchise',\n  '2553': 'Franchise',\n  '2554': 'Franchise',\n  '2558': 'Franchise',\n  '2559': 'Franchise',\n  '2560': 'Franchise',\n  '2563': 'Franchise',\n  '2567': 'Franchise',\n  '2572': 'Franchise',\n  '2573': 'Franchise',\n  '2575': 'Franchise',\n  '2580': 'Franchise',\n  '2582': 'Franchise',\n  '2583': 'Franchise',\n  '2628': 'Franchise',\n  '2630': 'Franchise',\n  '2640': 'Franchise',\n  '2644': 'Franchise',\n  '2647': 'Franchise',\n  '2648': 'Franchise',\n  '2656': 'Franchise',\n  '2657': 'Franchise',\n  '2664': 'Franchise',\n  '2668': 'Franchise',\n  '2674': 'Franchise',\n  '2677': 'Franchise',\n  '2683': 'Franchise',\n  '2690': 'Franchise',\n  '2692': 'Franchise',\n  '2693': 'Franchise',\n  '4422': 'Franchise',\n  '30286': 'Franchise',\n  '30293': 'Franchise',\n  '30292': 'Franchise',\n  '30809': 'Franchise',\n  '30335': 'Franchise',\n  '30304': 'Franchise',\n  '30334': 'Franchise',\n  '30309': 'Franchise',\n  '30311': 'Franchise',\n  '50301': 'Franchise',\n  '30841': 'Franchise',\n  '40827': 'Franchise',\n  '30317': 'Franchise',\n  '30318': 'Franchise',\n  '30838': 'Franchise',\n  '30303': 'Franchise',\n  '30302': 'Franchise',\n  '30295': 'Franchise',\n  '30834': 'Franchise',\n  '30836': 'Franchise',\n  '30208': 'Franchise',\n  '30833': 'Franchise',\n  '40300': 'Franchise',\n  '30339': 'Franchise',\n  '30341': 'Franchise',\n  '30848': 'Franchise',\n  '30314': 'Franchise',\n  '30294': 'Franchise',\n  '30308': 'Franchise',\n  '30316': 'Franchise',\n  '30306': 'Franchise',\n  '40305': 'Franchise',\n  '30312': 'Franchise',\n  '30313': 'Franchise',\n  '30337': 'Franchise',\n  '30299': 'Franchise',\n  '30307': 'Franchise',\n  '30350': 'Franchise',\n  '30351': 'Franchise',\n  '30347': 'Franchise',\n  '30853': 'Franchise',\n  '30345': 'Franchise',\n  '30338': 'Franchise',\n  '30846': 'Franchise',\n  '30346': 'Franchise',\n  '30342': 'Franchise',\n  '30199': 'Franchise',\n}\n","var _excluded = [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\", \"isolated\"];\nfunction _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}\nimport * as React from \"react\";\nvar ReCAPTCHA = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(ReCAPTCHA, _React$Component);\n  function ReCAPTCHA() {\n    var _this;\n    _this = _React$Component.call(this) || this;\n    _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n    _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n    _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n    _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n  var _proto = ReCAPTCHA.prototype;\n  _proto.getCaptchaFunction = function getCaptchaFunction(fnName) {\n    if (this.props.grecaptcha) {\n      if (this.props.grecaptcha.enterprise) {\n        return this.props.grecaptcha.enterprise[fnName];\n      }\n      return this.props.grecaptcha[fnName];\n    }\n    return null;\n  };\n  _proto.getValue = function getValue() {\n    var getResponse = this.getCaptchaFunction(\"getResponse\");\n    if (getResponse && this._widgetId !== undefined) {\n      return getResponse(this._widgetId);\n    }\n    return null;\n  };\n  _proto.getWidgetId = function getWidgetId() {\n    if (this.props.grecaptcha && this._widgetId !== undefined) {\n      return this._widgetId;\n    }\n    return null;\n  };\n  _proto.execute = function execute() {\n    var execute = this.getCaptchaFunction(\"execute\");\n    if (execute && this._widgetId !== undefined) {\n      return execute(this._widgetId);\n    } else {\n      this._executeRequested = true;\n    }\n  };\n  _proto.executeAsync = function executeAsync() {\n    var _this2 = this;\n    return new Promise(function (resolve, reject) {\n      _this2.executionResolve = resolve;\n      _this2.executionReject = reject;\n      _this2.execute();\n    });\n  };\n  _proto.reset = function reset() {\n    var resetter = this.getCaptchaFunction(\"reset\");\n    if (resetter && this._widgetId !== undefined) {\n      resetter(this._widgetId);\n    }\n  };\n  _proto.forceReset = function forceReset() {\n    var resetter = this.getCaptchaFunction(\"reset\");\n    if (resetter) {\n      resetter();\n    }\n  };\n  _proto.handleExpired = function handleExpired() {\n    if (this.props.onExpired) {\n      this.props.onExpired();\n    } else {\n      this.handleChange(null);\n    }\n  };\n  _proto.handleErrored = function handleErrored() {\n    if (this.props.onErrored) {\n      this.props.onErrored();\n    }\n    if (this.executionReject) {\n      this.executionReject();\n      delete this.executionResolve;\n      delete this.executionReject;\n    }\n  };\n  _proto.handleChange = function handleChange(token) {\n    if (this.props.onChange) {\n      this.props.onChange(token);\n    }\n    if (this.executionResolve) {\n      this.executionResolve(token);\n      delete this.executionReject;\n      delete this.executionResolve;\n    }\n  };\n  _proto.explicitRender = function explicitRender() {\n    var render = this.getCaptchaFunction(\"render\");\n    if (render && this._widgetId === undefined) {\n      var wrapper = document.createElement(\"div\");\n      this._widgetId = render(wrapper, {\n        sitekey: this.props.sitekey,\n        callback: this.handleChange,\n        theme: this.props.theme,\n        type: this.props.type,\n        tabindex: this.props.tabindex,\n        \"expired-callback\": this.handleExpired,\n        \"error-callback\": this.handleErrored,\n        size: this.props.size,\n        stoken: this.props.stoken,\n        hl: this.props.hl,\n        badge: this.props.badge,\n        isolated: this.props.isolated\n      });\n      this.captcha.appendChild(wrapper);\n    }\n    if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n      this._executeRequested = false;\n      this.execute();\n    }\n  };\n  _proto.componentDidMount = function componentDidMount() {\n    this.explicitRender();\n  };\n  _proto.componentDidUpdate = function componentDidUpdate() {\n    this.explicitRender();\n  };\n  _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n    this.captcha = elem;\n  };\n  _proto.render = function render() {\n    // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n    /* eslint-disable no-unused-vars */\n    var _this$props = this.props,\n      sitekey = _this$props.sitekey,\n      onChange = _this$props.onChange,\n      theme = _this$props.theme,\n      type = _this$props.type,\n      tabindex = _this$props.tabindex,\n      onExpired = _this$props.onExpired,\n      onErrored = _this$props.onErrored,\n      size = _this$props.size,\n      stoken = _this$props.stoken,\n      grecaptcha = _this$props.grecaptcha,\n      badge = _this$props.badge,\n      hl = _this$props.hl,\n      isolated = _this$props.isolated,\n      childProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\n    /* eslint-enable no-unused-vars */\n    return /*#__PURE__*/React.createElement(\"div\", _extends({}, childProps, {\n      ref: this.handleRecaptchaRef\n    }));\n  };\n  return ReCAPTCHA;\n}(React.Component);\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.defaultProps = {\n  onChange: function onChange() {},\n  theme: \"light\",\n  type: \"image\",\n  tabindex: 0,\n  size: \"normal\",\n  badge: \"bottomright\"\n};","function _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n  options = options || {};\n  return function wrapWithAsyncScript(WrappedComponent) {\n    var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n    var AsyncScriptLoader = /*#__PURE__*/\n    function (_Component) {\n      _inheritsLoose(AsyncScriptLoader, _Component);\n      function AsyncScriptLoader(props, context) {\n        var _this;\n        _this = _Component.call(this, props, context) || this;\n        _this.state = {};\n        _this.__scriptURL = \"\";\n        return _this;\n      }\n      var _proto = AsyncScriptLoader.prototype;\n      _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n        if (!this.__scriptLoaderID) {\n          this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n        }\n        return this.__scriptLoaderID;\n      };\n      _proto.setupScriptURL = function setupScriptURL() {\n        this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n        return this.__scriptURL;\n      };\n      _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n        var _this2 = this;\n\n        // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n        this.setState(state, function () {\n          return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n        });\n      };\n      _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n        var mapEntry = SCRIPT_MAP[this.__scriptURL];\n        if (!mapEntry || !mapEntry.loaded) {\n          throw new Error(\"Script is not loaded.\");\n        }\n        for (var obsKey in mapEntry.observers) {\n          mapEntry.observers[obsKey](mapEntry);\n        }\n        delete window[options.callbackName];\n      };\n      _proto.componentDidMount = function componentDidMount() {\n        var _this3 = this;\n        var scriptURL = this.setupScriptURL();\n        var key = this.asyncScriptLoaderGetScriptLoaderID();\n        var _options = options,\n          globalName = _options.globalName,\n          callbackName = _options.callbackName,\n          scriptId = _options.scriptId; // check if global object already attached to window\n\n        if (globalName && typeof window[globalName] !== \"undefined\") {\n          SCRIPT_MAP[scriptURL] = {\n            loaded: true,\n            observers: {}\n          };\n        } // check if script loading already\n\n        if (SCRIPT_MAP[scriptURL]) {\n          var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n          if (entry && (entry.loaded || entry.errored)) {\n            this.asyncScriptLoaderHandleLoad(entry);\n            return;\n          } // if still loading then callback to observer queue\n\n          entry.observers[key] = function (entry) {\n            return _this3.asyncScriptLoaderHandleLoad(entry);\n          };\n          return;\n        }\n        /*\n         * hasn't started loading\n         * start the \"magic\"\n         * setup script to load and observers\n         */\n\n        var observers = {};\n        observers[key] = function (entry) {\n          return _this3.asyncScriptLoaderHandleLoad(entry);\n        };\n        SCRIPT_MAP[scriptURL] = {\n          loaded: false,\n          observers: observers\n        };\n        var script = document.createElement(\"script\");\n        script.src = scriptURL;\n        script.async = true;\n        for (var attribute in options.attributes) {\n          script.setAttribute(attribute, options.attributes[attribute]);\n        }\n        if (scriptId) {\n          script.id = scriptId;\n        }\n        var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n          if (SCRIPT_MAP[scriptURL]) {\n            var mapEntry = SCRIPT_MAP[scriptURL];\n            var observersMap = mapEntry.observers;\n            for (var obsKey in observersMap) {\n              if (func(observersMap[obsKey])) {\n                delete observersMap[obsKey];\n              }\n            }\n          }\n        };\n        if (callbackName && typeof window !== \"undefined\") {\n          window[callbackName] = function () {\n            return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n          };\n        }\n        script.onload = function () {\n          var mapEntry = SCRIPT_MAP[scriptURL];\n          if (mapEntry) {\n            mapEntry.loaded = true;\n            callObserverFuncAndRemoveObserver(function (observer) {\n              if (callbackName) {\n                return false;\n              }\n              observer(mapEntry);\n              return true;\n            });\n          }\n        };\n        script.onerror = function () {\n          var mapEntry = SCRIPT_MAP[scriptURL];\n          if (mapEntry) {\n            mapEntry.errored = true;\n            callObserverFuncAndRemoveObserver(function (observer) {\n              observer(mapEntry);\n              return true;\n            });\n          }\n        };\n        document.body.appendChild(script);\n      };\n      _proto.componentWillUnmount = function componentWillUnmount() {\n        // Remove tag script\n        var scriptURL = this.__scriptURL;\n        if (options.removeOnUnmount === true) {\n          var allScripts = document.getElementsByTagName(\"script\");\n          for (var i = 0; i < allScripts.length; i += 1) {\n            if (allScripts[i].src.indexOf(scriptURL) > -1) {\n              if (allScripts[i].parentNode) {\n                allScripts[i].parentNode.removeChild(allScripts[i]);\n              }\n            }\n          }\n        } // Clean the observer entry\n\n        var mapEntry = SCRIPT_MAP[scriptURL];\n        if (mapEntry) {\n          delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n          if (options.removeOnUnmount === true) {\n            delete SCRIPT_MAP[scriptURL];\n          }\n        }\n      };\n      _proto.render = function render() {\n        var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n        var _this$props = this.props,\n          asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n          forwardedRef = _this$props.forwardedRef,\n          childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n        if (globalName && typeof window !== \"undefined\") {\n          childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n        }\n        childProps.ref = forwardedRef;\n        return createElement(WrappedComponent, childProps);\n      };\n      return AsyncScriptLoader;\n    }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n    // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n    // And it can then be attached to the Component.\n\n    var ForwardedComponent = forwardRef(function (props, ref) {\n      return createElement(AsyncScriptLoader, _extends({}, props, {\n        forwardedRef: ref\n      }));\n    });\n    ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n    ForwardedComponent.propTypes = {\n      asyncScriptOnLoad: PropTypes.func\n    };\n    return hoistStatics(ForwardedComponent, WrappedComponent);\n  };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\nfunction getOptions() {\n  return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\nfunction getURL() {\n  var dynamicOptions = getOptions();\n  var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n  if (dynamicOptions.enterprise) {\n    return \"https://\" + hostname + \"/recaptcha/enterprise.js?onload=\" + callbackName + \"&render=explicit\";\n  }\n  return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\nexport default makeAsyncScriptLoader(getURL, {\n  callbackName: callbackName,\n  globalName: globalName,\n  attributes: getOptions().nonce ? {\n    nonce: getOptions().nonce\n  } : {}\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","import React, { useState, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport Layout from '../Layout'\nimport { Formik, Form } from 'formik'\nimport { submitForm } from 'src/core/services'\nimport getFormComponent from './getFormComponent'\nimport { mapToSFFields } from 'src/config/fieldMapping'\nimport { FormConstants } from './FormConstants'\nimport Loader from 'src/components/Loader'\nimport Note from 'src/components/Note'\nimport { franchiseStoresList } from './franchiseStoreList'\nimport { businessAreaFieldIds, genericFormsValues } from './FormsData'\nimport ReCAPTCHA from 'react-google-recaptcha'\n\nconst getAreaValues = (storeID, formData) => {\n  const areaType = franchiseStoresList[storeID]\n  if (areaType) {\n    const matchingArea = formData.areaValues.find(\n      area => area.area === areaType\n    )\n\n    // Return the matching area or a fallback if it's undefined\n    return matchingArea || formData.areaValues.find(area => area.id === '0')\n  }\n  return formData.areaValues.find(area => area.id === '0')\n}\n\nconst { FORM_TYPE_GARDEN } = FormConstants\nconst envIdKey =\n  process.env.GATSBY_ACTIVE_ENV === 'production' ||\n  process.env.GATSBY_ACTIVE_ENV === 'production-help'\n    ? 'prod_id'\n    : 'non_prod_id'\nconst envValueKey =\n  process.env.GATSBY_ACTIVE_ENV === 'production' ||\n  process.env.GATSBY_ACTIVE_ENV === 'production-help'\n    ? 'prod_value'\n    : 'non_prod_value'\n\nconst propTypes = {\n  form: PropTypes.shape({\n    name: PropTypes.string,\n    fields: PropTypes.array,\n    type: PropTypes.string,\n    dynamicDropdownTitle: PropTypes.string,\n    dynamicReasons: PropTypes.array,\n    areaValues: PropTypes.array,\n  }),\n  onSubmitSuccess: PropTypes.func,\n}\n\nconst ShowError = props => {\n  const { count } = props\n  useEffect(() => {\n    if (typeof document !== 'undefined') {\n      const errorNodes = document.getElementsByClassName('help-form-error')\n      const firstErrorNode = errorNodes ? errorNodes[0] : null\n      if (firstErrorNode) {\n        firstErrorNode.scrollIntoView({\n          behavior: 'smooth',\n          block: 'center',\n        })\n      }\n    }\n  }, [count])\n\n  return null\n}\n\nconst FormSection = ({ form, note, onSubmitSuccess }) => {\n  const ref = useRef(null)\n  const [recaptcha, setRecaptcha] = useState('')\n  const [error, setError] = useState('')\n  const [currentAreaValues, setCurrentAreaValues] = useState(\n    form?.areaValues?.[0] || {}\n  )\n  if (!form) return null\n\n  const {\n    name: formName,\n    fields,\n    type: formType,\n    questions,\n    dynamicDropdownTitle,\n    dynamicReasons,\n    areaValues,\n  } = form\n  const additionalFields = (fields || [])\n    .map(field => ({\n      [field[envIdKey]]: field[envValueKey] ? field[envValueKey] : field.value,\n    }))\n    .reduce((acc, curr) => {\n      return { ...acc, ...curr }\n    }, {})\n  const FormComponent = getFormComponent(formName)\n  let dynamicDropdownTitleValues = dynamicDropdownTitle\n  let dynamicReasonsValues = dynamicReasons\n  let dynamicAreaValues = areaValues\n  let gtmFormName = formName\n\n  const handleStoreSelection = storeID => {\n    const selectedAreaValues = getAreaValues(storeID, form)\n    setCurrentAreaValues(selectedAreaValues)\n  }\n\n  return (\n    <Layout>\n      <Formik\n        initialValues={{\n          confirm: '0',\n          reply: '0',\n          product_details: [\n            {\n              item_ordered: '',\n              item_substituted: '',\n              item_problem: '',\n              feedback: '',\n            },\n          ],\n        }}\n        validateOnChange={false}\n        onSubmit={async (values, { setSubmitting }) => {\n          const {\n            more_card_first_digits: moreCardFirstDigits,\n            more_card_last_digits: moreCardLastDigits,\n            product_details,\n            store_name,\n            ...rest\n          } = values\n          let mergedValues = { ...rest }\n          const storeDetails = store_name\n\n          if (moreCardLastDigits) {\n            mergedValues = {\n              more_card_no: `${moreCardFirstDigits}${moreCardLastDigits}`,\n              ...mergedValues,\n            }\n          }\n\n          console.log('Store Details:', storeDetails)\n          console.log('store_namehere:', store_name)\n          console.log(\n            'Merged Values before submit:',\n            JSON.stringify(mergedValues, null, 2)\n          )\n          // handle product feedback fields\n          if (product_details) {\n            // product details field is always present in form as the form is initialized with it\n            // below checks if products details field is actually required to be sent when form is submitted\n            if (\n              product_details &&\n              product_details.length > 0 &&\n              product_details[0].item_ordered &&\n              product_details[0].item_problem\n            ) {\n              const productDetails = product_details.map(product => {\n                return `[ ${product.item_ordered} ] ${product.item_problem &&\n                  `details of the issue [ ${product.item_problem} ]`}  ( ${\n                  product.feedback\n                } )`\n              })\n              mergedValues = {\n                product_feedback: productDetails.join('\\n'),\n                ...mergedValues,\n              }\n            } else if (\n              product_details &&\n              product_details.length > 0 &&\n              product_details[0].item_ordered\n            ) {\n              const productDetails = product_details.map(product => {\n                return `[ ${\n                  product.item_ordered\n                } ] ${product.item_substituted &&\n                  `substituted with [ ${product.item_substituted} ]`}  ( ${\n                  product.feedback\n                } )`\n              })\n              mergedValues = {\n                product_feedback: productDetails.join('\\n'),\n                ...mergedValues,\n              }\n            }\n          }\n\n          if (formType !== FORM_TYPE_GARDEN) {\n            mergedValues = { ...mapToSFFields(mergedValues) }\n          }\n\n          if (additionalFields) {\n            mergedValues = {\n              ...mergedValues,\n              ...additionalFields,\n            }\n            if (additionalFields.subject) {\n              gtmFormName = additionalFields.subject\n            }\n          }\n\n          // the fields in the questions will override the ones in additional fields if applicable\n          if (questions) {\n            let questionFields = []\n            questions.forEach(question => {\n              if (values[question.id] === 'Yes') {\n                let mappedFields = (question.fields || []).map(field => ({\n                  [field[envIdKey]]: field[envValueKey]\n                    ? field[envValueKey]\n                    : field.value,\n                }))\n                questionFields = [...questionFields, ...mappedFields]\n              }\n            })\n            let questionsFieldsObject = questionFields.reduce((acc, curr) => {\n              return { ...acc, ...curr }\n            }, {})\n            console.log('finalQuestions: ', questionsFieldsObject)\n            mergedValues = { ...mergedValues, ...questionsFieldsObject }\n          }\n\n          const storeNumber = storeDetails ? storeDetails.split(' ')[0] : null\n          const areaValues = storeNumber\n            ? getAreaValues(storeNumber, form)\n            : form?.areaValues?.[0] || {} // Default to id=0 or empty object\n\n          const subject = areaValues.subject\n          const caseType = areaValues.caseType\n          const caseCategory = areaValues.caseCategory\n          const caseReason = areaValues.caseReason\n          const detailedReason = areaValues.detailedReason\n          const recordType = areaValues.recordType\n          const genericFormValuesArray = genericFormsValues(\n            subject,\n            caseType,\n            caseCategory,\n            caseReason,\n            detailedReason,\n            recordType\n          )\n\n          if (storeDetails) {\n            const businessArea = franchiseStoresList[storeNumber]\n            const storeNameID = '00ND00000051Ocb'\n            // const storeNameFieldId = mapToSFFields({ store_name: '' })\n            //   .store_name[envIdKey]\n            if (businessArea) {\n              mergedValues = {\n                ...mergedValues,\n                [storeNameID]: store_name,\n                [genericFormValuesArray[0][envIdKey]]: areaValues.subject,\n                [genericFormValuesArray[1][envIdKey]]: areaValues.caseType,\n                [genericFormValuesArray[2][envIdKey]]: areaValues.caseCategory,\n                [genericFormValuesArray[3][envIdKey]]: areaValues.caseReason,\n                [genericFormValuesArray[4][envIdKey]]:\n                  areaValues.detailedReason,\n                [genericFormValuesArray[5][envIdKey]]: areaValues.recordType,\n                [businessAreaFieldIds[envIdKey]]: businessArea,\n              }\n            } else {\n              mergedValues = {\n                ...mergedValues,\n                [storeNameID]: store_name,\n                [genericFormValuesArray[0][envIdKey]]: areaValues.subject,\n                [genericFormValuesArray[1][envIdKey]]: areaValues.caseType,\n                [genericFormValuesArray[2][envIdKey]]: areaValues.caseCategory,\n                [genericFormValuesArray[3][envIdKey]]: areaValues.caseReason,\n                [genericFormValuesArray[4][envIdKey]]:\n                  areaValues.detailedReason,\n                [genericFormValuesArray[5][envIdKey]]: areaValues.recordType,\n              }\n            }\n          } else {\n            mergedValues = {\n              ...mergedValues,\n              [genericFormValuesArray[0][envIdKey]]:\n                areaValues.subject || 'default subject',\n              [genericFormValuesArray[1][envIdKey]]: areaValues.caseType || '',\n              [genericFormValuesArray[2][envIdKey]]:\n                areaValues.caseCategory || '',\n              [genericFormValuesArray[3][envIdKey]]:\n                areaValues.caseReason || '',\n              [genericFormValuesArray[4][envIdKey]]:\n                areaValues.detailedReason || '',\n              [genericFormValuesArray[5][envIdKey]]:\n                areaValues.recordType || 'default recordType',\n            }\n          }\n\n          setError('')\n          console.log(JSON.stringify(mergedValues, null, 2))\n          try {\n            await submitForm(mergedValues, formType, gtmFormName, recaptcha)\n            setSubmitting(false)\n            onSubmitSuccess()\n          } catch (error) {\n            ref.current?.reset()\n            setRecaptcha('')\n            setSubmitting(false)\n            setError(\n              error?.response?.data?.message ||\n                'Unable to submit your details at the moment, please try later.'\n            )\n          }\n        }}\n        render={props => {\n          const { handleSubmit, isSubmitting, errors, submitCount } = props\n          return (\n            <Form onSubmit={handleSubmit}>\n              {note && (\n                <Note>\n                  <div dangerouslySetInnerHTML={{ __html: note }} />\n                </Note>\n              )}\n              {dynamicReasonsValues && (\n                <div>\n                  <FormComponent\n                    key={formName}\n                    questions={form?.questions}\n                    dynamicReasons={dynamicReasonsValues}\n                    dynamicDropdownTitle={dynamicDropdownTitleValues}\n                  />\n                </div>\n              )}\n              {!dynamicReasonsValues && (\n                <div>\n                  <FormComponent\n                    key={formName}\n                    questions={form?.questions}\n                    areaValues={currentAreaValues}\n                  />\n                </div>\n              )}\n              {formName !== 'trolleywise-form' && (\n                <ReCAPTCHA\n                  ref={ref}\n                  sitekey=\"6Lf-gI4UAAAAANCyUDviYYlP_swQLbsqT5r84Sv6\"\n                  onChange={v => {\n                    setRecaptcha(v)\n                  }}\n                  onExpired={() => setRecaptcha('')}\n                />\n              )}\n              {/* {formName !== 'trolleywise-form' && <Input.SubmitButton />} */}\n\n              {error && <div className=\"my-8 text-error\">{error}</div>}\n              {isSubmitting && <Loader />}\n              {submitCount > 0 && Object.keys(errors).length > 0 && (\n                <ShowError count={submitCount} />\n              )}\n            </Form>\n          )\n        }}\n      />\n    </Layout>\n  )\n}\n\nFormSection.propTypes = propTypes\n\nexport { FormSection }\n","import React, { useEffect, useState } from 'react'\nimport { navigate } from 'gatsby'\nimport { createSlug } from 'src/core/urls'\nimport Icon from 'src/components/Icon'\nimport { useRelatedFaqs } from 'src/core/useRelatedFaqs'\nimport Container from 'src/components/Container'\nimport SiteHeader from 'src/components/SiteHeader'\nimport FormHeader from 'src/components/FormHeader'\nimport SearchResults from 'src/components/SearchResults'\nimport StepNav from 'src/components/ContactForm/StepNav'\nimport { STEPS } from 'src/components/ContactForm/FormsData'\nimport TopicNote from 'src/components/ContactForm/TopicNote'\nimport { Button } from 'src/components/ContactForm/forms/fields'\nimport { FormSection } from 'src/components/ContactForm/FormSection'\nimport NotificationBanner from 'src/components/NotificationBanner'\nimport ForwardArrowIcon from 'src/assets/icons/arrow_forward_24.svg'\nimport RestartIcon from 'src/assets/icons/restart.svg'\nimport { SEO } from 'src/components/SEO'\n\nconst MinorTopicSection = props => {\n  const {\n    pageContext: { service, serviceTopic, minorTopic },\n  } = props\n  const [showForm, setShowForm] = useState(false)\n\n  const serviceSection = STEPS.find(step => createSlug(step.text) === service)\n  const serviceTopicSection = serviceSection?.nodes?.find(\n    node => createSlug(node.text) === serviceTopic\n  )\n  const minorTopicSection = serviceTopicSection?.nodes?.find(\n    node => createSlug(node.text) === minorTopic\n  )\n  const form = minorTopicSection?.form\n\n  const { error, isLoading, relatedFaqs } = useRelatedFaqs(\n    minorTopicSection?.text,\n    serviceSection?.searchCategory,\n    serviceSection?.searchSubCategory\n  )\n\n  useEffect(() => {\n    if (error) {\n      setShowForm(true)\n    }\n    if (relatedFaqs && relatedFaqs.length === 0) {\n      setShowForm(true)\n    }\n  }, [error, relatedFaqs])\n\n  const handleSuccessfulFormSubmission = () => {\n    navigate('/formSuccess')\n  }\n\n  const FormFAQSearch = props => {\n    return (\n      <section className=\"mb-6\">\n        <div className=\"mb-6 border-b border-body-lightest\">\n          <h3 className=\"mb-4 text-xl font-semibold\">\n            Related Answers:{' '}\n            <span>{minorTopicSection && minorTopicSection.text}</span>\n          </h3>\n        </div>\n        <div className=\"mb-6 border-b border-body-lightest\">\n          {props.children}\n        </div>\n        <p className=\"mb-4 text-lg font-semibold\">\n          Can&apos;t find your answer?\n        </p>\n        <Button onClick={() => setShowForm(true)}>\n          Proceed to enquiry form\n          <Icon\n            icon=\"forwardArrow\"\n            className=\"w-2 h-5 ml-3 opacity-50 fill-current\"\n          />\n        </Button>\n      </section>\n    )\n  }\n\n  return (\n    <>\n      <SiteHeader search />\n      <NotificationBanner />\n      <FormHeader>\n        <h1 className=\"mb-2 text-3xl font-semibold text-white\">Email Us</h1>\n        <p className=\"max-w-2xl text-lg text-white\">\n          Can’t find the answer you’re looking for? Our Customer Service Team is\n          here to help, simply complete the form below.\n        </p>\n      </FormHeader>\n      <section className=\"relative max-w-4xl mb-20 -mt-16 bg-white rounded-lg shadow-xl sm:-mt-20 md:mx-6 lg:mx-auto\">\n        <StepNav\n          currentStep={3}\n          onStep1Click={() => navigate(`/form/contact-us`)}\n          onStep2Click={() =>\n            navigate(`/form/contact-us/${createSlug(serviceSection?.text)}`)\n          }\n        />\n        <Container>\n          <div className=\"py-4 md:py-8 lg:mx-12\">\n            {showForm && (\n              <div className=\"flex justify-start mb-6 text-secondary\">\n                <a className=\"flex\" href=\"/help/form/contact-us\">\n                  <span>\n                    <RestartIcon className=\"inline-block w-4 h-4 my-auto mr-2 fill-current\" />\n                  </span>\n                  <span className=\"block font-semibold whitespace-no-wrap\">\n                    Start a new email enquiry\n                  </span>\n                </a>\n              </div>\n            )}\n            <h3 className=\"mb-8\">\n              <span className=\"text-xl font-semibold md:text-2xl\">\n                {serviceSection?.text}\n              </span>\n              {showForm && serviceTopicSection && form && (\n                <span className=\"block font-semibold text-body-light\">\n                  <span>{serviceTopicSection && serviceTopicSection.text}</span>\n                  {minorTopicSection && (\n                    <>\n                      <span>\n                        <ForwardArrowIcon className=\"inline-block w-3 h-3 mx-2 fill-current\" />\n                      </span>\n                      <span>{minorTopicSection && minorTopicSection.text}</span>\n                    </>\n                  )}\n                </span>\n              )}\n            </h3>\n            {showForm && (\n              <>\n                <TopicNote topic={minorTopic} />\n                <FormSection\n                  onSubmitSuccess={handleSuccessfulFormSubmission}\n                  form={form}\n                  note={form?.note}\n                />\n              </>\n            )}\n            {isLoading && (\n              <div className=\"flex items-center justify-center\">\n                <Icon\n                  icon=\"loading\"\n                  className=\"w-6 h-6 mx-2 fill-current md:w-10 md:h-10\"\n                />\n              </div>\n            )}\n            {!showForm && relatedFaqs && relatedFaqs.length > 0 && (\n              <FormFAQSearch>\n                <SearchResults results={relatedFaqs} />\n              </FormFAQSearch>\n            )}\n          </div>\n        </Container>\n      </section>\n    </>\n  )\n}\n\nexport default MinorTopicSection\n\nexport const Head = () => {\n  return <SEO title=\"Email Us - Morrisons Help Hub\" />\n}\n","import { useState, useEffect } from 'react'\nimport { fetchArticles } from '.'\n\nexport const useRelatedFaqs = (text, searchCategory, searchSubCategory) => {\n  const [relatedFaqs, setRelatedFaqs] = useState()\n  const [isLoading, setIsLoading] = useState(false)\n  const [error, setError] = useState(null)\n\n  useEffect(() => {\n    async function fetchRelatedFaqs() {\n      setIsLoading(true)\n      setError(null)\n      try {\n        const faqs = await fetchArticles(\n          text,\n          searchCategory,\n          searchSubCategory\n        )\n        setRelatedFaqs(faqs?.data)\n      } catch (error) {\n        setError(error)\n      } finally {\n        setIsLoading(false)\n      }\n    }\n    text && fetchRelatedFaqs()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [text])\n\n  return {\n    relatedFaqs,\n    isLoading,\n    error,\n  }\n}\n","var React = require('react');\n\nfunction ArrowForward24 (props) {\n    return React.createElement(\"svg\",props,[React.createElement(\"path\",{\"d\":\"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z\",\"key\":0}),React.createElement(\"path\",{\"fill\":\"none\",\"d\":\"M0 0h24v24H0z\",\"key\":1})]);\n}\n\nArrowForward24.defaultProps = {\"width\":\"24\",\"height\":\"24\",\"viewBox\":\"0 0 24 24\"};\n\nmodule.exports = ArrowForward24;\n\nArrowForward24.default = ArrowForward24;\n","var React = require('react');\n\nfunction Restart (props) {\n    return React.createElement(\"svg\",props,React.createElement(\"path\",{\"d\":\"M14.7,10c0-1.2-0.9-2.2-2.1-2.2s-2.1,1-2.1,2.2s0.9,2.2,2.1,2.2S14.7,11.2,14.7,10z M12.6,0C7.4,0,3.1,4.5,3.1,10H0l4.2,4.4\\n\\tL8.4,10H5.2c0-4.3,3.3-7.8,7.3-7.8s7.3,3.5,7.3,7.8s-3.3,7.8-7.3,7.8c-1.6,0-3-0.5-4.3-1.4l-1.5,1.6c1.6,1.3,3.6,2.1,5.7,2.1\\n\\tc5.2,0,9.4-4.5,9.4-10S17.8,0,12.6,0z\"}));\n}\n\nRestart.defaultProps = {\"version\":\"1.1\",\"id\":\"Layer_1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 22 20\",\"style\":{\"enableBackground\":\"new 0 0 22 20\"},\"xmlSpace\":\"preserve\"};\n\nmodule.exports = Restart;\n\nRestart.default = Restart;\n"],"names":["module","exports","num","isNaN","TypeError","neg","units","exponent","Math","min","floor","log","length","Number","pow","unit","toFixed","_wrapNativeSuper","Class","_cache","Map","undefined","fn","Function","toString","call","indexOf","has","get","set","Wrapper","_construct","arguments","_getPrototypeOf","this","constructor","prototype","Object","create","value","enumerable","writable","configurable","_setPrototypeOf","Parent","args","_isNativeReflectConstruct","Reflect","construct","a","push","apply","instance","bind","sham","Proxy","Boolean","valueOf","e","o","p","setPrototypeOf","__proto__","getPrototypeOf","AuthError","_Error","subClass","superClass","_this","name","isAuthError","Error","_extends","assign","target","i","source","key","hasOwnProperty","qsStringify","URL","RequestClient","tokenStorage","_RequestClient","Provider","uppy","opts","provider","id","split","map","s","charAt","toUpperCase","slice","join","pluginId","tokenKey","companionKeysParams","preAuthToken","_proto","headers","_this2","Promise","all","getAuthToken","then","_ref","token","authHeaders","btoa","JSON","stringify","params","onReceiveResponse","response","plugin","getPlugin","authenticated","getPluginState","status","setPluginState","setAuthToken","storage","setItem","getItem","authUrl","queries","uppyPreAuthToken","strigifiedQueries","hostname","fileUrl","fetchPreAuthToken","_this3","post","res","catch","err","resolve","list","directory","logout","_this4","removeItem","_ref2","initPlugin","defaultOpts","type","files","serverUrl","serverPattern","companionAllowedHosts","pattern","Array","isArray","RegExp","test","companionUrl","replace","origin","_class","_temp","_defineProperties","props","descriptor","defineProperty","fetchWithNetworkError","allowedHeaders","preflightDone","Constructor","protoProps","staticProps","userHeaders","companionHeaders","serverHeaders","defaultHeaders","_getPostResponseFunc","skip","_extends2","companion","getState","host","setState","_getUrl","url","_json","errMsg","statusText","json","errData","message","requestId","preflight","path","fetch","method","headerName","trim","toLowerCase","preflightAndHeaders","keys","forEach","header","skipPostResponse","credentials","companionCookiesRule","reject","data","_this5","body","delete","_this6","Accept","VERSION","SearchProvider","search","text","encodeURIComponent","ee","UppySocket","_queued","isOpen","emitter","_handleMessage","close","emit","on","once","send","autoOpen","open","socket","WebSocket","onopen","first","action","payload","onclose","onmessage","handler","parse","console","Socket","localStorage","preact","findDOMElement","Plugin","update","mount","install","uninstall","plugins","setOptions","newOpts","state","el","_updateUI","afterUpdate","onMount","calling","latestArgs","targetPlugin","callerPluginName","targetElement","isTargetDOMEl","rerender","render","_len","_key","replaceTargetContent","innerHTML","Target","iteratePlugins","parent","addTarget","unmount","parentNode","removeChild","_inheritsLoose","Translator","cuid","throttle","prettierBytes","match","DefaultStore","getFileType","getFileNameAndExtension","generateFileID","findIndex","supportsUploadProgress","_require","justErrorsLogger","debugLogger","RestrictionError","concat","isRestriction","AggregateError","_Error2","errors","AggregateRestrictionError","_AggregateError","_len2","_key2","Uppy","defaultLocale","strings","addBulkFilesFailed","youCanOnlyUploadX","youHaveToAtLeastSelectX","missingRequiredMetaField","missingRequiredMetaFieldOnFile","exceedsSize2","exceedsSize","inferiorSize","youCanOnlyUploadFileTypes","noNewAlreadyUploading","noDuplicates","companionError","companionUnauthorizeHint","failedToUpload","noInternetConnection","connectedToInternet","noFilesFound","selectX","selectAllFilesFromFolderNamed","unselectAllFilesFromFolderNamed","selectFileNamed","unselectFileNamed","openFolderNamed","cancel","logOut","filter","resetFilter","loading","authenticateWithTitle","authenticateWith","searchImages","enterTextToSearch","backToSearch","emptyFolderAdded","folderAdded","defaultOptions","autoProceed","allowMultipleUploads","debug","restrictions","maxFileSize","minFileSize","maxTotalFileSize","maxNumberOfFiles","minNumberOfFiles","allowedFileTypes","requiredMetaFields","meta","onBeforeFileAdded","currentFile","onBeforeUpload","store","logger","infoTimeout","i18nInit","setFileMeta","setFileState","info","hideInfo","addFile","removeFile","pauseResume","validateRestrictions","calculateProgress","leading","trailing","updateOnlineStatus","resetProgress","pauseAll","resumeAll","retryAll","cancelAll","retryUpload","upload","off","preProcessors","uploaders","postProcessors","currentUploads","allowNewUpload","capabilities","uploadProgress","individualCancellation","resumableUploads","totalProgress","isHidden","recoveredState","storeUnsubscribe","subscribe","prevState","nextState","patch","updateAll","window","addListeners","event","callback","fileID","translator","locale","i18n","translate","i18nArray","translateArray","setMeta","defaultProgress","percentage","bytesUploaded","uploadComplete","uploadStarted","updatedFiles","updatedFile","progress","addPreProcessor","removePreProcessor","splice","addPostProcessor","removePostProcessor","addUploader","removeUploader","updatedMeta","newMeta","getFile","getFiles","file","checkRestrictions","result","reason","_this$opts$restrictio","smart_count","some","extension","substr","allowedFileTypesString","types","size","totalFilesSize","f","backwardsCompat","checkMinNumberOfFiles","checkRequiredMetaFields","fileIDs","_i","fileName","showOrLogErrorAndThrow","throwErr","_ref$showInformer","showInformer","_ref$file","_ref$throwErr","details","logMessageWithDetails","assertNewUploadAllowed","checkAndCreateFileStateObject","fileType","onBeforeFileAddedResult","fileExtension","isRemote","isGhost","isFinite","newFile","bytesTotal","remote","preview","filesArray","startIfAutoProceed","scheduledAutoProceed","setTimeout","stack","_extends3","addFiles","fileDescriptors","newFiles","subError","removeFiles","_this7","_this$getState4","updatedUploads","removedFiles","fileIsNotRemoved","uploadFileID","uploadID","newFileIDs","stateUpdate","error","calculateTotalProgress","removedFileIDs","isPaused","filesToRetry","successful","failed","createUpload","forceAllowNewUpload","runUpload","reset","canHavePercentage","round","inProgress","preprocess","postprocess","sizedFiles","unsizedFiles","totalSize","reduce","acc","averageSize","uploadedSize","progressMax","currentProgress","_totalProgress","_this8","errorHandler","errorMsg","newError","Date","now","uploadResp","mode","uploadURL","addEventListener","navigator","onLine","wasOffline","getID","use","existsPluginAlready","_msg","foundPlugin","_this9","pluginType","removePlugin","_extends4","index","item","updatedState","_this10","duration","isComplexMessage","clearTimeout","infoTimeoutID","newInfo","warn","run","restore","removeUpload","_extends5","_opts$forceAllowNewUp","_this$getState6","step","getUpload","addResultData","_extends6","currentUpload","_this11","restoreStep","steps","lastStep","_extends7","updatedUpload","_this12","uploader","onBeforeUploadResult","currentlyUploadingFiles","prev","curr","waitingFileIDs","getTimeStamp","_console","_console2","_len3","_key3","_console3","_len4","_key4","userAgent","m","exec","_edgeVersion$split","major","minor","parseInt","h","AddFiles","_Component","triggerFileInputClick","fileInput","click","triggerFolderInputClick","folderInput","onFileInputChange","handleInputChange","renderHiddenInput","isFolder","refCallback","className","hidden","tabIndex","webkitdirectory","multiple","onChange","accept","ref","renderMyDeviceAcquirer","role","onClick","focusable","width","height","viewBox","fill","fillRule","rx","d","renderBrowseButton","onClickFn","numberOfAcquirers","acquirers","renderDropPasteBrowseTagline","lowerFMSelectionType","fileManagerSelectionType","camelFMSelectionType","browseText","browseFilesText","browseFoldersText","_unused","_unused2","titleText","browse","browseFiles","browseFolders","_unused3","disableLocalFiles","renderAcquirer","acquirer","activePickerPanel","showPanel","icon","renderAcquirers","acquirersWithoutLastTwo","lastTwoAcquirers","style","renderPoweredByUppy","uppyBranding","linkText","href","rel","note","proudlyDisplayPoweredByUppy","Component","classNames","showAddFilesPanel","ev","toggleAddFilesPanel","FileList","AddFilesPanel","PickerPanelContent","EditorPanel","PanelTopBar","FileCard","Slide","isDragDropSupported","noFiles","totalFileCount","isSizeMD","containerWidth","wrapperClassName","dashboardClassName","disabled","animateOpenClose","isClosing","isDraggingOver","inline","containerHeight","areInsidesReadyToBeVisible","itemsPerRow","showFileList","showSelectedFiles","numberOfFilesForRecovery","numberOfGhosts","dashboard","theme","onPaste","handlePaste","onDragOver","handleDragOver","onDragLeave","handleDragLeave","onDrop","handleDrop","handleClickOutside","title","closeModal","transform","cx","cy","r","class","fileCardFor","showFileEditor","progressindicators","dir","direction","hideAllPanels","saveFileEditor","editors","getFileTypeIcon","ignoreEvent","FilePreview","updateMeta","newVal","formState","handleSave","preventDefault","saveFileCard","handleCancel","toggleFileCard","saveOnEnter","keyCode","stopPropagation","renderMetaFields","metaFields","getMetaFields","fieldCSSClasses","field","required","includes","htmlFor","placeholder","onKeyUp","onKeyDown","onKeyPress","onInput","_file","_metaFields","storedMetaData","showEditButton","canEditFile","backgroundColor","color","openFileEditor","copyToClipboard","EditButton","uploadInProgressOrComplete","_onClick","x","y","RemoveButton","_onClick2","CopyLinkButton","focus","preventScroll","copyLinkToClipboard","showLinkToFileUploadResult","showRemoveButton","truncateString","ErrorButton","maxNameLength","renderFileName","renderFileSize","ReSelectButton","alert","progressIndicatorTitle","isUploaded","ProgressIndicatorButton","hideRetryButton","hidePauseResumeButton","pauseUpload","hideCancelButton","cancelUpload","onPauseResumeCancelRetry","children","ProgressCircleContainer","ProgressCircle","circleLength","PI","points","shallowEqual","FilePreviewAndLink","FileProgress","FileInfo","Buttons","FileItem","shouldComponentUpdate","nextProps","componentDidMount","handleRequestThumbnail","componentDidUpdate","componentWillUnmount","handleCancelThumbnail","isProcessing","uploadInProgress","showRemoveButtonAfterComplete","dashboardItemClass","VirtualList","dashboardFilesClass","rowHeight","fileProps","isWide","sort","file1","file2","chunked","currentChunk","rows","renderRow","row","alt","src","_getFileTypeIcon","uploadStates","UploadStatus","isAllErrored","isAllComplete","isAllPaused","getUploadingState","inProgressNotPausedFiles","processingFiles","cloneElement","transitionName","cachedChildren","componentWillUpdate","child","cancelAnimationFrame","animationFrame","leaveTimeout","requestAnimationFrame","base","getBoundingClientRect","enterTimeout","_this$state","attributes","_excluded","STYLE_INNER","position","minHeight","STYLE_CONTENT","top","left","overflow","handleResize","resize","handleScroll","offset","scrollTop","sync","forceUpdate","focusElement","offsetHeight","contains","document","activeElement","removeEventListener","_ref$overscanCount","overscanCount","excluded","sourceKeys","_objectWithoutPropertiesLoose","start","visibleRowCount","max","end","selection","styleInner","styleContent","onScroll","_assertThisInitialized","self","ReferenceError","DashboardUI","StatusBar","Informer","ThumbnailGenerator","findAllDOMElements","toArray","getDroppedFiles","getTextDirection","trapFocus","ResizeObserver","createSuperFocus","memoize","FOCUSABLE_ELEMENTS","createPromise","promise","defaultPickerIcon","_Plugin","Dashboard","_opts","removeTarget","newTargets","targets","callerPluginId","callerPluginType","activeOverlayType","current","_getEditors","editor","selectFile","save","openModal","_createPromise","savedScrollPosition","pageYOffset","savedActiveElement","disablePageScrollWhenModalOpen","classList","add","browserBackButtonClose","updateBrowserHistory","handleKeyDownInModal","_opts2$manualClose","manualClose","_this$getPluginState5","_createPromise2","remove","superFocus","history","modalName","go","isModalOpen","requestCloseModal","onRequestCloseModal","setDarkModeCapability","isDarkModeOn","darkMode","handleSystemDarkModeChange","isDarkModeOnNow","matches","show","descriptors","relativePath","startListeningToResize","resizeObserver","entries","observer","_uppyDashboardInnerEl","contentRect","observe","querySelector","makeDashboardInsidesVisibleAnywayTimeout","pluginState","isModalAndClosed","stopListeningToResize","disconnect","recordIfFocusedOnUppyRecently","ifFocusedOnUppyRecently","disableAllFocusableElements","disable","focusableNodes","querySelectorAll","node","currentTabIndex","getAttribute","dataset","inertTabindex","setAttribute","removeAttribute","dashboardIsDisabled","pushState","handlePopState","forModal","closeModalOnClickOutside","handleRootPaste","clipboardData","dataTransfer","dropEffect","removeDragOverClassTimeout","dropCategory","handleRootDrop","executedDropErrorOnce","logDropError","waitForThumbnailsBeforeUpload","handleKeyDownInInline","forInline","handlePasteOnBody","handleComplete","closeAfterFinish","handleCancelRestore","_openFileEditorWhenFilesAdded","firstFile","initEvents","trigger","showModalTrigger","autoOpenFileEditor","removeEvents","superFocusOnEachUpdate","isFocusInUppy","isFocusNowhere","isInformerHidden","isModal","_attachRenderFunctionToTarget","_isTargetSupported","isSupported","_getAcquirers","_getProgressIndicators","uploadStartedFiles","pausedFiles","completeFiles","erroredFiles","inProgressFiles","isUploadStarted","isMobileDevice","parentElement","discoverProviderPlugins","_this$opts","pluginID","disableStatusBar","hideUploadButton","showProgressDetails","hideAfterFinish","hideProgressAfterFinish","doneButtonHandler","disableInformer","disableThumbnailGenerator","thumbnailWidth","thumbnailType","lazy","darkModeMediaQuery","matchMedia","isDarkModeOnFromTheStart","addListener","informer","statusBar","thumbnail","removeListener","importFrom","addingMoreFiles","addMoreFiles","dashboardWindowTitle","dashboardTitle","copyLinkToClipboardSuccess","copyLinkToClipboardFallback","copyLink","fileSource","back","addMore","editFile","editing","finishEditingFile","saveChanges","myDevice","dropPasteFiles","dropPasteFolders","dropPasteBoth","dropPasteImportFiles","dropPasteImportFolders","dropPasteImportBoth","importFiles","dropHint","uploadPaused","resumeUpload","xFilesSelected","uploadingXFiles","processingXFiles","recoveredXFiles","recoveredAllFiles","sessionRestored","reSelect","poweredBy2","poweredBy","element","textToCopy","fallbackString","textArea","createElement","padding","border","outline","boxShadow","background","appendChild","select","magicCopyFailed","prompt","execCommand","debounce","getActiveOverlayEl","lastFocusWasOnSuperFocusableEl","dashboardEl","overlayEl","isFocusInOverlay","superFocusableEl","firstEl","defaultChoice","fileTypeGeneral","fileTypeSpecific","tagName","focusOnFirstNode","nodes","activeOverlayEl","focusedItemIndex","shiftKey","focusOnLastNode","DragDrop","dropHereOr","inputName","onInputChange","renderHiddenFileInput","fileInputRef","renderArrowSvg","renderLabel","renderNote","dragDropClass","dragDropStyle","FileInput","chooseFiles","pretty","handleClick","input","opacity","zIndex","_state$info","onMouseOver","onMouseLeave","ProgressBar","fixed","React","DashboardPlugin","basePropTypes","getHTMLProps","_React$Component","validProps","installPlugin","prevProps","uninstallPlugin","options","container","propTypes","defaultProps","PropTypes","DashboardModal","onRequestClose","instanceOf","HTMLElement","any","bool","func","DragDropPlugin","FileInputPlugin","string","ProgressBarPlugin","uppyPropType","StatusBarPlugin","possibleStandardNames","object","UppyCore","isRequired","arrayOf","shape","pluralize","metaField","oneOfType","cssSize","number","useEffect","useRef","factory","statusBarStates","prettyETA","progressMode","progressBarContent","_props","isUploadInProgress","uploadState","progressValue","STATE_PREPROCESSING","STATE_POSTPROCESSING","progresses","_progresses$","total","calculateProcessingProgress","ProgressBarProcessing","STATE_COMPLETE","ProgressBarComplete","STATE_UPLOADING","ProgressBarUploading","STATE_ERROR","ProgressBarError","STATE_WAITING","showUploadBtn","showCancelBtn","showPauseResumeBtn","showRetryBtn","showDoneBtn","progressClassNames","statusBarClassNames","isSomeGhost","UploadBtn","RetryBtn","PauseResumeButton","CancelBtn","DoneBtn","uploadBtnClassNames","uploadBtnText","startUpload","togglePauseResume","LoadingSpinner","UnknownProgressDetails","complete","numUploads","UploadNewlyAddedFiles","ThrottledProgressDetails","ifShowFilesUploadedOfTotal","totalUploadedSize","time","totalETA","showUploadNewlyAddedFiles","_ref3","errorMessage","StatusBarUI","getSpeed","getBytesRemaining","uploading","uploadFailed","paused","retry","pause","resume","done","filesUploadedOfTotal","dataUploadedOfTotal","xTimeLeft","uploadXFiles","uploadXNewFiles","xMoreFilesAdded","getTotalSpeed","totalSpeed","getTotalETA","totalBytesRemaining","startedFiles","callbacks","_publish","listener","dataURItoBlob","isObjectURL","isPreviewSupported","MathLog2","exifr","onFileAdded","addToQueue","onCancelRequest","queue","onFileRemoved","revokeObjectURL","onRestored","isRestored","waitUntilAllProcessed","emitPreprocessCompleteForAll","queueProcessing","defaultThumbnailDimension","generatingThumbnails","thumbnailHeight","createThumbnail","targetWidth","targetHeight","originalUrl","createObjectURL","onload","image","Image","orientationPromise","rotation","_err","orientation","dimensions","getProportionalDimensions","deg","rotatedImage","rotateImage","resizedImage","resizeImage","canvasToBlob","blob","img","aspect","protect","ratio","maxSquare","maxSize","maxW","sqrt","maxH","canvas","getContext","drawImage","ceil","sW","sH","w","context","rotate","rad","scale","scaleX","scaleY","quality","getImageData","code","toBlob","toDataURL","setPreviewURL","processQueue","shift","requestThumbnail","EventTracker","_events","_emitter","NetworkError","xhr","isNetworkError","request","ProgressTimeout","timeout","timeoutHandler","_timeout","_onTimedOut","_isDone","_aliveTimer","createCancelError","RateLimitedQueue","limit","Infinity","activeRequests","queuedHandlers","_call","cancelActive","_done","abort","_queueNext","_next","next","_queue","priority","_dequeue","other","queueOptions","wrapPromiseFunction","queuedRequest","outerPromise","cancelError","innerPromise","locales","n","_apply","prevLocale","interpolate","phrase","_String$prototype","String","dollarRegex","interpolated","arg","replacement","insertReplacement","newParts","chunk","raw","plural","dataURI","toFile","mimeType","bytes","binary","atob","array","charCodeAt","Uint8Array","File","Blob","progressData","isDOMElement","elements","predicate","encodeFilename","suffix","character","encodeCharacter","lastModified","fileProgress","webkitGetAsEntryApi","fallbackApi","_ref$logDropError","items","getFilesAndDirectoriesFromDirectory","directoryReader","oldEntries","onSuccess","readEntries","newEntries","fileEntry","fullPath","getRelativePath","rootPromises","createPromiseToAddFileOrParseDirectory","entry","isFile","isDirectory","createReader","promises","webkitGetAsEntry","fullFileName","lastDot","lastIndexOf","mimeTypes","timeElapsed","pad","str","date","getHours","getMinutes","getSeconds","obj","nodeType","Node","ELEMENT_NODE","div","readyState","md","markdown","mp4","mp3","svg","jpg","png","gif","heic","heif","yaml","yml","csv","tsv","tab","avi","mks","mkv","mov","doc","docm","docx","dot","dotm","dotx","xla","xlam","xlc","xlf","xlm","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xlw","txt","conf","pdf","zip","rar","tar","gz","dmg","secondsToTime","seconds","hoursStr","hours","minutesVal","minutes","minutesStr","secondsVal","rawSeconds","resolutions","rejections","resolved","rejected","maxLength","separator","charsToShow","frontChars","backChars","_require2","emitSocketProgress","getSocketHost","settle","buildResponseError","setTypeInBlob","XHRUpload","timedOut","formData","fieldName","responseUrlFieldName","bundle","withCredentials","responseType","getResponseData","responseText","parsedResponse","getResponseError","validateStatus","handleUpload","__queue","requests","uploaderEvents","getOptions","overrides","xhrUpload","addMetadata","append","createFormDataUpload","formPost","FormData","dataWithUpdatedType","createBundledUpload","createBareUpload","XMLHttpRequest","timer","loaded","lengthComputable","_body","endpoint","currentOpts","setRequestHeader","onFileRemove","onCancelAll","uploadRemote","fields","providerOptions","fieldname","metadata","httpMethod","useFormData","onRetry","onRetryAll","resp","cause","uploadBundle","optsFromState","emitError","uploadFiles","cb","targetFileID","fingerprint","getRandomValue","c","discreteValues","randomBlock","safeCounter","getTime","slug","counter","print","random","isCuid","stringToCheck","startsWith","isSlug","stringLength","env","globalCount","clientId","crypto","msCrypto","lim","abs","getRandomValues","Uint32Array","t","getOwnPropertyNames","u","l","v","getOwnPropertyDescriptor","values","g","k","fromEntries","from","P","b","substring","endsWith","A","onerror","ok","arrayBuffer","O","defineProperties","S","clear","_map","_keys","U","C","HTMLImageElement","B","process","versions","j","Buffer","_","V","I","L","T","ifd0","enabled","exif","makerNote","userComment","gps","interop","ifd1","jfif","xmp","iptc","icc","z","fromCharCode","F","TextDecoder","E","decode","decodeURIComponent","escape","D","le","byteOffset","byteLength","ArrayBuffer","DataView","_swapDataView","buffer","dataView","toUint8","_lengthToEnd","getUint8Array","getUint16","getInt8","getUint8","getInt16","getInt32","getUint32","getFloat32","getFloat64","getUint64","R","N","kind","M","W","K","H","X","Y","FileReader","onloadend","readAsArrayBuffer","G","J","q","read","Q","Z","$","allKeys","allValues","te","ne","re","ie","ae","se","ue","oe","fe","ce","he","de","ve","pe","ye","ge","ke","me","be","Ae","translateKeys","translateValues","reviveValues","we","applyInheritables","canBeFiltered","dict","translateTagSet","pick","deps","tagKeys","tagValues","Ce","Oe","tiff","ihdr","multiSegment","sanitize","mergeOutput","silentErrors","firstChunkSize","firstChunkSizeNode","firstChunkSizeBrowser","chunkSize","chunkLimit","Se","Pe","setupFromTrue","setupFromUndefined","setupFromArray","setupFromObject","filterNestedSegmentTags","traverseTiffDependencyTree","checkLoadedPlugins","setupGlobalFilters","xe","batchEnableWithBool","batchEnableWithUserValue","Ue","needed","finalizeFilters","Be","je","_e","Ve","Le","Ie","useCached","fileParser","canHandle","parsers","setup","doParse","assignToOutput","jpeg","getOrFindSegment","ensureSegmentChunk","extractThumbnail","Te","ze","freeze","Exifr","fileParsers","segmentParsers","fileReaders","tagRevivers","createDictionary","extendDictionary","fetchUrlAsArrayBuffer","readBlobAsArrayBuffer","chunkedProps","otherSegments","segments","tiffBlocks","segmentsAndBlocks","tiffExtractables","inheritables","allFormatters","Options","Fe","Ee","available","readChunk","subarray","extendOptions","createParser","De","normalizeInput","globalOptions","localOptions","canTranslate","translated","translateBlock","translateValue","DEFAULT","assignObjectToOutput","headerLength","Re","Ne","Me","We","Ke","He","Xe","Ye","Ge","Je","qe","Qe","Ze","findAppSegments","readSegments","appSegments","mergeMultiSegments","createParsers","mergedAppSegments","findAll","wanted","keyList","remaining","unfinishedMultiSegment","setupSegmentFinderArgs","readWhole","findAppSegmentsInRange","onlyTiff","canReadNextChunk","nextChunkOffset","readNextChunk","findPosition","chunkNumber","chunkCount","recordUnknownSegments","marker","unknownSegments","stopAfterSos","recordJpegSegments","jpegSegments","handleMultiSegments","find","getSegment","$e","et","tt","nt","rt","parseHeader","parseIfd0Block","safeParse","createOutput","handleError","ifd0Offset","ifd1Offset","findIfd0Offset","parseTags","ensureChunk","parseBlock","exifOffset","interopOffset","gpsOffset","unpack","it","parseExifBlock","ifd1Parsed","findIfd1Offset","headerParsed","parseThumbnailBlock","parseTag","getString","parseTagValue","Uint16Array","Int8Array","Int16Array","Int32Array","Float32Array","Float64Array","getFloat","getDouble","at","default","st","ut","ot","vt","ft","dt","latitude","longitude","ct","ht","pt","lt","yt","dimensionSwapped","rotateCanvas","rotateCss","gt","kt","mt","bt","At","wt","Ot","St","Pt","Ut","xt","ranges","_extend","allocUnsafe","uintView","_tryExtend","Ct","Bt","jt","_t","Vt","_swapArrayBuffer","fullyRead","chunksRead","safeWrapAddress","_readChunk","readChunked","disableAllOptions","gpsOnlyOptions","orientationOnlyOptions","css","rotations","thumbnailOnlyOptions","thumbnailUrl","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","root","objectToString","nativeMax","nativeMin","isObject","toNumber","isObjectLike","isSymbol","isBinary","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","thisArg","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","flush","FUNC_ERROR_TEXT","log2","LOG2E","wildcard","reMimePartSplit","_fns","arg1","arg2","arg3","arg4","arg5","arg6","toEmit","out","idx","getListeners","fns","emitAll","one","keep","VNode","EMPTY_CHILDREN","nodeName","lastSimple","simple","pop","vnode","extend","defer","IS_NON_DIMENSIONAL","enqueueRender","component","_dirty","debounceRendering","renderComponent","isSameNodeType","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","getNodeProps","removeNode","setAccessor","old","isSvg","cssText","__html","useCapture","eventProxy","_listeners","setProperty","ns","removeAttributeNS","setAttributeNS","mounts","diffLevel","isSvgMode","flushMounts","afterMount","diff","dom","mountAll","componentRoot","ownerSVGElement","ret","idiff","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","originalComponent","oldDom","isDirectOwner","isOwner","_parentComponent","setComponentProps","unmountComponent","createComponent","nextBase","buildComponentFromVNode","createElementNS","firstChild","fc","vchildren","nextSibling","isHydrating","vchild","originalChildren","childNodes","keyed","keyedLen","len","childrenLen","vlen","_child","__key","insertBefore","innerDiffNode","dangerouslySetInnerHTML","attrs","diffAttributes","unmountOnly","removeChildren","lastChild","previousSibling","components","Ctor","inst","doRender","_disable","__ref","componentWillMount","componentWillReceiveProps","prevContext","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","previousContext","isUpdate","initialBase","initialChildComponent","getChildContext","toUnmount","childComponent","childProps","baseParent","componentRef","unshift","_renderCallbacks","beforeUnmount","inner","collectComponent","merge","queryStringify","prefix","pairs","pair","enkey","encode","query","part","parser","port","protocol","MapShim","getIndex","arr","class_1","__entries__","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","delay","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","characterData","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","parseFloat","getBordersSize","styles","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","right","vertPad","bottom","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","WeakMap","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","location","finaldestination","Url","unescape","pathname","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","relative","extracted","instruction","instructions","last","up","username","password","auth","char","ins","WildcardMatcher","hasWild","parts","ii","testParts","partsCount","matcher","toPropertyKey","definePropertyModule","createPropertyDescriptor","propertyKey","PROPER_FUNCTION_NAME","fails","whitespaces","METHOD_NAME","$trimStart","forcedStringTrimMethod","trimStart","uncurryThis","requireObjectCoercible","whitespace","ltrim","rtrim","createMethod","TYPE","$this","global","forced","globalThis","iterate","createProperty","stat","iterable","AS_ENTRIES","proto","Form","Fieldset","legend","Item","content","topic","Icon","getContent","ProductName","label","fieldId","labelText","InputField","validate","validateString","ProductBarCode","validateProp","validateNumber","toolTip","tipText","ProductBatchCode","CustomerEmail","validateEmail","CustomerLastName","CustomerFirstName","SelectNumbers","form","handleChange","setFieldValue","touched","validateMoreCardNumber","useState","selectedNumbers","setSelectedNumbers","handleSelectChange","helpText","defaultValue","AddressPostcode","validatePostcode","AddressFirstLine","AddressSecondLine","AddressTownPrevious","AddressPostcodePrevious","AddressFirstLinePrevious","AddressSecondLinePrevious","Message","isDynamic","TextAreaField","validateTextArea","MessageAndAddress","StoreFinder","morrisonsDaily","formik","postcode_1","stores","setStores","setLoading","setError","storeNameWrapperRef","getStoreList","getStoresFromLocation","storesList","StoreFinderInput","handleKeyDown","SelectField","storeName","storeFormat","connect","GardeningLeisureProducts","useGardeningItemsListData","Product_ID","Product_Description","isLoading","SearchableSelect","DateField","validateDate","DateTimeField","DateBestBefore","DateOfIssue","DateOfDelivery","uploaded","SupportingFiles","S3_Url","SubmitButton","SecondaryButton","RegionSelect","RadioField","radioValue","validateRadio","submitCount","hasErrors","CheckboxField","validateCheckbox","CarParkingCompanySelect","CarParkingChargeRefNo","validateCarParkingChargeRef","CarRegistration","validateCarReg","BoxOrderId","ExternalOrderId","isOnlineForm","validateExternalOrderId","BoxSelect","withSubstitutions","newlabel","singleProduct","product_details","arrayHelpers","product","FieldArrayInputField","item_ordered","item_substituted","FieldArrayTextAreaField","feedback","withSecondLabel","firstLabel","secondLabel","item_problem","ScanShopSelect","StaffName","CafeMealPurchased","DynamicValuesCaseCategory","HiddenField","DynamicValuesCaseType","DynamicValuesCaseReason","DynamicValuesDetailedReason","DynamicValuesSubject","SupportingFilesRequired","uploadSuccess","setUploadSuccess","VoucherCode","StaffDescription","enquiry","instore_or_online","is_morrisons_product","can_share_info","has_packaging","was_medical_sought","yes_or_no_one","yes_or_no_two","yes_or_no_three","setMessage","hiddenFieldValue","addressPrevious","address2Previous","townPrevious","postcodePrevious","selectedRegion","region_select","questions","formId","question","purchasePast3Days","purchaseDate","promo_date_of_purchase","promotionCriteria","today","moment","startOf","isBefore","setShow","allowed","selectedProduct","setSelectedProduct","manualLink","setManualLink","isAllowed","setisAllowed","hasMessage","setHasMessage","selectedProductPart","setSelectedProductPart","loadingList","selectedProductValue","getGardenItemOptions","Product_Manual","getItemPartOptions","productParts","Product_Parts","Value","Allowed","Select","option","useSDAItemsListData","dynamicReasons","dynamicDropdownTitle","selectedType","setSelectedType","selectedReason","subject","caseCategory","caseReason","caseType","detailedReason","dropdowns","dropdown","onlineCaseCategory","onlineCaseReason","onlineCaseType","onlineDetailedReason","wwithSubstitutions","GeneralEnquiryForm","GeneralEnquiryWithScanAndShopReason","GeneralEnquiryWithStore","GeneralEnquiryWithStoreAndDate","GeneralEnquiryWithDate","GeneralEnquiryWithStoreAndOnlineRedirect","GeneralEnquiryWithFoodBoxOrderID","GeneralEnquiryWithEatFreshOrderID","GeneralEnquiryWithOrderID","GeneralEnquiryWithOrderIDAndDate","GeneralEnquiryWithDateButNoStore","GeneralEnquiryWithImagesOrderID","GeneralEnquiryWithBestBeforeDate","GeneralEnquiryWithYesNo","GeneralEnquiryGoodToGrow","GeneralEnquirySaversYesNo","GeneralEnquiryChristmasYesNo","GeneralEnquiryChristmasYesNoStoreOnline","GeneralEnquiryChristmasYesNoStartCollecting","GeneralEnquiryFormWithReceipt","GeneralEnquiryWithPreviousAddress","ProductComplaintForm","ProductRefundForm","ProductForeignBodyForm","ProductAllegedAllergenForm","ProductFoodOutOfDateForm","ProductEnquiryWithBarcode","StoresIncidentDamageForm","OnlineShoppingEnquiryForm","OnlineShoppingWithProducts","OnlineShoppingMissingItem","OnlineShoppingSubstitute","OnlineShoppingOutOfDate","OnlineShoppingWithProductsWithImages","OnlineShoppingWithProductsWithReceipt","OnlineShoppingWithSubstitutions","OnlineShoppingWithProductsOrderIDAndDate","ProductIllnessForm","PromotionPointsNotEarnedForm","CarParkingForm","BlankForm","FoodBoxGeneralEnquiry","GeneralEnquiryWithFoodBox","EatFreshGeneralEnquiry","EatFreshWrongBoxEnquiry","ElectricalInstructionsAndPartsForm","GardenInstructionsAndPartsForm","DynamicEnquiryWithStore","DynamicEnquiryWithStoreAndDate","DynamicCafeEnquiryWithDateAndReceipt","DynamicEnquiryWithStoreAndDateAndReceiptAndBarcode","DynamicOnlineShoppingEnquiryForm","DynamicOnlineShoppingEnquiryComplaintForm","DynamicOnlineShoppingWithDatesForm","CafeEnquiryWithDate","CafeEnquiryWithDateAndReceipt","PetrolEnquiryWithDateAndReceipt","TrolleywiseForm","GeneralEnquiryWithMorrisonsDaily","ProductComplaintWithMorrisonsDaily","GeneralEnquiryWithDateAndMorrisonsDaily","GeneralEnquiryWithBarcodeReceiptAndMorrisonsDaily","GeneralEnquiryJustStores","IdConfig","prod","nonProd","metaData","nonProd_id","prod_id","nonProd_value","prod_value","mapToSFFields","matchedId","mappedData","metaDataObj","franchiseStoresList","ReCAPTCHA","handleExpired","handleErrored","handleRecaptchaRef","getCaptchaFunction","fnName","grecaptcha","enterprise","getValue","getResponse","_widgetId","getWidgetId","execute","_executeRequested","executeAsync","executionResolve","executionReject","resetter","forceReset","onExpired","onErrored","explicitRender","wrapper","sitekey","tabindex","stoken","hl","badge","isolated","captcha","elem","_this$props","displayName","SCRIPT_MAP","idCount","callbackName","recaptchaOptions","getScriptURL","dynamicOptions","useRecaptchaNet","globalName","nonce","WrappedComponent","wrappedComponentName","AsyncScriptLoader","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","scriptURL","_options","scriptId","errored","script","attribute","async","callObserverFuncAndRemoveObserver","observersMap","removeOnUnmount","allScripts","getElementsByTagName","forwardedRef","ForwardedComponent","forwardRef","getAreaValues","storeID","areaType","areaValues","area","FORM_TYPE_GARDEN","FormConstants","ShowError","count","errorNodes","getElementsByClassName","firstErrorNode","scrollIntoView","behavior","block","FormSection","onSubmitSuccess","recaptcha","setRecaptcha","currentAreaValues","formName","formType","additionalFields","FormComponent","getFormComponent","dynamicDropdownTitleValues","dynamicReasonsValues","gtmFormName","Layout","initialValues","confirm","reply","validateOnChange","onSubmit","setSubmitting","moreCardFirstDigits","more_card_first_digits","moreCardLastDigits","more_card_last_digits","store_name","mergedValues","storeDetails","more_card_no","productDetails","product_feedback","questionFields","mappedFields","questionsFieldsObject","storeNumber","recordType","genericFormValuesArray","genericFormsValues","storeNameID","businessArea","businessAreaFieldIds","submitForm","handleSubmit","isSubmitting","Loader","pageContext","service","serviceTopic","minorTopic","showForm","setShowForm","serviceSection","STEPS","createSlug","serviceTopicSection","minorTopicSection","searchCategory","searchSubCategory","relatedFaqs","setRelatedFaqs","setIsLoading","fetchArticles","faqs","fetchRelatedFaqs","useRelatedFaqs","FormFAQSearch","SiteHeader","NotificationBanner","FormHeader","StepNav","currentStep","onStep1Click","navigate","onStep2Click","Container","SearchResults","results","Head","SEO","ArrowForward24","Restart"],"sourceRoot":""}