diff --git a/.gitignore b/.gitignore
index 21cd9bd74..1bbeffd0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,9 +8,6 @@ node_modules/
# MacOS
.DS_Store
-# generated files
-dist/
-
# generated site
site/
diff --git a/dist/dnd.cjs.js b/dist/dnd.cjs.js
new file mode 100644
index 000000000..ebee85666
--- /dev/null
+++ b/dist/dnd.cjs.js
@@ -0,0 +1,7621 @@
+'use strict';
+
+var React = require('react');
+var ReactDOM = require('react-dom');
+var redux = require('redux');
+var reactRedux = require('react-redux');
+var useMemoOne = require('use-memo-one');
+var cssBoxModel = require('css-box-model');
+var memoizeOne = require('memoize-one');
+var rafSchd = require('raf-schd');
+var _extends = require('@babel/runtime/helpers/extends');
+
+const isProduction$1 = process.env.NODE_ENV === 'production';
+const spacesAndTabs = /[ \t]{2,}/g;
+const lineStartWithSpaces = /^[ \t]*/gm;
+const clean$2 = value => value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();
+const getDevMessage = message => clean$2(`
+ %c@hello-pangea/dnd
+
+ %c${clean$2(message)}
+
+ %c👷 This is a development only message. It will be removed in production builds.
+`);
+const getFormattedMessage = message => [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];
+const isDisabledFlag = '__@hello-pangea/dnd-disable-dev-warnings';
+function log(type, message) {
+ if (isProduction$1) {
+ return;
+ }
+ if (typeof window !== 'undefined' && window[isDisabledFlag]) {
+ return;
+ }
+ console[type](...getFormattedMessage(message));
+}
+const warning = log.bind(null, 'warn');
+const error = log.bind(null, 'error');
+
+function noop$2() {}
+
+function getOptions(shared, fromBinding) {
+ return {
+ ...shared,
+ ...fromBinding
+ };
+}
+function bindEvents(el, bindings, sharedOptions) {
+ const unbindings = bindings.map(binding => {
+ const options = getOptions(sharedOptions, binding.options);
+ el.addEventListener(binding.eventName, binding.fn, options);
+ return function unbind() {
+ el.removeEventListener(binding.eventName, binding.fn, options);
+ };
+ });
+ return function unbindAll() {
+ unbindings.forEach(unbind => {
+ unbind();
+ });
+ };
+}
+
+const isProduction = process.env.NODE_ENV === 'production';
+const prefix$1 = 'Invariant failed';
+class RbdInvariant extends Error {}
+RbdInvariant.prototype.toString = function toString() {
+ return this.message;
+};
+function invariant(condition, message) {
+ if (condition) {
+ return;
+ }
+ if (isProduction) {
+ throw new RbdInvariant(prefix$1);
+ } else {
+ throw new RbdInvariant(`${prefix$1}: ${message || ''}`);
+ }
+}
+
+class ErrorBoundary extends React.Component {
+ constructor(...args) {
+ super(...args);
+ this.callbacks = null;
+ this.unbind = noop$2;
+ this.onWindowError = event => {
+ const callbacks = this.getCallbacks();
+ if (callbacks.isDragging()) {
+ callbacks.tryAbort();
+ process.env.NODE_ENV !== "production" ? warning(`
+ An error was caught by our window 'error' event listener while a drag was occurring.
+ The active drag has been aborted.
+ `) : void 0;
+ }
+ const err = event.error;
+ if (err instanceof RbdInvariant) {
+ event.preventDefault();
+ if (process.env.NODE_ENV !== 'production') {
+ error(err.message);
+ }
+ }
+ };
+ this.getCallbacks = () => {
+ if (!this.callbacks) {
+ throw new Error('Unable to find AppCallbacks in
Current limitation: they cannot be connected
+