{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/drawboard/Drawboard/index.less","webpack:///./src/toolbar/index.less","webpack:///./src/whiteboard/AbstractWhiteboard/index.less","webpack:///./src/whiteboard/WhitePage/index.less","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./node_modules/fc-hotkeys/dist/index.js","webpack:///./node_modules/interactjs/dist/interact.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/siema/dist/siema.min.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./node_modules/tippy.js/esm/index.all.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/v1.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/assets/arrow.svg","webpack:///./src/assets/bx-left-arrow.svg","webpack:///./src/assets/bx-right-arrow.svg","webpack:///./src/assets/check.svg","webpack:///./src/assets/cover.svg","webpack:///./src/assets/drag.svg","webpack:///./src/assets/eraser.svg","webpack:///./src/assets/finish.svg","webpack:///./src/assets/highlight.svg","webpack:///./src/assets/line.svg","webpack:///./src/assets/rect.svg","webpack:///./src/assets/rollback.svg","webpack:///./src/assets/text.svg","webpack:///./src/assets/times.svg","webpack:///./src/drawboard/Baseboard/index.ts","webpack:///./src/drawboard/Drawboard/index.less?f0f9","webpack:///./src/drawboard/Drawboard/index.ts","webpack:///./src/event/EventHub.ts","webpack:///./src/index.ts","webpack:///./src/markers/ArrowMarker/index.ts","webpack:///./src/markers/BaseMarker/ResizeGrip.ts","webpack:///./src/markers/BaseMarker/index.ts","webpack:///./src/markers/CoverMarker/index.ts","webpack:///./src/markers/HighlightMarker/index.ts","webpack:///./src/markers/LineMarker/index.ts","webpack:///./src/markers/LinearMarker/index.ts","webpack:///./src/markers/RectMarker/RectBaseMarker.ts","webpack:///./src/markers/RectMarker/index.ts","webpack:///./src/markers/RectangularMarker/RectangularMarkerGrips.ts","webpack:///./src/markers/RectangularMarker/index.ts","webpack:///./src/markers/TextMarker/index.ts","webpack:///./src/markers/types.ts","webpack:///./src/renderer/DomEventAware/index.ts","webpack:///./src/renderer/SvgHelper/index.ts","webpack:///./src/renderer/Synthetizer/index.ts","webpack:///./src/toolbar/Toolbar.ts","webpack:///./src/toolbar/ToolbarButton.ts","webpack:///./src/toolbar/ToolbarItem.ts","webpack:///./src/toolbar/index.less?f9bc","webpack:///./src/toolbar/toolbar-items.ts","webpack:///./src/utils/dom.ts","webpack:///./src/utils/layout.ts","webpack:///./src/utils/types.ts","webpack:///./src/utils/uuid.ts","webpack:///./src/utils/validator.ts","webpack:///./src/whiteboard/AbstractWhiteboard/index.less?e2e1","webpack:///./src/whiteboard/AbstractWhiteboard/index.ts","webpack:///./src/whiteboard/MirrorWhiteboard/index.ts","webpack:///./src/whiteboard/ReplayWhiteboard/index.ts","webpack:///./src/whiteboard/WhitePage/index.less?8e6c","webpack:///./src/whiteboard/WhitePage/index.ts","webpack:///./src/whiteboard/Whiteboard/index.ts"],"names":[],"mappings":"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AAGD;AACA;AACA;AACA,qDAAqD,cAAc;AACnE;AACA,C;;;;;;;;;;;;ACpFa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,gBAAgB;AAC3B,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yDAAyD,OAAO;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,eAAe,YAAY;AAC3B;;AAEA;AACA,2DAA2D;AAC3D,+DAA+D;AAC/D,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AA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;AAErN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,qDAAqD;;AAE9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,0DAA0D,QAAQ;AAClE;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,OAAO;AACP,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,sEAAsE;;AAEtE;;AAEA;;AAEA;;AAEA,6DAA6D;;AAE7D;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F,uBAAuB,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAE7V,iCAAiC,oFAAoF;;AAErH,6BAA6B,6EAA6E;;AAE1G,wCAAwC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,iDAAiD,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa;;AAEvZ,+BAA+B,oCAAoC;;AAEnE,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;AAErN,iDAAiD,0EAA0E,aAAa,EAAE,qCAAqC;;AAE/K,uCAAuC,uBAAuB,uFAAuF,EAAE,aAAa;;AAEpK,6BAA6B,gGAAgG,gDAAgD,GAAG,2BAA2B;;AAE3M,0CAA0C,+DAA+D,2EAA2E,EAAE,yEAAyE,eAAe,sDAAsD,EAAE,EAAE,uDAAuD;;AAE/X,gCAAgC,4EAA4E,iBAAiB,UAAU,GAAG,8BAA8B;;AAExK;;AAEA;AACA;AACA;;AAEA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,uBAAuB,sCAAsC;AAC7D;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mDAAmD;;AAEnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,uBAAuB,mCAAmC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB;;AAErB;AACA;;AAEA,uBAAuB,mCAAmC;AAC1D;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,uBAAuB,4CAA4C;AACnE;AACA,SAAS;AACT;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;;AAGL,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,uBAAuB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,0BAA0B;;AAE1B,sCAAsC,uCAAuC,kBAAkB;;AAE/F,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAEzd,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;AAErN;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,2DAA2D;;AAE5D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D;;AAE/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,6BAA6B;;AAE7B,wBAAwB;;AAExB;AACA;AACA;AACA;AACA,MAAM;;AAEN,uBAAuB;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAqB;AACpE;AACA;AACA,eAAe,OAAO;AACtB,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB,gBAAgB,OAAO;AACvB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,eAAe;AAClE;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,iBAAiB;AACxB;;AAEA;AACA,KAAK;;AAEL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,eAAe,aAAa;AAC5B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,0DAA0D;;AAE1D;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;;AAEA,CAAC;AACD;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B,8CAA8C;;AAE9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,uBAAuB,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAE7V;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAEzd,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sDAAsD;;AAEtD,uJAAuJ;;AAEvJ;AACA,4DAA4D;;AAE5D;AACA,qDAAqD;;AAErD,uHAAuH;;AAEvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ;;AAEX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,qBAAqB;AAClC,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,sBAAsB;AAC1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,4CAA4C;;AAE5C;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;AAErN,iCAAiC,oFAAoF;;AAErH,6BAA6B,6EAA6E;;AAE1G,wCAAwC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,iDAAiD,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa;;AAEvZ,+BAA+B,oCAAoC;;AAEnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;;AAEA;AACA,KAAK;AACL,sBAAsB,UAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH,8CAA8C,YAAY;AAC1D;AACA;AACA,iDAAiD;;AAEjD,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA,sCAAsC;;;AAGtC;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA,WAAW;;;AAGX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B;;AAE5B;AACA,mBAAmB,gCAAgC;AACnD;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,wBAAwB;AACjD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;;AAEvC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEA,sDAAsD;;AAEtD;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG,MAAM,WAAW,WAAW,WAAW;;;AAG1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,uBAAuB;AAC3C;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,sDAAsD,0CAA0C,0DAA0D,EAAE;;AAE5J,gDAAgD,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAEhU,kEAAkE,2EAA2E,mEAAmE,oBAAoB;;AAEpO;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,6BAA6B;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,sDAAsD,0CAA0C,0DAA0D,EAAE;;AAE5J,gDAAgD,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAEhU,kEAAkE,2EAA2E,mEAAmE,oBAAoB;;AAEpO;AACA,kBAAkB,uBAAuB;AACzC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;;AAEA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,8BAA8B;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,sEAAsE;;AAEtE;;AAEA;;AAEA;;AAEA;;AAEA,kEAAkE;;AAElE;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,sDAAsD,0CAA0C,0DAA0D,EAAE;;AAE5J,gDAAgD,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAEhU,kEAAkE,2EAA2E,mEAAmE,oBAAoB;;AAEpO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA,oGAAoG,4CAA4C;;AAEhJ;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAA+B;AACxD;AACA,eAAe,QAAQ;AACvB,gBAAgB,OAAO;AACvB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,gCAAgC;AAChC,gBAAgB,kBAAkB;AAClC;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,wBAAwB,iCAAiC;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,yCAAyC,aAAa;AACtD;AACA;AACA,gBAAgB,OAAO;AACvB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,mBAAmB;AACnB,gBAAgB,gBAAgB;AAChC;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B;AACA,gBAAgB,aAAa;AAC7B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,8BAA8B;AACvD;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA,eAAe,0BAA0B;AACzC,eAAe,iBAAiB;AAChC;AACA,gBAAgB,aAAa;AAC7B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC;AACA,eAAe,0BAA0B;AACzC,eAAe,iBAAiB;AAChC;AACA,gBAAgB,aAAa;AAC7B;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,OAAO;AACvB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,kGAAkG;AAClG;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AA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;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAAgD;;AAEhD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,sDAAsD,0CAA0C,0DAA0D,EAAE;;AAE5J;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA,oBAAoB,gCAAgC;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;;;AAGA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,qBAAqB,sCAAsC;AAC3D;;AAEA;AACA;;AAEA;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,8BAA8B;;AAE9B;;AAEA;;AAEA,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA,YAAY,uBAAuB;AACnC;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d,0CAA0C,uCAAuC,kBAAkB;;AAEnG,2BAA2B,2EAA2E,sCAAsC,mBAAmB,GAAG,EAAE,OAAO,sCAAsC,8HAA8H,GAAG,EAAE,yBAAyB;;AAE7W,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;AAEpK,qDAAqD,0CAA0C,0DAA0D,EAAE;;AAE3J,+CAA+C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE/T,iEAAiE,0EAA0E,kEAAkE,oBAAoB;;AAEjO,qDAAqD,8EAA8E,aAAa,EAAE,yCAAyC;;AAE3L,2CAA2C,uBAAuB,uFAAuF,EAAE,aAAa;;AAExK,iCAAiC,oGAAoG,gDAAgD,GAAG,+BAA+B;;AAEvN,8CAA8C,+DAA+D,2EAA2E,EAAE,yEAAyE,eAAe,sDAAsD,EAAE,EAAE,2DAA2D;;AAEvY,oCAAoC,gFAAgF,iBAAiB,UAAU,GAAG,kCAAkC;;AAEpL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,0CAA0C,uCAAuC,kBAAkB;;AAEnG,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,cAAc,uBAAuB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,cAAc,mBAAmB;AACjC;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;;AAEjB,kBAAkB,gCAAgC;AAClD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;;AAEA,qBAAqB,2BAA2B;AAChD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;;;AAGA;AACA;AACA;;AAEA,mBAAmB,0BAA0B;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB,mBAAmB,oCAAoC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE;;AAEvE;AACA;AACA;AACA;AACA,OAAO,IAAI;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;AACtB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA,8BAA8B;;AAE9B;;AAEA,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d,0CAA0C,uCAAuC,kBAAkB;;AAEnG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA,oCAAoC,6BAA6B;AACjE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,8BAA8B;;AAE9B;;AAEA,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;;AAEA;AACA;AACA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6BAA6B;AACnE;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA,cAAc,uBAAuB;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,yFAAyF;;AAEzF;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,0CAA0C,uCAAuC,kBAAkB;;AAEnG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,8DAA8D;;AAE9D,kEAAkE;;AAElE,0CAA0C,uCAAuC,kBAAkB;;AAEnG,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B,gDAAgD;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,0DAA0D;;AAE1D;;AAEA,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mDAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA;AACA;AACA,GAAG,6EAA6E,qBAAqB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,aAAa,wBAAwB;AACrC;AACA,cAAc,0BAA0B;AACxC;AACA;;AAEA;AACA;AACA,GAAG,4EAA4E,oBAAoB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,cAAc,wBAAwB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc,uBAAuB;AACrC;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,kBAAkB,2BAA2B;AAC7C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,0CAA0C,uCAAuC,kBAAkB;;AAEnG,2CAA2C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE7d;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;;AAEA,kBAAkB,qCAAqC;AACvD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,+BAA+B;;AAE/B,sEAAsE;;AAEtE;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA,uCAAuC;;AAEvC;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AA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CP,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;;AAEA;AACA,kBAAkB,wBAAwB;AAC1C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mBAAmB,qBAAqB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,mBAAmB,qBAAqB;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,8BAA8B;AACjD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,+EAA+E;;AAE/E;;AAEA;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA,SAAS,uBAAuB;;AAEhC;AACA;AACA;AACA,oEAAoE;;AAEpE;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,iCAAiC;AACjC,KAAK;AACL;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,eAAe,+CAA+C;AAC9D,eAAe,+CAA+C;AAC9D,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC;AACA,aAAa,4BAA4B;AACzC,aAAa,4BAA4B;AACzC,MAAM;AACN,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,uBAAuB,+BAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AA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+CAA+C,+DAA+D,2EAA2E,EAAE,yEAAyE,eAAe,sDAAsD,EAAE,EAAE,4DAA4D;;AAEzY,qCAAqC,iFAAiF,iBAAiB,UAAU,GAAG,mCAAmC;;AAEvL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;;AAEA,uCAAuC;AACvC;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B,4BAA4B;AAC5B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,qBAAqB,gCAAgC;AACrD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,kBAAkB,kBAAkB;AACpC;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH,iEAAiE;;AAEjE;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,4DAA4D;;AAE5D;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,yFAAyF;AACzF,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA,+EAA+E;;AAE/E,0DAA0D;;AAE1D;;AAEA;AACA;AACA;AACA,wCAAwC;;AAExC,kBAAkB,2BAA2B;AAC7C;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,mBAAmB;AACnB,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sKAAsK;;AAEtK;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;AAEA,+BAA+B;;AAE/B;;AAEA;;AAEA;;AAEA,2CAA2C,uCAAuC,kBAAkB;;AAEpG,4CAA4C,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,sDAAsD,sHAAsH,4BAA4B,0CAA0C,EAAE,OAAO,wBAAwB,EAAE,EAAE,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9d;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA,YAAY;AACZ;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,SAAS;AACpB,WAAW,iBAAiB;AAC5B;AACA,YAAY,OAAO;AACnB;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,kBAAkB;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA,WAAW,SAAS;AACpB,WAAW,iBAAiB;AAC5B;AACA,YAAY,OAAO;AACnB;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;;;AAGA;;AAEA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;;;AAGA;;AAEA;AACA,mBAAmB,sCAAsC;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qFAAqF;;AAErF,mBAAmB,sCAAsC;AACzD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAE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OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;;ACxXA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,kCAAkC;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yDAAyD;;AAE9E;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,QAAQ;AACrB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,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D;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,uDAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,KAAK,KAAwC,EAAE,EAE7C;;AAEF,QAAQ,sBAAiB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,WAAW,EAAE;AACrD,wCAAwC,WAAW,EAAE;;AAErD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sCAAsC;AACtC,GAAG;AACH;AACA,8DAA8D;AAC9D;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;;;;;;;;;;;;;ACxFA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAC+B;;AAE/B,sBAAsB,yBAAyB,wCAAwC,cAAc,wDAAwD,2BAA2B,oBAAoB,UAAU,gDAAgD,0BAA0B,kDAAkD,YAAY,cAAc,+BAA+B,uBAAuB,aAAa,sDAAsD,kBAAkB,OAAO,iCAAiC,yBAAyB,6CAA6C,0BAA0B,mCAAmC,kCAAkC,YAAY,aAAa,+BAA+B,uBAA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A;AACA;AACA,kCAAkC;AAClC,8BAA8B;AAC9B,gCAAgC;AAChC,8BAA8B;AAC9B,gCAAgC;AAChC,oCAAoC;AACpC;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD;AACjD,oCAAoC;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,oDAAoD;AACpD,0DAA0D;AAC1D;AACA,oBAAoB;AACpB;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA,GAAG,6BAA6B;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF;AACnF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB;;AAElB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wDAAwD;;AAExD;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,wCAAwC;;;AAGxC;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;;AAGA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,4BAA4B,8CAA8C;AAC1E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL,kCAAkC,iDAAM;AACxC;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,2CAA2C;AAC3C;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA,yBAAyB,yBAAyB;AAClD;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEe,oEAAK,EAAC;AACrB;;;;;;;;;;;;AC34DA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACjCA,UAAU,mBAAO,CAAC,yDAAW;AAC7B,kBAAkB,mBAAO,CAAC,iEAAmB;;AAE7C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AA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","file":"index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".fc-whiteboard-logo {\\n display: inline-block;\\n margin: 0px;\\n padding: 0px;\\n fill: #333333;\\n}\\n.fc-whiteboard-logo a {\\n display: grid;\\n -ms-flex-align: center;\\n align-items: center;\\n justify-items: center;\\n padding: 3px;\\n width: 20px;\\n height: 20px;\\n}\\n.fc-whiteboard-logo a:hover {\\n fill: #ff8080;\\n}\\n.fc-whiteboard-text-editor {\\n position: fixed;\\n z-index: 20000;\\n left: 0px;\\n top: 0px;\\n width: 100vw;\\n height: 100vh;\\n background-color: rgba(0, 0, 0, 0.9);\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-direction: column;\\n flex-direction: column;\\n -ms-flex-align: center;\\n align-items: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n.fc-whiteboard-text-editor textarea {\\n width: 50%;\\n min-width: 50px;\\n max-width: 500px;\\n height: 50%;\\n min-height: 50px;\\n max-height: 500px;\\n}\\n.fc-whiteboard-text-editor .fc-whiteboard-text-editor-button-bar {\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-direction: row;\\n flex-direction: row;\\n -ms-flex-pack: end;\\n justify-content: flex-end;\\n width: 50%;\\n min-width: 50px;\\n max-width: 500px;\\n padding-top: 10px;\\n}\\n.fc-whiteboard-text-editor .fc-whiteboard-text-editor-button {\\n display: grid;\\n -ms-flex-align: center;\\n align-items: center;\\n padding: 0px;\\n margin-left: 15px;\\n width: 20px;\\n height: 20px;\\n cursor: pointer;\\n fill: #888888;\\n}\\n.fc-whiteboard-text-editor .fc-whiteboard-text-editor-button:hover {\\n fill: #ff8080;\\n}\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".fc-whiteboard-toolbar {\\n height: 36px;\\n background: #ffffff;\\n -webkit-box-shadow: 0px 2px 9px 0px rgba(194, 185, 187, 0.29);\\n box-shadow: 0px 2px 9px 0px rgba(194, 185, 187, 0.29);\\n border-radius: 13px;\\n opacity: 0.9;\\n border: 1px solid #e6ecf7;\\n padding: 0 8px;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-align: center;\\n align-items: center;\\n}\\n.fc-whiteboard-toolbar-button,\\n.fc-whiteboard-toolbar-logo a {\\n display: inline-block;\\n margin: 2px;\\n padding: 3px;\\n cursor: pointer;\\n width: 20px;\\n height: 20px;\\n border-radius: 2px;\\n border-bottom: transparent solid 1px;\\n border-right: transparent solid 1px;\\n fill: #333333;\\n display: grid;\\n -ms-flex-align: center;\\n align-items: center;\\n justify-items: center;\\n}\\n.fc-whiteboard-toolbar-separator {\\n width: 0px;\\n height: 20px;\\n margin: 5px 5px;\\n border: 1px solid #cad3df;\\n}\\n.fc-whiteboard-toolbar-button:hover,\\n.fc-whiteboard-toolbar-logo a:hover {\\n background-color: #eeeeee;\\n background: -webkit-radial-gradient(#eeeeee, #cccccc);\\n background: -o-radial-gradient(#eeeeee, #cccccc);\\n background: radial-gradient(#eeeeee, #cccccc);\\n fill: #ff8080;\\n}\\n.fc-whiteboard-toolbar-button svg {\\n height: 16px;\\n}\\n.fc-whiteboard-indicator-container {\\n font-size: 13px;\\n line-height: 27px;\\n height: 27px;\\n width: 40px;\\n display: -ms-flexbox;\\n display: flex;\\n -ms-flex-pack: center;\\n justify-content: center;\\n letter-spacing: 2;\\n}\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".fcw-board {\\n position: relative;\\n}\\n.fcw-board-imgs,\\n.fcw-board-pages,\\n.fcw-board .fcw-page {\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.fcw-board-imgs > div,\\n.fcw-board-imgs > div > div {\\n height: 100%;\\n}\\n.fcw-board-img {\\n width: 100%;\\n height: 100%;\\n}\\n.fcw-board-img-wrapper {\\n background-image: url(https://i.postimg.cc/RZwf0MRw/image.png);\\n background-size: contain;\\n background-position: center;\\n height: 100%;\\n width: 100%;\\n background-repeat: no-repeat;\\n}\\n.fcw-board-flip-arrow {\\n height: 20px;\\n width: 20px;\\n cursor: pointer;\\n}\\n.fcw-board-controller {\\n position: absolute;\\n display: -ms-flexbox;\\n display: flex;\\n width: 50px;\\n height: 30px;\\n -ms-flex-pack: justify;\\n justify-content: space-between;\\n -ms-flex-align: center;\\n align-items: center;\\n top: -30px;\\n background-color: #cccccc;\\n padding: 0px 5px;\\n margin: 0px;\\n border-top-left-radius: 10px;\\n border-top-right-radius: 10px;\\n}\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \".fcw-page img {\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\"]);\n\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return '@media ' + item[2] + '{' + content + '}';\n } else {\n return content;\n }\n }).join('');\n }; // import a list of modules into the list\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (i = 0; i < modules.length; i++) {\n var item = modules[i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || '';\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n return '/*# ' + data + ' */';\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)(\"object\"==typeof exports?exports:t)[r]=n[r]}}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),e.KEY_ESC=\"ESC\",e.KEY_ALL=\"*\",e.normalizeModifiersMap={ctrl:\"Ctrl\",control:\"Ctrl\",alt:\"Alt\",shift:\"Shift\",command:\"Command\",meta:\"Command\"}},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0}),function(t){for(var n in t)e.hasOwnProperty(n)||(e[n]=t[n])}(n(0));var r=n(2);e.HotkeysListener=r.default},function(t,e,n){\"use strict\";var r,o=this&&this.__extends||(r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)});Object.defineProperty(e,\"__esModule\",{value:!0});var i=n(3),a=n(0),s=n(4),c=function(){function t(t,e){var n=this;void 0===t&&(t=document.body),void 0===e&&(e=i),this.listeners={},this._notify=function(t,e,r){var o=n.listeners[a.KEY_ALL];o&&o.length>0&&o.forEach(function(t){!1===t(e,r)&&s.preventAndStopEvent(e)});var i=n.listeners[t];i&&i.length>0&&i.forEach(function(t){!1===t(e,r)&&s.preventAndStopEvent(e)})};var r=this._notify,c=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype.handleKey=function(t,e,n){var o=s.normalizeHotkeys(t,e);n&&\"keyup\"!==n.type&&r(o,n,{char:t,modifiers:e,hotkey:o})},e}(e);this.trapObj=new c(t)}return t.prototype.on=function(t,e){var n=this;if(\"string\"==typeof t){var r=t,o=this.listeners[r]||[];o.push(e),this.listeners[r]=o}else{if(!Array.isArray(t))throw new Error(\"first param of on() must be a string or an array of string\");t.forEach(function(t){n.on(t,e)})}},t.prototype.off=function(t,e){var n=this;if(\"string\"==typeof t){var r=t,o=this.listeners[r]||[],i=o.indexOf(e);i>=0&&o.splice(i,1),this.listeners[r]=o}else{if(!Array.isArray(t))throw new Error(\"first param of off() must be a string or an array of string\");t.forEach(function(t){n.off(t,e)})}},t.prototype.reset=function(){this.listeners={},this.trapObj.reset()},t}();e.default=c},function(t,e,n){var r;!function(o,i,a){if(o){for(var s,c={8:\"backspace\",9:\"tab\",13:\"enter\",16:\"shift\",17:\"ctrl\",18:\"alt\",20:\"capslock\",27:\"esc\",32:\"space\",33:\"pageup\",34:\"pagedown\",35:\"end\",36:\"home\",37:\"left\",38:\"up\",39:\"right\",40:\"down\",45:\"ins\",46:\"del\",91:\"meta\",93:\"meta\",224:\"meta\"},u={106:\"*\",107:\"+\",109:\"-\",110:\".\",111:\"/\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"},f={\"~\":\"`\",\"!\":\"1\",\"@\":\"2\",\"#\":\"3\",$:\"4\",\"%\":\"5\",\"^\":\"6\",\"&\":\"7\",\"*\":\"8\",\"(\":\"9\",\")\":\"0\",_:\"-\",\"+\":\"=\",\":\":\";\",'\"':\"'\",\"<\":\",\",\">\":\".\",\"?\":\"/\",\"|\":\"\\\\\"},l={option:\"alt\",command:\"meta\",return:\"enter\",escape:\"esc\",plus:\"+\",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?\"meta\":\"ctrl\"},p=1;p<20;++p)c[111+p]=\"f\"+p;for(p=0;p<=9;++p)c[p+96]=p.toString();b.prototype.bind=function(t,e,n){return t=t instanceof Array?t:[t],this._bindMultiple.call(this,t,e,n),this},b.prototype.unbind=function(t,e){return this.bind.call(this,t,function(){},e)},b.prototype.trigger=function(t,e){return this._directMap[t+\":\"+e]&&this._directMap[t+\":\"+e]({},t),this},b.prototype.reset=function(){return this._callbacks={},this._directMap={},this},b.prototype.stopCallback=function(t,e){if((\" \"+e.className+\" \").indexOf(\" mousetrap \")>-1)return!1;if(function t(e,n){return null!==e&&e!==i&&(e===n||t(e.parentNode,n))}(e,this.target))return!1;if(\"composedPath\"in t&&\"function\"==typeof t.composedPath){var n=t.composedPath()[0];n!==t.target&&(e=n)}return\"INPUT\"==e.tagName||\"SELECT\"==e.tagName||\"TEXTAREA\"==e.tagName||e.isContentEditable},b.prototype.handleKey=function(){return this._handleKey.apply(this,arguments)},b.addKeycodes=function(t){for(var e in t)t.hasOwnProperty(e)&&(c[e]=t[e]);s=null},b.init=function(){var t=b(i);for(var e in t)\"_\"!==e.charAt(0)&&(b[e]=function(e){return function(){return t[e].apply(t,arguments)}}(e))},b.init(),o.Mousetrap=b,t.exports&&(t.exports=b),void 0===(r=function(){return b}.call(e,n,e,t))||(t.exports=r)}function h(t,e,n){t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent(\"on\"+e,n)}function d(t){if(\"keypress\"==t.type){var e=String.fromCharCode(t.which);return t.shiftKey||(e=e.toLowerCase()),e}return c[t.which]?c[t.which]:u[t.which]?u[t.which]:String.fromCharCode(t.which).toLowerCase()}function y(t){return\"shift\"==t||\"ctrl\"==t||\"alt\"==t||\"meta\"==t}function v(t,e,n){return n||(n=function(){if(!s)for(var t in s={},c)t>95&&t<112||c.hasOwnProperty(t)&&(s[c[t]]=t);return s}()[t]?\"keydown\":\"keypress\"),\"keypress\"==n&&e.length&&(n=\"keydown\"),n}function m(t,e){var n,r,o,i=[];for(n=function(t){return\"+\"===t?[\"+\"]:(t=t.replace(/\\+{2}/g,\"+plus\")).split(\"+\")}(t),o=0;o1?p(t,s,n,r):(a=m(t,r),e._callbacks[a.key]=e._callbacks[a.key]||[],u(a.key,a.modifiers,{type:a.action},o,t,i),e._callbacks[a.key][o?\"unshift\":\"push\"]({callback:n,modifiers:a.modifiers,action:a.action,seq:o,level:i,combo:t}))}e._handleKey=function(t,e,n){var r,o=u(t,e,n),i={},l=0,p=!1;for(r=0;r\n * Released under the MIT License.\n * https://raw.github.com/taye/interact.js/master/LICENSE\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.interact = f()}})(function(){var define,module,exports;\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\nvar _$scope_24 = createModuleFactory(function (module, exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* common-shake removed: exports.createScope = */ void createScope;\n/* common-shake removed: exports.initScope = */ void initScope;\nexports.Scope = exports.ActionName = void 0;\n\nvar utils = _interopRequireWildcard(_$utils_55);\n\nvar _domObjects = _interopRequireDefault(_$domObjects_49);\n\nvar _defaultOptions = _interopRequireDefault(_$defaultOptions_20);\n\nvar _Eventable = _interopRequireDefault(_$Eventable_14);\n\nvar _Interactable = _interopRequireDefault(_$Interactable_16);\n\nvar _InteractableSet = _interopRequireDefault(_$InteractableSet_17);\n\nvar _InteractEvent = _interopRequireDefault(_$InteractEvent_15);\n\nvar _interactions = _interopRequireDefault(_$interactions_23({}));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar win = utils.win,\n browser = utils.browser,\n raf = utils.raf,\n Signals = utils.Signals,\n events = utils.events;\nvar ActionName;\nexports.ActionName = ActionName;\n\n(function (ActionName) {})(ActionName || (exports.ActionName = ActionName = {}));\n\nfunction createScope() {\n return new Scope();\n}\n\nvar Scope =\n/*#__PURE__*/\nfunction () {\n function Scope() {\n var _this = this;\n\n _classCallCheck(this, Scope);\n\n this.id = \"__interact_scope_\".concat(Math.floor(Math.random() * 100));\n this.signals = new Signals();\n this.browser = browser;\n this.events = events;\n this.utils = utils;\n this.defaults = utils.clone(_defaultOptions[\"default\"]);\n this.Eventable = _Eventable[\"default\"];\n this.actions = {\n names: [],\n methodDict: {},\n eventTypes: []\n };\n this.InteractEvent = _InteractEvent[\"default\"];\n this.interactables = new _InteractableSet[\"default\"](this); // all documents being listened to\n\n this.documents = [];\n this._plugins = [];\n this._pluginMap = {};\n\n this.onWindowUnload = function (event) {\n return _this.removeDocument(event.target);\n };\n\n var scope = this;\n\n this.Interactable =\n /*#__PURE__*/\n function (_InteractableBase) {\n _inherits(Interactable, _InteractableBase);\n\n function Interactable() {\n _classCallCheck(this, Interactable);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Interactable).apply(this, arguments));\n }\n\n _createClass(Interactable, [{\n key: \"set\",\n value: function set(options) {\n _get(_getPrototypeOf(Interactable.prototype), \"set\", this).call(this, options);\n\n scope.interactables.signals.fire('set', {\n options: options,\n interactable: this\n });\n return this;\n }\n }, {\n key: \"unset\",\n value: function unset() {\n _get(_getPrototypeOf(Interactable.prototype), \"unset\", this).call(this);\n\n for (var i = scope.interactions.list.length - 1; i >= 0; i--) {\n var interaction = scope.interactions.list[i];\n\n if (interaction.interactable === this) {\n interaction.stop();\n scope.interactions.signals.fire('destroy', {\n interaction: interaction\n });\n interaction.destroy();\n\n if (scope.interactions.list.length > 2) {\n scope.interactions.list.splice(i, 1);\n }\n }\n }\n\n scope.interactables.signals.fire('unset', {\n interactable: this\n });\n }\n }, {\n key: \"_defaults\",\n get: function get() {\n return scope.defaults;\n }\n }]);\n\n return Interactable;\n }(_Interactable[\"default\"]);\n }\n\n _createClass(Scope, [{\n key: \"init\",\n value: function init(window) {\n return initScope(this, window);\n }\n }, {\n key: \"pluginIsInstalled\",\n value: function pluginIsInstalled(plugin) {\n return this._pluginMap[plugin.id] || this._plugins.indexOf(plugin) !== -1;\n }\n }, {\n key: \"usePlugin\",\n value: function usePlugin(plugin, options) {\n if (this.pluginIsInstalled(plugin)) {\n return this;\n }\n\n if (plugin.id) {\n this._pluginMap[plugin.id] = plugin;\n }\n\n plugin.install(this, options);\n\n this._plugins.push(plugin);\n\n return this;\n }\n }, {\n key: \"addDocument\",\n value: function addDocument(doc, options) {\n // do nothing if document is already known\n if (this.getDocIndex(doc) !== -1) {\n return false;\n }\n\n var window = win.getWindow(doc);\n options = options ? utils.extend({}, options) : {};\n this.documents.push({\n doc: doc,\n options: options\n });\n events.documents.push(doc); // don't add an unload event for the main document\n // so that the page may be cached in browser history\n\n if (doc !== this.document) {\n events.add(window, 'unload', this.onWindowUnload);\n }\n\n this.signals.fire('add-document', {\n doc: doc,\n window: window,\n scope: this,\n options: options\n });\n }\n }, {\n key: \"removeDocument\",\n value: function removeDocument(doc) {\n var index = this.getDocIndex(doc);\n var window = win.getWindow(doc);\n var options = this.documents[index].options;\n events.remove(window, 'unload', this.onWindowUnload);\n this.documents.splice(index, 1);\n events.documents.splice(index, 1);\n this.signals.fire('remove-document', {\n doc: doc,\n window: window,\n scope: this,\n options: options\n });\n }\n }, {\n key: \"getDocIndex\",\n value: function getDocIndex(doc) {\n for (var i = 0; i < this.documents.length; i++) {\n if (this.documents[i].doc === doc) {\n return i;\n }\n }\n\n return -1;\n }\n }, {\n key: \"getDocOptions\",\n value: function getDocOptions(doc) {\n var docIndex = this.getDocIndex(doc);\n return docIndex === -1 ? null : this.documents[docIndex].options;\n }\n }, {\n key: \"now\",\n value: function now() {\n return (this.window.Date || Date).now();\n }\n }]);\n\n return Scope;\n}();\n\nexports.Scope = Scope;\n\nfunction initScope(scope, window) {\n win.init(window);\n\n _domObjects[\"default\"].init(window);\n\n browser.init(window);\n raf.init(window);\n events.init(window);\n scope.usePlugin(_interactions[\"default\"]);\n scope.document = window.document;\n scope.window = window;\n return scope;\n}\n\n});\nvar _$interactions_23 = createModuleFactory(function (module, exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _browser = _interopRequireDefault(_$browser_47);\n\nvar _domObjects = _interopRequireDefault(_$domObjects_49);\n\n/* removed: var _$domUtils_50 = require(\"@interactjs/utils/domUtils\"); */;\n\nvar _events = _interopRequireDefault(_$events_51);\n\nvar _pointerUtils = _interopRequireDefault(_$pointerUtils_60);\n\nvar _Signals = _interopRequireDefault(_$Signals_45);\n\nvar _Interaction = _interopRequireDefault(_$Interaction_18({}));\n\nvar _interactionFinder = _interopRequireDefault(_$interactionFinder_22);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar methodNames = ['pointerDown', 'pointerMove', 'pointerUp', 'updatePointer', 'removePointer', 'windowBlur'];\n\nfunction install(scope) {\n var signals = new _Signals[\"default\"]();\n var listeners = {};\n\n for (var _i = 0; _i < methodNames.length; _i++) {\n var method = methodNames[_i];\n listeners[method] = doOnInteractions(method, scope);\n }\n\n var pEventTypes = _browser[\"default\"].pEventTypes;\n var eventMap;\n\n if (_domObjects[\"default\"].PointerEvent) {\n eventMap = [{\n type: pEventTypes.down,\n listener: releasePointersOnRemovedEls\n }, {\n type: pEventTypes.down,\n listener: listeners.pointerDown\n }, {\n type: pEventTypes.move,\n listener: listeners.pointerMove\n }, {\n type: pEventTypes.up,\n listener: listeners.pointerUp\n }, {\n type: pEventTypes.cancel,\n listener: listeners.pointerUp\n }];\n } else {\n eventMap = [{\n type: 'mousedown',\n listener: listeners.pointerDown\n }, {\n type: 'mousemove',\n listener: listeners.pointerMove\n }, {\n type: 'mouseup',\n listener: listeners.pointerUp\n }, {\n type: 'touchstart',\n listener: releasePointersOnRemovedEls\n }, {\n type: 'touchstart',\n listener: listeners.pointerDown\n }, {\n type: 'touchmove',\n listener: listeners.pointerMove\n }, {\n type: 'touchend',\n listener: listeners.pointerUp\n }, {\n type: 'touchcancel',\n listener: listeners.pointerUp\n }];\n }\n\n eventMap.push({\n type: 'blur',\n listener: function listener(event) {\n for (var _i2 = 0; _i2 < scope.interactions.list.length; _i2++) {\n var _ref;\n\n _ref = scope.interactions.list[_i2];\n var interaction = _ref;\n interaction.documentBlur(event);\n }\n }\n });\n scope.signals.on('add-document', onDocSignal);\n scope.signals.on('remove-document', onDocSignal); // for ignoring browser's simulated mouse events\n\n scope.prevTouchTime = 0;\n\n scope.Interaction =\n /*#__PURE__*/\n function (_InteractionBase) {\n _inherits(Interaction, _InteractionBase);\n\n function Interaction() {\n _classCallCheck(this, Interaction);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Interaction).apply(this, arguments));\n }\n\n _createClass(Interaction, [{\n key: \"_now\",\n value: function _now() {\n return scope.now();\n }\n }, {\n key: \"pointerMoveTolerance\",\n get: function get() {\n return scope.interactions.pointerMoveTolerance;\n },\n set: function set(value) {\n scope.interactions.pointerMoveTolerance = value;\n }\n }]);\n\n return Interaction;\n }(_Interaction[\"default\"]);\n\n scope.interactions = {\n signals: signals,\n // all active and idle interactions\n list: [],\n \"new\": function _new(options) {\n options.signals = signals;\n var interaction = new scope.Interaction(options);\n scope.interactions.list.push(interaction);\n return interaction;\n },\n listeners: listeners,\n eventMap: eventMap,\n pointerMoveTolerance: 1\n };\n\n function releasePointersOnRemovedEls() {\n // for all inactive touch interactions with pointers down\n for (var _i3 = 0; _i3 < scope.interactions.list.length; _i3++) {\n var _ref2;\n\n _ref2 = scope.interactions.list[_i3];\n var interaction = _ref2;\n\n if (!interaction.pointerIsDown || interaction.pointerType !== 'touch' || interaction._interacting) {\n continue;\n } // if a pointer is down on an element that is no longer in the DOM tree\n\n\n var _loop = function _loop() {\n _ref3 = interaction.pointers[_i4];\n var pointer = _ref3;\n\n if (!scope.documents.some(function (_ref4) {\n var doc = _ref4.doc;\n return (0, _$domUtils_50.nodeContains)(doc, pointer.downTarget);\n })) {\n // remove the pointer from the interaction\n interaction.removePointer(pointer.pointer, pointer.event);\n }\n };\n\n for (var _i4 = 0; _i4 < interaction.pointers.length; _i4++) {\n var _ref3;\n\n _loop();\n }\n }\n }\n}\n\nfunction doOnInteractions(method, scope) {\n return function (event) {\n var interactions = scope.interactions.list;\n\n var pointerType = _pointerUtils[\"default\"].getPointerType(event);\n\n var _pointerUtils$getEven = _pointerUtils[\"default\"].getEventTargets(event),\n _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 2),\n eventTarget = _pointerUtils$getEven2[0],\n curEventTarget = _pointerUtils$getEven2[1];\n\n var matches = []; // [ [pointer, interaction], ...]\n\n if (/^touch/.test(event.type)) {\n scope.prevTouchTime = scope.now();\n\n for (var _i5 = 0; _i5 < event.changedTouches.length; _i5++) {\n var _ref5;\n\n _ref5 = event.changedTouches[_i5];\n var changedTouch = _ref5;\n var pointer = changedTouch;\n\n var pointerId = _pointerUtils[\"default\"].getPointerId(pointer);\n\n var searchDetails = {\n pointer: pointer,\n pointerId: pointerId,\n pointerType: pointerType,\n eventType: event.type,\n eventTarget: eventTarget,\n curEventTarget: curEventTarget,\n scope: scope\n };\n var interaction = getInteraction(searchDetails);\n matches.push([searchDetails.pointer, searchDetails.eventTarget, searchDetails.curEventTarget, interaction]);\n }\n } else {\n var invalidPointer = false;\n\n if (!_browser[\"default\"].supportsPointerEvent && /mouse/.test(event.type)) {\n // ignore mouse events while touch interactions are active\n for (var i = 0; i < interactions.length && !invalidPointer; i++) {\n invalidPointer = interactions[i].pointerType !== 'mouse' && interactions[i].pointerIsDown;\n } // try to ignore mouse events that are simulated by the browser\n // after a touch event\n\n\n invalidPointer = invalidPointer || scope.now() - scope.prevTouchTime < 500 || // on iOS and Firefox Mobile, MouseEvent.timeStamp is zero if simulated\n event.timeStamp === 0;\n }\n\n if (!invalidPointer) {\n var _searchDetails = {\n pointer: event,\n pointerId: _pointerUtils[\"default\"].getPointerId(event),\n pointerType: pointerType,\n eventType: event.type,\n curEventTarget: curEventTarget,\n eventTarget: eventTarget,\n scope: scope\n };\n\n var _interaction = getInteraction(_searchDetails);\n\n matches.push([_searchDetails.pointer, _searchDetails.eventTarget, _searchDetails.curEventTarget, _interaction]);\n }\n } // eslint-disable-next-line no-shadow\n\n\n for (var _i6 = 0; _i6 < matches.length; _i6++) {\n var _matches$_i = _slicedToArray(matches[_i6], 4),\n _pointer = _matches$_i[0],\n _eventTarget = _matches$_i[1],\n _curEventTarget = _matches$_i[2],\n _interaction2 = _matches$_i[3];\n\n _interaction2[method](_pointer, event, _eventTarget, _curEventTarget);\n }\n };\n}\n\nfunction getInteraction(searchDetails) {\n var pointerType = searchDetails.pointerType,\n scope = searchDetails.scope;\n\n var foundInteraction = _interactionFinder[\"default\"].search(searchDetails);\n\n var signalArg = {\n interaction: foundInteraction,\n searchDetails: searchDetails\n };\n scope.interactions.signals.fire('find', signalArg);\n return signalArg.interaction || scope.interactions[\"new\"]({\n pointerType: pointerType\n });\n}\n\nfunction onDocSignal(_ref6, signalName) {\n var doc = _ref6.doc,\n scope = _ref6.scope,\n options = _ref6.options;\n var eventMap = scope.interactions.eventMap;\n var eventMethod = signalName.indexOf('add') === 0 ? _events[\"default\"].add : _events[\"default\"].remove;\n\n if (scope.browser.isIOS && !options.events) {\n options.events = {\n passive: false\n };\n } // delegate event listener\n\n\n for (var eventType in _events[\"default\"].delegatedEvents) {\n eventMethod(doc, eventType, _events[\"default\"].delegateListener);\n eventMethod(doc, eventType, _events[\"default\"].delegateUseCapture, true);\n }\n\n var eventOptions = options && options.events;\n\n for (var _i7 = 0; _i7 < eventMap.length; _i7++) {\n var _ref7;\n\n _ref7 = eventMap[_i7];\n var _ref8 = _ref7,\n type = _ref8.type,\n listener = _ref8.listener;\n eventMethod(doc, type, listener, eventOptions);\n }\n}\n\nvar _default = {\n id: 'core/interactions',\n install: install,\n onDocSignal: onDocSignal,\n doOnInteractions: doOnInteractions,\n methodNames: methodNames\n};\nexports[\"default\"] = _default;\n\n});\nvar _$Interaction_18 = createModuleFactory(function (module, exports) {\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"PointerInfo\", {\n enumerable: true,\n get: function get() {\n return _PointerInfo[\"default\"];\n }\n});\nexports[\"default\"] = exports.Interaction = exports._ProxyMethods = exports._ProxyValues = void 0;\n\nvar utils = _interopRequireWildcard(_$utils_55);\n\nvar _InteractEvent = _interopRequireWildcard(_$InteractEvent_15);\n\nvar _PointerInfo = _interopRequireDefault(_$PointerInfo_19);\n\nvar _scope = _$scope_24({});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar _ProxyValues;\n\nexports._ProxyValues = _ProxyValues;\n\n(function (_ProxyValues) {\n _ProxyValues[\"interactable\"] = \"\";\n _ProxyValues[\"element\"] = \"\";\n _ProxyValues[\"prepared\"] = \"\";\n _ProxyValues[\"pointerIsDown\"] = \"\";\n _ProxyValues[\"pointerWasMoved\"] = \"\";\n _ProxyValues[\"_proxy\"] = \"\";\n})(_ProxyValues || (exports._ProxyValues = _ProxyValues = {}));\n\nvar _ProxyMethods;\n\nexports._ProxyMethods = _ProxyMethods;\n\n(function (_ProxyMethods) {\n _ProxyMethods[\"start\"] = \"\";\n _ProxyMethods[\"move\"] = \"\";\n _ProxyMethods[\"end\"] = \"\";\n _ProxyMethods[\"stop\"] = \"\";\n _ProxyMethods[\"interacting\"] = \"\";\n})(_ProxyMethods || (exports._ProxyMethods = _ProxyMethods = {}));\n\nvar Interaction =\n/*#__PURE__*/\nfunction () {\n /** */\n function Interaction(_ref) {\n var _this = this;\n\n var pointerType = _ref.pointerType,\n signals = _ref.signals;\n\n _classCallCheck(this, Interaction);\n\n // current interactable being interacted with\n this.interactable = null; // the target element of the interactable\n\n this.element = null; // action that's ready to be fired on next move event\n\n this.prepared = {\n name: null,\n axis: null,\n edges: null\n }; // keep track of added pointers\n\n this.pointers = []; // pointerdown/mousedown/touchstart event\n\n this.downEvent = null;\n this.downPointer = {};\n this._latestPointer = {\n pointer: null,\n event: null,\n eventTarget: null\n }; // previous action event\n\n this.prevEvent = null;\n this.pointerIsDown = false;\n this.pointerWasMoved = false;\n this._interacting = false;\n this._ending = false;\n this._proxy = null;\n this.simulation = null;\n /**\n * @alias Interaction.prototype.move\n */\n\n this.doMove = utils.warnOnce(function (signalArg) {\n this.move(signalArg);\n }, 'The interaction.doMove() method has been renamed to interaction.move()');\n this.coords = {\n // Starting InteractEvent pointer coordinates\n start: utils.pointer.newCoords(),\n // Previous native pointer move event coordinates\n prev: utils.pointer.newCoords(),\n // current native pointer move event coordinates\n cur: utils.pointer.newCoords(),\n // Change in coordinates and time of the pointer\n delta: utils.pointer.newCoords(),\n // pointer velocity\n velocity: utils.pointer.newCoords()\n };\n this._signals = signals;\n this.pointerType = pointerType;\n var that = this;\n this._proxy = {};\n\n var _loop = function _loop(key) {\n Object.defineProperty(_this._proxy, key, {\n get: function get() {\n return that[key];\n }\n });\n };\n\n for (var key in _ProxyValues) {\n _loop(key);\n }\n\n var _loop2 = function _loop2(key) {\n Object.defineProperty(_this._proxy, key, {\n value: function value() {\n return that[key].apply(that, arguments);\n }\n });\n };\n\n for (var key in _ProxyMethods) {\n _loop2(key);\n }\n\n this._signals.fire('new', {\n interaction: this\n });\n }\n\n _createClass(Interaction, [{\n key: \"pointerDown\",\n value: function pointerDown(pointer, event, eventTarget) {\n var pointerIndex = this.updatePointer(pointer, event, eventTarget, true);\n\n this._signals.fire('down', {\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n pointerIndex: pointerIndex,\n interaction: this\n });\n }\n /**\n * ```js\n * interact(target)\n * .draggable({\n * // disable the default drag start by down->move\n * manualStart: true\n * })\n * // start dragging after the user holds the pointer down\n * .on('hold', function (event) {\n * var interaction = event.interaction\n *\n * if (!interaction.interacting()) {\n * interaction.start({ name: 'drag' },\n * event.interactable,\n * event.currentTarget)\n * }\n * })\n * ```\n *\n * Start an action with the given Interactable and Element as tartgets. The\n * action must be enabled for the target Interactable and an appropriate\n * number of pointers must be held down - 1 for drag/resize, 2 for gesture.\n *\n * Use it with `interactable.able({ manualStart: false })` to always\n * [start actions manually](https://github.com/taye/interact.js/issues/114)\n *\n * @param {object} action The action to be performed - drag, resize, etc.\n * @param {Interactable} target The Interactable to target\n * @param {Element} element The DOM Element to target\n * @return {object} interact\n */\n\n }, {\n key: \"start\",\n value: function start(action, interactable, element) {\n if (this.interacting() || !this.pointerIsDown || this.pointers.length < (action.name === _scope.ActionName.Gesture ? 2 : 1) || !interactable.options[action.name].enabled) {\n return false;\n }\n\n utils.copyAction(this.prepared, action);\n this.interactable = interactable;\n this.element = element;\n this.rect = interactable.getRect(element);\n this.edges = this.prepared.edges;\n this._interacting = this._doPhase({\n interaction: this,\n event: this.downEvent,\n phase: _InteractEvent.EventPhase.Start\n });\n return this._interacting;\n }\n }, {\n key: \"pointerMove\",\n value: function pointerMove(pointer, event, eventTarget) {\n if (!this.simulation && !(this.modifiers && this.modifiers.endPrevented)) {\n this.updatePointer(pointer, event, eventTarget, false);\n utils.pointer.setCoords(this.coords.cur, this.pointers.map(function (p) {\n return p.pointer;\n }), this._now());\n }\n\n var duplicateMove = this.coords.cur.page.x === this.coords.prev.page.x && this.coords.cur.page.y === this.coords.prev.page.y && this.coords.cur.client.x === this.coords.prev.client.x && this.coords.cur.client.y === this.coords.prev.client.y;\n var dx;\n var dy; // register movement greater than pointerMoveTolerance\n\n if (this.pointerIsDown && !this.pointerWasMoved) {\n dx = this.coords.cur.client.x - this.coords.start.client.x;\n dy = this.coords.cur.client.y - this.coords.start.client.y;\n this.pointerWasMoved = utils.hypot(dx, dy) > this.pointerMoveTolerance;\n }\n\n var signalArg = {\n pointer: pointer,\n pointerIndex: this.getPointerIndex(pointer),\n event: event,\n eventTarget: eventTarget,\n dx: dx,\n dy: dy,\n duplicate: duplicateMove,\n interaction: this\n };\n\n if (!duplicateMove) {\n // set pointer coordinate, time changes and velocity\n utils.pointer.setCoordDeltas(this.coords.delta, this.coords.prev, this.coords.cur);\n utils.pointer.setCoordVelocity(this.coords.velocity, this.coords.delta);\n }\n\n this._signals.fire('move', signalArg);\n\n if (!duplicateMove) {\n // if interacting, fire an 'action-move' signal etc\n if (this.interacting()) {\n this.move(signalArg);\n }\n\n if (this.pointerWasMoved) {\n utils.pointer.copyCoords(this.coords.prev, this.coords.cur);\n }\n }\n }\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('dragmove', function (event) {\n * if (someCondition) {\n * // change the snap settings\n * event.interactable.draggable({ snap: { targets: [] }})\n * // fire another move event with re-calculated snap\n * event.interaction.move()\n * }\n * })\n * ```\n *\n * Force a move of the current action at the same coordinates. Useful if\n * snap/restrict has been changed and you want a movement with the new\n * settings.\n */\n\n }, {\n key: \"move\",\n value: function move(signalArg) {\n signalArg = utils.extend({\n pointer: this._latestPointer.pointer,\n event: this._latestPointer.event,\n eventTarget: this._latestPointer.eventTarget,\n interaction: this\n }, signalArg || {});\n signalArg.phase = _InteractEvent.EventPhase.Move;\n\n this._doPhase(signalArg);\n } // End interact move events and stop auto-scroll unless simulation is running\n\n }, {\n key: \"pointerUp\",\n value: function pointerUp(pointer, event, eventTarget, curEventTarget) {\n var pointerIndex = this.getPointerIndex(pointer);\n\n if (pointerIndex === -1) {\n pointerIndex = this.updatePointer(pointer, event, eventTarget, false);\n }\n\n this._signals.fire(/cancel$/i.test(event.type) ? 'cancel' : 'up', {\n pointer: pointer,\n pointerIndex: pointerIndex,\n event: event,\n eventTarget: eventTarget,\n curEventTarget: curEventTarget,\n interaction: this\n });\n\n if (!this.simulation) {\n this.end(event);\n }\n\n this.pointerIsDown = false;\n this.removePointer(pointer, event);\n }\n }, {\n key: \"documentBlur\",\n value: function documentBlur(event) {\n this.end(event);\n\n this._signals.fire('blur', {\n event: event,\n interaction: this\n });\n }\n /**\n * ```js\n * interact(target)\n * .draggable(true)\n * .on('move', function (event) {\n * if (event.pageX > 1000) {\n * // end the current action\n * event.interaction.end()\n * // stop all further listeners from being called\n * event.stopImmediatePropagation()\n * }\n * })\n * ```\n *\n * @param {PointerEvent} [event]\n */\n\n }, {\n key: \"end\",\n value: function end(event) {\n this._ending = true;\n event = event || this._latestPointer.event;\n var endPhaseResult;\n\n if (this.interacting()) {\n endPhaseResult = this._doPhase({\n event: event,\n interaction: this,\n phase: _InteractEvent.EventPhase.End\n });\n }\n\n this._ending = false;\n\n if (endPhaseResult === true) {\n this.stop();\n }\n }\n }, {\n key: \"currentAction\",\n value: function currentAction() {\n return this._interacting ? this.prepared.name : null;\n }\n }, {\n key: \"interacting\",\n value: function interacting() {\n return this._interacting;\n }\n /** */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this._signals.fire('stop', {\n interaction: this\n });\n\n this.interactable = this.element = null;\n this._interacting = false;\n this.prepared.name = this.prevEvent = null;\n }\n }, {\n key: \"getPointerIndex\",\n value: function getPointerIndex(pointer) {\n var pointerId = utils.pointer.getPointerId(pointer); // mouse and pen interactions may have only one pointer\n\n return this.pointerType === 'mouse' || this.pointerType === 'pen' ? this.pointers.length - 1 : utils.arr.findIndex(this.pointers, function (curPointer) {\n return curPointer.id === pointerId;\n });\n }\n }, {\n key: \"getPointerInfo\",\n value: function getPointerInfo(pointer) {\n return this.pointers[this.getPointerIndex(pointer)];\n }\n }, {\n key: \"updatePointer\",\n value: function updatePointer(pointer, event, eventTarget, down) {\n var id = utils.pointer.getPointerId(pointer);\n var pointerIndex = this.getPointerIndex(pointer);\n var pointerInfo = this.pointers[pointerIndex];\n down = down === false ? false : down || /(down|start)$/i.test(event.type);\n\n if (!pointerInfo) {\n pointerInfo = new _PointerInfo[\"default\"](id, pointer, event, null, null);\n pointerIndex = this.pointers.length;\n this.pointers.push(pointerInfo);\n } else {\n pointerInfo.pointer = pointer;\n }\n\n if (down) {\n this.pointerIsDown = true;\n\n if (!this.interacting()) {\n utils.pointer.setCoords(this.coords.start, this.pointers.map(function (p) {\n return p.pointer;\n }), this._now());\n utils.pointer.copyCoords(this.coords.cur, this.coords.start);\n utils.pointer.copyCoords(this.coords.prev, this.coords.start);\n utils.pointer.pointerExtend(this.downPointer, pointer);\n this.downEvent = event;\n pointerInfo.downTime = this.coords.cur.timeStamp;\n pointerInfo.downTarget = eventTarget;\n this.pointerWasMoved = false;\n }\n }\n\n this._updateLatestPointer(pointer, event, eventTarget);\n\n this._signals.fire('update-pointer', {\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n down: down,\n pointerInfo: pointerInfo,\n pointerIndex: pointerIndex,\n interaction: this\n });\n\n return pointerIndex;\n }\n }, {\n key: \"removePointer\",\n value: function removePointer(pointer, event) {\n var pointerIndex = this.getPointerIndex(pointer);\n\n if (pointerIndex === -1) {\n return;\n }\n\n var pointerInfo = this.pointers[pointerIndex];\n\n this._signals.fire('remove-pointer', {\n pointer: pointer,\n event: event,\n pointerIndex: pointerIndex,\n pointerInfo: pointerInfo,\n interaction: this\n });\n\n this.pointers.splice(pointerIndex, 1);\n }\n }, {\n key: \"_updateLatestPointer\",\n value: function _updateLatestPointer(pointer, event, eventTarget) {\n this._latestPointer.pointer = pointer;\n this._latestPointer.event = event;\n this._latestPointer.eventTarget = eventTarget;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._latestPointer.pointer = null;\n this._latestPointer.event = null;\n this._latestPointer.eventTarget = null;\n }\n }, {\n key: \"_createPreparedEvent\",\n value: function _createPreparedEvent(event, phase, preEnd, type) {\n var actionName = this.prepared.name;\n return new _InteractEvent[\"default\"](this, event, actionName, phase, this.element, null, preEnd, type);\n }\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(iEvent) {\n this.interactable.fire(iEvent);\n\n if (!this.prevEvent || iEvent.timeStamp >= this.prevEvent.timeStamp) {\n this.prevEvent = iEvent;\n }\n }\n }, {\n key: \"_doPhase\",\n value: function _doPhase(signalArg) {\n var event = signalArg.event,\n phase = signalArg.phase,\n preEnd = signalArg.preEnd,\n type = signalArg.type;\n\n var beforeResult = this._signals.fire(\"before-action-\".concat(phase), signalArg);\n\n if (beforeResult === false) {\n return false;\n }\n\n var iEvent = signalArg.iEvent = this._createPreparedEvent(event, phase, preEnd, type);\n\n var rect = this.rect;\n\n if (rect) {\n // update the rect modifications\n var edges = this.edges || this.prepared.edges || {\n left: true,\n right: true,\n top: true,\n bottom: true\n };\n\n if (edges.top) {\n rect.top += iEvent.delta.y;\n }\n\n if (edges.bottom) {\n rect.bottom += iEvent.delta.y;\n }\n\n if (edges.left) {\n rect.left += iEvent.delta.x;\n }\n\n if (edges.right) {\n rect.right += iEvent.delta.x;\n }\n\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n }\n\n this._signals.fire(\"action-\".concat(phase), signalArg);\n\n this._fireEvent(iEvent);\n\n this._signals.fire(\"after-action-\".concat(phase), signalArg);\n\n return true;\n }\n }, {\n key: \"_now\",\n value: function _now() {\n return Date.now();\n }\n }, {\n key: \"pointerMoveTolerance\",\n get: function get() {\n return 1;\n }\n }]);\n\n return Interaction;\n}();\n\nexports.Interaction = Interaction;\nvar _default = Interaction;\nexports[\"default\"] = _default;\n\n});\nvar _$arr_46 = {};\n\"use strict\";\n\nObject.defineProperty(_$arr_46, \"__esModule\", {\n value: true\n});\n_$arr_46.contains = contains;\n_$arr_46.remove = remove;\n_$arr_46.merge = merge;\n_$arr_46.from = from;\n_$arr_46.findIndex = findIndex;\n_$arr_46.find = find;\n\nfunction contains(array, target) {\n return array.indexOf(target) !== -1;\n}\n\nfunction remove(array, target) {\n return array.splice(array.indexOf(target), 1);\n}\n\nfunction merge(target, source) {\n for (var _i = 0; _i < source.length; _i++) {\n var _ref;\n\n _ref = source[_i];\n var item = _ref;\n target.push(item);\n }\n\n return target;\n}\n\nfunction from(source) {\n return merge([], source);\n}\n\nfunction findIndex(array, func) {\n for (var i = 0; i < array.length; i++) {\n if (func(array[i], i, array)) {\n return i;\n }\n }\n\n return -1;\n}\n\nfunction find(array, func) {\n return array[findIndex(array, func)];\n}\n\nvar _$domObjects_49 = {};\n\"use strict\";\n\nObject.defineProperty(_$domObjects_49, \"__esModule\", {\n value: true\n});\n_$domObjects_49[\"default\"] = void 0;\nvar domObjects = {\n init: init,\n document: null,\n DocumentFragment: null,\n SVGElement: null,\n SVGSVGElement: null,\n // eslint-disable-next-line no-undef\n SVGElementInstance: null,\n Element: null,\n HTMLElement: null,\n Event: null,\n Touch: null,\n PointerEvent: null\n};\n\nfunction blank() {}\n\nvar _default = domObjects;\n_$domObjects_49[\"default\"] = _default;\n\nfunction init(window) {\n var win = window;\n domObjects.document = win.document;\n domObjects.DocumentFragment = win.DocumentFragment || blank;\n domObjects.SVGElement = win.SVGElement || blank;\n domObjects.SVGSVGElement = win.SVGSVGElement || blank;\n domObjects.SVGElementInstance = win.SVGElementInstance || blank;\n domObjects.Element = win.Element || blank;\n domObjects.HTMLElement = win.HTMLElement || domObjects.Element;\n domObjects.Event = win.Event;\n domObjects.Touch = win.Touch || blank;\n domObjects.PointerEvent = win.PointerEvent || win.MSPointerEvent;\n}\n\nvar _$isWindow_57 = {};\n\"use strict\";\n\nObject.defineProperty(_$isWindow_57, \"__esModule\", {\n value: true\n});\n_$isWindow_57[\"default\"] = void 0;\n\nvar ___default_57 = function _default(thing) {\n return !!(thing && thing.Window) && thing instanceof thing.Window;\n};\n\n_$isWindow_57[\"default\"] = ___default_57;\n\nvar _$window_65 = {};\n\"use strict\";\n\nObject.defineProperty(_$window_65, \"__esModule\", {\n value: true\n});\n_$window_65.init = __init_65;\n_$window_65.getWindow = getWindow;\n_$window_65[\"default\"] = void 0;\n\nvar _isWindow = _interopRequireDefault(_$isWindow_57);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar win = {\n realWindow: undefined,\n window: undefined,\n getWindow: getWindow,\n init: __init_65\n};\n\nfunction __init_65(window) {\n // get wrapped window if using Shadow DOM polyfill\n win.realWindow = window; // create a TextNode\n\n var el = window.document.createTextNode(''); // check if it's wrapped by a polyfill\n\n if (el.ownerDocument !== window.document && typeof window.wrap === 'function' && window.wrap(el) === el) {\n // use wrapped window\n window = window.wrap(window);\n }\n\n win.window = window;\n}\n\nif (typeof window === 'undefined') {\n win.window = undefined;\n win.realWindow = undefined;\n} else {\n __init_65(window);\n}\n\nfunction getWindow(node) {\n if ((0, _isWindow[\"default\"])(node)) {\n return node;\n }\n\n var rootNode = node.ownerDocument || node;\n return rootNode.defaultView || win.window;\n}\n\nwin.init = __init_65;\nvar ___default_65 = win;\n_$window_65[\"default\"] = ___default_65;\n\nvar _$is_56 = {};\n\"use strict\";\n\nObject.defineProperty(_$is_56, \"__esModule\", {\n value: true\n});\n_$is_56.array = _$is_56.plainObject = _$is_56.element = _$is_56.string = _$is_56.bool = _$is_56.number = _$is_56.func = _$is_56.object = _$is_56.docFrag = _$is_56.window = void 0;\n\nvar ___isWindow_56 = ___interopRequireDefault_56(_$isWindow_57);\n\nvar _window2 = ___interopRequireDefault_56(_$window_65);\n\nfunction ___interopRequireDefault_56(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar __window_56 = function window(thing) {\n return thing === _window2[\"default\"].window || (0, ___isWindow_56[\"default\"])(thing);\n};\n\n_$is_56.window = __window_56;\n\nvar docFrag = function docFrag(thing) {\n return object(thing) && thing.nodeType === 11;\n};\n\n_$is_56.docFrag = docFrag;\n\nvar object = function object(thing) {\n return !!thing && _typeof(thing) === 'object';\n};\n\n_$is_56.object = object;\n\nvar func = function func(thing) {\n return typeof thing === 'function';\n};\n\n_$is_56.func = func;\n\nvar number = function number(thing) {\n return typeof thing === 'number';\n};\n\n_$is_56.number = number;\n\nvar bool = function bool(thing) {\n return typeof thing === 'boolean';\n};\n\n_$is_56.bool = bool;\n\nvar string = function string(thing) {\n return typeof thing === 'string';\n};\n\n_$is_56.string = string;\n\nvar element = function element(thing) {\n if (!thing || _typeof(thing) !== 'object') {\n return false;\n }\n\n var _window = _window2[\"default\"].getWindow(thing) || _window2[\"default\"].window;\n\n return /object|function/.test(_typeof(_window.Element)) ? thing instanceof _window.Element // DOM2\n : thing.nodeType === 1 && typeof thing.nodeName === 'string';\n};\n\n_$is_56.element = element;\n\nvar plainObject = function plainObject(thing) {\n return object(thing) && !!thing.constructor && /function Object\\b/.test(thing.constructor.toString());\n};\n\n_$is_56.plainObject = plainObject;\n\nvar array = function array(thing) {\n return object(thing) && typeof thing.length !== 'undefined' && func(thing.splice);\n};\n\n_$is_56.array = array;\n\nvar _$browser_47 = {};\n\"use strict\";\n\nObject.defineProperty(_$browser_47, \"__esModule\", {\n value: true\n});\n_$browser_47[\"default\"] = void 0;\n\nvar _domObjects = ___interopRequireDefault_47(_$domObjects_49);\n\nvar is = _interopRequireWildcard(_$is_56);\n\nvar _window = ___interopRequireDefault_47(_$window_65);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_47(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar browser = {\n init: __init_47,\n supportsTouch: null,\n supportsPointerEvent: null,\n isIOS7: null,\n isIOS: null,\n isIe9: null,\n isOperaMobile: null,\n prefixedMatchesSelector: null,\n pEventTypes: null,\n wheelEvent: null\n};\n\nfunction __init_47(window) {\n var Element = _domObjects[\"default\"].Element;\n var navigator = _window[\"default\"].window.navigator; // Does the browser support touch input?\n\n browser.supportsTouch = 'ontouchstart' in window || is.func(window.DocumentTouch) && _domObjects[\"default\"].document instanceof window.DocumentTouch; // Does the browser support PointerEvents\n\n browser.supportsPointerEvent = navigator.pointerEnabled !== false && !!_domObjects[\"default\"].PointerEvent;\n browser.isIOS = /iP(hone|od|ad)/.test(navigator.platform); // scrolling doesn't change the result of getClientRects on iOS 7\n\n browser.isIOS7 = /iP(hone|od|ad)/.test(navigator.platform) && /OS 7[^\\d]/.test(navigator.appVersion);\n browser.isIe9 = /MSIE 9/.test(navigator.userAgent); // Opera Mobile must be handled differently\n\n browser.isOperaMobile = navigator.appName === 'Opera' && browser.supportsTouch && /Presto/.test(navigator.userAgent); // prefix matchesSelector\n\n browser.prefixedMatchesSelector = 'matches' in Element.prototype ? 'matches' : 'webkitMatchesSelector' in Element.prototype ? 'webkitMatchesSelector' : 'mozMatchesSelector' in Element.prototype ? 'mozMatchesSelector' : 'oMatchesSelector' in Element.prototype ? 'oMatchesSelector' : 'msMatchesSelector';\n browser.pEventTypes = browser.supportsPointerEvent ? _domObjects[\"default\"].PointerEvent === window.MSPointerEvent ? {\n up: 'MSPointerUp',\n down: 'MSPointerDown',\n over: 'mouseover',\n out: 'mouseout',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel'\n } : {\n up: 'pointerup',\n down: 'pointerdown',\n over: 'pointerover',\n out: 'pointerout',\n move: 'pointermove',\n cancel: 'pointercancel'\n } : null; // because Webkit and Opera still use 'mousewheel' event type\n\n browser.wheelEvent = 'onmousewheel' in _domObjects[\"default\"].document ? 'mousewheel' : 'wheel';\n}\n\nvar ___default_47 = browser;\n_$browser_47[\"default\"] = ___default_47;\n\nvar _$domUtils_50 = {};\n\"use strict\";\n\nObject.defineProperty(_$domUtils_50, \"__esModule\", {\n value: true\n});\n_$domUtils_50.nodeContains = nodeContains;\n_$domUtils_50.closest = closest;\n_$domUtils_50.parentNode = parentNode;\n_$domUtils_50.matchesSelector = matchesSelector;\n_$domUtils_50.indexOfDeepestElement = indexOfDeepestElement;\n_$domUtils_50.matchesUpTo = matchesUpTo;\n_$domUtils_50.getActualElement = getActualElement;\n_$domUtils_50.getScrollXY = getScrollXY;\n_$domUtils_50.getElementClientRect = getElementClientRect;\n_$domUtils_50.getElementRect = getElementRect;\n_$domUtils_50.getPath = getPath;\n_$domUtils_50.trySelector = trySelector;\n\nvar _browser = ___interopRequireDefault_50(_$browser_47);\n\nvar ___domObjects_50 = ___interopRequireDefault_50(_$domObjects_49);\n\nvar __is_50 = ___interopRequireWildcard_50(_$is_56);\n\nvar ___window_50 = ___interopRequireDefault_50(_$window_65);\n\nfunction ___interopRequireWildcard_50(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_50(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction nodeContains(parent, child) {\n while (child) {\n if (child === parent) {\n return true;\n }\n\n child = child.parentNode;\n }\n\n return false;\n}\n\nfunction closest(element, selector) {\n while (__is_50.element(element)) {\n if (matchesSelector(element, selector)) {\n return element;\n }\n\n element = parentNode(element);\n }\n\n return null;\n}\n\nfunction parentNode(node) {\n var parent = node.parentNode;\n\n if (__is_50.docFrag(parent)) {\n // skip past #shado-root fragments\n // tslint:disable-next-line\n while ((parent = parent.host) && __is_50.docFrag(parent)) {\n continue;\n }\n\n return parent;\n }\n\n return parent;\n}\n\nfunction matchesSelector(element, selector) {\n // remove /deep/ from selectors if shadowDOM polyfill is used\n if (___window_50[\"default\"].window !== ___window_50[\"default\"].realWindow) {\n selector = selector.replace(/\\/deep\\//g, ' ');\n }\n\n return element[_browser[\"default\"].prefixedMatchesSelector](selector);\n}\n\nvar getParent = function getParent(el) {\n return el.parentNode ? el.parentNode : el.host;\n}; // Test for the element that's \"above\" all other qualifiers\n\n\nfunction indexOfDeepestElement(elements) {\n var deepestZoneParents = [];\n var dropzoneParents = [];\n var dropzone;\n var deepestZone = elements[0];\n var index = deepestZone ? 0 : -1;\n var parent;\n var child;\n var i;\n var n;\n\n for (i = 1; i < elements.length; i++) {\n dropzone = elements[i]; // an element might belong to multiple selector dropzones\n\n if (!dropzone || dropzone === deepestZone) {\n continue;\n }\n\n if (!deepestZone) {\n deepestZone = dropzone;\n index = i;\n continue;\n } // check if the deepest or current are document.documentElement or document.rootElement\n // - if the current dropzone is, do nothing and continue\n\n\n if (dropzone.parentNode === dropzone.ownerDocument) {\n continue;\n } // - if deepest is, update with the current dropzone and continue to next\n else if (deepestZone.parentNode === dropzone.ownerDocument) {\n deepestZone = dropzone;\n index = i;\n continue;\n }\n\n if (!deepestZoneParents.length) {\n parent = deepestZone;\n\n while (getParent(parent) && getParent(parent) !== parent.ownerDocument) {\n deepestZoneParents.unshift(parent);\n parent = getParent(parent);\n }\n } // if this element is an svg element and the current deepest is\n // an HTMLElement\n\n\n if (deepestZone instanceof ___domObjects_50[\"default\"].HTMLElement && dropzone instanceof ___domObjects_50[\"default\"].SVGElement && !(dropzone instanceof ___domObjects_50[\"default\"].SVGSVGElement)) {\n if (dropzone === deepestZone.parentNode) {\n continue;\n }\n\n parent = dropzone.ownerSVGElement;\n } else {\n parent = dropzone;\n }\n\n dropzoneParents = [];\n\n while (parent.parentNode !== parent.ownerDocument) {\n dropzoneParents.unshift(parent);\n parent = getParent(parent);\n }\n\n n = 0; // get (position of last common ancestor) + 1\n\n while (dropzoneParents[n] && dropzoneParents[n] === deepestZoneParents[n]) {\n n++;\n }\n\n var parents = [dropzoneParents[n - 1], dropzoneParents[n], deepestZoneParents[n]];\n child = parents[0].lastChild;\n\n while (child) {\n if (child === parents[1]) {\n deepestZone = dropzone;\n index = i;\n deepestZoneParents = [];\n break;\n } else if (child === parents[2]) {\n break;\n }\n\n child = child.previousSibling;\n }\n }\n\n return index;\n}\n\nfunction matchesUpTo(element, selector, limit) {\n while (__is_50.element(element)) {\n if (matchesSelector(element, selector)) {\n return true;\n }\n\n element = parentNode(element);\n\n if (element === limit) {\n return matchesSelector(element, selector);\n }\n }\n\n return false;\n}\n\nfunction getActualElement(element) {\n return element instanceof ___domObjects_50[\"default\"].SVGElementInstance ? element.correspondingUseElement : element;\n}\n\nfunction getScrollXY(relevantWindow) {\n relevantWindow = relevantWindow || ___window_50[\"default\"].window;\n return {\n x: relevantWindow.scrollX || relevantWindow.document.documentElement.scrollLeft,\n y: relevantWindow.scrollY || relevantWindow.document.documentElement.scrollTop\n };\n}\n\nfunction getElementClientRect(element) {\n var clientRect = element instanceof ___domObjects_50[\"default\"].SVGElement ? element.getBoundingClientRect() : element.getClientRects()[0];\n return clientRect && {\n left: clientRect.left,\n right: clientRect.right,\n top: clientRect.top,\n bottom: clientRect.bottom,\n width: clientRect.width || clientRect.right - clientRect.left,\n height: clientRect.height || clientRect.bottom - clientRect.top\n };\n}\n\nfunction getElementRect(element) {\n var clientRect = getElementClientRect(element);\n\n if (!_browser[\"default\"].isIOS7 && clientRect) {\n var scroll = getScrollXY(___window_50[\"default\"].getWindow(element));\n clientRect.left += scroll.x;\n clientRect.right += scroll.x;\n clientRect.top += scroll.y;\n clientRect.bottom += scroll.y;\n }\n\n return clientRect;\n}\n\nfunction getPath(node) {\n var path = [];\n\n while (node) {\n path.push(node);\n node = parentNode(node);\n }\n\n return path;\n}\n\nfunction trySelector(value) {\n if (!__is_50.string(value)) {\n return false;\n } // an exception will be raised if it is invalid\n\n\n ___domObjects_50[\"default\"].document.querySelector(value);\n\n return true;\n}\n\nvar _$clone_48 = {};\n\"use strict\";\n\nObject.defineProperty(_$clone_48, \"__esModule\", {\n value: true\n});\n_$clone_48[\"default\"] = clone;\n\nvar arr = ___interopRequireWildcard_48(_$arr_46);\n\nvar __is_48 = ___interopRequireWildcard_48(_$is_56);\n\nfunction ___interopRequireWildcard_48(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction clone(source) {\n var dest = {};\n\n for (var prop in source) {\n var value = source[prop];\n\n if (__is_48.plainObject(value)) {\n dest[prop] = clone(value);\n } else if (__is_48.array(value)) {\n dest[prop] = arr.from(value);\n } else {\n dest[prop] = value;\n }\n }\n\n return dest;\n}\n\nvar _$pointerExtend_59 = {};\n\"use strict\";\n\nObject.defineProperty(_$pointerExtend_59, \"__esModule\", {\n value: true\n});\n_$pointerExtend_59[\"default\"] = void 0;\n\nfunction pointerExtend(dest, source) {\n for (var prop in source) {\n var prefixedPropREs = pointerExtend.prefixedPropREs;\n var deprecated = false; // skip deprecated prefixed properties\n\n for (var vendor in prefixedPropREs) {\n if (prop.indexOf(vendor) === 0 && prefixedPropREs[vendor].test(prop)) {\n deprecated = true;\n break;\n }\n }\n\n if (!deprecated && typeof source[prop] !== 'function') {\n dest[prop] = source[prop];\n }\n }\n\n return dest;\n}\n\npointerExtend.prefixedPropREs = {\n webkit: /(Movement[XY]|Radius[XY]|RotationAngle|Force)$/\n};\nvar ___default_59 = pointerExtend;\n_$pointerExtend_59[\"default\"] = ___default_59;\n\nvar _$hypot_54 = {};\n\"use strict\";\n\nObject.defineProperty(_$hypot_54, \"__esModule\", {\n value: true\n});\n_$hypot_54[\"default\"] = void 0;\n\nvar ___default_54 = function _default(x, y) {\n return Math.sqrt(x * x + y * y);\n};\n\n_$hypot_54[\"default\"] = ___default_54;\n\nvar _$pointerUtils_60 = {};\n\"use strict\";\n\nObject.defineProperty(_$pointerUtils_60, \"__esModule\", {\n value: true\n});\n_$pointerUtils_60[\"default\"] = void 0;\n\nvar ___browser_60 = ___interopRequireDefault_60(_$browser_47);\n\nvar ___domObjects_60 = ___interopRequireDefault_60(_$domObjects_49);\n\nvar domUtils = ___interopRequireWildcard_60(_$domUtils_50);\n\nvar _hypot = ___interopRequireDefault_60(_$hypot_54);\n\nvar __is_60 = ___interopRequireWildcard_60(_$is_56);\n\nvar _pointerExtend = ___interopRequireDefault_60(_$pointerExtend_59);\n\nfunction ___interopRequireWildcard_60(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_60(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar pointerUtils = {\n copyCoords: function copyCoords(dest, src) {\n dest.page = dest.page || {};\n dest.page.x = src.page.x;\n dest.page.y = src.page.y;\n dest.client = dest.client || {};\n dest.client.x = src.client.x;\n dest.client.y = src.client.y;\n dest.timeStamp = src.timeStamp;\n },\n setCoordDeltas: function setCoordDeltas(targetObj, prev, cur) {\n targetObj.page.x = cur.page.x - prev.page.x;\n targetObj.page.y = cur.page.y - prev.page.y;\n targetObj.client.x = cur.client.x - prev.client.x;\n targetObj.client.y = cur.client.y - prev.client.y;\n targetObj.timeStamp = cur.timeStamp - prev.timeStamp;\n },\n setCoordVelocity: function setCoordVelocity(targetObj, delta) {\n var dt = Math.max(delta.timeStamp / 1000, 0.001);\n targetObj.page.x = delta.page.x / dt;\n targetObj.page.y = delta.page.y / dt;\n targetObj.client.x = delta.client.x / dt;\n targetObj.client.y = delta.client.y / dt;\n targetObj.timeStamp = dt;\n },\n isNativePointer: function isNativePointer(pointer) {\n return pointer instanceof ___domObjects_60[\"default\"].Event || pointer instanceof ___domObjects_60[\"default\"].Touch;\n },\n // Get specified X/Y coords for mouse or event.touches[0]\n getXY: function getXY(type, pointer, xy) {\n xy = xy || {};\n type = type || 'page';\n xy.x = pointer[type + 'X'];\n xy.y = pointer[type + 'Y'];\n return xy;\n },\n getPageXY: function getPageXY(pointer, page) {\n page = page || {\n x: 0,\n y: 0\n }; // Opera Mobile handles the viewport and scrolling oddly\n\n if (___browser_60[\"default\"].isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n pointerUtils.getXY('screen', pointer, page);\n page.x += window.scrollX;\n page.y += window.scrollY;\n } else {\n pointerUtils.getXY('page', pointer, page);\n }\n\n return page;\n },\n getClientXY: function getClientXY(pointer, client) {\n client = client || {};\n\n if (___browser_60[\"default\"].isOperaMobile && pointerUtils.isNativePointer(pointer)) {\n // Opera Mobile handles the viewport and scrolling oddly\n pointerUtils.getXY('screen', pointer, client);\n } else {\n pointerUtils.getXY('client', pointer, client);\n }\n\n return client;\n },\n getPointerId: function getPointerId(pointer) {\n return __is_60.number(pointer.pointerId) ? pointer.pointerId : pointer.identifier;\n },\n setCoords: function setCoords(targetObj, pointers, timeStamp) {\n var pointer = pointers.length > 1 ? pointerUtils.pointerAverage(pointers) : pointers[0];\n var tmpXY = {};\n pointerUtils.getPageXY(pointer, tmpXY);\n targetObj.page.x = tmpXY.x;\n targetObj.page.y = tmpXY.y;\n pointerUtils.getClientXY(pointer, tmpXY);\n targetObj.client.x = tmpXY.x;\n targetObj.client.y = tmpXY.y;\n targetObj.timeStamp = timeStamp;\n },\n pointerExtend: _pointerExtend[\"default\"],\n getTouchPair: function getTouchPair(event) {\n var touches = []; // array of touches is supplied\n\n if (__is_60.array(event)) {\n touches[0] = event[0];\n touches[1] = event[1];\n } // an event\n else {\n if (event.type === 'touchend') {\n if (event.touches.length === 1) {\n touches[0] = event.touches[0];\n touches[1] = event.changedTouches[0];\n } else if (event.touches.length === 0) {\n touches[0] = event.changedTouches[0];\n touches[1] = event.changedTouches[1];\n }\n } else {\n touches[0] = event.touches[0];\n touches[1] = event.touches[1];\n }\n }\n\n return touches;\n },\n pointerAverage: function pointerAverage(pointers) {\n var average = {\n pageX: 0,\n pageY: 0,\n clientX: 0,\n clientY: 0,\n screenX: 0,\n screenY: 0\n };\n\n for (var _i = 0; _i < pointers.length; _i++) {\n var _ref;\n\n _ref = pointers[_i];\n var pointer = _ref;\n\n for (var _prop in average) {\n average[_prop] += pointer[_prop];\n }\n }\n\n for (var prop in average) {\n average[prop] /= pointers.length;\n }\n\n return average;\n },\n touchBBox: function touchBBox(event) {\n if (!event.length && !(event.touches && event.touches.length > 1)) {\n return null;\n }\n\n var touches = pointerUtils.getTouchPair(event);\n var minX = Math.min(touches[0].pageX, touches[1].pageX);\n var minY = Math.min(touches[0].pageY, touches[1].pageY);\n var maxX = Math.max(touches[0].pageX, touches[1].pageX);\n var maxY = Math.max(touches[0].pageY, touches[1].pageY);\n return {\n x: minX,\n y: minY,\n left: minX,\n top: minY,\n right: maxX,\n bottom: maxY,\n width: maxX - minX,\n height: maxY - minY\n };\n },\n touchDistance: function touchDistance(event, deltaSource) {\n var sourceX = deltaSource + 'X';\n var sourceY = deltaSource + 'Y';\n var touches = pointerUtils.getTouchPair(event);\n var dx = touches[0][sourceX] - touches[1][sourceX];\n var dy = touches[0][sourceY] - touches[1][sourceY];\n return (0, _hypot[\"default\"])(dx, dy);\n },\n touchAngle: function touchAngle(event, deltaSource) {\n var sourceX = deltaSource + 'X';\n var sourceY = deltaSource + 'Y';\n var touches = pointerUtils.getTouchPair(event);\n var dx = touches[1][sourceX] - touches[0][sourceX];\n var dy = touches[1][sourceY] - touches[0][sourceY];\n var angle = 180 * Math.atan2(dy, dx) / Math.PI;\n return angle;\n },\n getPointerType: function getPointerType(pointer) {\n return __is_60.string(pointer.pointerType) ? pointer.pointerType : __is_60.number(pointer.pointerType) ? [undefined, undefined, 'touch', 'pen', 'mouse'][pointer.pointerType] // if the PointerEvent API isn't available, then the \"pointer\" must\n // be either a MouseEvent, TouchEvent, or Touch object\n : /touch/.test(pointer.type) || pointer instanceof ___domObjects_60[\"default\"].Touch ? 'touch' : 'mouse';\n },\n // [ event.target, event.currentTarget ]\n getEventTargets: function getEventTargets(event) {\n var path = __is_60.func(event.composedPath) ? event.composedPath() : event.path;\n return [domUtils.getActualElement(path ? path[0] : event.target), domUtils.getActualElement(event.currentTarget)];\n },\n newCoords: function newCoords() {\n return {\n page: {\n x: 0,\n y: 0\n },\n client: {\n x: 0,\n y: 0\n },\n timeStamp: 0\n };\n },\n coordsToEvent: function coordsToEvent(coords) {\n var event = {\n coords: coords,\n\n get page() {\n return this.coords.page;\n },\n\n get client() {\n return this.coords.client;\n },\n\n get timeStamp() {\n return this.coords.timeStamp;\n },\n\n get pageX() {\n return this.coords.page.x;\n },\n\n get pageY() {\n return this.coords.page.y;\n },\n\n get clientX() {\n return this.coords.client.x;\n },\n\n get clientY() {\n return this.coords.client.y;\n },\n\n get pointerId() {\n return this.coords.pointerId;\n },\n\n get target() {\n return this.coords.target;\n },\n\n get type() {\n return this.coords.type;\n },\n\n get pointerType() {\n return this.coords.pointerType;\n }\n\n };\n return event;\n }\n};\nvar ___default_60 = pointerUtils;\n_$pointerUtils_60[\"default\"] = ___default_60;\n\nvar _$events_51 = {};\n\"use strict\";\n\nObject.defineProperty(_$events_51, \"__esModule\", {\n value: true\n});\n_$events_51[\"default\"] = _$events_51.FakeEvent = void 0;\n\n/* removed: var _$arr_46 = require(\"./arr\"); */;\n\nvar __domUtils_51 = ___interopRequireWildcard_51(_$domUtils_50);\n\nvar __is_51 = ___interopRequireWildcard_51(_$is_56);\n\nvar ___pointerExtend_51 = ___interopRequireDefault_51(_$pointerExtend_59);\n\nvar _pointerUtils = ___interopRequireDefault_51(_$pointerUtils_60);\n\nfunction ___interopRequireDefault_51(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_51(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar elements = [];\nvar targets = [];\nvar delegatedEvents = {};\nvar documents = [];\n\nfunction add(element, type, listener, optionalArg) {\n var options = getOptions(optionalArg);\n var elementIndex = elements.indexOf(element);\n var target = targets[elementIndex];\n\n if (!target) {\n target = {\n events: {},\n typeCount: 0\n };\n elementIndex = elements.push(element) - 1;\n targets.push(target);\n }\n\n if (!target.events[type]) {\n target.events[type] = [];\n target.typeCount++;\n }\n\n if (!(0, _$arr_46.contains)(target.events[type], listener)) {\n element.addEventListener(type, listener, events.supportsOptions ? options : !!options.capture);\n target.events[type].push(listener);\n }\n}\n\nfunction __remove_51(element, type, listener, optionalArg) {\n var options = getOptions(optionalArg);\n var elementIndex = elements.indexOf(element);\n var target = targets[elementIndex];\n\n if (!target || !target.events) {\n return;\n }\n\n if (type === 'all') {\n for (type in target.events) {\n if (target.events.hasOwnProperty(type)) {\n __remove_51(element, type, 'all');\n }\n }\n\n return;\n }\n\n if (target.events[type]) {\n var len = target.events[type].length;\n\n if (listener === 'all') {\n for (var i = 0; i < len; i++) {\n __remove_51(element, type, target.events[type][i], options);\n }\n\n return;\n } else {\n for (var _i = 0; _i < len; _i++) {\n if (target.events[type][_i] === listener) {\n element.removeEventListener(type, listener, events.supportsOptions ? options : !!options.capture);\n target.events[type].splice(_i, 1);\n break;\n }\n }\n }\n\n if (target.events[type] && target.events[type].length === 0) {\n target.events[type] = null;\n target.typeCount--;\n }\n }\n\n if (!target.typeCount) {\n targets.splice(elementIndex, 1);\n elements.splice(elementIndex, 1);\n }\n}\n\nfunction addDelegate(selector, context, type, listener, optionalArg) {\n var options = getOptions(optionalArg);\n\n if (!delegatedEvents[type]) {\n delegatedEvents[type] = {\n contexts: [],\n listeners: [],\n selectors: []\n }; // add delegate listener functions\n\n for (var _i2 = 0; _i2 < documents.length; _i2++) {\n var doc = documents[_i2];\n add(doc, type, delegateListener);\n add(doc, type, delegateUseCapture, true);\n }\n }\n\n var delegated = delegatedEvents[type];\n var index;\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n if (delegated.selectors[index] === selector && delegated.contexts[index] === context) {\n break;\n }\n }\n\n if (index === -1) {\n index = delegated.selectors.length;\n delegated.selectors.push(selector);\n delegated.contexts.push(context);\n delegated.listeners.push([]);\n } // keep listener and capture and passive flags\n\n\n delegated.listeners[index].push([listener, !!options.capture, options.passive]);\n}\n\nfunction removeDelegate(selector, context, type, listener, optionalArg) {\n var options = getOptions(optionalArg);\n var delegated = delegatedEvents[type];\n var matchFound = false;\n var index;\n\n if (!delegated) {\n return;\n } // count from last index of delegated to 0\n\n\n for (index = delegated.selectors.length - 1; index >= 0; index--) {\n // look for matching selector and context Node\n if (delegated.selectors[index] === selector && delegated.contexts[index] === context) {\n var listeners = delegated.listeners[index]; // each item of the listeners array is an array: [function, capture, passive]\n\n for (var i = listeners.length - 1; i >= 0; i--) {\n var _listeners$i = _slicedToArray(listeners[i], 3),\n fn = _listeners$i[0],\n capture = _listeners$i[1],\n passive = _listeners$i[2]; // check if the listener functions and capture and passive flags match\n\n\n if (fn === listener && capture === !!options.capture && passive === options.passive) {\n // remove the listener from the array of listeners\n listeners.splice(i, 1); // if all listeners for this interactable have been removed\n // remove the interactable from the delegated arrays\n\n if (!listeners.length) {\n delegated.selectors.splice(index, 1);\n delegated.contexts.splice(index, 1);\n delegated.listeners.splice(index, 1); // remove delegate function from context\n\n __remove_51(context, type, delegateListener);\n __remove_51(context, type, delegateUseCapture, true); // remove the arrays if they are empty\n\n if (!delegated.selectors.length) {\n delegatedEvents[type] = null;\n }\n } // only remove one listener\n\n\n matchFound = true;\n break;\n }\n }\n\n if (matchFound) {\n break;\n }\n }\n }\n} // bound to the interactable context when a DOM event\n// listener is added to a selector interactable\n\n\nfunction delegateListener(event, optionalArg) {\n var options = getOptions(optionalArg);\n var fakeEvent = new FakeEvent(event);\n var delegated = delegatedEvents[event.type];\n\n var _pointerUtils$getEven = _pointerUtils[\"default\"].getEventTargets(event),\n _pointerUtils$getEven2 = _slicedToArray(_pointerUtils$getEven, 1),\n eventTarget = _pointerUtils$getEven2[0];\n\n var element = eventTarget; // climb up document tree looking for selector matches\n\n while (__is_51.element(element)) {\n for (var i = 0; i < delegated.selectors.length; i++) {\n var selector = delegated.selectors[i];\n var context = delegated.contexts[i];\n\n if (__domUtils_51.matchesSelector(element, selector) && __domUtils_51.nodeContains(context, eventTarget) && __domUtils_51.nodeContains(context, element)) {\n var listeners = delegated.listeners[i];\n fakeEvent.currentTarget = element;\n\n for (var _i3 = 0; _i3 < listeners.length; _i3++) {\n var _ref;\n\n _ref = listeners[_i3];\n\n var _ref2 = _ref,\n _ref3 = _slicedToArray(_ref2, 3),\n fn = _ref3[0],\n capture = _ref3[1],\n passive = _ref3[2];\n\n if (capture === !!options.capture && passive === options.passive) {\n fn(fakeEvent);\n }\n }\n }\n }\n\n element = __domUtils_51.parentNode(element);\n }\n}\n\nfunction delegateUseCapture(event) {\n return delegateListener.call(this, event, true);\n}\n\nfunction getOptions(param) {\n return __is_51.object(param) ? param : {\n capture: param\n };\n}\n\nvar FakeEvent =\n/*#__PURE__*/\nfunction () {\n function FakeEvent(originalEvent) {\n _classCallCheck(this, FakeEvent);\n\n this.originalEvent = originalEvent; // duplicate the event so that currentTarget can be changed\n\n (0, ___pointerExtend_51[\"default\"])(this, originalEvent);\n }\n\n _createClass(FakeEvent, [{\n key: \"preventOriginalDefault\",\n value: function preventOriginalDefault() {\n this.originalEvent.preventDefault();\n }\n }, {\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.originalEvent.stopPropagation();\n }\n }, {\n key: \"stopImmediatePropagation\",\n value: function stopImmediatePropagation() {\n this.originalEvent.stopImmediatePropagation();\n }\n }]);\n\n return FakeEvent;\n}();\n\n_$events_51.FakeEvent = FakeEvent;\nvar events = {\n add: add,\n remove: __remove_51,\n addDelegate: addDelegate,\n removeDelegate: removeDelegate,\n delegateListener: delegateListener,\n delegateUseCapture: delegateUseCapture,\n delegatedEvents: delegatedEvents,\n documents: documents,\n supportsOptions: false,\n supportsPassive: false,\n _elements: elements,\n _targets: targets,\n init: function init(window) {\n window.document.createElement('div').addEventListener('test', null, {\n get capture() {\n return events.supportsOptions = true;\n },\n\n get passive() {\n return events.supportsPassive = true;\n }\n\n });\n }\n};\nvar ___default_51 = events;\n_$events_51[\"default\"] = ___default_51;\n\nvar _$extend_52 = {};\n\"use strict\";\n\nObject.defineProperty(_$extend_52, \"__esModule\", {\n value: true\n});\n_$extend_52[\"default\"] = extend;\n\nfunction extend(dest, source) {\n for (var prop in source) {\n dest[prop] = source[prop];\n }\n\n return dest;\n}\n\nvar _$rect_62 = {};\n\"use strict\";\n\nObject.defineProperty(_$rect_62, \"__esModule\", {\n value: true\n});\n_$rect_62.getStringOptionResult = getStringOptionResult;\n_$rect_62.resolveRectLike = resolveRectLike;\n_$rect_62.rectToXY = rectToXY;\n_$rect_62.xywhToTlbr = xywhToTlbr;\n_$rect_62.tlbrToXywh = tlbrToXywh;\n_$rect_62[\"default\"] = void 0;\n\n/* removed: var _$domUtils_50 = require(\"./domUtils\"); */;\n\nvar _extend = ___interopRequireDefault_62(_$extend_52);\n\nvar __is_62 = ___interopRequireWildcard_62(_$is_56);\n\nfunction ___interopRequireWildcard_62(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_62(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getStringOptionResult(value, interactable, element) {\n if (!__is_62.string(value)) {\n return null;\n }\n\n if (value === 'parent') {\n value = (0, _$domUtils_50.parentNode)(element);\n } else if (value === 'self') {\n value = interactable.getRect(element);\n } else {\n value = (0, _$domUtils_50.closest)(element, value);\n }\n\n return value;\n}\n\nfunction resolveRectLike(value, interactable, element, functionArgs) {\n value = getStringOptionResult(value, interactable, element) || value;\n\n if (__is_62.func(value)) {\n value = value.apply(null, functionArgs);\n }\n\n if (__is_62.element(value)) {\n value = (0, _$domUtils_50.getElementRect)(value);\n }\n\n return value;\n}\n\nfunction rectToXY(rect) {\n return rect && {\n x: 'x' in rect ? rect.x : rect.left,\n y: 'y' in rect ? rect.y : rect.top\n };\n}\n\nfunction xywhToTlbr(rect) {\n if (rect && !('left' in rect && 'top' in rect)) {\n rect = (0, _extend[\"default\"])({}, rect);\n rect.left = rect.x || 0;\n rect.top = rect.y || 0;\n rect.right = rect.right || rect.left + rect.width;\n rect.bottom = rect.bottom || rect.top + rect.height;\n }\n\n return rect;\n}\n\nfunction tlbrToXywh(rect) {\n if (rect && !('x' in rect && 'y' in rect)) {\n rect = (0, _extend[\"default\"])({}, rect);\n rect.x = rect.left || 0;\n rect.y = rect.top || 0;\n rect.width = rect.width || rect.right - rect.x;\n rect.height = rect.height || rect.bottom - rect.y;\n }\n\n return rect;\n}\n\nvar ___default_62 = {\n getStringOptionResult: getStringOptionResult,\n resolveRectLike: resolveRectLike,\n rectToXY: rectToXY,\n xywhToTlbr: xywhToTlbr,\n tlbrToXywh: tlbrToXywh\n};\n_$rect_62[\"default\"] = ___default_62;\n\nvar _$getOriginXY_53 = {};\n\"use strict\";\n\nObject.defineProperty(_$getOriginXY_53, \"__esModule\", {\n value: true\n});\n_$getOriginXY_53[\"default\"] = ___default_53;\n\n/* removed: var _$rect_62 = require(\"./rect\"); */;\n\nfunction ___default_53(target, element, action) {\n var actionOptions = target.options[action];\n var actionOrigin = actionOptions && actionOptions.origin;\n var origin = actionOrigin || target.options.origin;\n var originRect = (0, _$rect_62.resolveRectLike)(origin, target, element, [target && element]);\n return (0, _$rect_62.rectToXY)(originRect) || {\n x: 0,\n y: 0\n };\n}\n\nvar _$normalizeListeners_58 = {};\n\"use strict\";\n\nObject.defineProperty(_$normalizeListeners_58, \"__esModule\", {\n value: true\n});\n_$normalizeListeners_58[\"default\"] = normalize;\n\nvar ___extend_58 = ___interopRequireDefault_58(_$extend_52);\n\nvar __is_58 = ___interopRequireWildcard_58(_$is_56);\n\nfunction ___interopRequireWildcard_58(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_58(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction normalize(type, listeners, result) {\n result = result || {};\n\n if (__is_58.string(type) && type.search(' ') !== -1) {\n type = split(type);\n }\n\n if (__is_58.array(type)) {\n return type.reduce(function (acc, t) {\n return (0, ___extend_58[\"default\"])(acc, normalize(t, listeners, result));\n }, result);\n } // ({ type: fn }) -> ('', { type: fn })\n\n\n if (__is_58.object(type)) {\n listeners = type;\n type = '';\n }\n\n if (__is_58.func(listeners)) {\n result[type] = result[type] || [];\n result[type].push(listeners);\n } else if (__is_58.array(listeners)) {\n for (var _i = 0; _i < listeners.length; _i++) {\n var _ref;\n\n _ref = listeners[_i];\n var l = _ref;\n normalize(type, l, result);\n }\n } else if (__is_58.object(listeners)) {\n for (var prefix in listeners) {\n var combinedTypes = split(prefix).map(function (p) {\n return \"\".concat(type).concat(p);\n });\n normalize(combinedTypes, listeners[prefix], result);\n }\n }\n\n return result;\n}\n\nfunction split(type) {\n return type.trim().split(/ +/);\n}\n\nvar _$raf_61 = {};\n\"use strict\";\n\nObject.defineProperty(_$raf_61, \"__esModule\", {\n value: true\n});\n_$raf_61[\"default\"] = void 0;\nvar lastTime = 0;\n\nvar _request;\n\nvar _cancel;\n\nfunction __init_61(window) {\n _request = window.requestAnimationFrame;\n _cancel = window.cancelAnimationFrame;\n\n if (!_request) {\n var vendors = ['ms', 'moz', 'webkit', 'o'];\n\n for (var _i = 0; _i < vendors.length; _i++) {\n var vendor = vendors[_i];\n _request = window[\"\".concat(vendor, \"RequestAnimationFrame\")];\n _cancel = window[\"\".concat(vendor, \"CancelAnimationFrame\")] || window[\"\".concat(vendor, \"CancelRequestAnimationFrame\")];\n }\n }\n\n if (!_request) {\n _request = function request(callback) {\n var currTime = Date.now();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime)); // eslint-disable-next-line standard/no-callback-literal\n\n var token = setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return token;\n };\n\n _cancel = function cancel(token) {\n return clearTimeout(token);\n };\n }\n}\n\nvar ___default_61 = {\n request: function request(callback) {\n return _request(callback);\n },\n cancel: function cancel(token) {\n return _cancel(token);\n },\n init: __init_61\n};\n_$raf_61[\"default\"] = ___default_61;\n\nvar _$Signals_45 = {};\n\"use strict\";\n\nObject.defineProperty(_$Signals_45, \"__esModule\", {\n value: true\n});\n_$Signals_45[\"default\"] = void 0;\n\nfunction ___classCallCheck_45(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_45(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_45(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_45(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_45(Constructor, staticProps); return Constructor; }\n\nvar Signals =\n/*#__PURE__*/\nfunction () {\n function Signals() {\n ___classCallCheck_45(this, Signals);\n\n this.listeners = {};\n }\n\n ___createClass_45(Signals, [{\n key: \"on\",\n value: function on(name, listener) {\n if (!this.listeners[name]) {\n this.listeners[name] = [listener];\n return;\n }\n\n this.listeners[name].push(listener);\n }\n }, {\n key: \"off\",\n value: function off(name, listener) {\n if (!this.listeners[name]) {\n return;\n }\n\n var index = this.listeners[name].indexOf(listener);\n\n if (index !== -1) {\n this.listeners[name].splice(index, 1);\n }\n }\n }, {\n key: \"fire\",\n value: function fire(name, arg) {\n var targetListeners = this.listeners[name];\n\n if (!targetListeners) {\n return;\n }\n\n for (var _i = 0; _i < targetListeners.length; _i++) {\n var _ref;\n\n _ref = targetListeners[_i];\n var listener = _ref;\n\n if (listener(arg, name) === false) {\n return false;\n }\n }\n }\n }]);\n\n return Signals;\n}();\n\nvar ___default_45 = Signals;\n_$Signals_45[\"default\"] = ___default_45;\n\nvar _$utils_55 = {};\n\"use strict\";\n\nObject.defineProperty(_$utils_55, \"__esModule\", {\n value: true\n});\n_$utils_55.warnOnce = warnOnce;\n_$utils_55._getQBezierValue = _getQBezierValue;\n_$utils_55.getQuadraticCurvePoint = getQuadraticCurvePoint;\n_$utils_55.easeOutQuad = easeOutQuad;\n_$utils_55.copyAction = copyAction;\nObject.defineProperty(_$utils_55, \"win\", {\n enumerable: true,\n get: function get() {\n return ___window_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"browser\", {\n enumerable: true,\n get: function get() {\n return ___browser_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"clone\", {\n enumerable: true,\n get: function get() {\n return _clone[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"events\", {\n enumerable: true,\n get: function get() {\n return _events[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"extend\", {\n enumerable: true,\n get: function get() {\n return ___extend_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"getOriginXY\", {\n enumerable: true,\n get: function get() {\n return _getOriginXY[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"hypot\", {\n enumerable: true,\n get: function get() {\n return ___hypot_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"normalizeListeners\", {\n enumerable: true,\n get: function get() {\n return _normalizeListeners[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"pointer\", {\n enumerable: true,\n get: function get() {\n return ___pointerUtils_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"raf\", {\n enumerable: true,\n get: function get() {\n return _raf[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"rect\", {\n enumerable: true,\n get: function get() {\n return ___rect_55[\"default\"];\n }\n});\nObject.defineProperty(_$utils_55, \"Signals\", {\n enumerable: true,\n get: function get() {\n return _Signals[\"default\"];\n }\n});\n_$utils_55.is = _$utils_55.dom = _$utils_55.arr = void 0;\n\nvar __arr_55 = ___interopRequireWildcard_55(_$arr_46);\n\n_$utils_55.arr = __arr_55;\n\nvar dom = ___interopRequireWildcard_55(_$domUtils_50);\n\n_$utils_55.dom = dom;\n\nvar __is_55 = ___interopRequireWildcard_55(_$is_56);\n\n_$utils_55.is = __is_55;\n\nvar ___window_55 = ___interopRequireDefault_55(_$window_65);\n\nvar ___browser_55 = ___interopRequireDefault_55(_$browser_47);\n\nvar _clone = ___interopRequireDefault_55(_$clone_48);\n\nvar _events = ___interopRequireDefault_55(_$events_51);\n\nvar ___extend_55 = ___interopRequireDefault_55(_$extend_52);\n\nvar _getOriginXY = ___interopRequireDefault_55(_$getOriginXY_53);\n\nvar ___hypot_55 = ___interopRequireDefault_55(_$hypot_54);\n\nvar _normalizeListeners = ___interopRequireDefault_55(_$normalizeListeners_58);\n\nvar ___pointerUtils_55 = ___interopRequireDefault_55(_$pointerUtils_60);\n\nvar _raf = ___interopRequireDefault_55(_$raf_61);\n\nvar ___rect_55 = ___interopRequireDefault_55(_$rect_62);\n\nvar _Signals = ___interopRequireDefault_55(_$Signals_45);\n\nfunction ___interopRequireDefault_55(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_55(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction warnOnce(method, message) {\n var warned = false; // eslint-disable-next-line no-shadow\n\n return function () {\n if (!warned) {\n ___window_55[\"default\"].window.console.warn(message);\n\n warned = true;\n }\n\n return method.apply(this, arguments);\n };\n} // http://stackoverflow.com/a/5634528/2280888\n\n\nfunction _getQBezierValue(t, p1, p2, p3) {\n var iT = 1 - t;\n return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3;\n}\n\nfunction getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, position) {\n return {\n x: _getQBezierValue(position, startX, cpX, endX),\n y: _getQBezierValue(position, startY, cpY, endY)\n };\n} // http://gizma.com/easing/\n\n\nfunction easeOutQuad(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n}\n\nfunction copyAction(dest, src) {\n dest.name = src.name;\n dest.axis = src.axis;\n dest.edges = src.edges;\n return dest;\n}\n\nvar _$defaultOptions_20 = {};\n\"use strict\";\n\nObject.defineProperty(_$defaultOptions_20, \"__esModule\", {\n value: true\n});\n_$defaultOptions_20[\"default\"] = _$defaultOptions_20.defaults = void 0;\n// tslint:disable no-empty-interface\nvar defaults = {\n base: {\n preventDefault: 'auto',\n deltaSource: 'page'\n },\n perAction: {\n enabled: false,\n origin: {\n x: 0,\n y: 0\n }\n },\n actions: {}\n};\n_$defaultOptions_20.defaults = defaults;\nvar ___default_20 = defaults;\n_$defaultOptions_20[\"default\"] = ___default_20;\n\nvar _$Eventable_14 = {};\n\"use strict\";\n\nObject.defineProperty(_$Eventable_14, \"__esModule\", {\n value: true\n});\n_$Eventable_14[\"default\"] = void 0;\n\nvar __arr_14 = ___interopRequireWildcard_14(_$arr_46);\n\nvar ___extend_14 = ___interopRequireDefault_14(_$extend_52);\n\nvar ___normalizeListeners_14 = ___interopRequireDefault_14(_$normalizeListeners_58);\n\nfunction ___interopRequireDefault_14(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_14(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___classCallCheck_14(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_14(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_14(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_14(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_14(Constructor, staticProps); return Constructor; }\n\nfunction fireUntilImmediateStopped(event, listeners) {\n for (var _i = 0; _i < listeners.length; _i++) {\n var _ref;\n\n _ref = listeners[_i];\n var listener = _ref;\n\n if (event.immediatePropagationStopped) {\n break;\n }\n\n listener(event);\n }\n}\n\nvar Eventable =\n/*#__PURE__*/\nfunction () {\n function Eventable(options) {\n ___classCallCheck_14(this, Eventable);\n\n this.types = {};\n this.propagationStopped = false;\n this.immediatePropagationStopped = false;\n this.options = (0, ___extend_14[\"default\"])({}, options || {});\n }\n\n ___createClass_14(Eventable, [{\n key: \"fire\",\n value: function fire(event) {\n var listeners;\n var global = this.global; // Interactable#on() listeners\n // tslint:disable no-conditional-assignment\n\n if (listeners = this.types[event.type]) {\n fireUntilImmediateStopped(event, listeners);\n } // interact.on() listeners\n\n\n if (!event.propagationStopped && global && (listeners = global[event.type])) {\n fireUntilImmediateStopped(event, listeners);\n }\n }\n }, {\n key: \"on\",\n value: function on(type, listener) {\n var listeners = (0, ___normalizeListeners_14[\"default\"])(type, listener);\n\n for (type in listeners) {\n this.types[type] = __arr_14.merge(this.types[type] || [], listeners[type]);\n }\n }\n }, {\n key: \"off\",\n value: function off(type, listener) {\n var listeners = (0, ___normalizeListeners_14[\"default\"])(type, listener);\n\n for (type in listeners) {\n var eventList = this.types[type];\n\n if (!eventList || !eventList.length) {\n continue;\n }\n\n for (var _i2 = 0; _i2 < listeners[type].length; _i2++) {\n var _ref2;\n\n _ref2 = listeners[type][_i2];\n var subListener = _ref2;\n var index = eventList.indexOf(subListener);\n\n if (index !== -1) {\n eventList.splice(index, 1);\n }\n }\n }\n }\n }]);\n\n return Eventable;\n}();\n\nvar ___default_14 = Eventable;\n_$Eventable_14[\"default\"] = ___default_14;\n\nvar _$Interactable_16 = {};\n\"use strict\";\n\nObject.defineProperty(_$Interactable_16, \"__esModule\", {\n value: true\n});\n_$Interactable_16[\"default\"] = _$Interactable_16.Interactable = void 0;\n\nvar __arr_16 = ___interopRequireWildcard_16(_$arr_46);\n\nvar ___browser_16 = ___interopRequireDefault_16(_$browser_47);\n\nvar ___clone_16 = ___interopRequireDefault_16(_$clone_48);\n\n/* removed: var _$domUtils_50 = require(\"@interactjs/utils/domUtils\"); */;\n\nvar ___events_16 = ___interopRequireDefault_16(_$events_51);\n\nvar ___extend_16 = ___interopRequireDefault_16(_$extend_52);\n\nvar __is_16 = ___interopRequireWildcard_16(_$is_56);\n\nvar ___normalizeListeners_16 = ___interopRequireDefault_16(_$normalizeListeners_58);\n\n/* removed: var _$window_65 = require(\"@interactjs/utils/window\"); */;\n\nvar _Eventable = ___interopRequireDefault_16(_$Eventable_14);\n\nfunction ___interopRequireDefault_16(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_16(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___classCallCheck_16(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_16(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_16(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_16(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_16(Constructor, staticProps); return Constructor; }\n\n/** */\nvar Interactable =\n/*#__PURE__*/\nfunction () {\n /** */\n function Interactable(target, options, defaultContext) {\n ___classCallCheck_16(this, Interactable);\n\n this.events = new _Eventable[\"default\"]();\n this._actions = options.actions;\n this.target = target;\n this._context = options.context || defaultContext;\n this._win = (0, _$window_65.getWindow)((0, _$domUtils_50.trySelector)(target) ? this._context : target);\n this._doc = this._win.document;\n this.set(options);\n }\n\n ___createClass_16(Interactable, [{\n key: \"setOnEvents\",\n value: function setOnEvents(actionName, phases) {\n if (__is_16.func(phases.onstart)) {\n this.on(\"\".concat(actionName, \"start\"), phases.onstart);\n }\n\n if (__is_16.func(phases.onmove)) {\n this.on(\"\".concat(actionName, \"move\"), phases.onmove);\n }\n\n if (__is_16.func(phases.onend)) {\n this.on(\"\".concat(actionName, \"end\"), phases.onend);\n }\n\n if (__is_16.func(phases.oninertiastart)) {\n this.on(\"\".concat(actionName, \"inertiastart\"), phases.oninertiastart);\n }\n\n return this;\n }\n }, {\n key: \"updatePerActionListeners\",\n value: function updatePerActionListeners(actionName, prev, cur) {\n if (__is_16.array(prev) || __is_16.object(prev)) {\n this.off(actionName, prev);\n }\n\n if (__is_16.array(cur) || __is_16.object(cur)) {\n this.on(actionName, cur);\n }\n }\n }, {\n key: \"setPerAction\",\n value: function setPerAction(actionName, options) {\n var defaults = this._defaults; // for all the default per-action options\n\n for (var optionName in options) {\n var actionOptions = this.options[actionName];\n var optionValue = options[optionName];\n var isArray = __is_16.array(optionValue); // remove old event listeners and add new ones\n\n if (optionName === 'listeners') {\n this.updatePerActionListeners(actionName, actionOptions.listeners, optionValue);\n } // if the option value is an array\n\n\n if (isArray) {\n actionOptions[optionName] = __arr_16.from(optionValue);\n } // if the option value is an object\n else if (!isArray && __is_16.plainObject(optionValue)) {\n // copy the object\n actionOptions[optionName] = (0, ___extend_16[\"default\"])(actionOptions[optionName] || {}, (0, ___clone_16[\"default\"])(optionValue)); // set anabled field to true if it exists in the defaults\n\n if (__is_16.object(defaults.perAction[optionName]) && 'enabled' in defaults.perAction[optionName]) {\n actionOptions[optionName].enabled = optionValue.enabled !== false;\n }\n } // if the option value is a boolean and the default is an object\n else if (__is_16.bool(optionValue) && __is_16.object(defaults.perAction[optionName])) {\n actionOptions[optionName].enabled = optionValue;\n } // if it's anything else, do a plain assignment\n else {\n actionOptions[optionName] = optionValue;\n }\n }\n }\n /**\n * The default function to get an Interactables bounding rect. Can be\n * overridden using {@link Interactable.rectChecker}.\n *\n * @param {Element} [element] The element to measure.\n * @return {object} The object's bounding rectangle.\n */\n\n }, {\n key: \"getRect\",\n value: function getRect(element) {\n element = element || (__is_16.element(this.target) ? this.target : null);\n\n if (__is_16.string(this.target)) {\n element = element || this._context.querySelector(this.target);\n }\n\n return (0, _$domUtils_50.getElementRect)(element);\n }\n /**\n * Returns or sets the function used to calculate the interactable's\n * element's rectangle\n *\n * @param {function} [checker] A function which returns this Interactable's\n * bounding rectangle. See {@link Interactable.getRect}\n * @return {function | object} The checker function or this Interactable\n */\n\n }, {\n key: \"rectChecker\",\n value: function rectChecker(checker) {\n if (__is_16.func(checker)) {\n this.getRect = checker;\n return this;\n }\n\n if (checker === null) {\n delete this.getRect;\n return this;\n }\n\n return this.getRect;\n }\n }, {\n key: \"_backCompatOption\",\n value: function _backCompatOption(optionName, newValue) {\n if ((0, _$domUtils_50.trySelector)(newValue) || __is_16.object(newValue)) {\n this.options[optionName] = newValue;\n\n for (var _i = 0; _i < this._actions.names.length; _i++) {\n var _ref;\n\n _ref = this._actions.names[_i];\n var action = _ref;\n this.options[action][optionName] = newValue;\n }\n\n return this;\n }\n\n return this.options[optionName];\n }\n /**\n * Gets or sets the origin of the Interactable's element. The x and y\n * of the origin will be subtracted from action event coordinates.\n *\n * @param {Element | object | string} [origin] An HTML or SVG Element whose\n * rect will be used, an object eg. { x: 0, y: 0 } or string 'parent', 'self'\n * or any CSS selector\n *\n * @return {object} The current origin or this Interactable\n */\n\n }, {\n key: \"origin\",\n value: function origin(newValue) {\n return this._backCompatOption('origin', newValue);\n }\n /**\n * Returns or sets the mouse coordinate types used to calculate the\n * movement of the pointer.\n *\n * @param {string} [newValue] Use 'client' if you will be scrolling while\n * interacting; Use 'page' if you want autoScroll to work\n * @return {string | object} The current deltaSource or this Interactable\n */\n\n }, {\n key: \"deltaSource\",\n value: function deltaSource(newValue) {\n if (newValue === 'page' || newValue === 'client') {\n this.options.deltaSource = newValue;\n return this;\n }\n\n return this.options.deltaSource;\n }\n /**\n * Gets the selector context Node of the Interactable. The default is\n * `window.document`.\n *\n * @return {Node} The context Node of this Interactable\n */\n\n }, {\n key: \"context\",\n value: function context() {\n return this._context;\n }\n }, {\n key: \"inContext\",\n value: function inContext(element) {\n return this._context === element.ownerDocument || (0, _$domUtils_50.nodeContains)(this._context, element);\n }\n }, {\n key: \"testIgnoreAllow\",\n value: function testIgnoreAllow(options, targetNode, eventTarget) {\n return !this.testIgnore(options.ignoreFrom, targetNode, eventTarget) && this.testAllow(options.allowFrom, targetNode, eventTarget);\n }\n }, {\n key: \"testAllow\",\n value: function testAllow(allowFrom, targetNode, element) {\n if (!allowFrom) {\n return true;\n }\n\n if (!__is_16.element(element)) {\n return false;\n }\n\n if (__is_16.string(allowFrom)) {\n return (0, _$domUtils_50.matchesUpTo)(element, allowFrom, targetNode);\n } else if (__is_16.element(allowFrom)) {\n return (0, _$domUtils_50.nodeContains)(allowFrom, element);\n }\n\n return false;\n }\n }, {\n key: \"testIgnore\",\n value: function testIgnore(ignoreFrom, targetNode, element) {\n if (!ignoreFrom || !__is_16.element(element)) {\n return false;\n }\n\n if (__is_16.string(ignoreFrom)) {\n return (0, _$domUtils_50.matchesUpTo)(element, ignoreFrom, targetNode);\n } else if (__is_16.element(ignoreFrom)) {\n return (0, _$domUtils_50.nodeContains)(ignoreFrom, element);\n }\n\n return false;\n }\n /**\n * Calls listeners for the given InteractEvent type bound globally\n * and directly to this Interactable\n *\n * @param {InteractEvent} iEvent The InteractEvent object to be fired on this\n * Interactable\n * @return {Interactable} this Interactable\n */\n\n }, {\n key: \"fire\",\n value: function fire(iEvent) {\n this.events.fire(iEvent);\n return this;\n }\n }, {\n key: \"_onOff\",\n value: function _onOff(method, typeArg, listenerArg, options) {\n if (__is_16.object(typeArg) && !__is_16.array(typeArg)) {\n options = listenerArg;\n listenerArg = null;\n }\n\n var addRemove = method === 'on' ? 'add' : 'remove';\n var listeners = (0, ___normalizeListeners_16[\"default\"])(typeArg, listenerArg);\n\n for (var type in listeners) {\n if (type === 'wheel') {\n type = ___browser_16[\"default\"].wheelEvent;\n }\n\n for (var _i2 = 0; _i2 < listeners[type].length; _i2++) {\n var _ref2;\n\n _ref2 = listeners[type][_i2];\n var listener = _ref2;\n\n // if it is an action event type\n if (__arr_16.contains(this._actions.eventTypes, type)) {\n this.events[method](type, listener);\n } // delegated event\n else if (__is_16.string(this.target)) {\n ___events_16[\"default\"][\"\".concat(addRemove, \"Delegate\")](this.target, this._context, type, listener, options);\n } // remove listener from this Interatable's element\n else {\n ___events_16[\"default\"][addRemove](this.target, type, listener, options);\n }\n }\n }\n\n return this;\n }\n /**\n * Binds a listener for an InteractEvent, pointerEvent or DOM event.\n *\n * @param {string | array | object} types The types of events to listen\n * for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * addEventListener\n * @return {Interactable} This Interactable\n */\n\n }, {\n key: \"on\",\n value: function on(types, listener, options) {\n return this._onOff('on', types, listener, options);\n }\n /**\n * Removes an InteractEvent, pointerEvent or DOM event listener.\n *\n * @param {string | array | object} types The types of events that were\n * listened for\n * @param {function | array | object} [listener] The event listener function(s)\n * @param {object | boolean} [options] options object or useCapture flag for\n * removeEventListener\n * @return {Interactable} This Interactable\n */\n\n }, {\n key: \"off\",\n value: function off(types, listener, options) {\n return this._onOff('off', types, listener, options);\n }\n /**\n * Reset the options of this Interactable\n *\n * @param {object} options The new settings to apply\n * @return {object} This Interactable\n */\n\n }, {\n key: \"set\",\n value: function set(options) {\n var defaults = this._defaults;\n\n if (!__is_16.object(options)) {\n options = {};\n }\n\n this.options = (0, ___clone_16[\"default\"])(defaults.base);\n\n for (var actionName in this._actions.methodDict) {\n var methodName = this._actions.methodDict[actionName];\n this.options[actionName] = {};\n this.setPerAction(actionName, (0, ___extend_16[\"default\"])((0, ___extend_16[\"default\"])({}, defaults.perAction), defaults.actions[actionName]));\n this[methodName](options[actionName]);\n }\n\n for (var setting in options) {\n if (__is_16.func(this[setting])) {\n this[setting](options[setting]);\n }\n }\n\n return this;\n }\n /**\n * Remove this interactable from the list of interactables and remove it's\n * action capabilities and event listeners\n *\n * @return {interact}\n */\n\n }, {\n key: \"unset\",\n value: function unset() {\n ___events_16[\"default\"].remove(this.target, 'all');\n\n if (__is_16.string(this.target)) {\n // remove delegated events\n for (var type in ___events_16[\"default\"].delegatedEvents) {\n var delegated = ___events_16[\"default\"].delegatedEvents[type];\n\n if (delegated.selectors[0] === this.target && delegated.contexts[0] === this._context) {\n delegated.selectors.splice(0, 1);\n delegated.contexts.splice(0, 1);\n delegated.listeners.splice(0, 1); // remove the arrays if they are empty\n\n if (!delegated.selectors.length) {\n delegated[type] = null;\n }\n }\n\n ___events_16[\"default\"].remove(this._context, type, ___events_16[\"default\"].delegateListener);\n\n ___events_16[\"default\"].remove(this._context, type, ___events_16[\"default\"].delegateUseCapture, true);\n }\n } else {\n ___events_16[\"default\"].remove(this.target, 'all');\n }\n }\n }, {\n key: \"_defaults\",\n get: function get() {\n return {\n base: {},\n perAction: {},\n actions: {}\n };\n }\n }]);\n\n return Interactable;\n}();\n\n_$Interactable_16.Interactable = Interactable;\nvar ___default_16 = Interactable;\n_$Interactable_16[\"default\"] = ___default_16;\n\nvar _$InteractableSet_17 = {};\n\"use strict\";\n\nObject.defineProperty(_$InteractableSet_17, \"__esModule\", {\n value: true\n});\n_$InteractableSet_17[\"default\"] = void 0;\n\nvar __arr_17 = ___interopRequireWildcard_17(_$arr_46);\n\nvar __domUtils_17 = ___interopRequireWildcard_17(_$domUtils_50);\n\nvar ___extend_17 = ___interopRequireDefault_17(_$extend_52);\n\nvar __is_17 = ___interopRequireWildcard_17(_$is_56);\n\nvar ___Signals_17 = ___interopRequireDefault_17(_$Signals_45);\n\nfunction ___interopRequireDefault_17(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_17(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___classCallCheck_17(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_17(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_17(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_17(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_17(Constructor, staticProps); return Constructor; }\n\nvar InteractableSet =\n/*#__PURE__*/\nfunction () {\n function InteractableSet(scope) {\n var _this = this;\n\n ___classCallCheck_17(this, InteractableSet);\n\n this.scope = scope;\n this.signals = new ___Signals_17[\"default\"](); // all set interactables\n\n this.list = [];\n this.selectorMap = {};\n this.signals.on('unset', function (_ref) {\n var interactable = _ref.interactable;\n var target = interactable.target,\n context = interactable._context;\n var targetMappings = __is_17.string(target) ? _this.selectorMap[target] : target[_this.scope.id];\n var targetIndex = targetMappings.findIndex(function (m) {\n return m.context === context;\n });\n\n if (targetMappings[targetIndex]) {\n // Destroying mappingInfo's context and interactable\n targetMappings[targetIndex].context = null;\n targetMappings[targetIndex].interactable = null;\n }\n\n targetMappings.splice(targetIndex, 1);\n });\n }\n\n ___createClass_17(InteractableSet, [{\n key: \"new\",\n value: function _new(target, options) {\n options = (0, ___extend_17[\"default\"])(options || {}, {\n actions: this.scope.actions\n });\n var interactable = new this.scope.Interactable(target, options, this.scope.document);\n var mappingInfo = {\n context: interactable._context,\n interactable: interactable\n };\n this.scope.addDocument(interactable._doc);\n this.list.push(interactable);\n\n if (__is_17.string(target)) {\n if (!this.selectorMap[target]) {\n this.selectorMap[target] = [];\n }\n\n this.selectorMap[target].push(mappingInfo);\n } else {\n if (!interactable.target[this.scope.id]) {\n Object.defineProperty(target, this.scope.id, {\n value: [],\n configurable: true\n });\n }\n\n target[this.scope.id].push(mappingInfo);\n }\n\n this.signals.fire('new', {\n target: target,\n options: options,\n interactable: interactable,\n win: this.scope._win\n });\n return interactable;\n }\n }, {\n key: \"get\",\n value: function get(target, options) {\n var context = options && options.context || this.scope.document;\n var isSelector = __is_17.string(target);\n var targetMappings = isSelector ? this.selectorMap[target] : target[this.scope.id];\n\n if (!targetMappings) {\n return null;\n }\n\n var found = __arr_17.find(targetMappings, function (m) {\n return m.context === context && (isSelector || m.interactable.inContext(target));\n });\n return found && found.interactable;\n }\n }, {\n key: \"forEachMatch\",\n value: function forEachMatch(node, callback) {\n for (var _i = 0; _i < this.list.length; _i++) {\n var _ref2;\n\n _ref2 = this.list[_i];\n var interactable = _ref2;\n var ret = void 0;\n\n if ((__is_17.string(interactable.target) // target is a selector and the element matches\n ? __is_17.element(node) && __domUtils_17.matchesSelector(node, interactable.target) : // target is the element\n node === interactable.target) && // the element is in context\n interactable.inContext(node)) {\n ret = callback(interactable);\n }\n\n if (ret !== undefined) {\n return ret;\n }\n }\n }\n }]);\n\n return InteractableSet;\n}();\n\n_$InteractableSet_17[\"default\"] = InteractableSet;\n\nvar _$BaseEvent_13 = {};\n\"use strict\";\n\nObject.defineProperty(_$BaseEvent_13, \"__esModule\", {\n value: true\n});\n_$BaseEvent_13[\"default\"] = _$BaseEvent_13.BaseEvent = _$BaseEvent_13.EventPhase = void 0;\n\nfunction ___classCallCheck_13(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_13(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_13(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_13(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_13(Constructor, staticProps); return Constructor; }\n\nvar EventPhase;\n_$BaseEvent_13.EventPhase = EventPhase;\n\n(function (EventPhase) {\n EventPhase[\"Start\"] = \"start\";\n EventPhase[\"Move\"] = \"move\";\n EventPhase[\"End\"] = \"end\";\n EventPhase[\"_NONE\"] = \"\";\n})(EventPhase || (_$BaseEvent_13.EventPhase = EventPhase = {}));\n\nvar BaseEvent =\n/*#__PURE__*/\nfunction () {\n function BaseEvent(interaction) {\n ___classCallCheck_13(this, BaseEvent);\n\n this.immediatePropagationStopped = false;\n this.propagationStopped = false;\n this._interaction = interaction;\n }\n\n ___createClass_13(BaseEvent, [{\n key: \"preventDefault\",\n value: function preventDefault() {}\n /**\n * Don't call any other listeners (even on the current target)\n */\n\n }, {\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.propagationStopped = true;\n }\n /**\n * Don't call listeners on the remaining targets\n */\n\n }, {\n key: \"stopImmediatePropagation\",\n value: function stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n }, {\n key: \"interaction\",\n get: function get() {\n return this._interaction._proxy;\n }\n }]);\n\n return BaseEvent;\n}();\n\n_$BaseEvent_13.BaseEvent = BaseEvent;\nvar ___default_13 = BaseEvent;\n_$BaseEvent_13[\"default\"] = ___default_13;\n\nvar _$InteractEvent_15 = {};\n\"use strict\";\n\nObject.defineProperty(_$InteractEvent_15, \"__esModule\", {\n value: true\n});\n_$InteractEvent_15[\"default\"] = _$InteractEvent_15.InteractEvent = _$InteractEvent_15.EventPhase = void 0;\n\nvar ___extend_15 = ___interopRequireDefault_15(_$extend_52);\n\nvar ___getOriginXY_15 = ___interopRequireDefault_15(_$getOriginXY_53);\n\nvar ___hypot_15 = ___interopRequireDefault_15(_$hypot_54);\n\nvar _BaseEvent2 = ___interopRequireDefault_15(_$BaseEvent_13);\n\nvar _defaultOptions = ___interopRequireDefault_15(_$defaultOptions_20);\n\nfunction ___interopRequireDefault_15(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___typeof_15(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ___typeof_15 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_15 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ___typeof_15(obj); }\n\nfunction ___classCallCheck_15(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_15(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_15(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_15(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_15(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (___typeof_15(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar __EventPhase_15;\n_$InteractEvent_15.EventPhase = __EventPhase_15;\n\n(function (EventPhase) {\n EventPhase[\"Start\"] = \"start\";\n EventPhase[\"Move\"] = \"move\";\n EventPhase[\"End\"] = \"end\";\n EventPhase[\"_NONE\"] = \"\";\n})(__EventPhase_15 || (_$InteractEvent_15.EventPhase = __EventPhase_15 = {}));\n\nvar InteractEvent =\n/*#__PURE__*/\nfunction (_BaseEvent) {\n _inherits(InteractEvent, _BaseEvent);\n\n /** */\n function InteractEvent(interaction, event, actionName, phase, element, related, preEnd, type) {\n var _this;\n\n ___classCallCheck_15(this, InteractEvent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InteractEvent).call(this, interaction));\n element = element || interaction.element;\n var target = interaction.interactable; // FIXME: add deltaSource to defaults\n\n var deltaSource = (target && target.options || _defaultOptions[\"default\"]).deltaSource;\n var origin = (0, ___getOriginXY_15[\"default\"])(target, element, actionName);\n var starting = phase === 'start';\n var ending = phase === 'end';\n var prevEvent = starting ? _assertThisInitialized(_this) : interaction.prevEvent;\n var coords = starting ? interaction.coords.start : ending ? {\n page: prevEvent.page,\n client: prevEvent.client,\n timeStamp: interaction.coords.cur.timeStamp\n } : interaction.coords.cur;\n _this.page = (0, ___extend_15[\"default\"])({}, coords.page);\n _this.client = (0, ___extend_15[\"default\"])({}, coords.client);\n _this.rect = (0, ___extend_15[\"default\"])({}, interaction.rect);\n _this.timeStamp = coords.timeStamp;\n\n if (!ending) {\n _this.page.x -= origin.x;\n _this.page.y -= origin.y;\n _this.client.x -= origin.x;\n _this.client.y -= origin.y;\n }\n\n _this.ctrlKey = event.ctrlKey;\n _this.altKey = event.altKey;\n _this.shiftKey = event.shiftKey;\n _this.metaKey = event.metaKey;\n _this.button = event.button;\n _this.buttons = event.buttons;\n _this.target = element;\n _this.currentTarget = element;\n _this.relatedTarget = related || null;\n _this.preEnd = preEnd;\n _this.type = type || actionName + (phase || '');\n _this.interactable = target;\n _this.t0 = starting ? interaction.pointers[interaction.pointers.length - 1].downTime : prevEvent.t0;\n _this.x0 = interaction.coords.start.page.x - origin.x;\n _this.y0 = interaction.coords.start.page.y - origin.y;\n _this.clientX0 = interaction.coords.start.client.x - origin.x;\n _this.clientY0 = interaction.coords.start.client.y - origin.y;\n\n if (starting || ending) {\n _this.delta = {\n x: 0,\n y: 0\n };\n } else {\n _this.delta = {\n x: _this[deltaSource].x - prevEvent[deltaSource].x,\n y: _this[deltaSource].y - prevEvent[deltaSource].y\n };\n }\n\n _this.dt = interaction.coords.delta.timeStamp;\n _this.duration = _this.timeStamp - _this.t0; // velocity and speed in pixels per second\n\n _this.velocity = (0, ___extend_15[\"default\"])({}, interaction.coords.velocity[deltaSource]);\n _this.speed = (0, ___hypot_15[\"default\"])(_this.velocity.x, _this.velocity.y);\n _this.swipe = ending || phase === 'inertiastart' ? _this.getSwipe() : null;\n return _this;\n }\n\n ___createClass_15(InteractEvent, [{\n key: \"getSwipe\",\n value: function getSwipe() {\n var interaction = this._interaction;\n\n if (interaction.prevEvent.speed < 600 || this.timeStamp - interaction.prevEvent.timeStamp > 150) {\n return null;\n }\n\n var angle = 180 * Math.atan2(interaction.prevEvent.velocityY, interaction.prevEvent.velocityX) / Math.PI;\n var overlap = 22.5;\n\n if (angle < 0) {\n angle += 360;\n }\n\n var left = 135 - overlap <= angle && angle < 225 + overlap;\n var up = 225 - overlap <= angle && angle < 315 + overlap;\n var right = !left && (315 - overlap <= angle || angle < 45 + overlap);\n var down = !up && 45 - overlap <= angle && angle < 135 + overlap;\n return {\n up: up,\n down: down,\n left: left,\n right: right,\n angle: angle,\n speed: interaction.prevEvent.speed,\n velocity: {\n x: interaction.prevEvent.velocityX,\n y: interaction.prevEvent.velocityY\n }\n };\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault() {}\n /**\n * Don't call listeners on the remaining targets\n */\n\n }, {\n key: \"stopImmediatePropagation\",\n value: function stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n /**\n * Don't call any other listeners (even on the current target)\n */\n\n }, {\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.propagationStopped = true;\n }\n }, {\n key: \"pageX\",\n get: function get() {\n return this.page.x;\n },\n set: function set(value) {\n this.page.x = value;\n }\n }, {\n key: \"pageY\",\n get: function get() {\n return this.page.y;\n },\n set: function set(value) {\n this.page.y = value;\n }\n }, {\n key: \"clientX\",\n get: function get() {\n return this.client.x;\n },\n set: function set(value) {\n this.client.x = value;\n }\n }, {\n key: \"clientY\",\n get: function get() {\n return this.client.y;\n },\n set: function set(value) {\n this.client.y = value;\n }\n }, {\n key: \"dx\",\n get: function get() {\n return this.delta.x;\n },\n set: function set(value) {\n this.delta.x = value;\n }\n }, {\n key: \"dy\",\n get: function get() {\n return this.delta.y;\n },\n set: function set(value) {\n this.delta.y = value;\n }\n }, {\n key: \"velocityX\",\n get: function get() {\n return this.velocity.x;\n },\n set: function set(value) {\n this.velocity.x = value;\n }\n }, {\n key: \"velocityY\",\n get: function get() {\n return this.velocity.y;\n },\n set: function set(value) {\n this.velocity.y = value;\n }\n }]);\n\n return InteractEvent;\n}(_BaseEvent2[\"default\"]);\n\n_$InteractEvent_15.InteractEvent = InteractEvent;\nvar ___default_15 = InteractEvent;\n_$InteractEvent_15[\"default\"] = ___default_15;\n\nvar _$PointerInfo_19 = {};\n\"use strict\";\n\nObject.defineProperty(_$PointerInfo_19, \"__esModule\", {\n value: true\n});\n_$PointerInfo_19[\"default\"] = _$PointerInfo_19.PointerInfo = void 0;\n\nfunction ___classCallCheck_19(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PointerInfo = function PointerInfo(id, pointer, event, downTime, downTarget) {\n ___classCallCheck_19(this, PointerInfo);\n\n this.id = id;\n this.pointer = pointer;\n this.event = event;\n this.downTime = downTime;\n this.downTarget = downTarget;\n};\n\n_$PointerInfo_19.PointerInfo = PointerInfo;\nvar ___default_19 = PointerInfo;\n_$PointerInfo_19[\"default\"] = ___default_19;\n\nvar _$interactionFinder_22 = {};\n\"use strict\";\n\nObject.defineProperty(_$interactionFinder_22, \"__esModule\", {\n value: true\n});\n_$interactionFinder_22[\"default\"] = void 0;\n\nvar __dom_22 = ___interopRequireWildcard_22(_$domUtils_50);\n\nfunction ___interopRequireWildcard_22(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nvar finder = {\n methodOrder: ['simulationResume', 'mouseOrPen', 'hasPointer', 'idle'],\n search: function search(details) {\n for (var _i = 0; _i < finder.methodOrder.length; _i++) {\n var _ref;\n\n _ref = finder.methodOrder[_i];\n var method = _ref;\n var interaction = finder[method](details);\n\n if (interaction) {\n return interaction;\n }\n }\n },\n // try to resume simulation with a new pointer\n simulationResume: function simulationResume(_ref2) {\n var pointerType = _ref2.pointerType,\n eventType = _ref2.eventType,\n eventTarget = _ref2.eventTarget,\n scope = _ref2.scope;\n\n if (!/down|start/i.test(eventType)) {\n return null;\n }\n\n for (var _i2 = 0; _i2 < scope.interactions.list.length; _i2++) {\n var _ref3;\n\n _ref3 = scope.interactions.list[_i2];\n var interaction = _ref3;\n var element = eventTarget;\n\n if (interaction.simulation && interaction.simulation.allowResume && interaction.pointerType === pointerType) {\n while (element) {\n // if the element is the interaction element\n if (element === interaction.element) {\n return interaction;\n }\n\n element = __dom_22.parentNode(element);\n }\n }\n }\n\n return null;\n },\n // if it's a mouse or pen interaction\n mouseOrPen: function mouseOrPen(_ref4) {\n var pointerId = _ref4.pointerId,\n pointerType = _ref4.pointerType,\n eventType = _ref4.eventType,\n scope = _ref4.scope;\n\n if (pointerType !== 'mouse' && pointerType !== 'pen') {\n return null;\n }\n\n var firstNonActive;\n\n for (var _i3 = 0; _i3 < scope.interactions.list.length; _i3++) {\n var _ref5;\n\n _ref5 = scope.interactions.list[_i3];\n var interaction = _ref5;\n\n if (interaction.pointerType === pointerType) {\n // if it's a down event, skip interactions with running simulations\n if (interaction.simulation && !hasPointerId(interaction, pointerId)) {\n continue;\n } // if the interaction is active, return it immediately\n\n\n if (interaction.interacting()) {\n return interaction;\n } // otherwise save it and look for another active interaction\n else if (!firstNonActive) {\n firstNonActive = interaction;\n }\n }\n } // if no active mouse interaction was found use the first inactive mouse\n // interaction\n\n\n if (firstNonActive) {\n return firstNonActive;\n } // find any mouse or pen interaction.\n // ignore the interaction if the eventType is a *down, and a simulation\n // is active\n\n\n for (var _i4 = 0; _i4 < scope.interactions.list.length; _i4++) {\n var _ref6;\n\n _ref6 = scope.interactions.list[_i4];\n var _interaction = _ref6;\n\n if (_interaction.pointerType === pointerType && !(/down/i.test(eventType) && _interaction.simulation)) {\n return _interaction;\n }\n }\n\n return null;\n },\n // get interaction that has this pointer\n hasPointer: function hasPointer(_ref7) {\n var pointerId = _ref7.pointerId,\n scope = _ref7.scope;\n\n for (var _i5 = 0; _i5 < scope.interactions.list.length; _i5++) {\n var _ref8;\n\n _ref8 = scope.interactions.list[_i5];\n var interaction = _ref8;\n\n if (hasPointerId(interaction, pointerId)) {\n return interaction;\n }\n }\n\n return null;\n },\n // get first idle interaction with a matching pointerType\n idle: function idle(_ref9) {\n var pointerType = _ref9.pointerType,\n scope = _ref9.scope;\n\n for (var _i6 = 0; _i6 < scope.interactions.list.length; _i6++) {\n var _ref10;\n\n _ref10 = scope.interactions.list[_i6];\n var interaction = _ref10;\n\n // if there's already a pointer held down\n if (interaction.pointers.length === 1) {\n var target = interaction.interactable; // don't add this pointer if there is a target interactable and it\n // isn't gesturable\n\n if (target && !target.options.gesture.enabled) {\n continue;\n }\n } // maximum of 2 pointers per interaction\n else if (interaction.pointers.length >= 2) {\n continue;\n }\n\n if (!interaction.interacting() && pointerType === interaction.pointerType) {\n return interaction;\n }\n }\n\n return null;\n }\n};\n\nfunction hasPointerId(interaction, pointerId) {\n return interaction.pointers.some(function (_ref11) {\n var id = _ref11.id;\n return id === pointerId;\n });\n}\n\nvar ___default_22 = finder;\n_$interactionFinder_22[\"default\"] = ___default_22;\n\nvar _$drag_1 = {};\n\"use strict\";\n\nObject.defineProperty(_$drag_1, \"__esModule\", {\n value: true\n});\n_$drag_1[\"default\"] = void 0;\n\nvar ___scope_1 = _$scope_24({});\n\nvar __arr_1 = ___interopRequireWildcard_1(_$arr_46);\n\nvar __is_1 = ___interopRequireWildcard_1(_$is_56);\n\nfunction ___interopRequireWildcard_1(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\n___scope_1.ActionName.Drag = 'drag';\n\nfunction __install_1(scope) {\n var actions = scope.actions,\n Interactable = scope.Interactable,\n interactions = scope.interactions,\n defaults = scope.defaults;\n interactions.signals.on('before-action-move', beforeMove);\n interactions.signals.on('action-resume', beforeMove); // dragmove\n\n interactions.signals.on('action-move', move);\n Interactable.prototype.draggable = drag.draggable;\n actions[___scope_1.ActionName.Drag] = drag;\n actions.names.push(___scope_1.ActionName.Drag);\n __arr_1.merge(actions.eventTypes, ['dragstart', 'dragmove', 'draginertiastart', 'dragresume', 'dragend']);\n actions.methodDict.drag = 'draggable';\n defaults.actions.drag = drag.defaults;\n}\n\nfunction beforeMove(_ref) {\n var interaction = _ref.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n var axis = interaction.prepared.axis;\n\n if (axis === 'x') {\n interaction.coords.cur.page.y = interaction.coords.start.page.y;\n interaction.coords.cur.client.y = interaction.coords.start.client.y;\n interaction.coords.velocity.client.y = 0;\n interaction.coords.velocity.page.y = 0;\n } else if (axis === 'y') {\n interaction.coords.cur.page.x = interaction.coords.start.page.x;\n interaction.coords.cur.client.x = interaction.coords.start.client.x;\n interaction.coords.velocity.client.x = 0;\n interaction.coords.velocity.page.x = 0;\n }\n}\n\nfunction move(_ref2) {\n var iEvent = _ref2.iEvent,\n interaction = _ref2.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n var axis = interaction.prepared.axis;\n\n if (axis === 'x' || axis === 'y') {\n var opposite = axis === 'x' ? 'y' : 'x';\n iEvent.page[opposite] = interaction.coords.start.page[opposite];\n iEvent.client[opposite] = interaction.coords.start.client[opposite];\n iEvent.delta[opposite] = 0;\n }\n}\n/**\n * ```js\n * interact(element).draggable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // the axis in which the first movement must be\n * // for the drag sequence to start\n * // 'xy' by default - any direction\n * startAxis: 'x' || 'y' || 'xy',\n *\n * // 'xy' by default - don't restrict to one axis (move in any direction)\n * // 'x' or 'y' to restrict movement to either axis\n * // 'start' to restrict movement to the axis the drag started in\n * lockAxis: 'x' || 'y' || 'xy' || 'start',\n *\n * // max number of drags that can happen concurrently\n * // with elements of this Interactable. Infinity by default\n * max: Infinity,\n *\n * // max number of drags that can target the same element+Interactable\n * // 1 by default\n * maxPerElement: 2\n * })\n *\n * var isDraggable = interact('element').draggable(); // true\n * ```\n *\n * Get or set whether drag actions can be performed on the target\n *\n * @alias Interactable.prototype.draggable\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on drag events (object makes the Interactable\n * draggable)\n * @return {boolean | Interactable} boolean indicating if this can be the\n * target of drag events, or this Interctable\n */\n\n\nvar draggable = function draggable(options) {\n if (__is_1.object(options)) {\n this.options.drag.enabled = options.enabled !== false;\n this.setPerAction('drag', options);\n this.setOnEvents('drag', options);\n\n if (/^(xy|x|y|start)$/.test(options.lockAxis)) {\n this.options.drag.lockAxis = options.lockAxis;\n }\n\n if (/^(xy|x|y)$/.test(options.startAxis)) {\n this.options.drag.startAxis = options.startAxis;\n }\n\n return this;\n }\n\n if (__is_1.bool(options)) {\n this.options.drag.enabled = options;\n return this;\n }\n\n return this.options.drag;\n};\n\nvar drag = {\n id: 'actions/drag',\n install: __install_1,\n draggable: draggable,\n beforeMove: beforeMove,\n move: move,\n defaults: {\n startAxis: 'xy',\n lockAxis: 'xy'\n },\n checker: function checker(_pointer, _event, interactable) {\n var dragOptions = interactable.options.drag;\n return dragOptions.enabled ? {\n name: 'drag',\n axis: dragOptions.lockAxis === 'start' ? dragOptions.startAxis : dragOptions.lockAxis\n } : null;\n },\n getCursor: function getCursor() {\n return 'move';\n }\n};\nvar ___default_1 = drag;\n_$drag_1[\"default\"] = ___default_1;\n\nvar _$DropEvent_2 = {};\n\"use strict\";\n\nObject.defineProperty(_$DropEvent_2, \"__esModule\", {\n value: true\n});\n_$DropEvent_2[\"default\"] = void 0;\n\nvar ___BaseEvent2_2 = ___interopRequireDefault_2(_$BaseEvent_13);\n\nvar __arr_2 = ___interopRequireWildcard_2(_$arr_46);\n\nfunction ___interopRequireWildcard_2(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_2(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___typeof_2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ___typeof_2 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ___typeof_2(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ___classCallCheck_2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_2(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_2(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_2(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_2(Constructor, staticProps); return Constructor; }\n\nfunction ___possibleConstructorReturn_2(self, call) { if (call && (___typeof_2(call) === \"object\" || typeof call === \"function\")) { return call; } return ___assertThisInitialized_2(self); }\n\nfunction ___assertThisInitialized_2(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction ___getPrototypeOf_2(o) { ___getPrototypeOf_2 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ___getPrototypeOf_2(o); }\n\nfunction ___inherits_2(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ___setPrototypeOf_2(subClass, superClass); }\n\nfunction ___setPrototypeOf_2(o, p) { ___setPrototypeOf_2 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ___setPrototypeOf_2(o, p); }\n\nvar DropEvent =\n/*#__PURE__*/\nfunction (_BaseEvent) {\n ___inherits_2(DropEvent, _BaseEvent);\n\n /**\n * Class of events fired on dropzones during drags with acceptable targets.\n */\n function DropEvent(dropState, dragEvent, type) {\n var _this;\n\n ___classCallCheck_2(this, DropEvent);\n\n _this = ___possibleConstructorReturn_2(this, ___getPrototypeOf_2(DropEvent).call(this, dragEvent._interaction));\n _this.propagationStopped = false;\n _this.immediatePropagationStopped = false;\n\n var _ref = type === 'dragleave' ? dropState.prev : dropState.cur,\n element = _ref.element,\n dropzone = _ref.dropzone;\n\n _this.type = type;\n _this.target = element;\n _this.currentTarget = element;\n _this.dropzone = dropzone;\n _this.dragEvent = dragEvent;\n _this.relatedTarget = dragEvent.target;\n _this.draggable = dragEvent.interactable;\n _this.timeStamp = dragEvent.timeStamp;\n return _this;\n }\n /**\n * If this is a `dropactivate` event, the dropzone element will be\n * deactivated.\n *\n * If this is a `dragmove` or `dragenter`, a `dragleave` will be fired on the\n * dropzone element and more.\n */\n\n\n ___createClass_2(DropEvent, [{\n key: \"reject\",\n value: function reject() {\n var _this2 = this;\n\n var dropState = this._interaction.dropState;\n\n if (this.type !== 'dropactivate' && (!this.dropzone || dropState.cur.dropzone !== this.dropzone || dropState.cur.element !== this.target)) {\n return;\n }\n\n dropState.prev.dropzone = this.dropzone;\n dropState.prev.element = this.target;\n dropState.rejected = true;\n dropState.events.enter = null;\n this.stopImmediatePropagation();\n\n if (this.type === 'dropactivate') {\n var activeDrops = dropState.activeDrops;\n var index = __arr_2.findIndex(activeDrops, function (_ref2) {\n var dropzone = _ref2.dropzone,\n element = _ref2.element;\n return dropzone === _this2.dropzone && element === _this2.target;\n });\n dropState.activeDrops = [].concat(_toConsumableArray(activeDrops.slice(0, index)), _toConsumableArray(activeDrops.slice(index + 1)));\n var deactivateEvent = new DropEvent(dropState, this.dragEvent, 'dropdeactivate');\n deactivateEvent.dropzone = this.dropzone;\n deactivateEvent.target = this.target;\n this.dropzone.fire(deactivateEvent);\n } else {\n this.dropzone.fire(new DropEvent(dropState, this.dragEvent, 'dragleave'));\n }\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault() {}\n }, {\n key: \"stopPropagation\",\n value: function stopPropagation() {\n this.propagationStopped = true;\n }\n }, {\n key: \"stopImmediatePropagation\",\n value: function stopImmediatePropagation() {\n this.immediatePropagationStopped = this.propagationStopped = true;\n }\n }]);\n\n return DropEvent;\n}(___BaseEvent2_2[\"default\"]);\n\nvar ___default_2 = DropEvent;\n_$DropEvent_2[\"default\"] = ___default_2;\n\nvar _$drop_3 = {};\n\"use strict\";\n\nObject.defineProperty(_$drop_3, \"__esModule\", {\n value: true\n});\n_$drop_3[\"default\"] = void 0;\n\nvar __utils_3 = ___interopRequireWildcard_3(_$utils_55);\n\nvar _drag = ___interopRequireDefault_3(_$drag_1);\n\nvar _DropEvent = ___interopRequireDefault_3(_$DropEvent_2);\n\nfunction ___interopRequireDefault_3(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_3(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __install_3(scope) {\n var actions = scope.actions,\n interact = scope.interact,\n Interactable = scope.Interactable,\n interactions = scope.interactions,\n defaults = scope.defaults;\n scope.usePlugin(_drag[\"default\"]);\n interactions.signals.on('before-action-start', function (_ref) {\n var interaction = _ref.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null\n },\n prev: {\n dropzone: null,\n element: null\n },\n rejected: null,\n events: null,\n activeDrops: null\n };\n });\n interactions.signals.on('after-action-start', function (_ref2) {\n var interaction = _ref2.interaction,\n event = _ref2.event,\n dragEvent = _ref2.iEvent;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n var dropState = interaction.dropState; // reset active dropzones\n\n dropState.activeDrops = null;\n dropState.events = null;\n dropState.activeDrops = getActiveDrops(scope, interaction.element);\n dropState.events = getDropEvents(interaction, event, dragEvent);\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate);\n }\n }); // FIXME proper signal types\n\n interactions.signals.on('action-move', function (arg) {\n return onEventCreated(arg, scope);\n });\n interactions.signals.on('action-end', function (arg) {\n return onEventCreated(arg, scope);\n });\n interactions.signals.on('after-action-move', function (_ref3) {\n var interaction = _ref3.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n fireDropEvents(interaction, interaction.dropState.events);\n interaction.dropState.events = {};\n });\n interactions.signals.on('after-action-end', function (_ref4) {\n var interaction = _ref4.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n fireDropEvents(interaction, interaction.dropState.events);\n });\n interactions.signals.on('stop', function (_ref5) {\n var interaction = _ref5.interaction;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n }\n\n var dropState = interaction.dropState;\n\n if (dropState) {\n dropState.activeDrops = null;\n dropState.events = null;\n dropState.cur.dropzone = null;\n dropState.cur.element = null;\n dropState.prev.dropzone = null;\n dropState.prev.element = null;\n dropState.rejected = false;\n }\n });\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.dropzone = function (options) {\n return dropzoneMethod(this, options);\n };\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n\n\n Interactable.prototype.dropCheck = function (dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect);\n };\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n\n\n interact.dynamicDrop = function (newValue) {\n if (__utils_3.is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n scope.dynamicDrop = newValue;\n return interact;\n }\n\n return scope.dynamicDrop;\n };\n\n __utils_3.arr.merge(actions.eventTypes, ['dragenter', 'dragleave', 'dropactivate', 'dropdeactivate', 'dropmove', 'drop']);\n actions.methodDict.drop = 'dropzone';\n scope.dynamicDrop = false;\n defaults.actions.drop = drop.defaults;\n}\n\nfunction collectDrops(_ref6, draggableElement) {\n var interactables = _ref6.interactables;\n var drops = []; // collect all dropzones and their elements which qualify for a drop\n\n for (var _i = 0; _i < interactables.list.length; _i++) {\n var _ref7;\n\n _ref7 = interactables.list[_i];\n var dropzone = _ref7;\n\n if (!dropzone.options.drop.enabled) {\n continue;\n }\n\n var accept = dropzone.options.drop.accept; // test the draggable draggableElement against the dropzone's accept setting\n\n if (__utils_3.is.element(accept) && accept !== draggableElement || __utils_3.is.string(accept) && !__utils_3.dom.matchesSelector(draggableElement, accept) || __utils_3.is.func(accept) && !accept({\n dropzone: dropzone,\n draggableElement: draggableElement\n })) {\n continue;\n } // query for new elements if necessary\n\n\n var dropElements = __utils_3.is.string(dropzone.target) ? dropzone._context.querySelectorAll(dropzone.target) : __utils_3.is.array(dropzone.target) ? dropzone.target : [dropzone.target];\n\n for (var _i2 = 0; _i2 < dropElements.length; _i2++) {\n var _ref8;\n\n _ref8 = dropElements[_i2];\n var dropzoneElement = _ref8;\n\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone: dropzone,\n element: dropzoneElement\n });\n }\n }\n }\n\n return drops;\n}\n\nfunction fireActivationEvents(activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (var _i3 = 0; _i3 < activeDrops.length; _i3++) {\n var _ref9;\n\n _ref9 = activeDrops[_i3];\n var _ref10 = _ref9,\n dropzone = _ref10.dropzone,\n element = _ref10.element;\n event.dropzone = dropzone; // set current element as event target\n\n event.target = element;\n dropzone.fire(event);\n event.propagationStopped = event.immediatePropagationStopped = false;\n }\n} // return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\n\n\nfunction getActiveDrops(scope, dragElement) {\n // get dropzones and their elements that could receive the draggable\n var activeDrops = collectDrops(scope, dragElement);\n\n for (var _i4 = 0; _i4 < activeDrops.length; _i4++) {\n var _ref11;\n\n _ref11 = activeDrops[_i4];\n var activeDrop = _ref11;\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element);\n }\n\n return activeDrops;\n}\n\nfunction getDrop(_ref12, dragEvent, pointerEvent) {\n var dropState = _ref12.dropState,\n draggable = _ref12.interactable,\n dragElement = _ref12.element;\n var validDrops = []; // collect all dropzones and their elements which qualify for a drop\n\n for (var _i5 = 0; _i5 < dropState.activeDrops.length; _i5++) {\n var _ref13;\n\n _ref13 = dropState.activeDrops[_i5];\n var _ref14 = _ref13,\n dropzone = _ref14.dropzone,\n dropzoneElement = _ref14.element,\n rect = _ref14.rect;\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect) ? dropzoneElement : null);\n } // get the most appropriate dropzone based on DOM depth and order\n\n\n var dropIndex = __utils_3.dom.indexOfDeepestElement(validDrops);\n return dropState.activeDrops[dropIndex] || null;\n}\n\nfunction getDropEvents(interaction, _pointerEvent, dragEvent) {\n var dropState = interaction.dropState;\n var dropEvents = {\n enter: null,\n leave: null,\n activate: null,\n deactivate: null,\n move: null,\n drop: null\n };\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new _DropEvent[\"default\"](dropState, dragEvent, 'dropactivate');\n dropEvents.activate.target = null;\n dropEvents.activate.dropzone = null;\n }\n\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new _DropEvent[\"default\"](dropState, dragEvent, 'dropdeactivate');\n dropEvents.deactivate.target = null;\n dropEvents.deactivate.dropzone = null;\n }\n\n if (dropState.rejected) {\n return dropEvents;\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new _DropEvent[\"default\"](dropState, dragEvent, 'dragleave');\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element;\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone;\n } // if dropzone is not null, create a dragenter event\n\n\n if (dropState.cur.dropzone) {\n dropEvents.enter = new _DropEvent[\"default\"](dropState, dragEvent, 'dragenter');\n dragEvent.dragEnter = dropState.cur.element;\n dragEvent.dropzone = dropState.cur.dropzone;\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new _DropEvent[\"default\"](dropState, dragEvent, 'drop');\n dragEvent.dropzone = dropState.cur.dropzone;\n dragEvent.relatedTarget = dropState.cur.element;\n }\n\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new _DropEvent[\"default\"](dropState, dragEvent, 'dropmove');\n dropEvents.move.dragmove = dragEvent;\n dragEvent.dropzone = dropState.cur.dropzone;\n }\n\n return dropEvents;\n}\n\nfunction fireDropEvents(interaction, events) {\n var dropState = interaction.dropState;\n var activeDrops = dropState.activeDrops,\n cur = dropState.cur,\n prev = dropState.prev;\n\n if (events.leave) {\n prev.dropzone.fire(events.leave);\n }\n\n if (events.move) {\n cur.dropzone.fire(events.move);\n }\n\n if (events.enter) {\n cur.dropzone.fire(events.enter);\n }\n\n if (events.drop) {\n cur.dropzone.fire(events.drop);\n }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate);\n }\n\n dropState.prev.dropzone = cur.dropzone;\n dropState.prev.element = cur.element;\n}\n\nfunction onEventCreated(_ref15, scope) {\n var interaction = _ref15.interaction,\n iEvent = _ref15.iEvent,\n event = _ref15.event;\n\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') {\n return;\n }\n\n var dropState = interaction.dropState;\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element);\n }\n\n var dragEvent = iEvent;\n var dropResult = getDrop(interaction, dragEvent, event); // update rejected status\n\n dropState.rejected = dropState.rejected && !!dropResult && dropResult.dropzone === dropState.cur.dropzone && dropResult.element === dropState.cur.element;\n dropState.cur.dropzone = dropResult && dropResult.dropzone;\n dropState.cur.element = dropResult && dropResult.element;\n dropState.events = getDropEvents(interaction, event, dragEvent);\n}\n\nfunction dropzoneMethod(interactable, options) {\n if (__utils_3.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false;\n\n if (options.listeners) {\n var normalized = __utils_3.normalizeListeners(options.listeners); // rename 'drop' to '' as it will be prefixed with 'drop'\n\n var corrected = Object.keys(normalized).reduce(function (acc, type) {\n var correctedType = /^(enter|leave)/.test(type) ? \"drag\".concat(type) : /^(activate|deactivate|move)/.test(type) ? \"drop\".concat(type) : type;\n acc[correctedType] = normalized[type];\n return acc;\n }, {});\n interactable.off(interactable.options.drop.listeners);\n interactable.on(corrected);\n interactable.options.drop.listeners = corrected;\n }\n\n if (__utils_3.is.func(options.ondrop)) {\n interactable.on('drop', options.ondrop);\n }\n\n if (__utils_3.is.func(options.ondropactivate)) {\n interactable.on('dropactivate', options.ondropactivate);\n }\n\n if (__utils_3.is.func(options.ondropdeactivate)) {\n interactable.on('dropdeactivate', options.ondropdeactivate);\n }\n\n if (__utils_3.is.func(options.ondragenter)) {\n interactable.on('dragenter', options.ondragenter);\n }\n\n if (__utils_3.is.func(options.ondragleave)) {\n interactable.on('dragleave', options.ondragleave);\n }\n\n if (__utils_3.is.func(options.ondropmove)) {\n interactable.on('dropmove', options.ondropmove);\n }\n\n if (/^(pointer|center)$/.test(options.overlap)) {\n interactable.options.drop.overlap = options.overlap;\n } else if (__utils_3.is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0);\n }\n\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept;\n }\n\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker;\n }\n\n return interactable;\n }\n\n if (__utils_3.is.bool(options)) {\n interactable.options.drop.enabled = options;\n return interactable;\n }\n\n return interactable.options.drop;\n}\n\nfunction dropCheckMethod(interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n var dropped = false; // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return interactable.options.drop.checker ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement) : false;\n }\n\n var dropOverlap = interactable.options.drop.overlap;\n\n if (dropOverlap === 'pointer') {\n var origin = __utils_3.getOriginXY(draggable, draggableElement, 'drag');\n var page = __utils_3.pointer.getPageXY(dragEvent);\n page.x += origin.x;\n page.y += origin.y;\n var horizontal = page.x > rect.left && page.x < rect.right;\n var vertical = page.y > rect.top && page.y < rect.bottom;\n dropped = horizontal && vertical;\n }\n\n var dragRect = draggable.getRect(draggableElement);\n\n if (dragRect && dropOverlap === 'center') {\n var cx = dragRect.left + dragRect.width / 2;\n var cy = dragRect.top + dragRect.height / 2;\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom;\n }\n\n if (dragRect && __utils_3.is.number(dropOverlap)) {\n var overlapArea = Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) * Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top));\n var overlapRatio = overlapArea / (dragRect.width * dragRect.height);\n dropped = overlapRatio >= dropOverlap;\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement);\n }\n\n return dropped;\n}\n\nvar drop = {\n id: 'actions/drop',\n install: __install_3,\n getActiveDrops: getActiveDrops,\n getDrop: getDrop,\n getDropEvents: getDropEvents,\n fireDropEvents: fireDropEvents,\n defaults: {\n enabled: false,\n accept: null,\n overlap: 'pointer'\n }\n};\nvar ___default_3 = drop;\n_$drop_3[\"default\"] = ___default_3;\n\nvar _$gesture_4 = {};\n\"use strict\";\n\nObject.defineProperty(_$gesture_4, \"__esModule\", {\n value: true\n});\n_$gesture_4[\"default\"] = void 0;\n\nvar ___InteractEvent_4 = ___interopRequireDefault_4(_$InteractEvent_15);\n\nvar ___scope_4 = _$scope_24({});\n\nvar __utils_4 = ___interopRequireWildcard_4(_$utils_55);\n\nfunction ___interopRequireWildcard_4(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_4(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n___scope_4.ActionName.Gesture = 'gesture';\n\nfunction __install_4(scope) {\n var actions = scope.actions,\n Interactable = scope.Interactable,\n interactions = scope.interactions,\n defaults = scope.defaults;\n /**\n * ```js\n * interact(element).gesturable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * // limit multiple gestures.\n * // See the explanation in {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isGestureable = interact(element).gesturable()\n * ```\n *\n * Gets or sets whether multitouch gestures can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on gesture events (makes the Interactable gesturable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of gesture events, or this Interactable\n */\n\n Interactable.prototype.gesturable = function (options) {\n if (__utils_4.is.object(options)) {\n this.options.gesture.enabled = options.enabled !== false;\n this.setPerAction('gesture', options);\n this.setOnEvents('gesture', options);\n return this;\n }\n\n if (__utils_4.is.bool(options)) {\n this.options.gesture.enabled = options;\n return this;\n }\n\n return this.options.gesture;\n };\n\n interactions.signals.on('action-start', updateGestureProps);\n interactions.signals.on('action-move', updateGestureProps);\n interactions.signals.on('action-end', updateGestureProps);\n interactions.signals.on('new', function (_ref) {\n var interaction = _ref.interaction;\n interaction.gesture = {\n angle: 0,\n distance: 0,\n scale: 1,\n startAngle: 0,\n startDistance: 0\n };\n });\n actions[___scope_4.ActionName.Gesture] = gesture;\n actions.names.push(___scope_4.ActionName.Gesture);\n __utils_4.arr.merge(actions.eventTypes, ['gesturestart', 'gesturemove', 'gestureend']);\n actions.methodDict.gesture = 'gesturable';\n defaults.actions.gesture = gesture.defaults;\n}\n\nvar gesture = {\n id: 'actions/gesture',\n install: __install_4,\n defaults: {},\n checker: function checker(_pointer, _event, _interactable, _element, interaction) {\n if (interaction.pointers.length >= 2) {\n return {\n name: 'gesture'\n };\n }\n\n return null;\n },\n getCursor: function getCursor() {\n return '';\n }\n};\n\nfunction updateGestureProps(_ref2) {\n var interaction = _ref2.interaction,\n iEvent = _ref2.iEvent,\n event = _ref2.event,\n phase = _ref2.phase;\n\n if (interaction.prepared.name !== 'gesture') {\n return;\n }\n\n var pointers = interaction.pointers.map(function (p) {\n return p.pointer;\n });\n var starting = phase === 'start';\n var ending = phase === 'end';\n var deltaSource = interaction.interactable.options.deltaSource;\n iEvent.touches = [pointers[0], pointers[1]];\n\n if (starting) {\n iEvent.distance = __utils_4.pointer.touchDistance(pointers, deltaSource);\n iEvent.box = __utils_4.pointer.touchBBox(pointers);\n iEvent.scale = 1;\n iEvent.ds = 0;\n iEvent.angle = __utils_4.pointer.touchAngle(pointers, deltaSource);\n iEvent.da = 0;\n interaction.gesture.startDistance = iEvent.distance;\n interaction.gesture.startAngle = iEvent.angle;\n } else if (ending || event instanceof ___InteractEvent_4[\"default\"]) {\n var prevEvent = interaction.prevEvent;\n iEvent.distance = prevEvent.distance;\n iEvent.box = prevEvent.box;\n iEvent.scale = prevEvent.scale;\n iEvent.ds = 0;\n iEvent.angle = prevEvent.angle;\n iEvent.da = 0;\n } else {\n iEvent.distance = __utils_4.pointer.touchDistance(pointers, deltaSource);\n iEvent.box = __utils_4.pointer.touchBBox(pointers);\n iEvent.scale = iEvent.distance / interaction.gesture.startDistance;\n iEvent.angle = __utils_4.pointer.touchAngle(pointers, deltaSource);\n iEvent.ds = iEvent.scale - interaction.gesture.scale;\n iEvent.da = iEvent.angle - interaction.gesture.angle;\n }\n\n interaction.gesture.distance = iEvent.distance;\n interaction.gesture.angle = iEvent.angle;\n\n if (__utils_4.is.number(iEvent.scale) && iEvent.scale !== Infinity && !isNaN(iEvent.scale)) {\n interaction.gesture.scale = iEvent.scale;\n }\n}\n\nvar ___default_4 = gesture;\n_$gesture_4[\"default\"] = ___default_4;\n\nvar _$resize_6 = {};\n\"use strict\";\n\nObject.defineProperty(_$resize_6, \"__esModule\", {\n value: true\n});\n_$resize_6[\"default\"] = void 0;\n\nvar ___scope_6 = _$scope_24({});\n\nvar __utils_6 = ___interopRequireWildcard_6(_$utils_55);\n\nfunction ___interopRequireWildcard_6(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\n___scope_6.ActionName.Resize = 'resize';\n\nfunction __install_6(scope) {\n var actions = scope.actions,\n browser = scope.browser,\n Interactable = scope.Interactable,\n interactions = scope.interactions,\n defaults = scope.defaults; // Less Precision with touch input\n\n interactions.signals.on('new', function (interaction) {\n interaction.resizeAxes = 'xy';\n });\n interactions.signals.on('action-start', start);\n interactions.signals.on('action-move', __move_6);\n interactions.signals.on('action-start', updateEventAxes);\n interactions.signals.on('action-move', updateEventAxes);\n resize.cursors = initCursors(browser);\n resize.defaultMargin = browser.supportsTouch || browser.supportsPointerEvent ? 20 : 10;\n /**\n * ```js\n * interact(element).resizable({\n * onstart: function (event) {},\n * onmove : function (event) {},\n * onend : function (event) {},\n *\n * edges: {\n * top : true, // Use pointer coords to check for resize.\n * left : false, // Disable resizing from left edge.\n * bottom: '.resize-s',// Resize if pointer target matches selector\n * right : handleEl // Resize if pointer target is the given Element\n * },\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height are adjusted at a 1:1 ratio.\n * square: false,\n *\n * // Width and height can be adjusted independently. When `true`, width and\n * // height maintain the aspect ratio they had when resizing started.\n * preserveAspectRatio: false,\n *\n * // a value of 'none' will limit the resize rect to a minimum of 0x0\n * // 'negate' will allow the rect to have negative width/height\n * // 'reposition' will keep the width/height positive by swapping\n * // the top and bottom edges and/or swapping the left and right edges\n * invert: 'none' || 'negate' || 'reposition'\n *\n * // limit multiple resizes.\n * // See the explanation in the {@link Interactable.draggable} example\n * max: Infinity,\n * maxPerElement: 1,\n * })\n *\n * var isResizeable = interact(element).resizable()\n * ```\n *\n * Gets or sets whether resize actions can be performed on the target\n *\n * @param {boolean | object} [options] true/false or An object with event\n * listeners to be fired on resize events (object makes the Interactable\n * resizable)\n * @return {boolean | Interactable} A boolean indicating if this can be the\n * target of resize elements, or this Interactable\n */\n\n Interactable.prototype.resizable = function (options) {\n return resizable(this, options, scope);\n };\n\n actions[___scope_6.ActionName.Resize] = resize;\n actions.names.push(___scope_6.ActionName.Resize);\n __utils_6.arr.merge(actions.eventTypes, ['resizestart', 'resizemove', 'resizeinertiastart', 'resizeresume', 'resizeend']);\n actions.methodDict.resize = 'resizable';\n defaults.actions.resize = resize.defaults;\n}\n\nvar resize = {\n id: 'actions/resize',\n install: __install_6,\n defaults: {\n square: false,\n preserveAspectRatio: false,\n axis: 'xy',\n // use default margin\n margin: NaN,\n // object with props left, right, top, bottom which are\n // true/false values to resize when the pointer is over that edge,\n // CSS selectors to match the handles for each direction\n // or the Elements for each handle\n edges: null,\n // a value of 'none' will limit the resize rect to a minimum of 0x0\n // 'negate' will alow the rect to have negative width/height\n // 'reposition' will keep the width/height positive by swapping\n // the top and bottom edges and/or swapping the left and right edges\n invert: 'none'\n },\n checker: function checker(_pointer, _event, interactable, element, interaction, rect) {\n if (!rect) {\n return null;\n }\n\n var page = __utils_6.extend({}, interaction.coords.cur.page);\n var options = interactable.options;\n\n if (options.resize.enabled) {\n var resizeOptions = options.resize;\n var resizeEdges = {\n left: false,\n right: false,\n top: false,\n bottom: false\n }; // if using resize.edges\n\n if (__utils_6.is.object(resizeOptions.edges)) {\n for (var edge in resizeEdges) {\n resizeEdges[edge] = checkResizeEdge(edge, resizeOptions.edges[edge], page, interaction._latestPointer.eventTarget, element, rect, resizeOptions.margin || this.defaultMargin);\n }\n\n resizeEdges.left = resizeEdges.left && !resizeEdges.right;\n resizeEdges.top = resizeEdges.top && !resizeEdges.bottom;\n\n if (resizeEdges.left || resizeEdges.right || resizeEdges.top || resizeEdges.bottom) {\n return {\n name: 'resize',\n edges: resizeEdges\n };\n }\n } else {\n var right = options.resize.axis !== 'y' && page.x > rect.right - this.defaultMargin;\n var bottom = options.resize.axis !== 'x' && page.y > rect.bottom - this.defaultMargin;\n\n if (right || bottom) {\n return {\n name: 'resize',\n axes: (right ? 'x' : '') + (bottom ? 'y' : '')\n };\n }\n }\n }\n\n return null;\n },\n cursors: null,\n getCursor: function getCursor(action) {\n var cursors = resize.cursors;\n\n if (action.axis) {\n return cursors[action.name + action.axis];\n } else if (action.edges) {\n var cursorKey = '';\n var edgeNames = ['top', 'bottom', 'left', 'right'];\n\n for (var i = 0; i < 4; i++) {\n if (action.edges[edgeNames[i]]) {\n cursorKey += edgeNames[i];\n }\n }\n\n return cursors[cursorKey];\n }\n\n return null;\n },\n defaultMargin: null\n};\n\nfunction resizable(interactable, options, scope) {\n if (__utils_6.is.object(options)) {\n interactable.options.resize.enabled = options.enabled !== false;\n interactable.setPerAction('resize', options);\n interactable.setOnEvents('resize', options);\n\n if (__utils_6.is.string(options.axis) && /^x$|^y$|^xy$/.test(options.axis)) {\n interactable.options.resize.axis = options.axis;\n } else if (options.axis === null) {\n interactable.options.resize.axis = scope.defaults.actions.resize.axis;\n }\n\n if (__utils_6.is.bool(options.preserveAspectRatio)) {\n interactable.options.resize.preserveAspectRatio = options.preserveAspectRatio;\n } else if (__utils_6.is.bool(options.square)) {\n interactable.options.resize.square = options.square;\n }\n\n return interactable;\n }\n\n if (__utils_6.is.bool(options)) {\n interactable.options.resize.enabled = options;\n return interactable;\n }\n\n return interactable.options.resize;\n}\n\nfunction checkResizeEdge(name, value, page, element, interactableElement, rect, margin) {\n // false, '', undefined, null\n if (!value) {\n return false;\n } // true value, use pointer coords and element rect\n\n\n if (value === true) {\n // if dimensions are negative, \"switch\" edges\n var width = __utils_6.is.number(rect.width) ? rect.width : rect.right - rect.left;\n var height = __utils_6.is.number(rect.height) ? rect.height : rect.bottom - rect.top; // don't use margin greater than half the relevent dimension\n\n margin = Math.min(margin, (name === 'left' || name === 'right' ? width : height) / 2);\n\n if (width < 0) {\n if (name === 'left') {\n name = 'right';\n } else if (name === 'right') {\n name = 'left';\n }\n }\n\n if (height < 0) {\n if (name === 'top') {\n name = 'bottom';\n } else if (name === 'bottom') {\n name = 'top';\n }\n }\n\n if (name === 'left') {\n return page.x < (width >= 0 ? rect.left : rect.right) + margin;\n }\n\n if (name === 'top') {\n return page.y < (height >= 0 ? rect.top : rect.bottom) + margin;\n }\n\n if (name === 'right') {\n return page.x > (width >= 0 ? rect.right : rect.left) - margin;\n }\n\n if (name === 'bottom') {\n return page.y > (height >= 0 ? rect.bottom : rect.top) - margin;\n }\n } // the remaining checks require an element\n\n\n if (!__utils_6.is.element(element)) {\n return false;\n }\n\n return __utils_6.is.element(value) // the value is an element to use as a resize handle\n ? value === element // otherwise check if element matches value as selector\n : __utils_6.dom.matchesUpTo(element, value, interactableElement);\n}\n\nfunction initCursors(browser) {\n return browser.isIe9 ? {\n x: 'e-resize',\n y: 's-resize',\n xy: 'se-resize',\n top: 'n-resize',\n left: 'w-resize',\n bottom: 's-resize',\n right: 'e-resize',\n topleft: 'se-resize',\n bottomright: 'se-resize',\n topright: 'ne-resize',\n bottomleft: 'ne-resize'\n } : {\n x: 'ew-resize',\n y: 'ns-resize',\n xy: 'nwse-resize',\n top: 'ns-resize',\n left: 'ew-resize',\n bottom: 'ns-resize',\n right: 'ew-resize',\n topleft: 'nwse-resize',\n bottomright: 'nwse-resize',\n topright: 'nesw-resize',\n bottomleft: 'nesw-resize'\n };\n}\n\nfunction start(_ref) {\n var iEvent = _ref.iEvent,\n interaction = _ref.interaction;\n\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return;\n }\n\n var startRect = interaction.rect;\n var resizeOptions = interaction.interactable.options.resize;\n /*\n * When using the `resizable.square` or `resizable.preserveAspectRatio` options, resizing from one edge\n * will affect another. E.g. with `resizable.square`, resizing to make the right edge larger will make\n * the bottom edge larger by the same amount. We call these 'linked' edges. Any linked edges will depend\n * on the active edges and the edge being interacted with.\n */\n\n if (resizeOptions.square || resizeOptions.preserveAspectRatio) {\n var linkedEdges = __utils_6.extend({}, interaction.prepared.edges);\n linkedEdges.top = linkedEdges.top || linkedEdges.left && !linkedEdges.bottom;\n linkedEdges.left = linkedEdges.left || linkedEdges.top && !linkedEdges.right;\n linkedEdges.bottom = linkedEdges.bottom || linkedEdges.right && !linkedEdges.top;\n linkedEdges.right = linkedEdges.right || linkedEdges.bottom && !linkedEdges.left;\n interaction.prepared._linkedEdges = linkedEdges;\n } else {\n interaction.prepared._linkedEdges = null;\n } // if using `resizable.preserveAspectRatio` option, record aspect ratio at the start of the resize\n\n\n if (resizeOptions.preserveAspectRatio) {\n interaction.resizeStartAspectRatio = startRect.width / startRect.height;\n }\n\n interaction.resizeRects = {\n start: startRect,\n current: __utils_6.extend({}, startRect),\n inverted: __utils_6.extend({}, startRect),\n previous: __utils_6.extend({}, startRect),\n delta: {\n left: 0,\n right: 0,\n width: 0,\n top: 0,\n bottom: 0,\n height: 0\n }\n };\n iEvent.rect = interaction.resizeRects.inverted;\n iEvent.deltaRect = interaction.resizeRects.delta;\n}\n\nfunction __move_6(_ref2) {\n var iEvent = _ref2.iEvent,\n interaction = _ref2.interaction;\n\n if (interaction.prepared.name !== 'resize' || !interaction.prepared.edges) {\n return;\n }\n\n var resizeOptions = interaction.interactable.options.resize;\n var invert = resizeOptions.invert;\n var invertible = invert === 'reposition' || invert === 'negate';\n var edges = interaction.prepared.edges; // eslint-disable-next-line no-shadow\n\n var start = interaction.resizeRects.start;\n var current = interaction.resizeRects.current;\n var inverted = interaction.resizeRects.inverted;\n var deltaRect = interaction.resizeRects.delta;\n var previous = __utils_6.extend(interaction.resizeRects.previous, inverted);\n var originalEdges = edges;\n var eventDelta = __utils_6.extend({}, iEvent.delta);\n\n if (resizeOptions.preserveAspectRatio || resizeOptions.square) {\n // `resize.preserveAspectRatio` takes precedence over `resize.square`\n var startAspectRatio = resizeOptions.preserveAspectRatio ? interaction.resizeStartAspectRatio : 1;\n edges = interaction.prepared._linkedEdges;\n\n if (originalEdges.left && originalEdges.bottom || originalEdges.right && originalEdges.top) {\n eventDelta.y = -eventDelta.x / startAspectRatio;\n } else if (originalEdges.left || originalEdges.right) {\n eventDelta.y = eventDelta.x / startAspectRatio;\n } else if (originalEdges.top || originalEdges.bottom) {\n eventDelta.x = eventDelta.y * startAspectRatio;\n }\n } // update the 'current' rect without modifications\n\n\n if (edges.top) {\n current.top += eventDelta.y;\n }\n\n if (edges.bottom) {\n current.bottom += eventDelta.y;\n }\n\n if (edges.left) {\n current.left += eventDelta.x;\n }\n\n if (edges.right) {\n current.right += eventDelta.x;\n }\n\n if (invertible) {\n // if invertible, copy the current rect\n __utils_6.extend(inverted, current);\n\n if (invert === 'reposition') {\n // swap edge values if necessary to keep width/height positive\n var swap;\n\n if (inverted.top > inverted.bottom) {\n swap = inverted.top;\n inverted.top = inverted.bottom;\n inverted.bottom = swap;\n }\n\n if (inverted.left > inverted.right) {\n swap = inverted.left;\n inverted.left = inverted.right;\n inverted.right = swap;\n }\n }\n } else {\n // if not invertible, restrict to minimum of 0x0 rect\n inverted.top = Math.min(current.top, start.bottom);\n inverted.bottom = Math.max(current.bottom, start.top);\n inverted.left = Math.min(current.left, start.right);\n inverted.right = Math.max(current.right, start.left);\n }\n\n inverted.width = inverted.right - inverted.left;\n inverted.height = inverted.bottom - inverted.top;\n\n for (var edge in inverted) {\n deltaRect[edge] = inverted[edge] - previous[edge];\n }\n\n iEvent.edges = interaction.prepared.edges;\n iEvent.rect = inverted;\n iEvent.deltaRect = deltaRect;\n}\n\nfunction updateEventAxes(_ref3) {\n var interaction = _ref3.interaction,\n iEvent = _ref3.iEvent,\n action = _ref3.action;\n\n if (action !== 'resize' || !interaction.resizeAxes) {\n return;\n }\n\n var options = interaction.interactable.options;\n\n if (options.resize.square) {\n if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = iEvent.delta.y;\n } else {\n iEvent.delta.y = iEvent.delta.x;\n }\n\n iEvent.axes = 'xy';\n } else {\n iEvent.axes = interaction.resizeAxes;\n\n if (interaction.resizeAxes === 'x') {\n iEvent.delta.y = 0;\n } else if (interaction.resizeAxes === 'y') {\n iEvent.delta.x = 0;\n }\n }\n}\n\nvar ___default_6 = resize;\n_$resize_6[\"default\"] = ___default_6;\n\nvar _$actions_5 = {};\n\"use strict\";\n\nObject.defineProperty(_$actions_5, \"__esModule\", {\n value: true\n});\n_$actions_5.install = __install_5;\nObject.defineProperty(_$actions_5, \"drag\", {\n enumerable: true,\n get: function get() {\n return ___drag_5[\"default\"];\n }\n});\nObject.defineProperty(_$actions_5, \"drop\", {\n enumerable: true,\n get: function get() {\n return _drop[\"default\"];\n }\n});\nObject.defineProperty(_$actions_5, \"gesture\", {\n enumerable: true,\n get: function get() {\n return _gesture[\"default\"];\n }\n});\nObject.defineProperty(_$actions_5, \"resize\", {\n enumerable: true,\n get: function get() {\n return _resize[\"default\"];\n }\n});\n_$actions_5.id = void 0;\n\nvar ___drag_5 = ___interopRequireDefault_5(_$drag_1);\n\nvar _drop = ___interopRequireDefault_5(_$drop_3);\n\nvar _gesture = ___interopRequireDefault_5(_$gesture_4);\n\nvar _resize = ___interopRequireDefault_5(_$resize_6);\n\nfunction ___interopRequireDefault_5(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_5(scope) {\n scope.usePlugin(_gesture[\"default\"]);\n scope.usePlugin(_resize[\"default\"]);\n scope.usePlugin(___drag_5[\"default\"]);\n scope.usePlugin(_drop[\"default\"]);\n}\n\nvar id = 'actions';\n_$actions_5.id = id;\n\nvar _$autoScroll_7 = {};\n\"use strict\";\n\nObject.defineProperty(_$autoScroll_7, \"__esModule\", {\n value: true\n});\n_$autoScroll_7.getContainer = getContainer;\n_$autoScroll_7.getScroll = getScroll;\n_$autoScroll_7.getScrollSize = getScrollSize;\n_$autoScroll_7.getScrollSizeDelta = getScrollSizeDelta;\n_$autoScroll_7[\"default\"] = void 0;\n\nvar __domUtils_7 = ___interopRequireWildcard_7(_$domUtils_50);\n\nvar __is_7 = ___interopRequireWildcard_7(_$is_56);\n\nvar ___raf_7 = ___interopRequireDefault_7(_$raf_61);\n\n/* removed: var _$rect_62 = require(\"@interactjs/utils/rect\"); */;\n\n/* removed: var _$window_65 = require(\"@interactjs/utils/window\"); */;\n\nfunction ___interopRequireDefault_7(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_7(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __install_7(scope) {\n var interactions = scope.interactions,\n defaults = scope.defaults,\n actions = scope.actions;\n scope.autoScroll = autoScroll;\n\n autoScroll.now = function () {\n return scope.now();\n };\n\n interactions.signals.on('new', function (_ref) {\n var interaction = _ref.interaction;\n interaction.autoScroll = null;\n });\n interactions.signals.on('destroy', function (_ref2) {\n var interaction = _ref2.interaction;\n interaction.autoScroll = null;\n autoScroll.stop();\n\n if (autoScroll.interaction) {\n autoScroll.interaction = null;\n }\n });\n interactions.signals.on('stop', autoScroll.stop);\n interactions.signals.on('action-move', function (arg) {\n return autoScroll.onInteractionMove(arg);\n });\n actions.eventTypes.push('autoscroll');\n defaults.perAction.autoScroll = autoScroll.defaults;\n}\n\nvar autoScroll = {\n defaults: {\n enabled: false,\n margin: 60,\n // the item that is scrolled (Window or HTMLElement)\n container: null,\n // the scroll speed in pixels per second\n speed: 300\n },\n now: Date.now,\n interaction: null,\n i: null,\n x: 0,\n y: 0,\n isScrolling: false,\n prevTime: 0,\n margin: 0,\n speed: 0,\n start: function start(interaction) {\n autoScroll.isScrolling = true;\n\n ___raf_7[\"default\"].cancel(autoScroll.i);\n\n interaction.autoScroll = autoScroll;\n autoScroll.interaction = interaction;\n autoScroll.prevTime = autoScroll.now();\n autoScroll.i = ___raf_7[\"default\"].request(autoScroll.scroll);\n },\n stop: function stop() {\n autoScroll.isScrolling = false;\n\n if (autoScroll.interaction) {\n autoScroll.interaction.autoScroll = null;\n }\n\n ___raf_7[\"default\"].cancel(autoScroll.i);\n },\n // scroll the window by the values in scroll.x/y\n scroll: function scroll() {\n var interaction = autoScroll.interaction;\n var interactable = interaction.interactable,\n element = interaction.element;\n var options = interactable.options[autoScroll.interaction.prepared.name].autoScroll;\n var container = getContainer(options.container, interactable, element);\n var now = autoScroll.now(); // change in time in seconds\n\n var dt = (now - autoScroll.prevTime) / 1000; // displacement\n\n var s = options.speed * dt;\n\n if (s >= 1) {\n var scrollBy = {\n x: autoScroll.x * s,\n y: autoScroll.y * s\n };\n\n if (scrollBy.x || scrollBy.y) {\n var prevScroll = getScroll(container);\n\n if (__is_7.window(container)) {\n container.scrollBy(scrollBy.x, scrollBy.y);\n } else if (container) {\n container.scrollLeft += scrollBy.x;\n container.scrollTop += scrollBy.y;\n }\n\n var curScroll = getScroll(container);\n var delta = {\n x: curScroll.x - prevScroll.x,\n y: curScroll.y - prevScroll.y\n };\n\n if (delta.x || delta.y) {\n interactable.fire({\n type: 'autoscroll',\n target: element,\n interactable: interactable,\n delta: delta,\n interaction: interaction,\n container: container\n });\n }\n }\n\n autoScroll.prevTime = now;\n }\n\n if (autoScroll.isScrolling) {\n ___raf_7[\"default\"].cancel(autoScroll.i);\n\n autoScroll.i = ___raf_7[\"default\"].request(autoScroll.scroll);\n }\n },\n check: function check(interactable, actionName) {\n var options = interactable.options;\n return options[actionName].autoScroll && options[actionName].autoScroll.enabled;\n },\n onInteractionMove: function onInteractionMove(_ref3) {\n var interaction = _ref3.interaction,\n pointer = _ref3.pointer;\n\n if (!(interaction.interacting() && autoScroll.check(interaction.interactable, interaction.prepared.name))) {\n return;\n }\n\n if (interaction.simulation) {\n autoScroll.x = autoScroll.y = 0;\n return;\n }\n\n var top;\n var right;\n var bottom;\n var left;\n var interactable = interaction.interactable,\n element = interaction.element;\n var options = interactable.options[interaction.prepared.name].autoScroll;\n var container = getContainer(options.container, interactable, element);\n\n if (__is_7.window(container)) {\n left = pointer.clientX < autoScroll.margin;\n top = pointer.clientY < autoScroll.margin;\n right = pointer.clientX > container.innerWidth - autoScroll.margin;\n bottom = pointer.clientY > container.innerHeight - autoScroll.margin;\n } else {\n var rect = __domUtils_7.getElementClientRect(container);\n left = pointer.clientX < rect.left + autoScroll.margin;\n top = pointer.clientY < rect.top + autoScroll.margin;\n right = pointer.clientX > rect.right - autoScroll.margin;\n bottom = pointer.clientY > rect.bottom - autoScroll.margin;\n }\n\n autoScroll.x = right ? 1 : left ? -1 : 0;\n autoScroll.y = bottom ? 1 : top ? -1 : 0;\n\n if (!autoScroll.isScrolling) {\n // set the autoScroll properties to those of the target\n autoScroll.margin = options.margin;\n autoScroll.speed = options.speed;\n autoScroll.start(interaction);\n }\n }\n};\n\nfunction getContainer(value, interactable, element) {\n return (__is_7.string(value) ? (0, _$rect_62.getStringOptionResult)(value, interactable, element) : value) || (0, _$window_65.getWindow)(element);\n}\n\nfunction getScroll(container) {\n if (__is_7.window(container)) {\n container = window.document.body;\n }\n\n return {\n x: container.scrollLeft,\n y: container.scrollTop\n };\n}\n\nfunction getScrollSize(container) {\n if (__is_7.window(container)) {\n container = window.document.body;\n }\n\n return {\n x: container.scrollWidth,\n y: container.scrollHeight\n };\n}\n\nfunction getScrollSizeDelta(_ref4, func) {\n var interaction = _ref4.interaction,\n element = _ref4.element;\n var scrollOptions = interaction && interaction.interactable.options[interaction.prepared.name].autoScroll;\n\n if (!scrollOptions || !scrollOptions.enabled) {\n func();\n return {\n x: 0,\n y: 0\n };\n }\n\n var scrollContainer = getContainer(scrollOptions.container, interaction.interactable, element);\n var prevSize = getScroll(scrollContainer);\n func();\n var curSize = getScroll(scrollContainer);\n return {\n x: curSize.x - prevSize.x,\n y: curSize.y - prevSize.y\n };\n}\n\nvar ___default_7 = {\n id: 'auto-scroll',\n install: __install_7\n};\n_$autoScroll_7[\"default\"] = ___default_7;\n\nvar _$InteractableMethods_8 = {};\n\"use strict\";\n\nObject.defineProperty(_$InteractableMethods_8, \"__esModule\", {\n value: true\n});\n_$InteractableMethods_8[\"default\"] = void 0;\n\n/* removed: var _$utils_55 = require(\"@interactjs/utils\"); */;\n\nvar __is_8 = ___interopRequireWildcard_8(_$is_56);\n\nfunction ___interopRequireWildcard_8(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __install_8(scope) {\n var Interactable = scope.Interactable,\n actions = scope.actions;\n Interactable.prototype.getAction = getAction;\n /**\n * ```js\n * interact(element, { ignoreFrom: document.getElementById('no-action') })\n * // or\n * interact(element).ignoreFrom('input, textarea, a')\n * ```\n * @deprecated\n * If the target of the `mousedown`, `pointerdown` or `touchstart` event or any\n * of it's parents match the given CSS selector or Element, no\n * drag/resize/gesture is started.\n *\n * Don't use this method. Instead set the `ignoreFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .draggable({\n * ignoreFrom: 'input, textarea, a[href]'',\n * })\n * .pointerEvents({\n * ignoreFrom: '[no-pointer]',\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to not ignore any elements\n * @return {string | Element | object} The current ignoreFrom value or this\n * Interactable\n */\n\n Interactable.prototype.ignoreFrom = (0, _$utils_55.warnOnce)(function (newValue) {\n return this._backCompatOption('ignoreFrom', newValue);\n }, 'Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue}).');\n /**\n * @deprecated\n *\n * A drag/resize/gesture is started only If the target of the `mousedown`,\n * `pointerdown` or `touchstart` event or any of it's parents match the given\n * CSS selector or Element.\n *\n * Don't use this method. Instead set the `allowFrom` option for each action\n * or for `pointerEvents`\n *\n * @example\n * interact(targett)\n * .resizable({\n * allowFrom: '.resize-handle',\n * .pointerEvents({\n * allowFrom: '.handle',,\n * })\n *\n * @param {string | Element | null} [newValue] a CSS selector string, an\n * Element or `null` to allow from any element\n * @return {string | Element | object} The current allowFrom value or this\n * Interactable\n */\n\n Interactable.prototype.allowFrom = (0, _$utils_55.warnOnce)(function (newValue) {\n return this._backCompatOption('allowFrom', newValue);\n }, 'Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue}).');\n /**\n * ```js\n * interact('.resize-drag')\n * .resizable(true)\n * .draggable(true)\n * .actionChecker(function (pointer, event, action, interactable, element, interaction) {\n *\n * if (interact.matchesSelector(event.target, '.drag-handle')) {\n * // force drag with handle target\n * action.name = drag\n * }\n * else {\n * // resize from the top and right edges\n * action.name = 'resize'\n * action.edges = { top: true, right: true }\n * }\n *\n * return action\n * })\n * ```\n *\n * Returns or sets the function used to check action to be performed on\n * pointerDown\n *\n * @param {function | null} [checker] A function which takes a pointer event,\n * defaultAction string, interactable, element and interaction as parameters\n * and returns an object with name property 'drag' 'resize' or 'gesture' and\n * optionally an `edges` object with boolean 'top', 'left', 'bottom' and right\n * props.\n * @return {Function | Interactable} The checker function or this Interactable\n */\n\n Interactable.prototype.actionChecker = actionChecker;\n /**\n * Returns or sets whether the the cursor should be changed depending on the\n * action that would be performed if the mouse were pressed and dragged.\n *\n * @param {boolean} [newValue]\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.styleCursor = styleCursor;\n\n Interactable.prototype.defaultActionChecker = function (pointer, event, interaction, element) {\n return defaultActionChecker(this, pointer, event, interaction, element, actions);\n };\n}\n\nfunction getAction(pointer, event, interaction, element) {\n var action = this.defaultActionChecker(pointer, event, interaction, element);\n\n if (this.options.actionChecker) {\n return this.options.actionChecker(pointer, event, action, this, element, interaction);\n }\n\n return action;\n}\n\nfunction defaultActionChecker(interactable, pointer, event, interaction, element, actions) {\n var rect = interactable.getRect(element);\n var buttons = event.buttons || {\n 0: 1,\n 1: 4,\n 3: 8,\n 4: 16\n }[event.button];\n var action = null;\n\n for (var _i = 0; _i < actions.names.length; _i++) {\n var _ref;\n\n _ref = actions.names[_i];\n var actionName = _ref;\n\n // check mouseButton setting if the pointer is down\n if (interaction.pointerIsDown && /mouse|pointer/.test(interaction.pointerType) && (buttons & interactable.options[actionName].mouseButtons) === 0) {\n continue;\n }\n\n action = actions[actionName].checker(pointer, event, interactable, element, interaction, rect);\n\n if (action) {\n return action;\n }\n }\n}\n\nfunction styleCursor(newValue) {\n if (__is_8.bool(newValue)) {\n this.options.styleCursor = newValue;\n return this;\n }\n\n if (newValue === null) {\n delete this.options.styleCursor;\n return this;\n }\n\n return this.options.styleCursor;\n}\n\nfunction actionChecker(checker) {\n if (__is_8.func(checker)) {\n this.options.actionChecker = checker;\n return this;\n }\n\n if (checker === null) {\n delete this.options.actionChecker;\n return this;\n }\n\n return this.options.actionChecker;\n}\n\nvar ___default_8 = {\n id: 'auto-start/interactableMethods',\n install: __install_8\n};\n_$InteractableMethods_8[\"default\"] = ___default_8;\n\nvar _$base_9 = {};\n\"use strict\";\n\nObject.defineProperty(_$base_9, \"__esModule\", {\n value: true\n});\n_$base_9[\"default\"] = void 0;\n\nvar __utils_9 = ___interopRequireWildcard_9(_$utils_55);\n\nvar _InteractableMethods = ___interopRequireDefault_9(_$InteractableMethods_8);\n\nfunction ___interopRequireDefault_9(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_9(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __install_9(scope) {\n var interact = scope.interact,\n interactions = scope.interactions,\n defaults = scope.defaults;\n scope.usePlugin(_InteractableMethods[\"default\"]); // set cursor style on mousedown\n\n interactions.signals.on('down', function (_ref) {\n var interaction = _ref.interaction,\n pointer = _ref.pointer,\n event = _ref.event,\n eventTarget = _ref.eventTarget;\n\n if (interaction.interacting()) {\n return;\n }\n\n var actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n prepare(interaction, actionInfo, scope);\n }); // set cursor style on mousemove\n\n interactions.signals.on('move', function (_ref2) {\n var interaction = _ref2.interaction,\n pointer = _ref2.pointer,\n event = _ref2.event,\n eventTarget = _ref2.eventTarget;\n\n if (interaction.pointerType !== 'mouse' || interaction.pointerIsDown || interaction.interacting()) {\n return;\n }\n\n var actionInfo = getActionInfo(interaction, pointer, event, eventTarget, scope);\n prepare(interaction, actionInfo, scope);\n });\n interactions.signals.on('move', function (arg) {\n var interaction = arg.interaction;\n\n if (!interaction.pointerIsDown || interaction.interacting() || !interaction.pointerWasMoved || !interaction.prepared.name) {\n return;\n }\n\n scope.autoStart.signals.fire('before-start', arg);\n var interactable = interaction.interactable;\n\n if (interaction.prepared.name && interactable) {\n // check manualStart and interaction limit\n if (interactable.options[interaction.prepared.name].manualStart || !withinInteractionLimit(interactable, interaction.element, interaction.prepared, scope)) {\n interaction.stop();\n } else {\n interaction.start(interaction.prepared, interactable, interaction.element);\n }\n }\n });\n interactions.signals.on('stop', function (_ref3) {\n var interaction = _ref3.interaction;\n var interactable = interaction.interactable;\n\n if (interactable && interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope);\n }\n });\n defaults.base.actionChecker = null;\n defaults.base.styleCursor = true;\n __utils_9.extend(defaults.perAction, {\n manualStart: false,\n max: Infinity,\n maxPerElement: 1,\n allowFrom: null,\n ignoreFrom: null,\n // only allow left button by default\n // see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#Return_value\n mouseButtons: 1\n });\n /**\n * Returns or sets the maximum number of concurrent interactions allowed. By\n * default only 1 interaction is allowed at a time (for backwards\n * compatibility). To allow multiple interactions on the same Interactables and\n * elements, you need to enable it in the draggable, resizable and gesturable\n * `'max'` and `'maxPerElement'` options.\n *\n * @alias module:interact.maxInteractions\n *\n * @param {number} [newValue] Any number. newValue <= 0 means no interactions.\n */\n\n interact.maxInteractions = function (newValue) {\n return maxInteractions(newValue, scope);\n };\n\n scope.autoStart = {\n // Allow this many interactions to happen simultaneously\n maxInteractions: Infinity,\n withinInteractionLimit: withinInteractionLimit,\n cursorElement: null,\n signals: new __utils_9.Signals()\n };\n} // Check if the current interactable supports the action.\n// If so, return the validated action. Otherwise, return null\n\n\nfunction validateAction(action, interactable, element, eventTarget, scope) {\n if (interactable.testIgnoreAllow(interactable.options[action.name], element, eventTarget) && interactable.options[action.name].enabled && withinInteractionLimit(interactable, element, action, scope)) {\n return action;\n }\n\n return null;\n}\n\nfunction validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope) {\n for (var i = 0, len = matches.length; i < len; i++) {\n var match = matches[i];\n var matchElement = matchElements[i];\n var matchAction = match.getAction(pointer, event, interaction, matchElement);\n\n if (!matchAction) {\n continue;\n }\n\n var action = validateAction(matchAction, match, matchElement, eventTarget, scope);\n\n if (action) {\n return {\n action: action,\n interactable: match,\n element: matchElement\n };\n }\n }\n\n return {\n action: null,\n interactable: null,\n element: null\n };\n}\n\nfunction getActionInfo(interaction, pointer, event, eventTarget, scope) {\n var matches = [];\n var matchElements = [];\n var element = eventTarget;\n\n function pushMatches(interactable) {\n matches.push(interactable);\n matchElements.push(element);\n }\n\n while (__utils_9.is.element(element)) {\n matches = [];\n matchElements = [];\n scope.interactables.forEachMatch(element, pushMatches);\n var actionInfo = validateMatches(interaction, pointer, event, matches, matchElements, eventTarget, scope);\n\n if (actionInfo.action && !actionInfo.interactable.options[actionInfo.action.name].manualStart) {\n return actionInfo;\n }\n\n element = __utils_9.dom.parentNode(element);\n }\n\n return {\n action: null,\n interactable: null,\n element: null\n };\n}\n\nfunction prepare(interaction, _ref4, scope) {\n var action = _ref4.action,\n interactable = _ref4.interactable,\n element = _ref4.element;\n action = action || {};\n\n if (interaction.interactable && interaction.interactable.options.styleCursor) {\n setCursor(interaction.element, '', scope);\n }\n\n interaction.interactable = interactable;\n interaction.element = element;\n __utils_9.copyAction(interaction.prepared, action);\n interaction.rect = interactable && action.name ? interactable.getRect(element) : null;\n\n if (interactable && interactable.options.styleCursor) {\n var cursor = action ? scope.actions[action.name].getCursor(action) : '';\n setCursor(interaction.element, cursor, scope);\n }\n\n scope.autoStart.signals.fire('prepared', {\n interaction: interaction\n });\n}\n\nfunction withinInteractionLimit(interactable, element, action, scope) {\n var options = interactable.options;\n var maxActions = options[action.name].max;\n var maxPerElement = options[action.name].maxPerElement;\n var autoStartMax = scope.autoStart.maxInteractions;\n var activeInteractions = 0;\n var interactableCount = 0;\n var elementCount = 0; // no actions if any of these values == 0\n\n if (!(maxActions && maxPerElement && autoStartMax)) {\n return false;\n }\n\n for (var _i = 0; _i < scope.interactions.list.length; _i++) {\n var _ref5;\n\n _ref5 = scope.interactions.list[_i];\n var interaction = _ref5;\n var otherAction = interaction.prepared.name;\n\n if (!interaction.interacting()) {\n continue;\n }\n\n activeInteractions++;\n\n if (activeInteractions >= autoStartMax) {\n return false;\n }\n\n if (interaction.interactable !== interactable) {\n continue;\n }\n\n interactableCount += otherAction === action.name ? 1 : 0;\n\n if (interactableCount >= maxActions) {\n return false;\n }\n\n if (interaction.element === element) {\n elementCount++;\n\n if (otherAction === action.name && elementCount >= maxPerElement) {\n return false;\n }\n }\n }\n\n return autoStartMax > 0;\n}\n\nfunction maxInteractions(newValue, scope) {\n if (__utils_9.is.number(newValue)) {\n scope.autoStart.maxInteractions = newValue;\n return this;\n }\n\n return scope.autoStart.maxInteractions;\n}\n\nfunction setCursor(element, cursor, scope) {\n if (scope.autoStart.cursorElement) {\n scope.autoStart.cursorElement.style.cursor = '';\n }\n\n element.ownerDocument.documentElement.style.cursor = cursor;\n element.style.cursor = cursor;\n scope.autoStart.cursorElement = cursor ? element : null;\n}\n\nvar ___default_9 = {\n id: 'auto-start/base',\n install: __install_9,\n maxInteractions: maxInteractions,\n withinInteractionLimit: withinInteractionLimit,\n validateAction: validateAction\n};\n_$base_9[\"default\"] = ___default_9;\n\nvar _$dragAxis_10 = {};\n\"use strict\";\n\nObject.defineProperty(_$dragAxis_10, \"__esModule\", {\n value: true\n});\n_$dragAxis_10[\"default\"] = void 0;\n\nvar ___scope_10 = _$scope_24({});\n\n/* removed: var _$domUtils_50 = require(\"@interactjs/utils/domUtils\"); */;\n\nvar __is_10 = ___interopRequireWildcard_10(_$is_56);\n\nvar _base = ___interopRequireDefault_10(_$base_9);\n\nfunction ___interopRequireDefault_10(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_10(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __install_10(scope) {\n scope.autoStart.signals.on('before-start', function (_ref) {\n var interaction = _ref.interaction,\n eventTarget = _ref.eventTarget,\n dx = _ref.dx,\n dy = _ref.dy;\n\n if (interaction.prepared.name !== 'drag') {\n return;\n } // check if a drag is in the correct axis\n\n\n var absX = Math.abs(dx);\n var absY = Math.abs(dy);\n var targetOptions = interaction.interactable.options.drag;\n var startAxis = targetOptions.startAxis;\n var currentAxis = absX > absY ? 'x' : absX < absY ? 'y' : 'xy';\n interaction.prepared.axis = targetOptions.lockAxis === 'start' ? currentAxis[0] // always lock to one axis even if currentAxis === 'xy'\n : targetOptions.lockAxis; // if the movement isn't in the startAxis of the interactable\n\n if (currentAxis !== 'xy' && startAxis !== 'xy' && startAxis !== currentAxis) {\n // cancel the prepared action\n interaction.prepared.name = null; // then try to get a drag from another ineractable\n\n var element = eventTarget;\n\n var getDraggable = function getDraggable(interactable) {\n if (interactable === interaction.interactable) {\n return;\n }\n\n var options = interaction.interactable.options.drag;\n\n if (!options.manualStart && interactable.testIgnoreAllow(options, element, eventTarget)) {\n var action = interactable.getAction(interaction.downPointer, interaction.downEvent, interaction, element);\n\n if (action && action.name === ___scope_10.ActionName.Drag && checkStartAxis(currentAxis, interactable) && _base[\"default\"].validateAction(action, interactable, element, eventTarget, scope)) {\n return interactable;\n }\n }\n }; // check all interactables\n\n\n while (__is_10.element(element)) {\n var interactable = scope.interactables.forEachMatch(element, getDraggable);\n\n if (interactable) {\n interaction.prepared.name = ___scope_10.ActionName.Drag;\n interaction.interactable = interactable;\n interaction.element = element;\n break;\n }\n\n element = (0, _$domUtils_50.parentNode)(element);\n }\n }\n });\n\n function checkStartAxis(startAxis, interactable) {\n if (!interactable) {\n return false;\n }\n\n var thisAxis = interactable.options[___scope_10.ActionName.Drag].startAxis;\n return startAxis === 'xy' || thisAxis === 'xy' || thisAxis === startAxis;\n }\n}\n\nvar ___default_10 = {\n id: 'auto-start/dragAxis',\n install: __install_10\n};\n_$dragAxis_10[\"default\"] = ___default_10;\n\nvar _$hold_11 = {};\n\"use strict\";\n\nObject.defineProperty(_$hold_11, \"__esModule\", {\n value: true\n});\n_$hold_11[\"default\"] = void 0;\n\nvar ___base_11 = ___interopRequireDefault_11(_$base_9);\n\nfunction ___interopRequireDefault_11(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_11(scope) {\n var autoStart = scope.autoStart,\n interactions = scope.interactions,\n defaults = scope.defaults;\n scope.usePlugin(___base_11[\"default\"]);\n defaults.perAction.hold = 0;\n defaults.perAction.delay = 0;\n interactions.signals.on('new', function (interaction) {\n interaction.autoStartHoldTimer = null;\n });\n autoStart.signals.on('prepared', function (_ref) {\n var interaction = _ref.interaction;\n var hold = getHoldDuration(interaction);\n\n if (hold > 0) {\n interaction.autoStartHoldTimer = setTimeout(function () {\n interaction.start(interaction.prepared, interaction.interactable, interaction.element);\n }, hold);\n }\n });\n interactions.signals.on('move', function (_ref2) {\n var interaction = _ref2.interaction,\n duplicate = _ref2.duplicate;\n\n if (interaction.pointerWasMoved && !duplicate) {\n clearTimeout(interaction.autoStartHoldTimer);\n }\n }); // prevent regular down->move autoStart\n\n autoStart.signals.on('before-start', function (_ref3) {\n var interaction = _ref3.interaction;\n var hold = getHoldDuration(interaction);\n\n if (hold > 0) {\n interaction.prepared.name = null;\n }\n });\n}\n\nfunction getHoldDuration(interaction) {\n var actionName = interaction.prepared && interaction.prepared.name;\n\n if (!actionName) {\n return null;\n }\n\n var options = interaction.interactable.options;\n return options[actionName].hold || options[actionName].delay;\n}\n\nvar ___default_11 = {\n id: 'auto-start/hold',\n install: __install_11,\n getHoldDuration: getHoldDuration\n};\n_$hold_11[\"default\"] = ___default_11;\n\nvar _$autoStart_12 = {};\n\"use strict\";\n\nObject.defineProperty(_$autoStart_12, \"__esModule\", {\n value: true\n});\n_$autoStart_12.install = __install_12;\nObject.defineProperty(_$autoStart_12, \"autoStart\", {\n enumerable: true,\n get: function get() {\n return ___base_12[\"default\"];\n }\n});\nObject.defineProperty(_$autoStart_12, \"dragAxis\", {\n enumerable: true,\n get: function get() {\n return _dragAxis[\"default\"];\n }\n});\nObject.defineProperty(_$autoStart_12, \"hold\", {\n enumerable: true,\n get: function get() {\n return _hold[\"default\"];\n }\n});\n_$autoStart_12.id = void 0;\n\nvar ___base_12 = ___interopRequireDefault_12(_$base_9);\n\nvar _dragAxis = ___interopRequireDefault_12(_$dragAxis_10);\n\nvar _hold = ___interopRequireDefault_12(_$hold_11);\n\nfunction ___interopRequireDefault_12(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_12(scope) {\n scope.usePlugin(___base_12[\"default\"]);\n scope.usePlugin(_hold[\"default\"]);\n scope.usePlugin(_dragAxis[\"default\"]);\n}\n\nvar __id_12 = 'auto-start';\n_$autoStart_12.id = __id_12;\n\nvar _$interactablePreventDefault_21 = {};\n\"use strict\";\n\nObject.defineProperty(_$interactablePreventDefault_21, \"__esModule\", {\n value: true\n});\n_$interactablePreventDefault_21.install = __install_21;\n_$interactablePreventDefault_21[\"default\"] = void 0;\n\n/* removed: var _$domUtils_50 = require(\"@interactjs/utils/domUtils\"); */;\n\nvar ___events_21 = ___interopRequireDefault_21(_$events_51);\n\nvar __is_21 = ___interopRequireWildcard_21(_$is_56);\n\n/* removed: var _$window_65 = require(\"@interactjs/utils/window\"); */;\n\nfunction ___interopRequireWildcard_21(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_21(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction preventDefault(interactable, newValue) {\n if (/^(always|never|auto)$/.test(newValue)) {\n interactable.options.preventDefault = newValue;\n return interactable;\n }\n\n if (__is_21.bool(newValue)) {\n interactable.options.preventDefault = newValue ? 'always' : 'never';\n return interactable;\n }\n\n return interactable.options.preventDefault;\n}\n\nfunction checkAndPreventDefault(interactable, scope, event) {\n var setting = interactable.options.preventDefault;\n\n if (setting === 'never') {\n return;\n }\n\n if (setting === 'always') {\n event.preventDefault();\n return;\n } // setting === 'auto'\n // if the browser supports passive event listeners and isn't running on iOS,\n // don't preventDefault of touch{start,move} events. CSS touch-action and\n // user-select should be used instead of calling event.preventDefault().\n\n\n if (___events_21[\"default\"].supportsPassive && /^touch(start|move)$/.test(event.type)) {\n var doc = (0, _$window_65.getWindow)(event.target).document;\n var docOptions = scope.getDocOptions(doc);\n\n if (!(docOptions && docOptions.events) || docOptions.events.passive !== false) {\n return;\n }\n } // don't preventDefault of pointerdown events\n\n\n if (/^(mouse|pointer|touch)*(down|start)/i.test(event.type)) {\n return;\n } // don't preventDefault on editable elements\n\n\n if (__is_21.element(event.target) && (0, _$domUtils_50.matchesSelector)(event.target, 'input,select,textarea,[contenteditable=true],[contenteditable=true] *')) {\n return;\n }\n\n event.preventDefault();\n}\n\nfunction onInteractionEvent(_ref) {\n var interaction = _ref.interaction,\n event = _ref.event;\n\n if (interaction.interactable) {\n interaction.interactable.checkAndPreventDefault(event);\n }\n}\n\nfunction __install_21(scope) {\n /** @lends Interactable */\n var Interactable = scope.Interactable;\n /**\n * Returns or sets whether to prevent the browser's default behaviour in\n * response to pointer events. Can be set to:\n * - `'always'` to always prevent\n * - `'never'` to never prevent\n * - `'auto'` to let interact.js try to determine what would be best\n *\n * @param {string} [newValue] `'always'`, `'never'` or `'auto'`\n * @return {string | Interactable} The current setting or this Interactable\n */\n\n Interactable.prototype.preventDefault = function (newValue) {\n return preventDefault(this, newValue);\n };\n\n Interactable.prototype.checkAndPreventDefault = function (event) {\n return checkAndPreventDefault(this, scope, event);\n };\n\n var _arr = ['down', 'move', 'up', 'cancel'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var eventSignal = _arr[_i];\n scope.interactions.signals.on(eventSignal, onInteractionEvent);\n } // prevent native HTML5 drag on interact.js target elements\n\n\n scope.interactions.eventMap.dragstart = function preventNativeDrag(event) {\n for (var _i2 = 0; _i2 < scope.interactions.list.length; _i2++) {\n var _ref2;\n\n _ref2 = scope.interactions.list[_i2];\n var interaction = _ref2;\n\n if (interaction.element && (interaction.element === event.target || (0, _$domUtils_50.nodeContains)(interaction.element, event.target))) {\n interaction.interactable.checkAndPreventDefault(event);\n return;\n }\n }\n };\n}\n\nvar ___default_21 = {\n id: 'core/interactablePreventDefault',\n install: __install_21\n};\n_$interactablePreventDefault_21[\"default\"] = ___default_21;\n\nvar _$devTools_25 = {};\n\"use strict\";\n\nObject.defineProperty(_$devTools_25, \"__esModule\", {\n value: true\n});\n_$devTools_25[\"default\"] = void 0;\n\nvar ___domObjects_25 = ___interopRequireDefault_25(_$domObjects_49);\n\n/* removed: var _$domUtils_50 = require(\"@interactjs/utils/domUtils\"); */;\n\nvar ___extend_25 = ___interopRequireDefault_25(_$extend_52);\n\nvar __is_25 = ___interopRequireWildcard_25(_$is_56);\n\nvar ___window_25 = ___interopRequireDefault_25(_$window_65);\n\nfunction ___interopRequireWildcard_25(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_25(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___toConsumableArray_25(arr) { return ___arrayWithoutHoles_25(arr) || ___iterableToArray_25(arr) || ___nonIterableSpread_25(); }\n\nfunction ___nonIterableSpread_25() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction ___iterableToArray_25(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction ___arrayWithoutHoles_25(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar CheckName;\n\n(function (CheckName) {\n CheckName[\"touchAction\"] = \"\";\n CheckName[\"boxSizing\"] = \"\";\n CheckName[\"noListeners\"] = \"\";\n})(CheckName || (CheckName = {}));\n\nvar prefix = '[interact.js] ';\nvar links = {\n touchAction: 'https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action',\n boxSizing: 'https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing'\n};\nvar isProduction = \"production\" === 'production'; // eslint-disable-next-line no-restricted-syntax\n\nfunction __install_25(scope) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n logger = _ref.logger;\n\n var interactions = scope.interactions,\n Interactable = scope.Interactable,\n defaults = scope.defaults;\n logger = logger || console;\n interactions.signals.on('action-start', function (_ref2) {\n var interaction = _ref2.interaction;\n\n for (var _i = 0; _i < checks.length; _i++) {\n var _ref3;\n\n _ref3 = checks[_i];\n var check = _ref3;\n var options = interaction.interactable && interaction.interactable.options[interaction.prepared.name];\n\n if (!(options && options.devTools && options.devTools.ignore[check.name]) && check.perform(interaction)) {\n var _logger;\n\n (_logger = logger).warn.apply(_logger, [prefix + check.text].concat(___toConsumableArray_25(check.getInfo(interaction))));\n }\n }\n });\n defaults.base.devTools = {\n ignore: {}\n };\n\n Interactable.prototype.devTools = function (options) {\n if (options) {\n (0, ___extend_25[\"default\"])(this.options.devTools, options);\n return this;\n }\n\n return this.options.devTools;\n };\n}\n\nvar checks = [{\n name: 'touchAction',\n perform: function perform(_ref4) {\n var element = _ref4.element;\n return !parentHasStyle(element, 'touchAction', /pan-|pinch|none/);\n },\n getInfo: function getInfo(_ref5) {\n var element = _ref5.element;\n return [element, links.touchAction];\n },\n text: 'Consider adding CSS \"touch-action: none\" to this element\\n'\n}, {\n name: 'boxSizing',\n perform: function perform(interaction) {\n var element = interaction.element;\n return interaction.prepared.name === 'resize' && element instanceof ___domObjects_25[\"default\"].HTMLElement && !hasStyle(element, 'boxSizing', /border-box/);\n },\n text: 'Consider adding CSS \"box-sizing: border-box\" to this resizable element',\n getInfo: function getInfo(_ref6) {\n var element = _ref6.element;\n return [element, links.boxSizing];\n }\n}, {\n name: 'noListeners',\n perform: function perform(interaction) {\n var actionName = interaction.prepared.name;\n var moveListeners = interaction.interactable.events.types[\"\".concat(actionName, \"move\")] || [];\n return !moveListeners.length;\n },\n getInfo: function getInfo(interaction) {\n return [interaction.prepared.name, interaction.interactable];\n },\n text: 'There are no listeners set for this action'\n}];\n\nfunction hasStyle(element, prop, styleRe) {\n return styleRe.test(element.style[prop] || ___window_25[\"default\"].window.getComputedStyle(element)[prop]);\n}\n\nfunction parentHasStyle(element, prop, styleRe) {\n var parent = element;\n\n while (__is_25.element(parent)) {\n if (hasStyle(parent, prop, styleRe)) {\n return true;\n }\n\n parent = (0, _$domUtils_50.parentNode)(parent);\n }\n\n return false;\n}\n\nvar __id_25 = 'dev-tools';\nvar defaultExport = isProduction ? {\n id: __id_25,\n install: function install() {}\n} : {\n id: __id_25,\n install: __install_25,\n checks: checks,\n CheckName: CheckName,\n links: links,\n prefix: prefix\n};\nvar ___default_25 = defaultExport;\n_$devTools_25[\"default\"] = ___default_25;\n\nvar _$base_30 = {};\n\"use strict\";\n\nObject.defineProperty(_$base_30, \"__esModule\", {\n value: true\n});\n_$base_30.startAll = startAll;\n_$base_30.setAll = setAll;\n_$base_30.prepareStates = prepareStates;\n_$base_30.makeModifier = makeModifier;\n_$base_30[\"default\"] = void 0;\n\nvar ___extend_30 = ___interopRequireDefault_30(_$extend_52);\n\nfunction ___interopRequireDefault_30(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___slicedToArray_30(arr, i) { return ___arrayWithHoles_30(arr) || ___iterableToArrayLimit_30(arr, i) || ___nonIterableRest_30(); }\n\nfunction ___nonIterableRest_30() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction ___iterableToArrayLimit_30(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction ___arrayWithHoles_30(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction __install_30(scope) {\n var interactions = scope.interactions;\n scope.defaults.perAction.modifiers = [];\n scope.modifiers = {};\n interactions.signals.on('new', function (_ref) {\n var interaction = _ref.interaction;\n interaction.modifiers = {\n startOffset: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n offsets: {},\n states: null,\n result: null,\n endPrevented: false,\n startDelta: null\n };\n });\n interactions.signals.on('before-action-start', function (arg) {\n __start_30(arg, arg.interaction.coords.start.page, scope.modifiers);\n });\n interactions.signals.on('action-resume', function (arg) {\n stop(arg);\n __start_30(arg, arg.interaction.coords.cur.page, scope.modifiers);\n __beforeMove_30(arg);\n });\n interactions.signals.on('after-action-move', restoreCoords);\n interactions.signals.on('before-action-move', __beforeMove_30);\n interactions.signals.on('before-action-start', setCoords);\n interactions.signals.on('after-action-start', restoreCoords);\n interactions.signals.on('before-action-end', beforeEnd);\n interactions.signals.on('stop', stop);\n}\n\nfunction __start_30(_ref2, pageCoords, registeredModifiers) {\n var interaction = _ref2.interaction,\n phase = _ref2.phase;\n var interactable = interaction.interactable,\n element = interaction.element;\n var modifierList = getModifierList(interaction, registeredModifiers);\n var states = prepareStates(modifierList);\n var rect = (0, ___extend_30[\"default\"])({}, interaction.rect);\n\n if (!('width' in rect)) {\n rect.width = rect.right - rect.left;\n }\n\n if (!('height' in rect)) {\n rect.height = rect.bottom - rect.top;\n }\n\n var startOffset = getRectOffset(rect, pageCoords);\n interaction.modifiers.startOffset = startOffset;\n interaction.modifiers.startDelta = {\n x: 0,\n y: 0\n };\n var arg = {\n interaction: interaction,\n interactable: interactable,\n element: element,\n pageCoords: pageCoords,\n phase: phase,\n rect: rect,\n startOffset: startOffset,\n states: states,\n preEnd: false,\n requireEndOnly: false\n };\n interaction.modifiers.states = states;\n interaction.modifiers.result = null;\n startAll(arg);\n arg.pageCoords = (0, ___extend_30[\"default\"])({}, interaction.coords.start.page);\n var result = interaction.modifiers.result = setAll(arg);\n return result;\n}\n\nfunction startAll(arg) {\n for (var _i = 0; _i < arg.states.length; _i++) {\n var _ref3;\n\n _ref3 = arg.states[_i];\n var state = _ref3;\n\n if (state.methods.start) {\n arg.state = state;\n state.methods.start(arg);\n }\n }\n}\n\nfunction setAll(arg) {\n var interaction = arg.interaction,\n _arg$modifiersState = arg.modifiersState,\n modifiersState = _arg$modifiersState === void 0 ? interaction.modifiers : _arg$modifiersState,\n _arg$prevCoords = arg.prevCoords,\n prevCoords = _arg$prevCoords === void 0 ? modifiersState.result ? modifiersState.result.coords : interaction.coords.prev.page : _arg$prevCoords,\n phase = arg.phase,\n preEnd = arg.preEnd,\n requireEndOnly = arg.requireEndOnly,\n rect = arg.rect,\n skipModifiers = arg.skipModifiers;\n var states = skipModifiers ? arg.states.slice(skipModifiers) : arg.states;\n arg.coords = (0, ___extend_30[\"default\"])({}, arg.pageCoords);\n arg.rect = (0, ___extend_30[\"default\"])({}, rect);\n var result = {\n delta: {\n x: 0,\n y: 0\n },\n rectDelta: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n },\n coords: arg.coords,\n changed: true\n };\n\n for (var _i2 = 0; _i2 < states.length; _i2++) {\n var _ref4;\n\n _ref4 = states[_i2];\n var state = _ref4;\n var options = state.options;\n\n if (!state.methods.set || !shouldDo(options, preEnd, requireEndOnly, phase)) {\n continue;\n }\n\n arg.state = state;\n state.methods.set(arg);\n }\n\n result.delta.x = arg.coords.x - arg.pageCoords.x;\n result.delta.y = arg.coords.y - arg.pageCoords.y;\n var rectChanged = false;\n\n if (rect) {\n result.rectDelta.left = arg.rect.left - rect.left;\n result.rectDelta.right = arg.rect.right - rect.right;\n result.rectDelta.top = arg.rect.top - rect.top;\n result.rectDelta.bottom = arg.rect.bottom - rect.bottom;\n rectChanged = result.rectDelta.left !== 0 || result.rectDelta.right !== 0 || result.rectDelta.top !== 0 || result.rectDelta.bottom !== 0;\n }\n\n result.changed = prevCoords.x !== result.coords.x || prevCoords.y !== result.coords.y || rectChanged;\n return result;\n}\n\nfunction __beforeMove_30(arg) {\n var interaction = arg.interaction,\n phase = arg.phase,\n preEnd = arg.preEnd,\n skipModifiers = arg.skipModifiers;\n var interactable = interaction.interactable,\n element = interaction.element;\n var modifierResult = setAll({\n interaction: interaction,\n interactable: interactable,\n element: element,\n preEnd: preEnd,\n phase: phase,\n pageCoords: interaction.coords.cur.page,\n rect: interaction.rect,\n states: interaction.modifiers.states,\n requireEndOnly: false,\n skipModifiers: skipModifiers\n });\n interaction.modifiers.result = modifierResult; // don't fire an action move if a modifier would keep the event in the same\n // cordinates as before\n\n if (!modifierResult.changed && interaction.interacting()) {\n return false;\n }\n\n setCoords(arg);\n}\n\nfunction beforeEnd(arg) {\n var interaction = arg.interaction,\n event = arg.event,\n noPreEnd = arg.noPreEnd;\n var states = interaction.modifiers.states;\n\n if (noPreEnd || !states || !states.length) {\n return;\n }\n\n var didPreEnd = false;\n\n for (var _i3 = 0; _i3 < states.length; _i3++) {\n var _ref5;\n\n _ref5 = states[_i3];\n var state = _ref5;\n arg.state = state;\n var options = state.options,\n methods = state.methods;\n var endResult = methods.beforeEnd && methods.beforeEnd(arg);\n\n if (endResult === false) {\n interaction.modifiers.endPrevented = true;\n return false;\n } // if the endOnly option is true for any modifier\n\n\n if (!didPreEnd && shouldDo(options, true, true)) {\n // fire a move event at the modified coordinates\n interaction.move({\n event: event,\n preEnd: true\n });\n didPreEnd = true;\n }\n }\n}\n\nfunction stop(arg) {\n var interaction = arg.interaction;\n var states = interaction.modifiers.states;\n\n if (!states || !states.length) {\n return;\n }\n\n var modifierArg = (0, ___extend_30[\"default\"])({\n states: states,\n interactable: interaction.interactable,\n element: interaction.element\n }, arg);\n restoreCoords(arg);\n\n for (var _i4 = 0; _i4 < states.length; _i4++) {\n var _ref6;\n\n _ref6 = states[_i4];\n var state = _ref6;\n modifierArg.state = state;\n\n if (state.methods.stop) {\n state.methods.stop(modifierArg);\n }\n }\n\n arg.interaction.modifiers.states = null;\n arg.interaction.modifiers.endPrevented = false;\n}\n\nfunction getModifierList(interaction, registeredModifiers) {\n var actionOptions = interaction.interactable.options[interaction.prepared.name];\n var actionModifiers = actionOptions.modifiers;\n\n if (actionModifiers && actionModifiers.length) {\n return actionModifiers.filter(function (modifier) {\n return !modifier.options || modifier.options.enabled !== false;\n }).map(function (modifier) {\n if (!modifier.methods && modifier.type) {\n return registeredModifiers[modifier.type](modifier);\n }\n\n return modifier;\n });\n }\n\n return ['snap', 'snapSize', 'snapEdges', 'restrict', 'restrictEdges', 'restrictSize'].map(function (type) {\n var options = actionOptions[type];\n return options && options.enabled && {\n options: options,\n methods: options._methods\n };\n }).filter(function (m) {\n return !!m;\n });\n}\n\nfunction prepareStates(modifierList) {\n var states = [];\n\n for (var index = 0; index < modifierList.length; index++) {\n var _modifierList$index = modifierList[index],\n options = _modifierList$index.options,\n methods = _modifierList$index.methods,\n name = _modifierList$index.name;\n\n if (options && options.enabled === false) {\n continue;\n }\n\n var state = {\n options: options,\n methods: methods,\n index: index,\n name: name\n };\n states.push(state);\n }\n\n return states;\n}\n\nfunction setCoords(arg) {\n var interaction = arg.interaction,\n phase = arg.phase;\n var curCoords = arg.curCoords || interaction.coords.cur;\n var startCoords = arg.startCoords || interaction.coords.start;\n var _interaction$modifier = interaction.modifiers,\n result = _interaction$modifier.result,\n startDelta = _interaction$modifier.startDelta;\n var curDelta = result.delta;\n\n if (phase === 'start') {\n (0, ___extend_30[\"default\"])(interaction.modifiers.startDelta, result.delta);\n }\n\n var _arr = [[startCoords, startDelta], [curCoords, curDelta]];\n\n for (var _i5 = 0; _i5 < _arr.length; _i5++) {\n var _arr$_i = ___slicedToArray_30(_arr[_i5], 2),\n coordsSet = _arr$_i[0],\n delta = _arr$_i[1];\n\n coordsSet.page.x += delta.x;\n coordsSet.page.y += delta.y;\n coordsSet.client.x += delta.x;\n coordsSet.client.y += delta.y;\n }\n\n var rectDelta = interaction.modifiers.result.rectDelta;\n var rect = arg.rect || interaction.rect;\n rect.left += rectDelta.left;\n rect.right += rectDelta.right;\n rect.top += rectDelta.top;\n rect.bottom += rectDelta.bottom;\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n}\n\nfunction restoreCoords(_ref7) {\n var _ref7$interaction = _ref7.interaction,\n coords = _ref7$interaction.coords,\n rect = _ref7$interaction.rect,\n modifiers = _ref7$interaction.modifiers;\n\n if (!modifiers.result) {\n return;\n }\n\n var startDelta = modifiers.startDelta;\n var _modifiers$result = modifiers.result,\n curDelta = _modifiers$result.delta,\n rectDelta = _modifiers$result.rectDelta;\n var coordsAndDeltas = [[coords.start, startDelta], [coords.cur, curDelta]];\n\n for (var _i6 = 0; _i6 < coordsAndDeltas.length; _i6++) {\n var _coordsAndDeltas$_i = ___slicedToArray_30(coordsAndDeltas[_i6], 2),\n coordsSet = _coordsAndDeltas$_i[0],\n delta = _coordsAndDeltas$_i[1];\n\n coordsSet.page.x -= delta.x;\n coordsSet.page.y -= delta.y;\n coordsSet.client.x -= delta.x;\n coordsSet.client.y -= delta.y;\n }\n\n rect.left -= rectDelta.left;\n rect.right -= rectDelta.right;\n rect.top -= rectDelta.top;\n rect.bottom -= rectDelta.bottom;\n}\n\nfunction shouldDo(options, preEnd, requireEndOnly, phase) {\n return options ? options.enabled !== false && (preEnd || !options.endOnly) && (!requireEndOnly || options.endOnly || options.alwaysOnEnd) && (options.setStart || phase !== 'start') : !requireEndOnly;\n}\n\nfunction getRectOffset(rect, coords) {\n return rect ? {\n left: coords.x - rect.left,\n top: coords.y - rect.top,\n right: rect.right - coords.x,\n bottom: rect.bottom - coords.y\n } : {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n}\n\nfunction makeModifier(module, name) {\n var defaults = module.defaults;\n var methods = {\n start: module.start,\n set: module.set,\n beforeEnd: module.beforeEnd,\n stop: module.stop\n };\n\n var modifier = function modifier(options) {\n options = options || {};\n options.enabled = options.enabled !== false; // add missing defaults to options\n\n for (var prop in defaults) {\n if (!(prop in options)) {\n options[prop] = defaults[prop];\n }\n }\n\n return {\n options: options,\n methods: methods,\n name: name\n };\n };\n\n if (typeof name === 'string') {\n // for backwrads compatibility\n modifier._defaults = defaults;\n modifier._methods = methods;\n }\n\n return modifier;\n}\n\nvar ___default_30 = {\n id: 'modifiers/base',\n install: __install_30,\n startAll: startAll,\n setAll: setAll,\n prepareStates: prepareStates,\n start: __start_30,\n beforeMove: __beforeMove_30,\n beforeEnd: beforeEnd,\n stop: stop,\n shouldDo: shouldDo,\n getModifierList: getModifierList,\n getRectOffset: getRectOffset,\n makeModifier: makeModifier\n};\n_$base_30[\"default\"] = ___default_30;\n\nvar _$inertia_26 = {};\n\"use strict\";\n\nObject.defineProperty(_$inertia_26, \"__esModule\", {\n value: true\n});\n_$inertia_26[\"default\"] = void 0;\n\n/* removed: var _$InteractEvent_15 = require(\"@interactjs/core/InteractEvent\"); */;\n\nvar ___base_26 = ___interopRequireDefault_26(_$base_30);\n\nvar __utils_26 = ___interopRequireWildcard_26(_$utils_55);\n\nvar ___raf_26 = ___interopRequireDefault_26(_$raf_61);\n\nfunction ___interopRequireWildcard_26(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_26(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n_$InteractEvent_15.EventPhase.Resume = 'resume';\n_$InteractEvent_15.EventPhase.InertiaStart = 'inertiastart';\n\nfunction __install_26(scope) {\n var interactions = scope.interactions,\n defaults = scope.defaults;\n interactions.signals.on('new', function (_ref) {\n var interaction = _ref.interaction;\n interaction.inertia = {\n active: false,\n smoothEnd: false,\n allowResume: false,\n upCoords: {},\n timeout: null\n };\n }); // FIXME proper signal typing\n\n interactions.signals.on('before-action-end', function (arg) {\n return release(arg, scope);\n });\n interactions.signals.on('down', function (arg) {\n return resume(arg, scope);\n });\n interactions.signals.on('stop', function (arg) {\n return __stop_26(arg);\n });\n defaults.perAction.inertia = {\n enabled: false,\n resistance: 10,\n minSpeed: 100,\n endSpeed: 10,\n allowResume: true,\n smoothEndDuration: 300\n };\n scope.usePlugin(___base_26[\"default\"]);\n}\n\nfunction resume(_ref2, scope) {\n var interaction = _ref2.interaction,\n event = _ref2.event,\n pointer = _ref2.pointer,\n eventTarget = _ref2.eventTarget;\n var state = interaction.inertia; // Check if the down event hits the current inertia target\n\n if (state.active) {\n var element = eventTarget; // climb up the DOM tree from the event target\n\n while (__utils_26.is.element(element)) {\n // if interaction element is the current inertia target element\n if (element === interaction.element) {\n // stop inertia\n ___raf_26[\"default\"].cancel(state.timeout);\n\n state.active = false;\n interaction.simulation = null; // update pointers to the down event's coordinates\n\n interaction.updatePointer(pointer, event, eventTarget, true);\n __utils_26.pointer.setCoords(interaction.coords.cur, interaction.pointers.map(function (p) {\n return p.pointer;\n }), interaction._now()); // fire appropriate signals\n\n var signalArg = {\n interaction: interaction\n };\n scope.interactions.signals.fire('action-resume', signalArg); // fire a reume event\n\n var resumeEvent = new scope.InteractEvent(interaction, event, interaction.prepared.name, _$InteractEvent_15.EventPhase.Resume, interaction.element);\n\n interaction._fireEvent(resumeEvent);\n\n __utils_26.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur);\n break;\n }\n\n element = __utils_26.dom.parentNode(element);\n }\n }\n}\n\nfunction release(_ref3, scope) {\n var interaction = _ref3.interaction,\n event = _ref3.event,\n noPreEnd = _ref3.noPreEnd;\n var state = interaction.inertia;\n\n if (!interaction.interacting() || interaction.simulation && interaction.simulation.active || noPreEnd) {\n return null;\n }\n\n var options = __getOptions_26(interaction);\n\n var now = interaction._now();\n\n var velocityClient = interaction.coords.velocity.client;\n var pointerSpeed = __utils_26.hypot(velocityClient.x, velocityClient.y);\n var smoothEnd = false;\n var modifierResult; // check if inertia should be started\n\n var inertiaPossible = options && options.enabled && interaction.prepared.name !== 'gesture' && event !== state.startEvent;\n var inertia = inertiaPossible && now - interaction.coords.cur.timeStamp < 50 && pointerSpeed > options.minSpeed && pointerSpeed > options.endSpeed;\n var modifierArg = {\n interaction: interaction,\n pageCoords: __utils_26.extend({}, interaction.coords.cur.page),\n states: inertiaPossible && interaction.modifiers.states.map(function (modifierStatus) {\n return __utils_26.extend({}, modifierStatus);\n }),\n preEnd: true,\n prevCoords: undefined,\n requireEndOnly: null\n }; // smoothEnd\n\n if (inertiaPossible && !inertia) {\n modifierArg.prevCoords = interaction.prevEvent.page;\n modifierArg.requireEndOnly = false;\n modifierResult = ___base_26[\"default\"].setAll(modifierArg);\n\n if (modifierResult.changed) {\n smoothEnd = true;\n }\n }\n\n if (!(inertia || smoothEnd)) {\n return null;\n }\n\n __utils_26.pointer.copyCoords(state.upCoords, interaction.coords.cur);\n interaction.pointers[0].pointer = state.startEvent = new scope.InteractEvent(interaction, event, // FIXME add proper typing Action.name\n interaction.prepared.name, _$InteractEvent_15.EventPhase.InertiaStart, interaction.element);\n state.t0 = now;\n state.active = true;\n state.allowResume = options.allowResume;\n interaction.simulation = state;\n interaction.interactable.fire(state.startEvent);\n\n if (inertia) {\n state.vx0 = interaction.coords.velocity.client.x;\n state.vy0 = interaction.coords.velocity.client.y;\n state.v0 = pointerSpeed;\n calcInertia(interaction, state);\n __utils_26.extend(modifierArg.pageCoords, interaction.coords.cur.page);\n modifierArg.pageCoords.x += state.xe;\n modifierArg.pageCoords.y += state.ye;\n modifierArg.prevCoords = undefined;\n modifierArg.requireEndOnly = true;\n modifierResult = ___base_26[\"default\"].setAll(modifierArg);\n state.modifiedXe += modifierResult.delta.x;\n state.modifiedYe += modifierResult.delta.y;\n state.timeout = ___raf_26[\"default\"].request(function () {\n return inertiaTick(interaction);\n });\n } else {\n state.smoothEnd = true;\n state.xe = modifierResult.delta.x;\n state.ye = modifierResult.delta.y;\n state.sx = state.sy = 0;\n state.timeout = ___raf_26[\"default\"].request(function () {\n return smothEndTick(interaction);\n });\n }\n\n return false;\n}\n\nfunction __stop_26(_ref4) {\n var interaction = _ref4.interaction;\n var state = interaction.inertia;\n\n if (state.active) {\n ___raf_26[\"default\"].cancel(state.timeout);\n\n state.active = false;\n interaction.simulation = null;\n }\n}\n\nfunction calcInertia(interaction, state) {\n var options = __getOptions_26(interaction);\n var lambda = options.resistance;\n var inertiaDur = -Math.log(options.endSpeed / state.v0) / lambda;\n state.x0 = interaction.prevEvent.page.x;\n state.y0 = interaction.prevEvent.page.y;\n state.t0 = state.startEvent.timeStamp / 1000;\n state.sx = state.sy = 0;\n state.modifiedXe = state.xe = (state.vx0 - inertiaDur) / lambda;\n state.modifiedYe = state.ye = (state.vy0 - inertiaDur) / lambda;\n state.te = inertiaDur;\n state.lambda_v0 = lambda / state.v0;\n state.one_ve_v0 = 1 - options.endSpeed / state.v0;\n}\n\nfunction inertiaTick(interaction) {\n updateInertiaCoords(interaction);\n __utils_26.pointer.setCoordDeltas(interaction.coords.delta, interaction.coords.prev, interaction.coords.cur);\n __utils_26.pointer.setCoordVelocity(interaction.coords.velocity, interaction.coords.delta);\n var state = interaction.inertia;\n var options = __getOptions_26(interaction);\n var lambda = options.resistance;\n var t = interaction._now() / 1000 - state.t0;\n\n if (t < state.te) {\n var progress = 1 - (Math.exp(-lambda * t) - state.lambda_v0) / state.one_ve_v0;\n\n if (state.modifiedXe === state.xe && state.modifiedYe === state.ye) {\n state.sx = state.xe * progress;\n state.sy = state.ye * progress;\n } else {\n var quadPoint = __utils_26.getQuadraticCurvePoint(0, 0, state.xe, state.ye, state.modifiedXe, state.modifiedYe, progress);\n state.sx = quadPoint.x;\n state.sy = quadPoint.y;\n }\n\n interaction.move();\n state.timeout = ___raf_26[\"default\"].request(function () {\n return inertiaTick(interaction);\n });\n } else {\n state.sx = state.modifiedXe;\n state.sy = state.modifiedYe;\n interaction.move();\n interaction.end(state.startEvent);\n state.active = false;\n interaction.simulation = null;\n }\n\n __utils_26.pointer.copyCoords(interaction.coords.prev, interaction.coords.cur);\n}\n\nfunction smothEndTick(interaction) {\n updateInertiaCoords(interaction);\n var state = interaction.inertia;\n var t = interaction._now() - state.t0;\n\n var _getOptions = __getOptions_26(interaction),\n duration = _getOptions.smoothEndDuration;\n\n if (t < duration) {\n state.sx = __utils_26.easeOutQuad(t, 0, state.xe, duration);\n state.sy = __utils_26.easeOutQuad(t, 0, state.ye, duration);\n interaction.move();\n state.timeout = ___raf_26[\"default\"].request(function () {\n return smothEndTick(interaction);\n });\n } else {\n state.sx = state.xe;\n state.sy = state.ye;\n interaction.move();\n interaction.end(state.startEvent);\n state.smoothEnd = state.active = false;\n interaction.simulation = null;\n }\n}\n\nfunction updateInertiaCoords(interaction) {\n var state = interaction.inertia; // return if inertia isn't running\n\n if (!state.active) {\n return;\n }\n\n var pageUp = state.upCoords.page;\n var clientUp = state.upCoords.client;\n __utils_26.pointer.setCoords(interaction.coords.cur, [{\n pageX: pageUp.x + state.sx,\n pageY: pageUp.y + state.sy,\n clientX: clientUp.x + state.sx,\n clientY: clientUp.y + state.sy\n }], interaction._now());\n}\n\nfunction __getOptions_26(_ref5) {\n var interactable = _ref5.interactable,\n prepared = _ref5.prepared;\n return interactable && interactable.options && prepared.name && interactable.options[prepared.name].inertia;\n}\n\nvar ___default_26 = {\n id: 'inertia',\n install: __install_26,\n calcInertia: calcInertia,\n inertiaTick: inertiaTick,\n smothEndTick: smothEndTick,\n updateInertiaCoords: updateInertiaCoords\n};\n_$inertia_26[\"default\"] = ___default_26;\n\nvar _$pointer_33 = {};\n\"use strict\";\n\nObject.defineProperty(_$pointer_33, \"__esModule\", {\n value: true\n});\n_$pointer_33[\"default\"] = void 0;\n\nvar __is_33 = ___interopRequireWildcard_33(_$is_56);\n\nvar ___rect_33 = ___interopRequireDefault_33(_$rect_62);\n\nfunction ___interopRequireDefault_33(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_33(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __start_33(_ref) {\n var rect = _ref.rect,\n startOffset = _ref.startOffset,\n state = _ref.state;\n var options = state.options;\n var elementRect = options.elementRect;\n var offset = {};\n\n if (rect && elementRect) {\n offset.left = startOffset.left - rect.width * elementRect.left;\n offset.top = startOffset.top - rect.height * elementRect.top;\n offset.right = startOffset.right - rect.width * (1 - elementRect.right);\n offset.bottom = startOffset.bottom - rect.height * (1 - elementRect.bottom);\n } else {\n offset.left = offset.top = offset.right = offset.bottom = 0;\n }\n\n state.offset = offset;\n}\n\nfunction set(_ref2) {\n var coords = _ref2.coords,\n interaction = _ref2.interaction,\n state = _ref2.state;\n var options = state.options,\n offset = state.offset;\n var restriction = getRestrictionRect(options.restriction, interaction, coords);\n\n if (!restriction) {\n return state;\n }\n\n var rect = restriction; // object is assumed to have\n // x, y, width, height or\n // left, top, right, bottom\n\n if ('x' in restriction && 'y' in restriction) {\n coords.x = Math.max(Math.min(rect.x + rect.width - offset.right, coords.x), rect.x + offset.left);\n coords.y = Math.max(Math.min(rect.y + rect.height - offset.bottom, coords.y), rect.y + offset.top);\n } else {\n coords.x = Math.max(Math.min(rect.right - offset.right, coords.x), rect.left + offset.left);\n coords.y = Math.max(Math.min(rect.bottom - offset.bottom, coords.y), rect.top + offset.top);\n }\n}\n\nfunction getRestrictionRect(value, interaction, coords) {\n if (__is_33.func(value)) {\n return ___rect_33[\"default\"].resolveRectLike(value, interaction.interactable, interaction.element, [coords.x, coords.y, interaction]);\n } else {\n return ___rect_33[\"default\"].resolveRectLike(value, interaction.interactable, interaction.element);\n }\n}\n\nvar restrict = {\n start: __start_33,\n set: set,\n getRestrictionRect: getRestrictionRect,\n defaults: {\n enabled: false,\n restriction: null,\n elementRect: null\n }\n};\nvar ___default_33 = restrict;\n_$pointer_33[\"default\"] = ___default_33;\n\nvar _$edges_32 = {};\n\"use strict\";\n\nObject.defineProperty(_$edges_32, \"__esModule\", {\n value: true\n});\n_$edges_32[\"default\"] = void 0;\n\nvar ___extend_32 = ___interopRequireDefault_32(_$extend_52);\n\nvar ___rect_32 = ___interopRequireDefault_32(_$rect_62);\n\nvar _pointer = ___interopRequireDefault_32(_$pointer_33);\n\nfunction ___interopRequireDefault_32(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// This module adds the options.resize.restrictEdges setting which sets min and\n// max for the top, left, bottom and right edges of the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictEdges: {\n// inner: { top: 200, left: 200, right: 400, bottom: 400 },\n// outer: { top: 0, left: 0, right: 600, bottom: 600 },\n// },\n// })\nvar __getRestrictionRect_32 = _pointer[\"default\"].getRestrictionRect;\nvar noInner = {\n top: +Infinity,\n left: +Infinity,\n bottom: -Infinity,\n right: -Infinity\n};\nvar noOuter = {\n top: -Infinity,\n left: -Infinity,\n bottom: +Infinity,\n right: +Infinity\n};\n\nfunction __start_32(_ref) {\n var interaction = _ref.interaction,\n state = _ref.state;\n var options = state.options;\n var startOffset = interaction.modifiers.startOffset;\n var offset;\n\n if (options) {\n var offsetRect = __getRestrictionRect_32(options.offset, interaction, interaction.coords.start.page);\n offset = ___rect_32[\"default\"].rectToXY(offsetRect);\n }\n\n offset = offset || {\n x: 0,\n y: 0\n };\n state.offset = {\n top: offset.y + startOffset.top,\n left: offset.x + startOffset.left,\n bottom: offset.y - startOffset.bottom,\n right: offset.x - startOffset.right\n };\n}\n\nfunction __set_32(_ref2) {\n var coords = _ref2.coords,\n interaction = _ref2.interaction,\n state = _ref2.state;\n var offset = state.offset,\n options = state.options;\n var edges = interaction.prepared._linkedEdges || interaction.prepared.edges;\n\n if (!edges) {\n return;\n }\n\n var page = (0, ___extend_32[\"default\"])({}, coords);\n var inner = __getRestrictionRect_32(options.inner, interaction, page) || {};\n var outer = __getRestrictionRect_32(options.outer, interaction, page) || {};\n fixRect(inner, noInner);\n fixRect(outer, noOuter);\n\n if (edges.top) {\n coords.y = Math.min(Math.max(outer.top + offset.top, page.y), inner.top + offset.top);\n } else if (edges.bottom) {\n coords.y = Math.max(Math.min(outer.bottom + offset.bottom, page.y), inner.bottom + offset.bottom);\n }\n\n if (edges.left) {\n coords.x = Math.min(Math.max(outer.left + offset.left, page.x), inner.left + offset.left);\n } else if (edges.right) {\n coords.x = Math.max(Math.min(outer.right + offset.right, page.x), inner.right + offset.right);\n }\n}\n\nfunction fixRect(rect, defaults) {\n var _arr = ['top', 'left', 'bottom', 'right'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var edge = _arr[_i];\n\n if (!(edge in rect)) {\n rect[edge] = defaults[edge];\n }\n }\n\n return rect;\n}\n\nvar restrictEdges = {\n noInner: noInner,\n noOuter: noOuter,\n getRestrictionRect: __getRestrictionRect_32,\n start: __start_32,\n set: __set_32,\n defaults: {\n enabled: false,\n inner: null,\n outer: null,\n offset: null\n }\n};\nvar ___default_32 = restrictEdges;\n_$edges_32[\"default\"] = ___default_32;\n\nvar _$size_34 = {};\n\"use strict\";\n\nObject.defineProperty(_$size_34, \"__esModule\", {\n value: true\n});\n_$size_34[\"default\"] = void 0;\n\nvar ___extend_34 = ___interopRequireDefault_34(_$extend_52);\n\nvar ___rect_34 = ___interopRequireDefault_34(_$rect_62);\n\nvar _edges = ___interopRequireDefault_34(_$edges_32);\n\nfunction ___interopRequireDefault_34(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// This module adds the options.resize.restrictSize setting which sets min and\n// max width and height for the target being resized.\n//\n// interact(target).resize({\n// edges: { top: true, left: true },\n// restrictSize: {\n// min: { width: -600, height: -600 },\n// max: { width: 600, height: 600 },\n// },\n// })\nvar noMin = {\n width: -Infinity,\n height: -Infinity\n};\nvar noMax = {\n width: +Infinity,\n height: +Infinity\n};\n\nfunction __start_34(arg) {\n return _edges[\"default\"].start(arg);\n}\n\nfunction __set_34(arg) {\n var interaction = arg.interaction,\n state = arg.state;\n var options = state.options;\n var edges = interaction.prepared.linkedEdges || interaction.prepared.edges;\n\n if (!edges) {\n return;\n }\n\n var rect = ___rect_34[\"default\"].xywhToTlbr(interaction.resizeRects.inverted);\n\n var minSize = ___rect_34[\"default\"].tlbrToXywh(_edges[\"default\"].getRestrictionRect(options.min, interaction)) || noMin;\n var maxSize = ___rect_34[\"default\"].tlbrToXywh(_edges[\"default\"].getRestrictionRect(options.max, interaction)) || noMax;\n state.options = {\n enabled: options.enabled,\n endOnly: options.endOnly,\n inner: (0, ___extend_34[\"default\"])({}, _edges[\"default\"].noInner),\n outer: (0, ___extend_34[\"default\"])({}, _edges[\"default\"].noOuter)\n };\n\n if (edges.top) {\n state.options.inner.top = rect.bottom - minSize.height;\n state.options.outer.top = rect.bottom - maxSize.height;\n } else if (edges.bottom) {\n state.options.inner.bottom = rect.top + minSize.height;\n state.options.outer.bottom = rect.top + maxSize.height;\n }\n\n if (edges.left) {\n state.options.inner.left = rect.right - minSize.width;\n state.options.outer.left = rect.right - maxSize.width;\n } else if (edges.right) {\n state.options.inner.right = rect.left + minSize.width;\n state.options.outer.right = rect.left + maxSize.width;\n }\n\n _edges[\"default\"].set(arg);\n\n state.options = options;\n}\n\nvar restrictSize = {\n start: __start_34,\n set: __set_34,\n defaults: {\n enabled: false,\n min: null,\n max: null\n }\n};\nvar ___default_34 = restrictSize;\n_$size_34[\"default\"] = ___default_34;\n\nvar _$pointer_36 = {};\n\"use strict\";\n\nObject.defineProperty(_$pointer_36, \"__esModule\", {\n value: true\n});\n_$pointer_36[\"default\"] = void 0;\n\nvar __utils_36 = ___interopRequireWildcard_36(_$utils_55);\n\nfunction ___interopRequireWildcard_36(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __start_36(arg) {\n var interaction = arg.interaction,\n interactable = arg.interactable,\n element = arg.element,\n rect = arg.rect,\n state = arg.state,\n startOffset = arg.startOffset;\n var options = state.options;\n var offsets = [];\n var origin = options.offsetWithOrigin ? getOrigin(arg) : {\n x: 0,\n y: 0\n };\n var snapOffset;\n\n if (options.offset === 'startCoords') {\n snapOffset = {\n x: interaction.coords.start.page.x,\n y: interaction.coords.start.page.y\n };\n } else {\n var offsetRect = __utils_36.rect.resolveRectLike(options.offset, interactable, element, [interaction]);\n snapOffset = __utils_36.rect.rectToXY(offsetRect) || {\n x: 0,\n y: 0\n };\n snapOffset.x += origin.x;\n snapOffset.y += origin.y;\n }\n\n var relativePoints = options.relativePoints || [];\n\n if (rect && options.relativePoints && options.relativePoints.length) {\n for (var index = 0; index < relativePoints.length; index++) {\n var relativePoint = relativePoints[index];\n offsets.push({\n index: index,\n relativePoint: relativePoint,\n x: startOffset.left - rect.width * relativePoint.x + snapOffset.x,\n y: startOffset.top - rect.height * relativePoint.y + snapOffset.y\n });\n }\n } else {\n offsets.push(__utils_36.extend({\n index: 0,\n relativePoint: null\n }, snapOffset));\n }\n\n state.offsets = offsets;\n}\n\nfunction __set_36(arg) {\n var interaction = arg.interaction,\n coords = arg.coords,\n state = arg.state;\n var options = state.options,\n offsets = state.offsets;\n var origin = __utils_36.getOriginXY(interaction.interactable, interaction.element, interaction.prepared.name);\n var page = __utils_36.extend({}, coords);\n var targets = [];\n var target;\n\n if (!options.offsetWithOrigin) {\n page.x -= origin.x;\n page.y -= origin.y;\n }\n\n state.realX = page.x;\n state.realY = page.y;\n\n for (var _i = 0; _i < offsets.length; _i++) {\n var _ref;\n\n _ref = offsets[_i];\n var offset = _ref;\n var relativeX = page.x - offset.x;\n var relativeY = page.y - offset.y;\n\n for (var index = 0, _len = options.targets.length; index < _len; index++) {\n var snapTarget = options.targets[index];\n\n if (__utils_36.is.func(snapTarget)) {\n target = snapTarget(relativeX, relativeY, interaction, offset, index);\n } else {\n target = snapTarget;\n }\n\n if (!target) {\n continue;\n }\n\n targets.push({\n x: (__utils_36.is.number(target.x) ? target.x : relativeX) + offset.x,\n y: (__utils_36.is.number(target.y) ? target.y : relativeY) + offset.y,\n range: __utils_36.is.number(target.range) ? target.range : options.range\n });\n }\n }\n\n var closest = {\n target: null,\n inRange: false,\n distance: 0,\n range: 0,\n dx: 0,\n dy: 0\n };\n\n for (var i = 0, len = targets.length; i < len; i++) {\n target = targets[i];\n var range = target.range;\n var dx = target.x - page.x;\n var dy = target.y - page.y;\n var distance = __utils_36.hypot(dx, dy);\n var inRange = distance <= range; // Infinite targets count as being out of range\n // compared to non infinite ones that are in range\n\n if (range === Infinity && closest.inRange && closest.range !== Infinity) {\n inRange = false;\n }\n\n if (!closest.target || (inRange // is the closest target in range?\n ? closest.inRange && range !== Infinity // the pointer is relatively deeper in this target\n ? distance / range < closest.distance / closest.range // this target has Infinite range and the closest doesn't\n : range === Infinity && closest.range !== Infinity || // OR this target is closer that the previous closest\n distance < closest.distance : // The other is not in range and the pointer is closer to this target\n !closest.inRange && distance < closest.distance)) {\n closest.target = target;\n closest.distance = distance;\n closest.range = range;\n closest.inRange = inRange;\n closest.dx = dx;\n closest.dy = dy;\n state.range = range;\n }\n }\n\n if (closest.inRange) {\n coords.x = closest.target.x;\n coords.y = closest.target.y;\n }\n\n state.closest = closest;\n}\n\nfunction getOrigin(arg) {\n var optionsOrigin = __utils_36.rect.rectToXY(__utils_36.rect.resolveRectLike(arg.state.options.origin));\n var origin = optionsOrigin || __utils_36.getOriginXY(arg.interactable, arg.interaction.element, arg.interaction.prepared.name);\n return origin;\n}\n\nvar snap = {\n start: __start_36,\n set: __set_36,\n defaults: {\n enabled: false,\n range: Infinity,\n targets: null,\n offset: null,\n offsetWithOrigin: true,\n relativePoints: null\n }\n};\nvar ___default_36 = snap;\n_$pointer_36[\"default\"] = ___default_36;\n\nvar _$size_37 = {};\n\"use strict\";\n\nObject.defineProperty(_$size_37, \"__esModule\", {\n value: true\n});\n_$size_37[\"default\"] = void 0;\n\nvar ___extend_37 = ___interopRequireDefault_37(_$extend_52);\n\nvar __is_37 = ___interopRequireWildcard_37(_$is_56);\n\nvar ___pointer_37 = ___interopRequireDefault_37(_$pointer_36);\n\nfunction ___interopRequireWildcard_37(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___interopRequireDefault_37(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___slicedToArray_37(arr, i) { return ___arrayWithHoles_37(arr) || ___iterableToArrayLimit_37(arr, i) || ___nonIterableRest_37(); }\n\nfunction ___nonIterableRest_37() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction ___iterableToArrayLimit_37(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction ___arrayWithHoles_37(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction __start_37(arg) {\n var interaction = arg.interaction,\n state = arg.state;\n var options = state.options;\n var edges = interaction.prepared.edges;\n\n if (!edges) {\n return null;\n }\n\n arg.state = {\n options: {\n relativePoints: [{\n x: edges.left ? 0 : 1,\n y: edges.top ? 0 : 1\n }],\n origin: {\n x: 0,\n y: 0\n },\n offset: options.offset || 'self',\n range: options.range\n }\n };\n state.targetFields = state.targetFields || [['width', 'height'], ['x', 'y']];\n\n ___pointer_37[\"default\"].start(arg);\n\n state.offsets = arg.state.offsets;\n arg.state = state;\n}\n\nfunction __set_37(arg) {\n var interaction = arg.interaction,\n state = arg.state,\n coords = arg.coords;\n var options = state.options,\n offsets = state.offsets;\n var relative = {\n x: coords.x - offsets[0].x,\n y: coords.y - offsets[0].y\n };\n state.options = (0, ___extend_37[\"default\"])({}, options);\n state.options.targets = [];\n\n for (var _i = 0; _i < (options.targets || []).length; _i++) {\n var _ref;\n\n _ref = (options.targets || [])[_i];\n var snapTarget = _ref;\n var target = void 0;\n\n if (__is_37.func(snapTarget)) {\n target = snapTarget(relative.x, relative.y, interaction);\n } else {\n target = snapTarget;\n }\n\n if (!target) {\n continue;\n }\n\n for (var _i2 = 0; _i2 < state.targetFields.length; _i2++) {\n var _ref2;\n\n _ref2 = state.targetFields[_i2];\n\n var _ref3 = _ref2,\n _ref4 = ___slicedToArray_37(_ref3, 2),\n xField = _ref4[0],\n yField = _ref4[1];\n\n if (xField in target || yField in target) {\n target.x = target[xField];\n target.y = target[yField];\n break;\n }\n }\n\n state.options.targets.push(target);\n }\n\n ___pointer_37[\"default\"].set(arg);\n\n state.options = options;\n}\n\nvar snapSize = {\n start: __start_37,\n set: __set_37,\n defaults: {\n enabled: false,\n range: Infinity,\n targets: null,\n offset: null\n }\n};\nvar ___default_37 = snapSize;\n_$size_37[\"default\"] = ___default_37;\n\nvar _$edges_35 = {};\n\"use strict\";\n\nObject.defineProperty(_$edges_35, \"__esModule\", {\n value: true\n});\n_$edges_35[\"default\"] = void 0;\n\nvar ___clone_35 = ___interopRequireDefault_35(_$clone_48);\n\nvar ___extend_35 = ___interopRequireDefault_35(_$extend_52);\n\nvar _size = ___interopRequireDefault_35(_$size_37);\n\nfunction ___interopRequireDefault_35(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/**\n * @module modifiers/snapEdges\n *\n * @description\n * This module allows snapping of the edges of targets during resize\n * interactions.\n *\n * @example\n * interact(target).resizable({\n * snapEdges: {\n * targets: [interact.snappers.grid({ x: 100, y: 50 })],\n * },\n * })\n *\n * interact(target).resizable({\n * snapEdges: {\n * targets: [\n * interact.snappers.grid({\n * top: 50,\n * left: 50,\n * bottom: 100,\n * right: 100,\n * }),\n * ],\n * },\n * })\n */\nfunction __start_35(arg) {\n var edges = arg.interaction.prepared.edges;\n\n if (!edges) {\n return null;\n }\n\n arg.state.targetFields = arg.state.targetFields || [[edges.left ? 'left' : 'right', edges.top ? 'top' : 'bottom']];\n return _size[\"default\"].start(arg);\n}\n\nfunction __set_35(arg) {\n return _size[\"default\"].set(arg);\n}\n\nvar snapEdges = {\n start: __start_35,\n set: __set_35,\n defaults: (0, ___extend_35[\"default\"])((0, ___clone_35[\"default\"])(_size[\"default\"].defaults), {\n offset: {\n x: 0,\n y: 0\n }\n })\n};\nvar ___default_35 = snapEdges;\n_$edges_35[\"default\"] = ___default_35;\n\nvar _$modifiers_31 = {};\n\"use strict\";\n\nObject.defineProperty(_$modifiers_31, \"__esModule\", {\n value: true\n});\n_$modifiers_31.restrictSize = _$modifiers_31.restrictEdges = _$modifiers_31.restrict = _$modifiers_31.snapEdges = _$modifiers_31.snapSize = _$modifiers_31.snap = void 0;\n\nvar ___base_31 = ___interopRequireDefault_31(_$base_30);\n\nvar ___edges_31 = ___interopRequireDefault_31(_$edges_32);\n\nvar ___pointer_31 = ___interopRequireDefault_31(_$pointer_33);\n\nvar ___size_31 = ___interopRequireDefault_31(_$size_34);\n\nvar _edges2 = ___interopRequireDefault_31(_$edges_35);\n\nvar _pointer2 = ___interopRequireDefault_31(_$pointer_36);\n\nvar _size2 = ___interopRequireDefault_31(_$size_37);\n\nfunction ___interopRequireDefault_31(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar __makeModifier_31 = ___base_31[\"default\"].makeModifier;\nvar __snap_31 = __makeModifier_31(_pointer2[\"default\"], 'snap');\n_$modifiers_31.snap = __snap_31;\nvar __snapSize_31 = __makeModifier_31(_size2[\"default\"], 'snapSize');\n_$modifiers_31.snapSize = __snapSize_31;\nvar __snapEdges_31 = __makeModifier_31(_edges2[\"default\"], 'snapEdges');\n_$modifiers_31.snapEdges = __snapEdges_31;\nvar __restrict_31 = __makeModifier_31(___pointer_31[\"default\"], 'restrict');\n_$modifiers_31.restrict = __restrict_31;\nvar __restrictEdges_31 = __makeModifier_31(___edges_31[\"default\"], 'restrictEdges');\n_$modifiers_31.restrictEdges = __restrictEdges_31;\nvar __restrictSize_31 = __makeModifier_31(___size_31[\"default\"], 'restrictSize');\n_$modifiers_31.restrictSize = __restrictSize_31;\n\nvar _$PointerEvent_38 = {};\n\"use strict\";\n\nObject.defineProperty(_$PointerEvent_38, \"__esModule\", {\n value: true\n});\n_$PointerEvent_38[\"default\"] = void 0;\n\nvar ___BaseEvent2_38 = ___interopRequireDefault_38(_$BaseEvent_13);\n\nvar ___pointerUtils_38 = ___interopRequireDefault_38(_$pointerUtils_60);\n\nfunction ___interopRequireDefault_38(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___typeof_38(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ___typeof_38 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_38 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ___typeof_38(obj); }\n\nfunction ___classCallCheck_38(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction ___defineProperties_38(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction ___createClass_38(Constructor, protoProps, staticProps) { if (protoProps) ___defineProperties_38(Constructor.prototype, protoProps); if (staticProps) ___defineProperties_38(Constructor, staticProps); return Constructor; }\n\nfunction ___possibleConstructorReturn_38(self, call) { if (call && (___typeof_38(call) === \"object\" || typeof call === \"function\")) { return call; } return ___assertThisInitialized_38(self); }\n\nfunction ___getPrototypeOf_38(o) { ___getPrototypeOf_38 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return ___getPrototypeOf_38(o); }\n\nfunction ___assertThisInitialized_38(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction ___inherits_38(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) ___setPrototypeOf_38(subClass, superClass); }\n\nfunction ___setPrototypeOf_38(o, p) { ___setPrototypeOf_38 = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return ___setPrototypeOf_38(o, p); }\n\n/** */\nvar PointerEvent =\n/*#__PURE__*/\nfunction (_BaseEvent) {\n ___inherits_38(PointerEvent, _BaseEvent);\n\n /** */\n function PointerEvent(type, pointer, event, eventTarget, interaction, timeStamp) {\n var _this;\n\n ___classCallCheck_38(this, PointerEvent);\n\n _this = ___possibleConstructorReturn_38(this, ___getPrototypeOf_38(PointerEvent).call(this, interaction));\n\n ___pointerUtils_38[\"default\"].pointerExtend(___assertThisInitialized_38(_this), event);\n\n if (event !== pointer) {\n ___pointerUtils_38[\"default\"].pointerExtend(___assertThisInitialized_38(_this), pointer);\n }\n\n _this.timeStamp = timeStamp;\n _this.originalEvent = event;\n _this.type = type;\n _this.pointerId = ___pointerUtils_38[\"default\"].getPointerId(pointer);\n _this.pointerType = ___pointerUtils_38[\"default\"].getPointerType(pointer);\n _this.target = eventTarget;\n _this.currentTarget = null;\n\n if (type === 'tap') {\n var pointerIndex = interaction.getPointerIndex(pointer);\n _this.dt = _this.timeStamp - interaction.pointers[pointerIndex].downTime;\n var interval = _this.timeStamp - interaction.tapTime;\n _this[\"double\"] = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === _this.target && interval < 500);\n } else if (type === 'doubletap') {\n _this.dt = pointer.timeStamp - interaction.tapTime;\n }\n\n return _this;\n }\n\n ___createClass_38(PointerEvent, [{\n key: \"_subtractOrigin\",\n value: function _subtractOrigin(_ref) {\n var originX = _ref.x,\n originY = _ref.y;\n this.pageX -= originX;\n this.pageY -= originY;\n this.clientX -= originX;\n this.clientY -= originY;\n return this;\n }\n }, {\n key: \"_addOrigin\",\n value: function _addOrigin(_ref2) {\n var originX = _ref2.x,\n originY = _ref2.y;\n this.pageX += originX;\n this.pageY += originY;\n this.clientX += originX;\n this.clientY += originY;\n return this;\n }\n /**\n * Prevent the default behaviour of the original Event\n */\n\n }, {\n key: \"preventDefault\",\n value: function preventDefault() {\n this.originalEvent.preventDefault();\n }\n }]);\n\n return PointerEvent;\n}(___BaseEvent2_38[\"default\"]);\n\n_$PointerEvent_38[\"default\"] = PointerEvent;\n\nvar _$base_39 = {};\n\"use strict\";\n\nObject.defineProperty(_$base_39, \"__esModule\", {\n value: true\n});\n_$base_39[\"default\"] = void 0;\n\nvar __utils_39 = ___interopRequireWildcard_39(_$utils_55);\n\nvar _PointerEvent = ___interopRequireDefault_39(_$PointerEvent_38);\n\nfunction ___interopRequireDefault_39(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_39(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nvar signals = new __utils_39.Signals();\nvar simpleSignals = ['down', 'up', 'cancel'];\nvar simpleEvents = ['down', 'up', 'cancel'];\nvar __defaults_39 = {\n holdDuration: 600,\n ignoreFrom: null,\n allowFrom: null,\n origin: {\n x: 0,\n y: 0\n }\n};\nvar pointerEvents = {\n id: 'pointer-events/base',\n install: __install_39,\n signals: signals,\n PointerEvent: _PointerEvent[\"default\"],\n fire: fire,\n collectEventTargets: collectEventTargets,\n createSignalListener: createSignalListener,\n defaults: __defaults_39,\n types: ['down', 'move', 'up', 'cancel', 'tap', 'doubletap', 'hold']\n};\n\nfunction fire(arg, scope) {\n var interaction = arg.interaction,\n pointer = arg.pointer,\n event = arg.event,\n eventTarget = arg.eventTarget,\n _arg$type = arg.type,\n type = _arg$type === void 0 ? arg.pointerEvent.type : _arg$type,\n _arg$targets = arg.targets,\n targets = _arg$targets === void 0 ? collectEventTargets(arg) : _arg$targets;\n var _arg$pointerEvent = arg.pointerEvent,\n pointerEvent = _arg$pointerEvent === void 0 ? new _PointerEvent[\"default\"](type, pointer, event, eventTarget, interaction, scope.now()) : _arg$pointerEvent;\n var signalArg = {\n interaction: interaction,\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n targets: targets,\n type: type,\n pointerEvent: pointerEvent\n };\n\n for (var i = 0; i < targets.length; i++) {\n var target = targets[i];\n\n for (var prop in target.props || {}) {\n pointerEvent[prop] = target.props[prop];\n }\n\n var origin = __utils_39.getOriginXY(target.eventable, target.node);\n\n pointerEvent._subtractOrigin(origin);\n\n pointerEvent.eventable = target.eventable;\n pointerEvent.currentTarget = target.node;\n target.eventable.fire(pointerEvent);\n\n pointerEvent._addOrigin(origin);\n\n if (pointerEvent.immediatePropagationStopped || pointerEvent.propagationStopped && i + 1 < targets.length && targets[i + 1].node !== pointerEvent.currentTarget) {\n break;\n }\n }\n\n signals.fire('fired', signalArg);\n\n if (type === 'tap') {\n // if pointerEvent should make a double tap, create and fire a doubletap\n // PointerEvent and use that as the prevTap\n var prevTap = pointerEvent[\"double\"] ? fire({\n interaction: interaction,\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n type: 'doubletap'\n }, scope) : pointerEvent;\n interaction.prevTap = prevTap;\n interaction.tapTime = prevTap.timeStamp;\n }\n\n return pointerEvent;\n}\n\nfunction collectEventTargets(_ref) {\n var interaction = _ref.interaction,\n pointer = _ref.pointer,\n event = _ref.event,\n eventTarget = _ref.eventTarget,\n type = _ref.type;\n var pointerIndex = interaction.getPointerIndex(pointer);\n var pointerInfo = interaction.pointers[pointerIndex]; // do not fire a tap event if the pointer was moved before being lifted\n\n if (type === 'tap' && (interaction.pointerWasMoved || // or if the pointerup target is different to the pointerdown target\n !(pointerInfo && pointerInfo.downTarget === eventTarget))) {\n return [];\n }\n\n var path = __utils_39.dom.getPath(eventTarget);\n var signalArg = {\n interaction: interaction,\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n type: type,\n path: path,\n targets: [],\n node: null\n };\n\n for (var _i = 0; _i < path.length; _i++) {\n var _ref2;\n\n _ref2 = path[_i];\n var node = _ref2;\n signalArg.node = node;\n signals.fire('collect-targets', signalArg);\n }\n\n if (type === 'hold') {\n signalArg.targets = signalArg.targets.filter(function (target) {\n return target.eventable.options.holdDuration === interaction.pointers[pointerIndex].hold.duration;\n });\n }\n\n return signalArg.targets;\n}\n\nfunction __install_39(scope) {\n var interactions = scope.interactions;\n scope.pointerEvents = pointerEvents;\n scope.defaults.actions.pointerEvents = pointerEvents.defaults;\n interactions.signals.on('new', function (_ref3) {\n var interaction = _ref3.interaction;\n interaction.prevTap = null; // the most recent tap event on this interaction\n\n interaction.tapTime = 0; // time of the most recent tap event\n });\n interactions.signals.on('update-pointer', function (_ref4) {\n var down = _ref4.down,\n pointerInfo = _ref4.pointerInfo;\n\n if (!down && pointerInfo.hold) {\n return;\n }\n\n pointerInfo.hold = {\n duration: Infinity,\n timeout: null\n };\n });\n interactions.signals.on('move', function (_ref5) {\n var interaction = _ref5.interaction,\n pointer = _ref5.pointer,\n event = _ref5.event,\n eventTarget = _ref5.eventTarget,\n duplicateMove = _ref5.duplicateMove;\n var pointerIndex = interaction.getPointerIndex(pointer);\n\n if (!duplicateMove && (!interaction.pointerIsDown || interaction.pointerWasMoved)) {\n if (interaction.pointerIsDown) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout);\n }\n\n fire({\n interaction: interaction,\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n type: 'move'\n }, scope);\n }\n });\n interactions.signals.on('down', function (_ref6) {\n var interaction = _ref6.interaction,\n pointer = _ref6.pointer,\n event = _ref6.event,\n eventTarget = _ref6.eventTarget,\n pointerIndex = _ref6.pointerIndex;\n var timer = interaction.pointers[pointerIndex].hold;\n var path = __utils_39.dom.getPath(eventTarget);\n var signalArg = {\n interaction: interaction,\n pointer: pointer,\n event: event,\n eventTarget: eventTarget,\n type: 'hold',\n targets: [],\n path: path,\n element: null\n };\n\n for (var _i2 = 0; _i2 < path.length; _i2++) {\n var _ref7;\n\n _ref7 = path[_i2];\n var element = _ref7;\n signalArg.element = element;\n signals.fire('collect-targets', signalArg);\n }\n\n if (!signalArg.targets.length) {\n return;\n }\n\n var minDuration = Infinity;\n\n for (var _i3 = 0; _i3 < signalArg.targets.length; _i3++) {\n var _ref8;\n\n _ref8 = signalArg.targets[_i3];\n var target = _ref8;\n var holdDuration = target.eventable.options.holdDuration;\n\n if (holdDuration < minDuration) {\n minDuration = holdDuration;\n }\n }\n\n timer.duration = minDuration;\n timer.timeout = setTimeout(function () {\n fire({\n interaction: interaction,\n eventTarget: eventTarget,\n pointer: pointer,\n event: event,\n type: 'hold'\n }, scope);\n }, minDuration);\n });\n var _arr = ['up', 'cancel'];\n\n for (var _i4 = 0; _i4 < _arr.length; _i4++) {\n var signalName = _arr[_i4];\n interactions.signals.on(signalName, function (_ref10) {\n var interaction = _ref10.interaction,\n pointerIndex = _ref10.pointerIndex;\n\n if (interaction.pointers[pointerIndex].hold) {\n clearTimeout(interaction.pointers[pointerIndex].hold.timeout);\n }\n });\n }\n\n for (var i = 0; i < simpleSignals.length; i++) {\n interactions.signals.on(simpleSignals[i], createSignalListener(simpleEvents[i], scope));\n }\n\n interactions.signals.on('up', function (_ref9) {\n var interaction = _ref9.interaction,\n pointer = _ref9.pointer,\n event = _ref9.event,\n eventTarget = _ref9.eventTarget;\n\n if (!interaction.pointerWasMoved) {\n fire({\n interaction: interaction,\n eventTarget: eventTarget,\n pointer: pointer,\n event: event,\n type: 'tap'\n }, scope);\n }\n });\n}\n\nfunction createSignalListener(type, scope) {\n return function (_ref11) {\n var interaction = _ref11.interaction,\n pointer = _ref11.pointer,\n event = _ref11.event,\n eventTarget = _ref11.eventTarget;\n fire({\n interaction: interaction,\n eventTarget: eventTarget,\n pointer: pointer,\n event: event,\n type: type\n }, scope);\n };\n}\n\nvar ___default_39 = pointerEvents;\n_$base_39[\"default\"] = ___default_39;\n\nvar _$holdRepeat_40 = {};\n\"use strict\";\n\nObject.defineProperty(_$holdRepeat_40, \"__esModule\", {\n value: true\n});\n_$holdRepeat_40[\"default\"] = void 0;\n\nvar ___base_40 = ___interopRequireDefault_40(_$base_39);\n\nfunction ___interopRequireDefault_40(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_40(scope) {\n var pointerEvents = scope.pointerEvents,\n interactions = scope.interactions;\n scope.usePlugin(___base_40[\"default\"]);\n pointerEvents.signals.on('new', onNew);\n pointerEvents.signals.on('fired', function (arg) {\n return onFired(arg, scope);\n });\n var _arr = ['move', 'up', 'cancel', 'endall'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var signal = _arr[_i];\n interactions.signals.on(signal, endHoldRepeat);\n } // don't repeat by default\n\n\n pointerEvents.defaults.holdRepeatInterval = 0;\n pointerEvents.types.push('holdrepeat');\n}\n\nfunction onNew(_ref) {\n var pointerEvent = _ref.pointerEvent;\n\n if (pointerEvent.type !== 'hold') {\n return;\n }\n\n pointerEvent.count = (pointerEvent.count || 0) + 1;\n}\n\nfunction onFired(_ref2, scope) {\n var interaction = _ref2.interaction,\n pointerEvent = _ref2.pointerEvent,\n eventTarget = _ref2.eventTarget,\n targets = _ref2.targets;\n\n if (pointerEvent.type !== 'hold' || !targets.length) {\n return;\n } // get the repeat interval from the first eventable\n\n\n var interval = targets[0].eventable.options.holdRepeatInterval; // don't repeat if the interval is 0 or less\n\n if (interval <= 0) {\n return;\n } // set a timeout to fire the holdrepeat event\n\n\n interaction.holdIntervalHandle = setTimeout(function () {\n scope.pointerEvents.fire({\n interaction: interaction,\n eventTarget: eventTarget,\n type: 'hold',\n pointer: pointerEvent,\n event: pointerEvent\n }, scope);\n }, interval);\n}\n\nfunction endHoldRepeat(_ref3) {\n var interaction = _ref3.interaction;\n\n // set the interaction's holdStopTime property\n // to stop further holdRepeat events\n if (interaction.holdIntervalHandle) {\n clearInterval(interaction.holdIntervalHandle);\n interaction.holdIntervalHandle = null;\n }\n}\n\nvar ___default_40 = {\n id: 'pointer-events/holdRepeat',\n install: __install_40\n};\n_$holdRepeat_40[\"default\"] = ___default_40;\n\nvar _$interactableTargets_42 = {};\n\"use strict\";\n\nObject.defineProperty(_$interactableTargets_42, \"__esModule\", {\n value: true\n});\n_$interactableTargets_42[\"default\"] = void 0;\n\n/* removed: var _$arr_46 = require(\"@interactjs/utils/arr\"); */;\n\nvar ___extend_42 = ___interopRequireDefault_42(_$extend_52);\n\nfunction ___interopRequireDefault_42(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_42(scope) {\n var pointerEvents = scope.pointerEvents,\n actions = scope.actions,\n Interactable = scope.Interactable,\n interactables = scope.interactables;\n pointerEvents.signals.on('collect-targets', function (_ref) {\n var targets = _ref.targets,\n node = _ref.node,\n type = _ref.type,\n eventTarget = _ref.eventTarget;\n scope.interactables.forEachMatch(node, function (interactable) {\n var eventable = interactable.events;\n var options = eventable.options;\n\n if (eventable.types[type] && eventable.types[type].length && interactable.testIgnoreAllow(options, node, eventTarget)) {\n targets.push({\n node: node,\n eventable: eventable,\n props: {\n interactable: interactable\n }\n });\n }\n });\n });\n interactables.signals.on('new', function (_ref2) {\n var interactable = _ref2.interactable;\n\n interactable.events.getRect = function (element) {\n return interactable.getRect(element);\n };\n });\n interactables.signals.on('set', function (_ref3) {\n var interactable = _ref3.interactable,\n options = _ref3.options;\n (0, ___extend_42[\"default\"])(interactable.events.options, pointerEvents.defaults);\n (0, ___extend_42[\"default\"])(interactable.events.options, options.pointerEvents || {});\n });\n (0, _$arr_46.merge)(actions.eventTypes, pointerEvents.types);\n Interactable.prototype.pointerEvents = pointerEventsMethod;\n var __backCompatOption = Interactable.prototype._backCompatOption;\n\n Interactable.prototype._backCompatOption = function (optionName, newValue) {\n var ret = __backCompatOption.call(this, optionName, newValue);\n\n if (ret === this) {\n this.events.options[optionName] = newValue;\n }\n\n return ret;\n };\n}\n\nfunction pointerEventsMethod(options) {\n (0, ___extend_42[\"default\"])(this.events.options, options);\n return this;\n}\n\nvar ___default_42 = {\n id: 'pointer-events/interactableTargets',\n install: __install_42\n};\n_$interactableTargets_42[\"default\"] = ___default_42;\n\nvar _$pointerEvents_41 = {};\n\"use strict\";\n\nObject.defineProperty(_$pointerEvents_41, \"__esModule\", {\n value: true\n});\n_$pointerEvents_41.install = __install_41;\nObject.defineProperty(_$pointerEvents_41, \"pointerEvents\", {\n enumerable: true,\n get: function get() {\n return ___base_41[\"default\"];\n }\n});\nObject.defineProperty(_$pointerEvents_41, \"holdRepeat\", {\n enumerable: true,\n get: function get() {\n return _holdRepeat[\"default\"];\n }\n});\nObject.defineProperty(_$pointerEvents_41, \"interactableTargets\", {\n enumerable: true,\n get: function get() {\n return _interactableTargets[\"default\"];\n }\n});\n_$pointerEvents_41.id = void 0;\n\nvar ___base_41 = ___interopRequireDefault_41(_$base_39);\n\nvar _holdRepeat = ___interopRequireDefault_41(_$holdRepeat_40);\n\nvar _interactableTargets = ___interopRequireDefault_41(_$interactableTargets_42);\n\nfunction ___interopRequireDefault_41(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction __install_41(scope) {\n scope.usePlugin(___base_41[\"default\"]);\n scope.usePlugin(_holdRepeat[\"default\"]);\n scope.usePlugin(_interactableTargets[\"default\"]);\n}\n\nvar __id_41 = 'pointer-events';\n_$pointerEvents_41.id = __id_41;\n\nvar _$reflow_43 = {};\n\"use strict\";\n\nObject.defineProperty(_$reflow_43, \"__esModule\", {\n value: true\n});\n_$reflow_43.install = __install_43;\n_$reflow_43[\"default\"] = void 0;\n\n/* removed: var _$InteractEvent_15 = require(\"@interactjs/core/InteractEvent\"); */;\n\n/* removed: var _$utils_55 = require(\"@interactjs/utils\"); */;\n\n_$InteractEvent_15.EventPhase.Reflow = 'reflow';\n\nfunction __install_43(scope) {\n var actions = scope.actions,\n interactions = scope.interactions,\n Interactable = scope.Interactable; // add action reflow event types\n\n for (var _i = 0; _i < actions.names.length; _i++) {\n var _ref;\n\n _ref = actions.names[_i];\n var actionName = _ref;\n actions.eventTypes.push(\"\".concat(actionName, \"reflow\"));\n } // remove completed reflow interactions\n\n\n interactions.signals.on('stop', function (_ref2) {\n var interaction = _ref2.interaction;\n\n if (interaction.pointerType === _$InteractEvent_15.EventPhase.Reflow) {\n if (interaction._reflowResolve) {\n interaction._reflowResolve();\n }\n\n _$utils_55.arr.remove(scope.interactions.list, interaction);\n }\n });\n /**\n * ```js\n * const interactable = interact(target)\n * const drag = { name: drag, axis: 'x' }\n * const resize = { name: resize, edges: { left: true, bottom: true }\n *\n * interactable.reflow(drag)\n * interactable.reflow(resize)\n * ```\n *\n * Start an action sequence to re-apply modifiers, check drops, etc.\n *\n * @param { Object } action The action to begin\n * @param { string } action.name The name of the action\n * @returns { Promise }\n */\n\n Interactable.prototype.reflow = function (action) {\n return reflow(this, action, scope);\n };\n}\n\nfunction reflow(interactable, action, scope) {\n var elements = _$utils_55.is.string(interactable.target) ? _$utils_55.arr.from(interactable._context.querySelectorAll(interactable.target)) : [interactable.target]; // tslint:disable-next-line variable-name\n\n var Promise = _$utils_55.win.window.Promise;\n var promises = Promise ? [] : null;\n\n var _loop = function _loop() {\n _ref3 = elements[_i2];\n var element = _ref3;\n var rect = interactable.getRect(element);\n\n if (!rect) {\n return \"break\";\n }\n\n var runningInteraction = _$utils_55.arr.find(scope.interactions.list, function (interaction) {\n return interaction.interacting() && interaction.interactable === interactable && interaction.element === element && interaction.prepared.name === action.name;\n });\n\n var reflowPromise = void 0;\n\n if (runningInteraction) {\n runningInteraction.move();\n\n if (promises) {\n reflowPromise = runningInteraction._reflowPromise || new Promise(function (resolve) {\n runningInteraction._reflowResolve = resolve;\n });\n }\n } else {\n var xywh = _$utils_55.rect.tlbrToXywh(rect);\n\n var coords = {\n page: {\n x: xywh.x,\n y: xywh.y\n },\n client: {\n x: xywh.x,\n y: xywh.y\n },\n timeStamp: scope.now()\n };\n\n var event = _$utils_55.pointer.coordsToEvent(coords);\n\n reflowPromise = startReflow(scope, interactable, element, action, event);\n }\n\n if (promises) {\n promises.push(reflowPromise);\n }\n };\n\n for (var _i2 = 0; _i2 < elements.length; _i2++) {\n var _ref3;\n\n var _ret = _loop();\n\n if (_ret === \"break\") break;\n }\n\n return promises && Promise.all(promises).then(function () {\n return interactable;\n });\n}\n\nfunction startReflow(scope, interactable, element, action, event) {\n var interaction = scope.interactions[\"new\"]({\n pointerType: 'reflow'\n });\n var signalArg = {\n interaction: interaction,\n event: event,\n pointer: event,\n eventTarget: element,\n phase: _$InteractEvent_15.EventPhase.Reflow\n };\n interaction.interactable = interactable;\n interaction.element = element;\n interaction.prepared = (0, _$utils_55.extend)({}, action);\n interaction.prevEvent = event;\n interaction.updatePointer(event, event, element, true);\n\n interaction._doPhase(signalArg);\n\n var reflowPromise = _$utils_55.win.window.Promise ? new _$utils_55.win.window.Promise(function (resolve) {\n interaction._reflowResolve = resolve;\n }) : null;\n interaction._reflowPromise = reflowPromise;\n interaction.start(action, interactable, element);\n\n if (interaction._interacting) {\n interaction.move(signalArg);\n interaction.end(event);\n } else {\n interaction.stop();\n }\n\n interaction.removePointer(event, event);\n interaction.pointerIsDown = false;\n return reflowPromise;\n}\n\nvar ___default_43 = {\n id: 'reflow',\n install: __install_43\n};\n_$reflow_43[\"default\"] = ___default_43;\n\nvar _$interact_28 = {};\n\"use strict\";\n\nObject.defineProperty(_$interact_28, \"__esModule\", {\n value: true\n});\n_$interact_28[\"default\"] = _$interact_28.scope = _$interact_28.interact = void 0;\n\nvar ___scope_28 = _$scope_24({});\n\nvar __utils_28 = ___interopRequireWildcard_28(_$utils_55);\n\nvar ___browser_28 = ___interopRequireDefault_28(_$browser_47);\n\nvar ___events_28 = ___interopRequireDefault_28(_$events_51);\n\nfunction ___interopRequireDefault_28(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_28(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\n/** @module interact */\nvar globalEvents = {};\nvar scope = new ___scope_28.Scope();\n/**\n * ```js\n * interact('#draggable').draggable(true)\n *\n * var rectables = interact('rect')\n * rectables\n * .gesturable(true)\n * .on('gesturemove', function (event) {\n * // ...\n * })\n * ```\n *\n * The methods of this variable can be used to set elements as interactables\n * and also to change various default settings.\n *\n * Calling it as a function and passing an element or a valid CSS selector\n * string returns an Interactable object which has various methods to configure\n * it.\n *\n * @global\n *\n * @param {Element | string} target The HTML or SVG Element to interact with\n * or CSS selector\n * @return {Interactable}\n */\n\n_$interact_28.scope = scope;\n\nvar interact = function interact(target, options) {\n var interactable = scope.interactables.get(target, options);\n\n if (!interactable) {\n interactable = scope.interactables[\"new\"](target, options);\n interactable.events.global = globalEvents;\n }\n\n return interactable;\n};\n/**\n * Use a plugin\n *\n * @alias module:interact.use\n *\n * @param {Object} plugin\n * @param {function} plugin.install\n * @return {interact}\n */\n\n\n_$interact_28.interact = interact;\ninteract.use = use;\n\nfunction use(plugin, options) {\n scope.usePlugin(plugin, options);\n return interact;\n}\n/**\n * Check if an element or selector has been set with the {@link interact}\n * function\n *\n * @alias module:interact.isSet\n *\n * @param {Element} element The Element being searched for\n * @return {boolean} Indicates if the element or CSS selector was previously\n * passed to interact\n */\n\n\ninteract.isSet = isSet;\n\nfunction isSet(target, options) {\n return !!scope.interactables.get(target, options && options.context);\n}\n/**\n * Add a global listener for an InteractEvent or adds a DOM event to `document`\n *\n * @alias module:interact.on\n *\n * @param {string | array | object} type The types of events to listen for\n * @param {function} listener The function event (s)\n * @param {object | boolean} [options] object or useCapture flag for\n * addEventListener\n * @return {object} interact\n */\n\n\ninteract.on = on;\n\nfunction on(type, listener, options) {\n if (__utils_28.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (__utils_28.is.array(type)) {\n for (var _i = 0; _i < type.length; _i++) {\n var _ref;\n\n _ref = type[_i];\n var eventType = _ref;\n interact.on(eventType, listener, options);\n }\n\n return interact;\n }\n\n if (__utils_28.is.object(type)) {\n for (var prop in type) {\n interact.on(prop, type[prop], listener);\n }\n\n return interact;\n } // if it is an InteractEvent type, add listener to globalEvents\n\n\n if (__utils_28.arr.contains(scope.actions.eventTypes, type)) {\n // if this type of event was never bound\n if (!globalEvents[type]) {\n globalEvents[type] = [listener];\n } else {\n globalEvents[type].push(listener);\n }\n } // If non InteractEvent type, addEventListener to document\n else {\n ___events_28[\"default\"].add(scope.document, type, listener, {\n options: options\n });\n }\n\n return interact;\n}\n/**\n * Removes a global InteractEvent listener or DOM event from `document`\n *\n * @alias module:interact.off\n *\n * @param {string | array | object} type The types of events that were listened\n * for\n * @param {function} listener The listener function to be removed\n * @param {object | boolean} options [options] object or useCapture flag for\n * removeEventListener\n * @return {object} interact\n */\n\n\ninteract.off = off;\n\nfunction off(type, listener, options) {\n if (__utils_28.is.string(type) && type.search(' ') !== -1) {\n type = type.trim().split(/ +/);\n }\n\n if (__utils_28.is.array(type)) {\n for (var _i2 = 0; _i2 < type.length; _i2++) {\n var _ref2;\n\n _ref2 = type[_i2];\n var eventType = _ref2;\n interact.off(eventType, listener, options);\n }\n\n return interact;\n }\n\n if (__utils_28.is.object(type)) {\n for (var prop in type) {\n interact.off(prop, type[prop], listener);\n }\n\n return interact;\n }\n\n if (!__utils_28.arr.contains(scope.actions.eventTypes, type)) {\n ___events_28[\"default\"].remove(scope.document, type, listener, options);\n } else {\n var index;\n\n if (type in globalEvents && (index = globalEvents[type].indexOf(listener)) !== -1) {\n globalEvents[type].splice(index, 1);\n }\n }\n\n return interact;\n}\n/**\n * Returns an object which exposes internal data\n * @alias module:interact.debug\n *\n * @return {object} An object with properties that outline the current state\n * and expose internal functions and variables\n */\n\n\ninteract.debug = debug;\n\nfunction debug() {\n return scope;\n} // expose the functions used to calculate multi-touch properties\n\n\ninteract.getPointerAverage = __utils_28.pointer.pointerAverage;\ninteract.getTouchBBox = __utils_28.pointer.touchBBox;\ninteract.getTouchDistance = __utils_28.pointer.touchDistance;\ninteract.getTouchAngle = __utils_28.pointer.touchAngle;\ninteract.getElementRect = __utils_28.dom.getElementRect;\ninteract.getElementClientRect = __utils_28.dom.getElementClientRect;\ninteract.matchesSelector = __utils_28.dom.matchesSelector;\ninteract.closest = __utils_28.dom.closest;\n/**\n * @alias module:interact.supportsTouch\n *\n * @return {boolean} Whether or not the browser supports touch input\n */\n\ninteract.supportsTouch = supportsTouch;\n\nfunction supportsTouch() {\n return ___browser_28[\"default\"].supportsTouch;\n}\n/**\n * @alias module:interact.supportsPointerEvent\n *\n * @return {boolean} Whether or not the browser supports PointerEvents\n */\n\n\ninteract.supportsPointerEvent = supportsPointerEvent;\n\nfunction supportsPointerEvent() {\n return ___browser_28[\"default\"].supportsPointerEvent;\n}\n/**\n * Cancels all interactions (end events are not fired)\n *\n * @alias module:interact.stop\n *\n * @return {object} interact\n */\n\n\ninteract.stop = __stop_28;\n\nfunction __stop_28() {\n for (var _i3 = 0; _i3 < scope.interactions.list.length; _i3++) {\n var _ref3;\n\n _ref3 = scope.interactions.list[_i3];\n var interaction = _ref3;\n interaction.stop();\n }\n\n return interact;\n}\n/**\n * Returns or sets the distance the pointer must be moved before an action\n * sequence occurs. This also affects tolerance for tap events.\n *\n * @alias module:interact.pointerMoveTolerance\n *\n * @param {number} [newValue] The movement from the start position must be greater than this value\n * @return {interact | number}\n */\n\n\ninteract.pointerMoveTolerance = pointerMoveTolerance;\n\nfunction pointerMoveTolerance(newValue) {\n if (__utils_28.is.number(newValue)) {\n scope.interactions.pointerMoveTolerance = newValue;\n return interact;\n }\n\n return scope.interactions.pointerMoveTolerance;\n}\n\nscope.interactables.signals.on('unset', function (_ref4) {\n var interactable = _ref4.interactable;\n scope.interactables.list.splice(scope.interactables.list.indexOf(interactable), 1); // Stop related interactions when an Interactable is unset\n\n for (var _i4 = 0; _i4 < scope.interactions.list.length; _i4++) {\n var _ref5;\n\n _ref5 = scope.interactions.list[_i4];\n var interaction = _ref5;\n\n if (interaction.interactable === interactable && interaction.interacting() && !interaction._ending) {\n interaction.stop();\n }\n }\n});\n\ninteract.addDocument = function (doc, options) {\n return scope.addDocument(doc, options);\n};\n\ninteract.removeDocument = function (doc) {\n return scope.removeDocument(doc);\n};\n\nscope.interact = interact;\nvar ___default_28 = interact;\n_$interact_28[\"default\"] = ___default_28;\n\nvar _$interact_27 = {};\n\"use strict\";\n\nObject.defineProperty(_$interact_27, \"__esModule\", {\n value: true\n});\n_$interact_27.init = __init_27;\nObject.defineProperty(_$interact_27, \"autoScroll\", {\n enumerable: true,\n get: function get() {\n return _autoScroll[\"default\"];\n }\n});\nObject.defineProperty(_$interact_27, \"interactablePreventDefault\", {\n enumerable: true,\n get: function get() {\n return _interactablePreventDefault[\"default\"];\n }\n});\nObject.defineProperty(_$interact_27, \"inertia\", {\n enumerable: true,\n get: function get() {\n return _inertia[\"default\"];\n }\n});\nObject.defineProperty(_$interact_27, \"modifiers\", {\n enumerable: true,\n get: function get() {\n return ___base_27[\"default\"];\n }\n});\nObject.defineProperty(_$interact_27, \"reflow\", {\n enumerable: true,\n get: function get() {\n return _reflow[\"default\"];\n }\n});\nObject.defineProperty(_$interact_27, \"interact\", {\n enumerable: true,\n get: function get() {\n return _interact[\"default\"];\n }\n});\n_$interact_27.pointerEvents = _$interact_27.actions = _$interact_27[\"default\"] = void 0;\n\nvar actions = ___interopRequireWildcard_27(_$actions_5);\n\n_$interact_27.actions = actions;\n\nvar _autoScroll = ___interopRequireDefault_27(_$autoScroll_7);\n\nvar autoStart = ___interopRequireWildcard_27(_$autoStart_12);\n\nvar _interactablePreventDefault = ___interopRequireDefault_27(_$interactablePreventDefault_21);\n\nvar _devTools = ___interopRequireDefault_27(_$devTools_25);\n\nvar _inertia = ___interopRequireDefault_27(_$inertia_26);\n\nvar modifiers = ___interopRequireWildcard_27(_$modifiers_31);\n\nvar ___base_27 = ___interopRequireDefault_27(_$base_30);\n\nvar __pointerEvents_27 = ___interopRequireWildcard_27(_$pointerEvents_41);\n\n_$interact_27.pointerEvents = __pointerEvents_27;\n\nvar _reflow = ___interopRequireDefault_27(_$reflow_43);\n\nvar _interact = ___interopRequireWildcard_27(_$interact_28);\n\nfunction ___interopRequireDefault_27(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_27(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction __init_27(window) {\n _interact.scope.init(window);\n\n _interact[\"default\"].use(_interactablePreventDefault[\"default\"]); // inertia\n\n\n _interact[\"default\"].use(_inertia[\"default\"]); // pointerEvents\n\n\n _interact[\"default\"].use(__pointerEvents_27); // autoStart, hold\n\n\n _interact[\"default\"].use(autoStart); // drag and drop, resize, gesture\n\n\n _interact[\"default\"].use(actions); // snap, resize, etc.\n\n\n _interact[\"default\"].use(___base_27[\"default\"]); // for backwrads compatibility\n\n\n for (var type in modifiers) {\n var _modifiers$type = modifiers[type],\n _defaults = _modifiers$type._defaults,\n _methods = _modifiers$type._methods;\n _defaults._methods = _methods;\n _interact.scope.defaults.perAction[type] = _defaults;\n } // autoScroll\n\n\n _interact[\"default\"].use(_autoScroll[\"default\"]); // reflow\n\n\n _interact[\"default\"].use(_reflow[\"default\"]); // eslint-disable-next-line no-undef\n\n\n if (\"production\" !== 'production') {\n _interact[\"default\"].use(_devTools[\"default\"]);\n }\n\n return _interact[\"default\"];\n} // eslint-disable-next-line no-undef\n\n\n_interact[\"default\"].version = \"1.4.9\";\nvar ___default_27 = _interact[\"default\"];\n_$interact_27[\"default\"] = ___default_27;\n\nvar _$types_44 = {};\n/// \n\"use strict\";\n\nvar _$grid_63 = {};\n\"use strict\";\n\nObject.defineProperty(_$grid_63, \"__esModule\", {\n value: true\n});\n_$grid_63[\"default\"] = void 0;\n\nfunction ___slicedToArray_63(arr, i) { return ___arrayWithHoles_63(arr) || ___iterableToArrayLimit_63(arr, i) || ___nonIterableRest_63(); }\n\nfunction ___nonIterableRest_63() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction ___iterableToArrayLimit_63(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction ___arrayWithHoles_63(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction createGrid(grid) {\n var coordFields = [['x', 'y'], ['left', 'top'], ['right', 'bottom'], ['width', 'height']].filter(function (_ref) {\n var _ref2 = ___slicedToArray_63(_ref, 2),\n xField = _ref2[0],\n yField = _ref2[1];\n\n return xField in grid || yField in grid;\n });\n return function (x, y) {\n var range = grid.range,\n _grid$limits = grid.limits,\n limits = _grid$limits === void 0 ? {\n left: -Infinity,\n right: Infinity,\n top: -Infinity,\n bottom: Infinity\n } : _grid$limits,\n _grid$offset = grid.offset,\n offset = _grid$offset === void 0 ? {\n x: 0,\n y: 0\n } : _grid$offset;\n var result = {\n range: range\n };\n\n for (var _i2 = 0; _i2 < coordFields.length; _i2++) {\n var _ref3;\n\n _ref3 = coordFields[_i2];\n\n var _ref4 = _ref3,\n _ref5 = ___slicedToArray_63(_ref4, 2),\n xField = _ref5[0],\n yField = _ref5[1];\n\n var gridx = Math.round((x - offset.x) / grid[xField]);\n var gridy = Math.round((y - offset.y) / grid[yField]);\n result[xField] = Math.max(limits.left, Math.min(limits.right, gridx * grid[xField] + offset.x));\n result[yField] = Math.max(limits.top, Math.min(limits.bottom, gridy * grid[yField] + offset.y));\n }\n\n return result;\n };\n}\n\nvar ___default_63 = createGrid;\n_$grid_63[\"default\"] = ___default_63;\n\nvar _$snappers_64 = {};\n\"use strict\";\n\nObject.defineProperty(_$snappers_64, \"__esModule\", {\n value: true\n});\nObject.defineProperty(_$snappers_64, \"grid\", {\n enumerable: true,\n get: function get() {\n return _grid[\"default\"];\n }\n});\n\nvar _grid = ___interopRequireDefault_64(_$grid_63);\n\nfunction ___interopRequireDefault_64(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _$index_29 = { exports: {} };\n\"use strict\";\n\nObject.defineProperty(_$index_29.exports, \"__esModule\", {\n value: true\n});\n_$index_29.exports.init = __init_29;\n_$index_29.exports[\"default\"] = void 0;\n\nvar ___interact_29 = ___interopRequireWildcard_29(_$interact_27);\n\nvar __modifiers_29 = ___interopRequireWildcard_29(_$modifiers_31);\n\n_$types_44;\n\nvar ___extend_29 = ___interopRequireDefault_29(_$extend_52);\n\nvar snappers = ___interopRequireWildcard_29(_$snappers_64);\n\nfunction ___interopRequireDefault_29(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ___interopRequireWildcard_29(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction ___typeof_29(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { ___typeof_29 = function _typeof(obj) { return typeof obj; }; } else { ___typeof_29 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return ___typeof_29(obj); }\n\nif ((typeof window === \"undefined\" ? \"undefined\" : ___typeof_29(window)) === 'object' && !!window) {\n __init_29(window);\n}\n\nfunction __init_29(win) {\n (0, ___interact_29.init)(win);\n return ___interact_29[\"default\"].use({\n id: 'interactjs',\n install: function install(scope) {\n ___interact_29[\"default\"].modifiers = (0, ___extend_29[\"default\"])(scope.modifiers, __modifiers_29);\n ___interact_29[\"default\"].snappers = snappers;\n ___interact_29[\"default\"].createSnapGrid = ___interact_29[\"default\"].snappers.grid;\n }\n });\n}\n\nvar ___default_29 = ___interact_29[\"default\"];\n_$index_29.exports[\"default\"] = ___default_29;\n___interact_29[\"default\"]['default'] = ___interact_29[\"default\"]; // tslint:disable-line no-string-literal\n\n___interact_29[\"default\"]['init'] = __init_29; // tslint:disable-line no-string-literal\n\nif ((\"object\" === \"undefined\" ? \"undefined\" : ___typeof_29(_$index_29)) === 'object' && !!_$index_29) {\n _$index_29.exports = ___interact_29[\"default\"];\n}\n\n_$index_29 = _$index_29.exports\nreturn _$index_29;\n\n});\n\n\n//# sourceMappingURL=interact.js.map\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \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() {\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\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\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\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\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\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) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\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\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\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\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' ||\n (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))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.15.0\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\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 */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function 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 }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(\"Siema\",[],t):\"object\"==typeof exports?exports.Siema=t():e.Siema=t()}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(r){if(i[r])return i[r].exports;var n=i[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,r){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,\"a\",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=0)}([function(e,t,i){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=function(){function e(e,t){for(var i=0;i=e&&(this.perPage=this.config.perPage[e])}}},{key:\"prev\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments[1];if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;if(this.config.loop){if(this.currentSlide-e<0){this.disableTransition();var r=this.currentSlide+this.innerElements.length,n=this.perPage,s=r+n,l=(this.config.rtl?1:-1)*s*(this.selectorWidth/this.perPage),o=this.config.draggable?this.drag.endX-this.drag.startX:0;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(l+o)+\"px, 0, 0)\",this.currentSlide=r-e}else this.currentSlide=this.currentSlide-e}else this.currentSlide=Math.max(this.currentSlide-e,0);i!==this.currentSlide&&(this.slideToCurrent(this.config.loop),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"next\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments[1];if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;if(this.config.loop){if(this.currentSlide+e>this.innerElements.length-this.perPage){this.disableTransition();var r=this.currentSlide-this.innerElements.length,n=this.perPage,s=r+n,l=(this.config.rtl?1:-1)*s*(this.selectorWidth/this.perPage),o=this.config.draggable?this.drag.endX-this.drag.startX:0;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(l+o)+\"px, 0, 0)\",this.currentSlide=r+e}else this.currentSlide=this.currentSlide+e}else this.currentSlide=Math.min(this.currentSlide+e,this.innerElements.length-this.perPage);i!==this.currentSlide&&(this.slideToCurrent(this.config.loop),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"disableTransition\",value:function(){this.sliderFrame.style.webkitTransition=\"all 0ms \"+this.config.easing,this.sliderFrame.style.transition=\"all 0ms \"+this.config.easing}},{key:\"enableTransition\",value:function(){this.sliderFrame.style.webkitTransition=\"all \"+this.config.duration+\"ms \"+this.config.easing,this.sliderFrame.style.transition=\"all \"+this.config.duration+\"ms \"+this.config.easing}},{key:\"goTo\",value:function(e,t){if(!(this.innerElements.length<=this.perPage)){var i=this.currentSlide;this.currentSlide=this.config.loop?e%this.innerElements.length:Math.min(Math.max(e,0),this.innerElements.length-this.perPage),i!==this.currentSlide&&(this.slideToCurrent(),this.config.onChange.call(this),t&&t.call(this))}}},{key:\"slideToCurrent\",value:function(e){var t=this,i=this.config.loop?this.currentSlide+this.perPage:this.currentSlide,r=(this.config.rtl?1:-1)*i*(this.selectorWidth/this.perPage);e?requestAnimationFrame(function(){requestAnimationFrame(function(){t.enableTransition(),t.sliderFrame.style[t.transformProperty]=\"translate3d(\"+r+\"px, 0, 0)\"})}):this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+r+\"px, 0, 0)\"}},{key:\"updateAfterDrag\",value:function(){var e=(this.config.rtl?-1:1)*(this.drag.endX-this.drag.startX),t=Math.abs(e),i=this.config.multipleDrag?Math.ceil(t/(this.selectorWidth/this.perPage)):1,r=e>0&&this.currentSlide-i<0,n=e<0&&this.currentSlide+i>this.innerElements.length-this.perPage;e>0&&t>this.config.threshold&&this.innerElements.length>this.perPage?this.prev(i):e<0&&t>this.config.threshold&&this.innerElements.length>this.perPage&&this.next(i),this.slideToCurrent(r||n)}},{key:\"resizeHandler\",value:function(){this.resolveSlidesNumber(),this.currentSlide+this.perPage>this.innerElements.length&&(this.currentSlide=this.innerElements.length<=this.perPage?0:this.innerElements.length-this.perPage),this.selectorWidth=this.selector.offsetWidth,this.buildSliderFrame()}},{key:\"clearDrag\",value:function(){this.drag={startX:0,endX:0,startY:0,letItGo:null,preventClick:this.drag.preventClick}}},{key:\"touchstartHandler\",value:function(e){-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\"].indexOf(e.target.nodeName)||(e.stopPropagation(),this.pointerDown=!0,this.drag.startX=e.touches[0].pageX,this.drag.startY=e.touches[0].pageY)}},{key:\"touchendHandler\",value:function(e){e.stopPropagation(),this.pointerDown=!1,this.enableTransition(),this.drag.endX&&this.updateAfterDrag(),this.clearDrag()}},{key:\"touchmoveHandler\",value:function(e){if(e.stopPropagation(),null===this.drag.letItGo&&(this.drag.letItGo=Math.abs(this.drag.startY-e.touches[0].pageY)=this.innerElements.length)throw new Error(\"Item to remove doesn't exist 😭\");var i=ethis.innerElements.length+1)throw new Error(\"Unable to inset it at this index 😭\");if(-1!==this.innerElements.indexOf(e))throw new Error(\"The same item in a carousel? Really? Nope 😭\");var r=t<=this.currentSlide>0&&this.innerElements.length;this.currentSlide=r?this.currentSlide+1:this.currentSlide,this.innerElements.splice(t,0,e),this.buildSliderFrame(),i&&i.call(this)}},{key:\"prepend\",value:function(e,t){this.insert(e,0),t&&t.call(this)}},{key:\"append\",value:function(e,t){this.insert(e,this.innerElements.length+1),t&&t.call(this)}},{key:\"destroy\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments[1];if(this.detachEvents(),this.selector.style.cursor=\"auto\",e){for(var i=document.createDocumentFragment(),r=0;r\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add \"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"teacher_ppt_bar_btn_finishCreated with Sketch.\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","import { Source } from './../../utils/types';\nimport { uuid } from './../../utils/uuid';\nimport { SvgHelper } from './../../renderer/SvgHelper/index';\n\n/** 基础的绘制版 */\nexport class Baseboard {\n id: string = uuid();\n\n // 状态\n isFullscreen: boolean = false;\n\n /** 元素 */\n source: Source;\n\n // 目前使用 Image 元素作为输出源\n target: HTMLImageElement;\n targetRect: ClientRect;\n\n boardCanvas: SVGSVGElement;\n boardHolder: HTMLDivElement;\n defs: SVGDefsElement;\n\n width: number;\n height: number;\n\n constructor(source: Source) {\n this.source = source;\n\n // 如果传入的是某个元素,则直接附着\n if (source.imgEle) {\n this.target = source.imgEle!;\n\n this.width = this.target.clientWidth;\n this.height = this.target.clientHeight;\n }\n\n // 如果仅传入图片地址或者 Blob,则必须为全屏模式\n }\n\n protected initBoard = (mountContainer: HTMLElement) => {\n // init holder\n this.boardHolder = document.createElement('div');\n this.boardHolder.id = `fcw-board-holder-${this.id}`;\n this.boardHolder.className = `fcw-board-holder`;\n this.boardHolder.style.zIndex = '999';\n // fix for Edge's touch behavior\n this.boardHolder.style.setProperty('touch-action', 'none');\n this.boardHolder.style.setProperty('-ms-touch-action', 'none');\n\n mountContainer.appendChild(this.boardHolder);\n\n // init canvas\n this.boardCanvas = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n this.boardCanvas.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.boardCanvas.setAttribute('width', this.width.toString());\n this.boardCanvas.setAttribute('height', this.height.toString());\n this.boardCanvas.setAttribute(\n 'viewBox',\n '0 0 ' + this.width.toString() + ' ' + this.height.toString()\n );\n\n this.boardHolder.style.position = 'fixed';\n this.boardHolder.style.width = `${this.width}px`;\n this.boardHolder.style.height = `${this.height}px`;\n this.boardHolder.style.transformOrigin = 'top left';\n this.positionBoard();\n this.defs = SvgHelper.createDefs();\n this.boardCanvas.appendChild(this.defs);\n this.boardHolder.appendChild(this.boardCanvas);\n };\n\n /** 放置 Board */\n protected positionBoard = () => {\n this.boardHolder.style.top = this.targetRect.top + 'px';\n this.boardHolder.style.left = this.targetRect.left + 'px';\n };\n}\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import { HotkeysListener, KEY_ALL } from 'fc-hotkeys';\nimport * as debounce from 'lodash.debounce';\n\nimport { Source } from './../../utils/types';\nimport { Baseboard } from './../Baseboard/index';\nimport { BaseMarker } from './../../markers/BaseMarker/index';\nimport { getToolbars } from './../../toolbar/toolbar-items';\nimport { WhitePage } from '../../whiteboard/WhitePage';\nimport { onSyncFunc } from '../../event/SyncEvent';\n\nimport { Synthetizer } from '../../renderer/Synthetizer';\nimport { Toolbar } from '../../toolbar/Toolbar';\nimport { ToolbarItem } from '../../toolbar/ToolbarItem';\n\nimport './index.less';\nimport { rectContains } from '../../utils/layout';\nimport { RectMarker } from '../../markers/RectMarker/index';\nimport { HighlightMarker } from '../../markers/HighlightMarker/index';\nimport { CoverMarker } from '../../markers/CoverMarker/index';\nimport { LineMarker } from '../../markers/LineMarker/index';\nimport { ArrowMarker } from '../../markers/ArrowMarker/index';\nimport { TextMarker } from '../../markers/TextMarker/index';\n\nexport class Drawboard extends Baseboard {\n /** Options */\n mountContainer = document.body;\n scale = 1.0;\n zIndex: number = 999;\n allowKeyboard? = true;\n\n /** 句柄 */\n page: WhitePage;\n listener: HotkeysListener;\n\n markers: BaseMarker[];\n get markerMap(): { [key: string]: BaseMarker } {\n const map = {};\n this.markers.forEach(marker => {\n map[marker.id] = marker;\n });\n return map;\n }\n activeMarker: BaseMarker | null;\n\n toolbarItems: ToolbarItem[];\n\n toolbar: Toolbar;\n toolbarUI: HTMLElement;\n\n /** 回调 */\n onComplete: (dataUrl: string) => void = () => {};\n onChange: onSyncFunc = () => {};\n onCancel: () => void;\n\n constructor(\n source: Source,\n {\n allowKeyboard = true,\n extraToolbarItems,\n mountContainer,\n page,\n zIndex,\n onChange\n }: Partial & { extraToolbarItems?: ToolbarItem[] } = {}\n ) {\n super(source);\n\n if (page) {\n this.page = page;\n }\n\n if (zIndex) {\n this.zIndex = zIndex;\n }\n\n this.allowKeyboard = allowKeyboard;\n\n this.markers = [];\n this.activeMarker = null;\n\n const toolbarItems = getToolbars(page);\n\n if (extraToolbarItems) {\n toolbarItems.push(...extraToolbarItems);\n }\n\n this.toolbarItems = toolbarItems;\n\n if (onChange) {\n this.onChange = onChange;\n }\n\n if (allowKeyboard && this.page && this.page.mode === 'master') {\n this.listener = new HotkeysListener();\n this.listener.on(KEY_ALL, debounce(this.onKeyboard, 150));\n }\n\n if (mountContainer) {\n this.mountContainer = mountContainer;\n }\n }\n\n /** @region LifeCycle open - hide - show - ... - close */\n /** 打开画板 */\n public open = (onComplete?: (dataUrl: string) => void, onCancel?: () => void) => {\n if (onComplete) {\n this.onComplete = onComplete;\n }\n\n if (onCancel) {\n this.onCancel = onCancel;\n }\n\n this.setTargetRect();\n\n this.initBoard(this.mountContainer);\n this.attachEvents();\n this.setStyles();\n\n window.addEventListener('resize', this.adjustUI);\n\n if ((this.page && this.page.mode === 'master') || !this.page) {\n this.showUI();\n }\n };\n\n public hide = () => {\n if (this.source.imgSrc) {\n this.target.style.display = 'none';\n }\n // 这里不使用 display:none,是为了保证在隐藏时候仍然可以执行更新\n this.boardHolder.style.visibility = 'hidden';\n this.boardHolder.style.zIndex = '-1';\n\n if (this.toolbar) {\n this.toolbar.hide();\n }\n };\n\n public show = () => {\n if (this.source.imgSrc) {\n this.target.style.display = 'block';\n }\n\n this.boardHolder.style.visibility = 'visible';\n this.boardHolder.style.zIndex = `${this.zIndex}`;\n\n if (this.toolbar) {\n this.toolbar.show();\n }\n };\n\n public destroy = () => {\n if (this.toolbarUI) {\n this.mountContainer.removeChild(this.toolbarUI);\n }\n\n if (this.boardCanvas) {\n this.mountContainer.removeChild(this.boardHolder);\n }\n\n if (this.listener) {\n this.listener.reset();\n }\n };\n\n public render = (onComplete: (dataUrl: string) => void, onCancel?: () => void) => {\n this.onComplete = onComplete;\n\n if (onCancel) {\n this.onCancel = onCancel;\n }\n\n this.selectMarker(null);\n this.startRender(this.renderFinished);\n };\n\n /** 添加某个 Marker */\n public addMarker = (\n markerType: typeof BaseMarker,\n { id, originX, originY }: { id?: string; originX?: number; originY?: number } = {}\n ) => {\n // 假如 Drawboard 存在 Page 引用,则传导给 Marker\n const marker = markerType.createMarker(this.page);\n\n if (id) {\n marker.id = id;\n }\n\n marker.drawboard = this;\n marker.onSelected = this.selectMarker;\n marker.onChange = this.onChange;\n\n if (marker.defs && marker.defs.length > 0) {\n for (const d of marker.defs) {\n if (d.id && !this.boardCanvas.getElementById(d.id)) {\n this.defs.appendChild(d);\n }\n }\n }\n\n this.markers.push(marker);\n this.selectMarker(marker);\n this.boardCanvas.appendChild(marker.visual);\n\n let x;\n let y;\n\n if (originX && originY) {\n x = originX;\n y = originY;\n } else {\n // 默认居中\n const bbox = marker.visual.getBBox();\n x = this.width / 2 / this.scale - bbox.width / 2;\n y = this.height / 2 / this.scale - bbox.height / 2;\n }\n\n // 触发事件流\n this.onChange({\n target: 'marker',\n parentId: this.page ? this.page.id : this.id,\n event: 'addMarker',\n marker: { type: marker.type, id: marker.id, dx: x, dy: y }\n });\n\n marker.moveTo(x, y);\n\n return marker;\n };\n\n public deleteActiveMarker = () => {\n this.deleteMarkerWithEvent(this.activeMarker);\n };\n\n public clearMarkers = () => {\n [...this.markers].forEach(marker => {\n this.deleteMarkerWithEvent(marker);\n });\n };\n\n public deleteMarkerWithEvent = (marker: BaseMarker | null) => {\n if (marker) {\n // 触发事件\n if (this.onChange) {\n this.onChange({\n event: 'removeMarker',\n id: marker.id,\n target: 'marker',\n marker: { id: marker.id }\n });\n }\n this.deleteMarker(marker);\n }\n };\n\n private setTargetRect = () => {\n const targetRect = this.target.getBoundingClientRect() as DOMRect;\n const bodyRect = document.body.parentElement!.getBoundingClientRect();\n\n this.targetRect = {\n left: targetRect.left - bodyRect.left,\n top: targetRect.top - bodyRect.top\n } as ClientRect;\n };\n\n private startRender = (done: (dataUrl: string) => void) => {\n const renderer = new Synthetizer();\n renderer.rasterize(this.target, this.boardCanvas, done);\n };\n\n private attachEvents = () => {\n this.boardCanvas.addEventListener('mousedown', this.mouseDown);\n this.boardCanvas.addEventListener('mousemove', this.mouseMove);\n this.boardCanvas.addEventListener('mouseup', this.mouseUp);\n };\n\n private mouseDown = (ev: MouseEvent) => {\n /* tslint:disable:no-bitwise */\n if (this.activeMarker && (ev.buttons & 1) > 0) {\n this.activeMarker.deselect();\n this.activeMarker = null;\n }\n };\n\n private mouseMove = (ev: MouseEvent) => {\n /* tslint:disable:no-bitwise */\n if (this.activeMarker && (ev.buttons & 1) > 0) {\n this.activeMarker.manipulate(ev);\n }\n };\n\n private mouseUp = (ev: MouseEvent) => {\n if (this.activeMarker) {\n this.activeMarker.endManipulation();\n }\n };\n\n private onKeyboard = (e: any, { hotkey }: { hotkey: string }) => {\n switch (hotkey) {\n case 'Shift+R':\n this.addMarker(RectMarker);\n return;\n case 'Shift+H':\n this.addMarker(HighlightMarker);\n return;\n case 'Shift+C':\n this.addMarker(CoverMarker);\n return;\n case 'Shift+L':\n this.addMarker(LineMarker);\n return;\n case 'Shift+A':\n this.addMarker(ArrowMarker);\n return;\n case 'Shift+T':\n this.addMarker(TextMarker);\n return;\n case 'ESC':\n this.page.whiteboard!.rollbackSnap();\n return;\n default:\n break;\n }\n if (!this.activeMarker) {\n return;\n }\n\n switch (hotkey) {\n case 'UP':\n this.activeMarker.move(0, -10);\n return;\n case 'LEFT':\n this.activeMarker.move(-10, 0);\n return;\n case 'RIGHT':\n this.activeMarker.move(10, 0);\n return;\n case 'DOWN':\n this.activeMarker.move(0, 10);\n return;\n case 'BACKSPACE':\n this.deleteActiveMarker();\n return;\n default:\n return;\n }\n };\n\n private adjustUI = (ev: UIEvent) => {\n this.adjustSize();\n this.positionUI();\n };\n\n private adjustSize = () => {\n this.width = this.target.clientWidth;\n this.height = this.target.clientHeight;\n\n const scale = this.target.clientWidth / this.boardHolder.clientWidth;\n if (scale !== 1.0) {\n this.scale *= scale;\n this.boardHolder.style.width = `${this.width}px`;\n this.boardHolder.style.height = `${this.height}px`;\n\n this.boardHolder.style.transform = `scale(${this.scale})`;\n }\n };\n\n private positionUI = () => {\n this.setTargetRect();\n this.positionBoard();\n this.positionToolbar();\n };\n\n private positionToolbar = () => {\n if (this.toolbarUI && this.targetRect) {\n this.toolbarUI.style.left = `${this.targetRect.left +\n this.target.offsetWidth -\n this.toolbarUI.clientWidth}px`;\n this.toolbarUI.style.top = `${this.targetRect.top - this.toolbarUI.clientHeight}px`;\n }\n };\n\n private showUI = () => {\n this.toolbar = new Toolbar(this.toolbarItems, this.toolbarClick);\n this.toolbar.zIndex = this.zIndex + 1;\n\n this.toolbarUI = this.toolbar.getUI(this);\n\n this.boardHolder.appendChild(this.toolbarUI);\n this.toolbarUI.style.position = 'absolute';\n\n this.positionToolbar();\n this.toolbar.show();\n\n // 处理元素的拖拽事件\n this.toolbar.toolbarButtons.forEach(button => {\n if (button.toolbarItem.draggable) {\n button.container.draggable = true;\n button.container.ondragstart = ev => {\n if (ev) {\n ev.dataTransfer!.setData('id', button.id);\n }\n };\n }\n });\n\n this.boardCanvas.ondragover = ev => {\n ev.preventDefault();\n };\n\n this.boardCanvas.ondrop = ev => {\n const markerX = ev.x;\n const markerY = ev.y;\n\n const rect = this.boardHolder.getBoundingClientRect();\n\n if (rectContains(rect, { x: markerX, y: markerY })) {\n const buttonId = ev.dataTransfer!.getData('id');\n\n const button = this.toolbar.toolbarButtonMap[buttonId];\n\n if (button.toolbarItem && button.toolbarItem.markerType) {\n this.addMarker(button.toolbarItem.markerType, {\n originX: markerX - rect.left,\n originY: markerY - rect.top\n });\n }\n }\n };\n };\n\n private setStyles = () => {\n const editorStyleSheet = document.createElementNS('http://www.w3.org/2000/svg', 'style');\n editorStyleSheet.innerHTML = `\n .rect-marker .render-visual {\n stroke: #ff0000;\n stroke-width: 3;\n fill: transparent;\n }\n .cover-marker .render-visual {\n stroke-width: 0;\n fill: #000000;\n }\n .highlight-marker .render-visual {\n stroke: transparent;\n stroke-width: 0;\n fill: #ffff00;\n fill-opacity: 0.4;\n }\n .line-marker .render-visual {\n stroke: #ff0000;\n stroke-width: 3;\n fill: transparent;\n }\n .arrow-marker .render-visual {\n stroke: #ff0000;\n stroke-width: 3;\n fill: transparent;\n }\n .arrow-marker-tip {\n stroke-width: 0;\n fill: #ff0000;\n }\n .text-marker text {\n fill: #ff0000;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n }\n .fc-whiteboard-rect-control-box .fc-whiteboard-rect-control-rect {\n stroke: black;\n stroke-width: 1;\n stroke-opacity: 0.5;\n stroke-dasharray: 3, 2;\n fill: transparent;\n }\n .fc-whiteboard-control-grip {\n fill: #cccccc;\n stroke: #333333;\n stroke-width: 2;\n }\n `;\n\n this.boardCanvas.appendChild(editorStyleSheet);\n };\n\n /** 处理 Toolbar 的点击事件 */\n private toolbarClick = (ev: MouseEvent, toolbarItem: ToolbarItem) => {\n if (toolbarItem.onClick) {\n toolbarItem.onClick();\n } else if (toolbarItem.markerType) {\n this.addMarker(toolbarItem.markerType);\n } else {\n // command button\n switch (toolbarItem.name) {\n case 'delete': {\n this.deleteActiveMarker();\n break;\n }\n case 'pointer': {\n if (this.activeMarker) {\n this.selectMarker(null);\n }\n break;\n }\n case 'close': {\n this.cancel();\n break;\n }\n case 'ok': {\n this.complete();\n break;\n }\n default:\n break;\n }\n }\n };\n\n private selectMarker = (marker: BaseMarker | null) => {\n if (this.activeMarker && this.activeMarker !== marker) {\n this.activeMarker.deselect();\n }\n this.activeMarker = marker;\n };\n\n public deleteMarker = (marker: BaseMarker) => {\n this.boardCanvas.removeChild(marker.visual);\n if (this.activeMarker === marker) {\n this.activeMarker = null;\n }\n this.markers.splice(this.markers.indexOf(marker), 1);\n };\n\n private complete = () => {\n this.selectMarker(null);\n this.startRender(this.renderFinishedClose);\n };\n\n private cancel = () => {\n this.destroy();\n if (this.onCancel) {\n this.onCancel();\n }\n };\n\n private renderFinished = (dataUrl: string) => {\n this.onComplete(dataUrl);\n };\n\n private renderFinishedClose = (dataUrl: string) => {\n this.destroy();\n this.onComplete(dataUrl);\n };\n}\n","import * as EventEmitter from 'eventemitter3';\n\nexport class EventHub extends EventEmitter<'sync'> {}\n","export { Drawboard } from './drawboard/Drawboard';\nexport { separatorToolbarItem, closeToolbarItem } from './toolbar/toolbar-items';\n\nexport { Mode } from './utils/types';\nexport { SyncEvent } from './event/SyncEvent';\nexport { EventHub } from './event/EventHub';\nexport { Whiteboard } from './whiteboard/Whiteboard';\nexport { MirrorWhiteboard } from './whiteboard/MirrorWhiteboard';\nexport { ReplayWhiteboard } from './whiteboard/ReplayWhiteboard';\n","import { MarkerType } from './../types';\nimport { LinearMarker } from '../LinearMarker';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { WhitePage } from '../../whiteboard/WhitePage';\n\nexport class ArrowMarker extends LinearMarker {\n type: MarkerType = 'arrow';\n\n public static createMarker = (page?: WhitePage): LinearMarker => {\n const marker = new ArrowMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n private readonly ARROW_SIZE = 6;\n\n protected init() {\n super.init();\n SvgHelper.setAttributes(this.visual, [['class', 'arrow-marker']]);\n\n const tip = SvgHelper.createPolygon(\n `0,0 ${this.ARROW_SIZE},${this.ARROW_SIZE / 2} 0,${this.ARROW_SIZE}`,\n [['class', 'arrow-marker-tip']]\n );\n this.defs.push(\n SvgHelper.createMarker(\n 'arrow-marker-head',\n 'auto',\n this.ARROW_SIZE,\n this.ARROW_SIZE,\n this.ARROW_SIZE - 1,\n this.ARROW_SIZE / 2,\n tip\n )\n );\n\n this.markerLine.setAttribute('marker-end', 'url(#arrow-marker-head');\n }\n}\n","import { SvgHelper } from '../../renderer/SvgHelper';\n\n/** 操作小圆点 */\nexport class ResizeGrip {\n public visual: SVGGraphicsElement;\n\n public readonly GRIP_SIZE = 10;\n\n constructor() {\n this.visual = SvgHelper.createCircle(this.GRIP_SIZE, [['class', 'fc-whiteboard-control-grip']]);\n }\n}\n","import { WhitePage } from '../../whiteboard/WhitePage/index';\nimport { PositionType } from '../../utils/layout';\nimport { onSyncFunc, EventType } from '../../event/SyncEvent';\nimport { MarkerType } from '../types';\nimport * as uuid from 'uuid/v1';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { MarkerSnap } from '../../whiteboard/AbstractWhiteboard/snap';\nimport { Drawboard } from '../../drawboard/Drawboard/index';\nimport { DomEventAware } from '../../renderer/DomEventAware/index';\nimport { isNil } from '../../utils/types';\n\nexport class BaseMarker extends DomEventAware {\n id: string = uuid();\n type: MarkerType = 'base';\n // 归属的 WhitePage\n page?: WhitePage;\n // 归属的 Drawboard\n drawboard?: Drawboard;\n // Marker 的属性发生变化后的回调\n onChange: onSyncFunc = () => {};\n\n public static createMarker = (page?: WhitePage): BaseMarker => {\n const marker = new BaseMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n public visual: SVGGElement;\n public renderVisual: SVGGElement;\n\n public onSelected: (marker: BaseMarker) => void;\n\n public defs: SVGElement[] = [];\n\n width: number = 200;\n height: number = 50;\n\n isActive: boolean = true;\n isDragging: boolean = false;\n isResizing: boolean = false;\n\n public reactToManipulation(\n type: EventType,\n { dx, dy, pos }: { dx?: number; dy?: number; pos?: PositionType } = {}\n ) {\n if (type === 'moveMarker') {\n if (isNil(dx) || isNil(dy)) {\n return;\n }\n\n this.move(dx!, dy!);\n }\n\n if (type === 'resizeMarker') {\n if (isNil(dx) || isNil(dy)) {\n return;\n }\n\n this.resizeByEvent(dx!, dy!, pos);\n }\n }\n\n /** 响应元素视图状态变化 */\n public manipulate = (ev: MouseEvent) => {\n const scale = this.visual.getScreenCTM()!.a;\n const dx = (ev.screenX - this.previousMouseX) / scale;\n const dy = (ev.screenY - this.previousMouseY) / scale;\n\n // 如果在拖拽\n if (this.isDragging) {\n this.move(dx, dy);\n }\n\n // 如果是缩放\n if (this.isResizing) {\n this.resize(dx, dy, (pos: PositionType) => {\n this.onChange({\n target: 'marker',\n id: this.id,\n event: 'resizeMarker',\n marker: { dx, dy, pos }\n });\n });\n }\n\n this.previousMouseX = ev.screenX;\n this.previousMouseY = ev.screenY;\n };\n\n public endManipulation() {\n this.isDragging = false;\n this.isResizing = false;\n }\n\n public select() {\n this.isActive = true;\n if (this.onSelected) {\n this.onSelected(this);\n }\n return;\n }\n\n public deselect() {\n this.isActive = false;\n this.endManipulation();\n return;\n }\n\n /** 生成某个快照 */\n public captureSnap(): MarkerSnap {\n return {\n id: this.id,\n type: this.type,\n isActive: this.isActive,\n x: this.x,\n y: this.y\n };\n }\n\n /** 应用某个快照 */\n public applySnap(snap: MarkerSnap): void {\n this.id = snap.id;\n this.type = snap.type;\n\n if (snap.x && snap.y) {\n // 移动当前位置\n this.moveTo(snap.x, snap.y);\n }\n\n // 判断是否为激活\n if (this.isActive) {\n this.select();\n }\n }\n\n /** 移除该 Marker */\n public destroy() {\n this.visual.style.display = 'none';\n }\n\n protected resize(x: number, y: number, cb?: Function) {\n return;\n }\n protected resizeByEvent(x: number, y: number, pos?: PositionType) {\n return;\n }\n\n public move = (dx: number, dy: number) => {\n const translate = this.visual.transform.baseVal.getItem(0);\n translate.setMatrix(translate.matrix.translate(dx, dy));\n this.visual.transform.baseVal.replaceItem(translate, 0);\n\n this.x += dx;\n this.y += dy;\n\n this.onChange({ target: 'marker', id: this.id, event: 'moveMarker', marker: { dx, dy } });\n };\n\n /** Move to relative position */\n public moveTo = (x: number, y: number) => {\n const translate = this.visual.transform.baseVal.getItem(0);\n translate.setMatrix(translate.matrix.translate(x - this.x, y - this.y));\n this.visual.transform.baseVal.replaceItem(translate, 0);\n\n this.x = x;\n this.y = y;\n };\n\n /** Init base marker */\n protected init() {\n this.visual = SvgHelper.createGroup();\n // translate\n this.visual.transform.baseVal.appendItem(SvgHelper.createTransform());\n\n super.init(this.visual);\n this.renderVisual = SvgHelper.createGroup([['class', 'render-visual']]);\n this.visual.appendChild(this.renderVisual);\n }\n\n protected addToVisual = (el: SVGElement) => {\n this.visual.appendChild(el);\n };\n\n protected addToRenderVisual = (el: SVGElement) => {\n this.renderVisual.appendChild(el);\n };\n\n protected onMouseDown = (ev: MouseEvent) => {\n ev.stopPropagation();\n\n if (this.page && this.page.mode === 'mirror') {\n return;\n }\n\n this.select();\n this.isDragging = true;\n this.previousMouseX = ev.screenX;\n this.previousMouseY = ev.screenY;\n };\n\n protected onMouseUp = (ev: MouseEvent) => {\n ev.stopPropagation();\n this.endManipulation();\n };\n\n protected onMouseMove = (ev: MouseEvent) => {\n ev.stopPropagation();\n this.manipulate(ev);\n };\n}\n","import { MarkerType } from './../types';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { RectBaseMarker } from '../RectMarker/RectBaseMarker';\nimport { WhitePage } from '../../whiteboard/WhitePage';\n\nexport class CoverMarker extends RectBaseMarker {\n type: MarkerType = 'cover';\n\n public static createMarker = (page?: WhitePage): RectBaseMarker => {\n const marker = new CoverMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n protected init() {\n super.init();\n SvgHelper.setAttributes(this.visual, [['class', 'cover-marker']]);\n }\n}\n","import { MarkerType } from './../types';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { RectBaseMarker } from '../RectMarker/RectBaseMarker';\nimport { WhitePage } from '../../whiteboard/WhitePage';\n\nexport class HighlightMarker extends RectBaseMarker {\n type: MarkerType = 'highlight';\n\n public static createMarker = (page?: WhitePage): RectBaseMarker => {\n const marker = new HighlightMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n protected init() {\n super.init();\n SvgHelper.setAttributes(this.visual, [['class', 'highlight-marker']]);\n }\n}\n","import { MarkerType } from './../types';\nimport { LinearMarker } from '../LinearMarker';\nimport { SvgHelper } from './../../renderer/SvgHelper/index';\nimport { WhitePage } from '../../whiteboard/WhitePage';\n\nexport class LineMarker extends LinearMarker {\n type: MarkerType = 'line';\n\n public static createMarker = (page?: WhitePage): LinearMarker => {\n const marker = new LineMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n protected init() {\n super.init();\n SvgHelper.setAttributes(this.visual, [['class', 'line-marker']]);\n }\n}\n","import { WhitePage } from '../../whiteboard/WhitePage/index';\nimport { BaseMarker } from '../BaseMarker';\nimport { ResizeGrip } from '../BaseMarker/ResizeGrip';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { PositionType } from '../../utils/layout';\nimport { MarkerSnap } from '../../whiteboard/AbstractWhiteboard/snap';\nimport { LinearBound } from '../types';\n\n/**\n * 线性标识\n */\nexport class LinearMarker extends BaseMarker implements LinearBound {\n public static createMarker = (page?: WhitePage): LinearMarker => {\n const marker = new LinearMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n private readonly MIN_LENGTH = 20;\n // 线的左端点与右端点\n x1: number = 0;\n y1: number = 0;\n x2: number = this.width;\n y2: number = 0;\n\n /** @region UI Handlers */\n protected markerLine: SVGLineElement;\n private markerBgLine: SVGLineElement; // touch target\n private controlBox: SVGGElement;\n\n private controlGrips: { left: ResizeGrip; right: ResizeGrip };\n private activeGrip: ResizeGrip | null;\n\n /** Getter & Setter */\n public getLineLength = (x1: number, y1: number, x2: number, y2: number): number => {\n const dx = Math.abs(x1 - x2);\n const dy = Math.abs(y1 - y2);\n\n return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n };\n\n public captureSnap(): MarkerSnap {\n const baseSnap = super.captureSnap();\n\n baseSnap.linearSnap = {\n x1: this.x1,\n y1: this.y1,\n x2: this.x2,\n y2: this.y2\n };\n\n return baseSnap;\n }\n\n public applySnap(snap: MarkerSnap): void {\n super.applySnap(snap);\n\n if (snap.linearSnap) {\n this.positionLine(snap.linearSnap);\n }\n }\n\n /** 复写操作事件 */\n public endManipulation() {\n super.endManipulation();\n this.isResizing = false;\n this.activeGrip = null;\n }\n\n public select() {\n super.select();\n this.controlBox.style.display = '';\n }\n\n public deselect() {\n super.deselect();\n this.controlBox.style.display = 'none';\n }\n\n protected init() {\n super.init();\n\n this.markerBgLine = SvgHelper.createLine(0, 0, this.x2, 0, [\n ['stroke', 'transparent'],\n ['stroke-width', '30']\n ]);\n this.addToRenderVisual(this.markerBgLine);\n this.markerLine = SvgHelper.createLine(0, 0, this.x2, 0);\n this.addToRenderVisual(this.markerLine);\n\n this.addControlBox();\n\n if (this.page && this.page.mode === 'mirror') {\n this.controlBox.style.display = 'none';\n }\n }\n\n /** 主动伸缩操作 */\n protected resize(x: number, y: number, onPosition?: (pos: PositionType) => void) {\n if (this.activeGrip) {\n if (\n this.activeGrip === this.controlGrips.left &&\n this.getLineLength(this.x1 + x, this.y1 + 1, this.x2, this.y2) >= this.MIN_LENGTH\n ) {\n this.x1 += x;\n this.y1 += y;\n this.markerBgLine.setAttribute('x1', this.x1.toString());\n this.markerBgLine.setAttribute('y1', this.y1.toString());\n this.markerLine.setAttribute('x1', this.x1.toString());\n this.markerLine.setAttribute('y1', this.y1.toString());\n if (onPosition) {\n onPosition('left');\n }\n } else if (\n this.activeGrip === this.controlGrips.right &&\n this.getLineLength(this.x1, this.y1, this.x2 + x, this.y2 + y) >= this.MIN_LENGTH\n ) {\n this.x2 += x;\n this.y2 += y;\n this.markerBgLine.setAttribute('x2', this.x2.toString());\n this.markerBgLine.setAttribute('y2', this.y2.toString());\n this.markerLine.setAttribute('x2', this.x2.toString());\n this.markerLine.setAttribute('y2', this.y2.toString());\n if (onPosition) {\n onPosition('right');\n }\n }\n }\n\n this.adjustControlBox();\n }\n\n /** 根据事件进行伸缩操作 */\n protected resizeByEvent(x: number, y: number, pos?: PositionType) {\n if (pos === 'left') {\n this.activeGrip = this.controlGrips.left;\n } else {\n this.activeGrip = this.controlGrips.right;\n }\n this.resize(x, y);\n }\n\n /** Init */\n private addControlBox = () => {\n this.controlBox = SvgHelper.createGroup([['class', 'fc-whiteboard-line-control-box']]);\n this.addToVisual(this.controlBox);\n this.addControlGrips();\n };\n\n private adjustControlBox = () => {\n this.positionGrips();\n };\n\n private addControlGrips = () => {\n this.controlGrips = {\n left: this.createGrip(),\n right: this.createGrip()\n };\n\n this.positionGrips();\n };\n\n private createGrip = (): ResizeGrip => {\n const grip = new ResizeGrip();\n grip.visual.transform.baseVal.appendItem(SvgHelper.createTransform());\n this.controlBox.appendChild(grip.visual);\n\n grip.visual.addEventListener('mousedown', this.gripMouseDown);\n grip.visual.addEventListener('mousemove', this.gripMouseMove);\n grip.visual.addEventListener('mouseup', this.gripMouseUp);\n\n grip.visual.addEventListener('touchstart', this.onTouch, { passive: false });\n grip.visual.addEventListener('touchend', this.onTouch, { passive: false });\n grip.visual.addEventListener('touchmove', this.onTouch, { passive: false });\n\n if (this.page && this.page.mode === 'mirror') {\n grip.visual.style.visibility = 'hidden';\n }\n\n return grip;\n };\n\n /** Event Handlers */\n private gripMouseDown = (ev: MouseEvent) => {\n this.isResizing = true;\n this.activeGrip =\n (ev.target as SVGGraphicsElement) === this.controlGrips.left.visual\n ? this.controlGrips.left\n : this.controlGrips.right;\n this.previousMouseX = ev.screenX;\n this.previousMouseY = ev.screenY;\n ev.stopPropagation();\n };\n\n private gripMouseUp = (ev: MouseEvent) => {\n this.isResizing = false;\n this.activeGrip = null;\n ev.stopPropagation();\n };\n\n private gripMouseMove = (ev: MouseEvent) => {\n if (this.isResizing) {\n this.resize(ev.movementX, ev.movementY);\n }\n };\n\n /** UI Position */\n private positionLine = (bound: LinearBound) => {\n this.x1 = bound.x1;\n this.y1 = bound.y1;\n this.x2 = bound.x2;\n this.y2 = bound.y2;\n\n this.markerBgLine.setAttribute('x1', this.x1.toString());\n this.markerBgLine.setAttribute('y1', this.y1.toString());\n this.markerLine.setAttribute('x2', this.x2.toString());\n this.markerLine.setAttribute('y2', this.y2.toString());\n };\n\n private positionGrips = () => {\n const gripSize = this.controlGrips.left.GRIP_SIZE;\n\n const x1 = this.x1 - gripSize / 2;\n const y1 = this.y1 - gripSize / 2;\n const x2 = this.x2 - gripSize / 2;\n const y2 = this.y2 - gripSize / 2;\n\n this.positionGrip(this.controlGrips.left.visual, x1, y1);\n this.positionGrip(this.controlGrips.right.visual, x2, y2);\n };\n\n private positionGrip = (grip: SVGGraphicsElement, x: number, y: number) => {\n const translate = grip.transform.baseVal.getItem(0);\n translate.setTranslate(x, y);\n grip.transform.baseVal.replaceItem(translate, 0);\n };\n}\n","import { PositionType } from '../../utils/layout';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { RectangularMarker } from '../RectangularMarker';\nimport { WhitePage } from '../../whiteboard/WhitePage';\nimport { MarkerSnap } from '../../whiteboard/AbstractWhiteboard/snap';\n\nexport class RectBaseMarker extends RectangularMarker {\n public static createMarker = (page?: WhitePage): RectBaseMarker => {\n const marker = new RectBaseMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n private markerRect: SVGRectElement;\n\n /** Getter & Setter */\n\n public applySnap(snap: MarkerSnap) {\n super.applySnap(snap);\n\n if (snap.rectSnap) {\n this.markerRect.setAttribute('width', this.width.toString());\n this.markerRect.setAttribute('height', this.height.toString());\n }\n }\n\n protected init() {\n super.init();\n\n this.markerRect = SvgHelper.createRect(this.width, this.height);\n this.addToRenderVisual(this.markerRect);\n }\n\n protected resize(x: number, y: number, onPosition?: (pos: PositionType) => void) {\n super.resize(x, y, onPosition);\n this.markerRect.setAttribute('width', this.width.toString());\n this.markerRect.setAttribute('height', this.height.toString());\n }\n}\n","import { WhitePage } from '../../whiteboard/WhitePage/index';\nimport { MarkerType } from './../types';\nimport { RectBaseMarker } from './RectBaseMarker';\nimport { SvgHelper } from '../../renderer/SvgHelper';\n\nexport class RectMarker extends RectBaseMarker {\n type: MarkerType = 'rect';\n\n public static createMarker = (page?: WhitePage): RectBaseMarker => {\n const marker = new RectMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n protected init() {\n super.init();\n SvgHelper.setAttributes(this.visual, [['class', 'rect-marker']]);\n }\n}\n","import { ResizeGrip } from '../BaseMarker/ResizeGrip';\n\nexport class RectangularMarkerGrips {\n public topLeft: ResizeGrip;\n public topCenter: ResizeGrip;\n public topRight: ResizeGrip;\n public centerLeft: ResizeGrip;\n public centerRight: ResizeGrip;\n public bottomLeft: ResizeGrip;\n public bottomCenter: ResizeGrip;\n public bottomRight: ResizeGrip;\n\n public findGripByVisual = (gripVisual: SVGGraphicsElement) => {\n switch (gripVisual) {\n case this.topLeft.visual:\n return this.topLeft;\n case this.topCenter.visual:\n return this.topCenter;\n case this.topRight.visual:\n return this.topRight;\n case this.centerLeft.visual:\n return this.centerLeft;\n case this.centerRight.visual:\n return this.centerRight;\n case this.bottomLeft.visual:\n return this.bottomLeft;\n case this.bottomCenter.visual:\n return this.bottomCenter;\n case this.bottomRight.visual:\n return this.bottomRight;\n default:\n return this.topLeft;\n }\n };\n}\n","import { RectangularMarkerGrips } from './RectangularMarkerGrips';\nimport { BaseMarker } from '../BaseMarker';\nimport { ResizeGrip } from '../BaseMarker/ResizeGrip';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { WhitePage } from '../../whiteboard/WhitePage';\nimport { PositionType } from '../../utils/layout';\nimport { MarkerSnap } from '../../whiteboard/AbstractWhiteboard/snap';\n\nexport class RectangularMarker extends BaseMarker {\n public static createMarker = (page?: WhitePage): RectangularMarker => {\n const marker = new RectangularMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n protected MIN_SIZE = 5;\n\n private controlBox: SVGGElement;\n private readonly CB_DISTANCE: number = 10;\n private controlRect: SVGRectElement;\n\n private controlGrips: RectangularMarkerGrips;\n private activeGrip: ResizeGrip | null;\n\n /** Getter & Setter */\n public captureSnap(): MarkerSnap {\n const snap = super.captureSnap();\n\n snap.rectSnap = {\n width: this.width,\n height: this.height\n };\n\n return snap;\n }\n\n public applySnap(snap: MarkerSnap) {\n super.applySnap(snap);\n\n if (snap.rectSnap) {\n const { width, height } = snap.rectSnap;\n\n if (width && height) {\n this.width = width;\n this.height = height;\n this.adjustControlBox();\n }\n }\n }\n\n public endManipulation() {\n super.endManipulation();\n this.isResizing = false;\n this.activeGrip = null;\n }\n\n public select() {\n super.select();\n this.controlBox.style.display = '';\n }\n\n public deselect() {\n super.deselect();\n this.controlBox.style.display = 'none';\n }\n\n protected init() {\n super.init();\n\n this.addControlBox();\n\n if (this.page && this.page.mode === 'mirror') {\n this.controlBox.style.display = 'none';\n }\n }\n\n protected resizeByEvent(dx: number, dy: number, pos: PositionType) {\n this.activeGrip = this.controlGrips[pos];\n this.resize(dx, dy);\n }\n\n protected resize(dx: number, dy: number, onPosition?: (pos: PositionType) => void) {\n let translateX = 0;\n let translateY = 0;\n\n switch (this.activeGrip) {\n case this.controlGrips.topLeft:\n this.width -= dx;\n this.height -= dy;\n translateX += dx;\n translateY += dy;\n\n this.x += dx;\n this.y += dy;\n\n if (onPosition) {\n onPosition('topLeft');\n }\n break;\n\n case this.controlGrips.bottomLeft:\n this.width -= dx;\n this.height += dy;\n translateX += dx;\n\n this.x += dx;\n\n if (onPosition) {\n onPosition('bottomLeft');\n }\n break;\n\n case this.controlGrips.topRight:\n this.width += dx;\n this.height -= dy;\n translateY += dy;\n\n this.y += dy;\n\n if (onPosition) {\n onPosition('topRight');\n }\n break;\n\n case this.controlGrips.bottomRight:\n this.width += dx;\n this.height += dy;\n if (onPosition) {\n onPosition('bottomRight');\n }\n break;\n\n case this.controlGrips.centerLeft:\n this.width -= dx;\n translateX += dx;\n\n this.x += dx;\n\n if (onPosition) {\n onPosition('centerLeft');\n }\n break;\n\n case this.controlGrips.centerRight:\n this.width += dx;\n if (onPosition) {\n onPosition('centerRight');\n }\n break;\n\n case this.controlGrips.topCenter:\n this.height -= dy;\n translateY += dy;\n\n this.y += dy;\n\n if (onPosition) {\n onPosition('topCenter');\n }\n break;\n\n case this.controlGrips.bottomCenter:\n this.height += dy;\n if (onPosition) {\n onPosition('bottomCenter');\n }\n break;\n\n default:\n break;\n }\n\n if (this.width < this.MIN_SIZE) {\n const offset = this.MIN_SIZE - this.width;\n this.width = this.MIN_SIZE;\n if (translateX !== 0) {\n translateX -= offset;\n }\n }\n if (this.height < this.MIN_SIZE) {\n const offset = this.MIN_SIZE - this.height;\n this.height = this.MIN_SIZE;\n if (translateY !== 0) {\n translateY -= offset;\n }\n }\n\n if (translateX !== 0 || translateY !== 0) {\n const translate = this.visual.transform.baseVal.getItem(0);\n translate.setMatrix(translate.matrix.translate(translateX, translateY));\n this.visual.transform.baseVal.replaceItem(translate, 0);\n }\n\n this.adjustControlBox();\n }\n\n /** Init Comps */\n private addControlBox = () => {\n this.controlBox = SvgHelper.createGroup([['class', 'fc-whiteboard-rect-control-box']]);\n const translate = SvgHelper.createTransform();\n translate.setTranslate(-this.CB_DISTANCE / 2, -this.CB_DISTANCE / 2);\n this.controlBox.transform.baseVal.appendItem(translate);\n\n this.addToVisual(this.controlBox);\n\n this.controlRect = SvgHelper.createRect(\n this.width + this.CB_DISTANCE,\n this.height + this.CB_DISTANCE,\n [['class', 'fc-whiteboard-rect-control-rect']]\n );\n\n this.controlBox.appendChild(this.controlRect);\n\n this.controlGrips = new RectangularMarkerGrips();\n this.addControlGrips();\n };\n\n private adjustControlBox = () => {\n this.controlRect.setAttribute('width', (this.width + this.CB_DISTANCE).toString());\n this.controlRect.setAttribute('height', (this.height + this.CB_DISTANCE).toString());\n\n this.positionGrips();\n };\n\n private addControlGrips = () => {\n this.controlGrips.topLeft = this.createGrip();\n this.controlGrips.topCenter = this.createGrip();\n this.controlGrips.topRight = this.createGrip();\n this.controlGrips.centerLeft = this.createGrip();\n this.controlGrips.centerRight = this.createGrip();\n this.controlGrips.bottomLeft = this.createGrip();\n this.controlGrips.bottomCenter = this.createGrip();\n this.controlGrips.bottomRight = this.createGrip();\n\n this.positionGrips();\n };\n\n private createGrip = (): ResizeGrip => {\n const grip = new ResizeGrip();\n grip.visual.transform.baseVal.appendItem(SvgHelper.createTransform());\n this.controlBox.appendChild(grip.visual);\n\n grip.visual.addEventListener('mousedown', this.gripMouseDown);\n grip.visual.addEventListener('mousemove', this.gripMouseMove);\n grip.visual.addEventListener('mouseup', this.gripMouseUp);\n\n grip.visual.addEventListener('touchstart', this.onTouch, { passive: false });\n grip.visual.addEventListener('touchend', this.onTouch, { passive: false });\n grip.visual.addEventListener('touchmove', this.onTouch, { passive: false });\n\n return grip;\n };\n\n /** Event Handlers */\n protected onTouch(ev: TouchEvent) {\n super.onTouch(ev);\n }\n\n private gripMouseDown = (ev: MouseEvent) => {\n this.isResizing = true;\n this.activeGrip = this.controlGrips.findGripByVisual(ev.target as SVGGraphicsElement) || null;\n this.previousMouseX = ev.screenX;\n this.previousMouseY = ev.screenY;\n ev.stopPropagation();\n };\n\n private gripMouseUp = (ev: MouseEvent) => {\n this.isResizing = false;\n this.activeGrip = null;\n ev.stopPropagation();\n };\n\n private gripMouseMove = (ev: MouseEvent) => {\n if (this.isResizing) {\n this.manipulate(ev);\n }\n };\n\n /** UI Position */\n private positionGrips = () => {\n const gripSize = this.controlGrips.topLeft.GRIP_SIZE;\n\n const left = -gripSize / 2;\n const top = left;\n const cx = (this.width + this.CB_DISTANCE) / 2 - gripSize / 2;\n const cy = (this.height + this.CB_DISTANCE) / 2 - gripSize / 2;\n const bottom = this.height + this.CB_DISTANCE - gripSize / 2;\n const right = this.width + this.CB_DISTANCE - gripSize / 2;\n\n this.positionGrip(this.controlGrips.topLeft.visual, left, top);\n this.positionGrip(this.controlGrips.topCenter.visual, cx, top);\n this.positionGrip(this.controlGrips.topRight.visual, right, top);\n this.positionGrip(this.controlGrips.centerLeft.visual, left, cy);\n this.positionGrip(this.controlGrips.centerRight.visual, right, cy);\n this.positionGrip(this.controlGrips.bottomLeft.visual, left, bottom);\n this.positionGrip(this.controlGrips.bottomCenter.visual, cx, bottom);\n this.positionGrip(this.controlGrips.bottomRight.visual, right, bottom);\n };\n\n private positionGrip = (grip: SVGGraphicsElement, x: number, y: number) => {\n const translate = grip.transform.baseVal.getItem(0);\n translate.setTranslate(x, y);\n grip.transform.baseVal.replaceItem(translate, 0);\n };\n}\n","import { MarkerType } from '../types';\nimport { RectangularMarker } from '../RectangularMarker';\nimport { SvgHelper } from '../../renderer/SvgHelper';\nimport { WhitePage } from '../../whiteboard/WhitePage';\nimport { PositionType } from '../../utils/layout';\nimport { MarkerSnap } from '../../whiteboard/AbstractWhiteboard/snap';\n\nconst OkIcon = require('../../assets/check.svg');\nconst CancelIcon = require('../../assets/times.svg');\n\nexport class TextMarker extends RectangularMarker {\n type: MarkerType = 'text';\n\n public static createMarker = (page?: WhitePage): TextMarker => {\n const marker = new TextMarker();\n marker.page = page;\n marker.init();\n return marker;\n };\n\n /** UI Options */\n protected readonly MIN_SIZE = 50;\n private readonly DEFAULT_TEXT = 'Double-click to edit text';\n private text: string = this.DEFAULT_TEXT;\n private inDoubleTap = false;\n\n /** UI Handlers */\n private textElement: SVGTextElement;\n private editor: HTMLDivElement;\n private editorTextArea: HTMLTextAreaElement;\n\n /** Getter & Setter */\n public setText(text: string) {\n this.text = text;\n this.renderText();\n }\n\n public captureSnap(): MarkerSnap {\n const baseSnap = super.captureSnap();\n\n baseSnap.textSnap = { text: this.text };\n\n return baseSnap;\n }\n\n public applySnap(snap: MarkerSnap) {\n super.applySnap(snap);\n\n if (snap.textSnap && snap.textSnap.text !== this.text) {\n this.setText(snap.textSnap.text);\n }\n }\n\n protected init() {\n super.init();\n this.textElement = SvgHelper.createText();\n this.addToRenderVisual(this.textElement);\n SvgHelper.setAttributes(this.visual, [['class', 'text-marker']]);\n\n this.textElement.transform.baseVal.appendItem(SvgHelper.createTransform()); // translate transorm\n this.textElement.transform.baseVal.appendItem(SvgHelper.createTransform()); // scale transorm\n\n this.renderText();\n\n this.visual.addEventListener('dblclick', this.onDblClick);\n this.visual.addEventListener('touchstart', this.onTap);\n }\n\n protected resize(x: number, y: number, onPosition?: (pos: PositionType) => void) {\n super.resize(x, y, onPosition);\n\n this.sizeText();\n }\n\n private renderText = () => {\n const LINE_SIZE = '1.2em';\n\n while (this.textElement.lastChild) {\n this.textElement.removeChild(this.textElement.lastChild);\n }\n\n const lines = this.text.split(/\\r\\n|[\\n\\v\\f\\r\\x85\\u2028\\u2029]/);\n for (let line of lines) {\n if (line.trim() === '') {\n line = ' '; // workaround for swallowed empty lines\n }\n this.textElement.appendChild(SvgHelper.createTSpan(line, [['x', '0'], ['dy', LINE_SIZE]]));\n }\n\n setTimeout(this.sizeText, 10);\n };\n\n private sizeText = () => {\n const textSize = this.textElement.getBBox();\n let x = 0;\n let y = 0;\n let scale = 1.0;\n if (textSize.width > 0 && textSize.height > 0) {\n const xScale = (this.width * 1.0) / textSize.width;\n const yScale = (this.height * 1.0) / textSize.height;\n scale = Math.min(xScale, yScale);\n\n x = (this.width - textSize.width * scale) / 2;\n y = (this.height - textSize.height * scale) / 2;\n }\n\n this.textElement.transform.baseVal.getItem(0).setTranslate(x, y);\n this.textElement.transform.baseVal.getItem(1).setScale(scale, scale);\n };\n\n private onDblClick = (ev: MouseEvent) => {\n this.showEditor();\n };\n\n private onTap = (ev: TouchEvent) => {\n if (this.inDoubleTap) {\n this.inDoubleTap = false;\n this.showEditor();\n } else {\n this.inDoubleTap = true;\n setTimeout(() => {\n this.inDoubleTap = false;\n }, 300);\n }\n };\n\n private showEditor = () => {\n this.editor = document.createElement('div');\n this.editor.className = 'fc-whiteboard-text-editor';\n\n this.editorTextArea = document.createElement('textarea');\n if (this.text !== this.DEFAULT_TEXT) {\n this.editorTextArea.value = this.text;\n }\n this.editorTextArea.addEventListener('keydown', this.onEditorKeyDown);\n this.editor.appendChild(this.editorTextArea);\n\n document.body.appendChild(this.editor);\n\n const buttons = document.createElement('div');\n buttons.className = 'fc-whiteboard-text-editor-button-bar';\n this.editor.appendChild(buttons);\n\n const okButton = document.createElement('div');\n okButton.className = 'fc-whiteboard-text-editor-button';\n okButton.innerHTML = OkIcon;\n okButton.addEventListener('click', this.onEditorOkClick);\n buttons.appendChild(okButton);\n\n const cancelButton = document.createElement('div');\n cancelButton.className = 'fc-whiteboard-text-editor-button';\n cancelButton.innerHTML = CancelIcon;\n cancelButton.addEventListener('click', this.closeEditor);\n buttons.appendChild(cancelButton);\n };\n\n /** 响应文本输入的事件 */\n private onEditorOkClick = (ev: MouseEvent | null) => {\n if (this.editorTextArea.value.trim()) {\n this.text = this.editorTextArea.value;\n } else {\n this.text = this.DEFAULT_TEXT;\n }\n\n // 触发文本修改时间\n this.onChange({\n target: 'marker',\n id: this.id,\n event: 'inputMarker',\n marker: { text: this.text }\n });\n\n this.renderText();\n this.closeEditor();\n };\n\n private closeEditor = () => {\n document.body.removeChild(this.editor);\n };\n\n private onEditorKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === 'Enter' && ev.ctrlKey) {\n ev.preventDefault();\n this.onEditorOkClick(null);\n }\n };\n}\n","import { HighlightMarker } from './HighlightMarker/index';\nimport { TextMarker } from './TextMarker/index';\nimport { ArrowMarker } from './ArrowMarker/index';\nimport { BaseMarker } from './BaseMarker/index';\nimport { CoverMarker } from './CoverMarker';\nimport { LineMarker } from './LineMarker';\nimport { RectMarker } from './RectMarker';\n\nexport type MarkerType = 'base' | 'arrow' | 'cover' | 'line' | 'rect' | 'text' | 'highlight';\n\nexport interface LinearBound {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nexport function getMarkerByType(type: MarkerType): typeof BaseMarker {\n switch (type) {\n case 'arrow':\n return ArrowMarker;\n case 'base':\n return BaseMarker;\n case 'cover':\n return CoverMarker;\n case 'highlight':\n return HighlightMarker;\n case 'line':\n return LineMarker;\n case 'rect':\n return RectMarker;\n case 'text':\n return TextMarker;\n default:\n return BaseMarker;\n }\n}\n","export abstract class DomEventAware {\n x: number = 0;\n y: number = 0;\n previousMouseX: number = 0;\n previousMouseY: number = 0;\n\n protected init(ele: Element) {\n ele.addEventListener('mousedown', this.onMouseDown);\n ele.addEventListener('mouseup', this.onMouseUp);\n ele.addEventListener('mousemove', this.onMouseMove);\n\n ele.addEventListener('touchstart', this.onTouch, { passive: false });\n ele.addEventListener('touchend', this.onTouch, { passive: false });\n ele.addEventListener('touchmove', this.onTouch, { passive: false });\n }\n\n /** 截获 Touch 事件,并且转发为 Mouse 事件 */\n protected onTouch(ev: TouchEvent) {\n ev.preventDefault();\n const newEvt = document.createEvent('MouseEvents');\n const touch = ev.changedTouches[0];\n let type = null;\n\n switch (ev.type) {\n case 'touchstart':\n type = 'mousedown';\n break;\n case 'touchmove':\n type = 'mousemove';\n break;\n case 'touchend':\n type = 'mouseup';\n break;\n default:\n break;\n }\n\n newEvt.initMouseEvent(\n type!,\n true,\n true,\n window,\n 0,\n touch.screenX,\n touch.screenY,\n touch.clientX,\n touch.clientY,\n ev.ctrlKey,\n ev.altKey,\n ev.shiftKey,\n ev.metaKey,\n 0,\n null\n );\n\n ev.target!.dispatchEvent(newEvt);\n }\n\n protected abstract onMouseDown(ev: MouseEvent): void;\n protected abstract onMouseUp(ev: MouseEvent): void;\n protected abstract onMouseMove(ev: MouseEvent): void;\n}\n","/** 通用的 Svg 助手 */\nexport class SvgHelper {\n public static createRect = (\n width: number | string,\n height: number | string,\n attributes?: Array<[string, string]>\n ): SVGRectElement => {\n const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n\n rect.setAttribute('width', width.toString());\n rect.setAttribute('height', height.toString());\n if (attributes) {\n SvgHelper.setAttributes(rect, attributes);\n }\n\n return rect;\n };\n\n public static createLine = (\n x1: number | string,\n y1: number | string,\n x2: number | string,\n y2: number | string,\n attributes?: Array<[string, string]>\n ): SVGLineElement => {\n const line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n\n line.setAttribute('x1', x1.toString());\n line.setAttribute('y1', y1.toString());\n line.setAttribute('x2', x2.toString());\n line.setAttribute('y2', y2.toString());\n if (attributes) {\n SvgHelper.setAttributes(line, attributes);\n }\n\n return line;\n };\n\n public static createPolygon = (\n points: string,\n attributes?: Array<[string, string]>\n ): SVGPolygonElement => {\n const polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon');\n\n polygon.setAttribute('points', points);\n if (attributes) {\n SvgHelper.setAttributes(polygon, attributes);\n }\n\n return polygon;\n };\n\n public static createCircle = (\n radius: number,\n attributes?: Array<[string, string]>\n ): SVGCircleElement => {\n const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n\n circle.setAttribute('cx', (radius / 2).toString());\n circle.setAttribute('cy', (radius / 2).toString());\n circle.setAttribute('r', radius.toString());\n if (attributes) {\n SvgHelper.setAttributes(circle, attributes);\n }\n\n return circle;\n };\n\n public static createGroup = (attributes?: Array<[string, string]>): SVGGElement => {\n const g = document.createElementNS('http://www.w3.org/2000/svg', 'g');\n if (attributes) {\n SvgHelper.setAttributes(g, attributes);\n }\n return g;\n };\n\n public static setAttributes = (el: SVGElement, attributes: Array<[string, string]>) => {\n for (const [attr, value] of attributes) {\n el.setAttribute(attr, value);\n }\n };\n\n public static createTransform = (): SVGTransform => {\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n return svg.createSVGTransform();\n };\n\n public static createDefs = (): SVGDefsElement => {\n const defs = document.createElementNS('http://www.w3.org/2000/svg', 'defs');\n\n return defs;\n };\n\n public static createMarker = (\n id: string,\n orient: string,\n markerWidth: number | string,\n markerHeight: number | string,\n refX: number | string,\n refY: number | string,\n markerElement: SVGGraphicsElement\n ): SVGMarkerElement => {\n const marker = document.createElementNS('http://www.w3.org/2000/svg', 'marker');\n SvgHelper.setAttributes(marker, [\n ['id', id],\n ['orient', orient],\n ['markerWidth', markerWidth.toString()],\n ['markerHeight', markerHeight.toString()],\n ['refX', refX.toString()],\n ['refY', refY.toString()]\n ]);\n\n marker.appendChild(markerElement);\n\n return marker;\n };\n\n public static createText = (attributes?: Array<[string, string]>): SVGTextElement => {\n const text = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n text.setAttribute('x', '0');\n text.setAttribute('y', '0');\n\n if (attributes) {\n SvgHelper.setAttributes(text, attributes);\n }\n\n return text;\n };\n\n public static createTSpan = (\n text: string,\n attributes?: Array<[string, string]>\n ): SVGTSpanElement => {\n const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.textContent = text;\n\n if (attributes) {\n SvgHelper.setAttributes(tspan, attributes);\n }\n\n return tspan;\n };\n}\n","import { isHTMLImageElement } from '../../utils/validator';\n\n/** 图片导出,将原图片与 Svgs 绘制到某个 Canvas 中 */\nexport class Synthetizer {\n public rasterize(\n // target 是原图片\n target: HTMLImageElement,\n markerImage: SVGSVGElement,\n done: (dataUrl: string) => void\n ) {\n if (!isHTMLImageElement(target)) {\n throw new Error('Error: only support export to HTMLImageElement');\n }\n\n const canvas = document.createElement('canvas');\n canvas.width = markerImage.width.baseVal.value;\n canvas.height = markerImage.height.baseVal.value;\n\n const data = markerImage.outerHTML;\n\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n throw new Error('Invalid ctx');\n }\n\n ctx.drawImage(target as HTMLImageElement, 0, 0, canvas.width, canvas.height);\n\n const DOMURL = window.URL; // || window.webkitURL || window;\n\n const img = new Image(canvas.width, canvas.height);\n img.setAttribute('crossOrigin', 'anonymous');\n\n const blob = new Blob([data], { type: 'image/svg+xml' });\n\n const url = DOMURL.createObjectURL(blob);\n\n img.onload = () => {\n ctx.drawImage(img, 0, 0);\n DOMURL.revokeObjectURL(url);\n\n done(canvas.toDataURL('image/png'));\n };\n\n img.src = url;\n }\n}\n","import interact from 'interactjs';\n\nimport { ToolbarButton } from './ToolbarButton';\nimport { ToolbarItem } from './ToolbarItem';\nimport { uuid } from '../utils/uuid';\n\nimport './index.less';\nimport { DomEventAware } from '../renderer/DomEventAware/index';\nimport { dragToolbarItem } from './toolbar-items';\nimport { Drawboard } from '../drawboard/Drawboard/index';\n\nexport type MouseHandler = (ev: MouseEvent) => void;\n\nexport class Toolbar extends DomEventAware {\n id: string = uuid();\n zIndex: number = 999;\n\n toolbarItems: ToolbarItem[];\n toolbarUI: HTMLElement;\n toolbarButtons: ToolbarButton[] = [];\n\n get toolbarButtonMap(): Record {\n const buttonMap = {};\n\n this.toolbarButtons.forEach(b => {\n buttonMap[b.id] = b;\n });\n\n return buttonMap;\n }\n\n clickHandler: (ev: MouseEvent, toolbarItem: ToolbarItem) => void;\n\n constructor(\n toolbarItems: ToolbarItem[],\n clickHandler: (ev: MouseEvent, toolbarItem: ToolbarItem) => void\n ) {\n super();\n\n this.toolbarItems = [dragToolbarItem, ...toolbarItems];\n this.clickHandler = clickHandler;\n }\n\n /** 获取 UI 元素 */\n public getUI = (drawboard: Drawboard): HTMLElement => {\n this.toolbarUI = document.createElement('div');\n this.toolbarUI.id = `fcw-toolbar-${this.id}`;\n this.toolbarUI.className = 'fc-whiteboard-toolbar';\n\n for (const toolbarItem of this.toolbarItems) {\n const toolbarButton = new ToolbarButton(toolbarItem, this.clickHandler);\n toolbarButton.drawboard = drawboard;\n this.toolbarUI.appendChild(toolbarButton.getElement());\n this.toolbarButtons.push(toolbarButton);\n }\n\n super.init(this.toolbarUI);\n\n (interact as any)('#drag-handler').draggable({\n onmove: this.onDragMove\n });\n\n return this.toolbarUI;\n };\n\n public hide() {\n this.toolbarUI.style.visibility = 'hidden';\n this.toolbarUI.style.zIndex = '-1';\n }\n\n public show() {\n this.toolbarUI.style.visibility = 'visible';\n this.toolbarUI.style.zIndex = `${this.zIndex}`;\n }\n\n protected onMouseDown = (downEv: MouseEvent) => {};\n\n protected onMouseUp = (ev: MouseEvent) => {};\n\n protected onMouseMove = (ev: MouseEvent) => {};\n\n protected onDragMove = (event: any) => {\n let target = this.toolbarUI;\n\n // keep the dragged position in the data-x/data-y attributes\n let x = ((parseFloat(target.getAttribute('data-x') as string) || 0) + event.dx) as any;\n let y = ((parseFloat(target.getAttribute('data-y') as string) || 0) + event.dy) as any;\n\n // translate the element\n target.style.webkitTransform = target.style.transform = 'translate(' + x + 'px, ' + y + 'px)';\n target.style.zIndex = `${this.zIndex}`;\n\n // update the posiion attributes\n target.setAttribute('data-x', x);\n target.setAttribute('data-y', y);\n };\n}\n","import tippy from 'tippy.js';\n\nimport { ToolbarItem } from './ToolbarItem';\nimport { uuid } from '../utils/uuid';\nimport { Drawboard } from '../drawboard/Drawboard';\n\n/** 工作栏按钮 */\nexport class ToolbarButton {\n id = uuid();\n drawboard: Drawboard;\n toolbarItem: ToolbarItem;\n container: HTMLDivElement;\n\n clickHandler: (ev: MouseEvent, toolbarItem: ToolbarItem) => void;\n\n constructor(\n toolbarItem: ToolbarItem,\n clickHandler?: (ev: MouseEvent, toolbarItem: ToolbarItem) => void\n ) {\n this.toolbarItem = toolbarItem;\n\n if (clickHandler) {\n this.clickHandler = clickHandler;\n }\n }\n\n public getElement = (): HTMLElement => {\n if (this.toolbarItem.onRender) {\n this.container = this.toolbarItem.onRender().cloneNode(true) as HTMLDivElement;\n return this.container;\n }\n\n const div = document.createElement('div');\n\n if (this.toolbarItem.name !== 'separator') {\n div.className = 'fc-whiteboard-toolbar-button';\n\n if (this.clickHandler) {\n div.addEventListener('click', (ev: MouseEvent) => {\n if (this.clickHandler) {\n this.clickHandler(ev, this.toolbarItem);\n }\n });\n }\n\n if (this.toolbarItem.icon) {\n div.title = this.toolbarItem.tooltipText || '';\n div.innerHTML = this.toolbarItem.icon;\n } else {\n div.innerText = this.toolbarItem.tooltipText || '';\n }\n\n if (this.toolbarItem.tooltipText) {\n tippy(div, {\n content: this.toolbarItem.shortcut\n ? `${this.toolbarItem.tooltipText} ${this.toolbarItem.shortcut}`\n : this.toolbarItem.tooltipText\n });\n }\n } else {\n div.className = 'fc-whiteboard-toolbar-separator';\n }\n\n div.id = `fc-whiteboard-toolbar-${this.toolbarItem.name}`;\n\n this.container = div;\n\n return div;\n };\n}\n","import { BaseMarker } from './../markers/BaseMarker/index';\n\n/** 对于工具栏的定义 */\nexport class ToolbarItem {\n name: string;\n tooltipText?: string;\n shortcut?: string;\n icon?: string;\n markerType?: typeof BaseMarker;\n onRender?: () => HTMLDivElement;\n onClick?: () => void;\n\n draggable?: boolean;\n\n constructor({\n name,\n tooltipText,\n shortcut,\n icon,\n draggable,\n markerType,\n onRender,\n onClick\n }: Partial) {\n if (!name) {\n throw new Error('Invalid params');\n }\n\n this.name = name;\n this.tooltipText = tooltipText;\n this.shortcut = shortcut;\n this.icon = icon;\n this.markerType = markerType;\n this.draggable = draggable;\n\n this.onClick = onClick;\n this.onRender = onRender;\n }\n}\n","\nvar content = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../node_modules/postcss-loader/src/index.js!../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../node_modules/postcss-loader/src/index.js!../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../node_modules/postcss-loader/src/index.js!../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import { WhitePage } from '../whiteboard/WhitePage/index';\nimport { RectMarker } from './../markers/RectMarker/index';\nimport { CoverMarker } from './../markers/CoverMarker/index';\nimport { TextMarker } from './../markers/TextMarker/index';\nimport { ArrowMarker } from './../markers/ArrowMarker/index';\nimport { HighlightMarker } from './../markers/HighlightMarker/index';\nimport { ToolbarItem } from './ToolbarItem';\nimport { LineMarker } from '../markers/LineMarker';\n\nconst OkIcon = require('../assets/check.svg');\nconst DeleteIcon = require('../assets/eraser.svg');\nconst CloseIcon = require('../assets/times.svg');\n\nexport const dragToolbarItem = new ToolbarItem({\n name: 'drag',\n tooltipText: 'Drag',\n icon: require('../assets/drag.svg')\n});\n\nexport const highlightMarkerToolbarItem = new ToolbarItem({\n name: 'cover-marker',\n tooltipText: 'Hightlight',\n shortcut: 'Shift+H',\n icon: require('../assets/highlight.svg'),\n markerType: HighlightMarker,\n draggable: true\n});\n\nexport const arrowMarkerToolbarItem = new ToolbarItem({\n name: 'arrow-marker',\n tooltipText: 'Arrow',\n shortcut: 'Shift+A',\n icon: require('../assets/arrow.svg'),\n markerType: ArrowMarker,\n draggable: true\n});\n\nexport const textMarkerToolbarItem = new ToolbarItem({\n name: 'text-marker',\n tooltipText: 'Text',\n shortcut: 'Shift+T',\n icon: require('../assets/text.svg'),\n markerType: TextMarker,\n draggable: true\n});\n\nexport const coverMarkerToolbarItem = new ToolbarItem({\n name: 'cover-marker',\n tooltipText: 'Cover',\n shortcut: 'Shift+C',\n icon: require('../assets/cover.svg'),\n markerType: CoverMarker,\n draggable: true\n});\n\nexport const rectMarkerToolbarItem = new ToolbarItem({\n name: 'rect-marker',\n tooltipText: 'Rectangle',\n shortcut: 'Shift+R',\n icon: require('../assets/rect.svg'),\n markerType: RectMarker,\n draggable: true\n});\n\nexport const lineMarkerToolbarItem = new ToolbarItem({\n name: 'line-marker',\n tooltipText: 'Line',\n shortcut: 'Shift+L',\n icon: require('../assets/line.svg'),\n markerType: LineMarker,\n draggable: true\n});\n\nexport const closeToolbarItem = new ToolbarItem({\n icon: CloseIcon,\n name: 'close',\n tooltipText: 'Close'\n});\n\nexport const separatorToolbarItem = new ToolbarItem({ name: 'separator', tooltipText: '' });\n\nexport function getToolbars(page?: WhitePage) {\n const toolbars = [\n // {\n // icon: PointerIcon,\n // name: 'pointer',\n // tooltipText: 'Pointer'\n // },\n {\n icon: DeleteIcon,\n name: 'delete',\n tooltipText: 'Delete'\n },\n rectMarkerToolbarItem,\n coverMarkerToolbarItem,\n highlightMarkerToolbarItem,\n lineMarkerToolbarItem,\n arrowMarkerToolbarItem,\n textMarkerToolbarItem\n ];\n\n if (!page) {\n toolbars.push(\n ...[\n {\n icon: OkIcon,\n name: 'ok',\n tooltipText: 'OK'\n }\n ]\n );\n }\n\n return toolbars;\n}\n","/** 创建包含样式类名的 Div 元素 */\nexport function createDivWithClassName(className?: string, parent?: HTMLElement) {\n const ele = document.createElement('div');\n\n if (parent) {\n parent.appendChild(ele);\n }\n\n if (className) {\n addClassName(ele, className);\n }\n\n return ele;\n}\n\n/** 添加样式类名 */\nexport function addClassName(ele: HTMLElement, className: string) {\n if (!ele) {\n return;\n }\n\n ele.className = `${ele.className || ''} ${className}`.trim();\n}\n","export type PositionType =\n | 'left'\n | 'right'\n | 'topLeft'\n | 'bottomLeft'\n | 'topRight'\n | 'bottomRight'\n | 'centerLeft'\n | 'centerRight'\n | 'topCenter'\n | 'bottomCenter';\n\n/** 判断是否在某个包含的区域呢 */\nexport function rectContains(rect: ClientRect, { x, y }: { x: number; y: number }) {\n if (x < rect.left || x > rect.left + rect.width || y < rect.top || y > rect.top + rect.height) {\n return false;\n }\n\n return true;\n}\n","// 是主动绘制模式,还是镜像模式\nexport type Mode = 'master' | 'mirror' | 'replay';\n\nexport type Source = {\n // 需要展示的图片元素\n imgEle?: HTMLImageElement;\n\n // 需要展示的图片地址\n imgSrc?: string;\n};\n\nexport function isNil(mayBeNil: any) {\n return mayBeNil === null || mayBeNil === undefined;\n}\n","import * as uuidV1 from 'uuid/v1';\n\nexport const uuid = uuidV1;\n","/** 判断是否为有效的 HTMLImageElement */\nexport function isHTMLImageElement(ele: any) {\n if (typeof ele === 'object' && ele instanceof HTMLImageElement) {\n return true;\n }\n\n return false;\n}\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import { Mode } from './../../utils/types';\nimport { SyncEvent } from '../../event/SyncEvent';\n\nimport { WhitePage } from '../WhitePage/index';\nimport { EventHub } from '../../event/EventHub';\nimport { uuid } from '../../utils/uuid';\nimport { addClassName } from '../../utils/dom';\n\nimport './index.less';\nimport { WhiteboardSnap } from '../AbstractWhiteboard/snap';\nimport * as Siema from 'siema';\n\nconst prefix = 'fcw-board';\n\nexport abstract class AbstractWhiteboard {\n id: string = uuid();\n sources: string[] = [];\n\n /** 元素 */\n // 如果传入的是图片地址,则需要挂载到该 Target 元素下\n target: HTMLDivElement;\n imgEles: HTMLDivElement[] = [];\n imgsContainer: HTMLDivElement;\n pagesContainer: HTMLDivElement;\n\n /** Options */\n // 是否仅同步快照数据,用于弱网状态下\n allowRollback: boolean = false;\n onlyEmitSnap: boolean = false;\n snapInterval: number = 15 * 1000;\n\n /** UI Options */\n // 事件中心\n eventHub?: EventHub;\n // 编辑模式\n mode: Mode = 'master';\n // 是否为全屏模式\n isFullscreen: boolean = false;\n\n /** 句柄 */\n pages: WhitePage[] = [];\n get activePage() {\n return this.pages[this.visiblePageIndex];\n }\n get pageMap(): Record {\n const map = {};\n this.pages.forEach(p => (map[p.id] = p));\n\n return map;\n }\n siema: any;\n // 历史快照记录\n snapHistory: WhiteboardSnap[] = [];\n\n /** State | 内部状态 */\n // 是否被初始化过,如果尚未被初始化,则等待来自于 Master 的同步消息\n isInitialized: boolean = false;\n isSyncing: boolean = false;\n visiblePageIndex: number = 0;\n emitInterval: any;\n\n constructor(\n target: HTMLDivElement,\n {\n sources,\n eventHub,\n visiblePageIndex,\n allowRollback,\n onlyEmitSnap\n }: Partial = {}\n ) {\n if (target) {\n this.target = target;\n } else {\n this.target = document.createElement('div');\n document.body.appendChild(this.target);\n }\n\n if (!this.target.id) {\n this.target.id = this.id;\n }\n\n addClassName(this.target, prefix);\n\n if (sources) {\n this.sources = sources;\n }\n\n this.eventHub = eventHub;\n\n // set inner state\n if (typeof visiblePageIndex !== 'undefined') {\n this.visiblePageIndex = visiblePageIndex;\n }\n\n this.onlyEmitSnap = !!onlyEmitSnap;\n\n if (typeof allowRollback !== 'undefined') {\n this.allowRollback = !!allowRollback;\n }\n\n this.init();\n }\n\n /** LifeCycle */\n public open() {\n // 依次渲染所有的页,隐藏非当前页之外的其他页\n this.pages.forEach((page, i) => {\n page.open();\n\n if (i !== this.visiblePageIndex) {\n page.hide();\n }\n });\n }\n\n /** 关闭当前的 Whiteboard */\n public close() {\n if (this.emitInterval) {\n clearInterval(this.emitInterval);\n }\n }\n\n /** 展示当前的 WhitePage */\n public show() {\n if (this.activePage) {\n this.activePage.show();\n }\n }\n\n public hide() {\n if (this.activePage) {\n this.activePage.hide();\n }\n }\n\n /** 触发事件 */\n public emit(borderEvent: SyncEvent) {\n if (this.mode !== 'master' || !this.eventHub) {\n return;\n }\n\n // 在快照模式下,仅同步快照消息\n if (this.onlyEmitSnap) {\n if (borderEvent.event !== 'borderSnap') {\n return;\n }\n }\n\n // 判断是否进行了元素的增加或者删除,如果开启了则添加历史记录\n if (\n this.allowRollback &&\n (borderEvent.event === 'addMarker' || borderEvent.event === 'removeMarker')\n ) {\n if (this.snapHistory.length > 20) {\n this.snapHistory.shift();\n }\n\n this.snapHistory.push(this.captureSnap(false));\n }\n\n borderEvent.timestamp = Math.floor(Date.now() / 1000);\n this.eventHub.emit('sync', borderEvent);\n }\n\n /** 获取当前快照 */\n public captureSnap(shadow: boolean = true): WhiteboardSnap {\n if (shadow) {\n return {\n id: this.id,\n sources: this.sources,\n pageIds: this.pages.map(page => page.id),\n visiblePageIndex: this.visiblePageIndex\n };\n }\n\n return {\n id: this.id,\n sources: this.sources,\n pageIds: this.pages.map(page => page.id),\n visiblePageIndex: this.visiblePageIndex,\n pages: this.pages.map(p => p.captureSnap())\n };\n }\n\n /** 回退到上一个 Snap */\n public rollbackSnap() {\n if (this.snapHistory.length === 0) {\n return;\n }\n\n this.snapHistory.pop();\n const snap = this.snapHistory[this.snapHistory.length - 1];\n\n if (snap) {\n this.applySnap(snap);\n }\n }\n\n /** 销毁操作操作 */\n public destroy(): void {\n if (this.emitInterval) {\n clearInterval(this.emitInterval);\n }\n\n if (this.eventHub) {\n this.eventHub.removeAllListeners();\n }\n\n if (this.siema) {\n this.siema.destroy();\n }\n\n this.imgsContainer.remove();\n this.pagesContainer.remove();\n\n this.pages.forEach(page => {\n page.destroy();\n });\n }\n\n /** 初始化操作 */\n protected abstract init(): void;\n\n /** 初始化 Siema */\n protected initSiema() {\n // 初始化所有的占位图片,用于给 Siema 播放使用\n this.sources.forEach(source => {\n const imgEle = document.createElement('div');\n addClassName(imgEle, `${prefix}-img-wrapper`);\n imgEle.style.backgroundImage = `url(${source})`;\n\n this.imgEles.push(imgEle);\n this.imgsContainer.appendChild(imgEle);\n });\n\n // 初始化 Siema,并且添加控制节点\n this.siema = new Siema({\n selector: this.imgsContainer,\n duration: 200,\n easing: 'ease-out',\n perPage: 1,\n startIndex: 0,\n draggable: false,\n multipleDrag: true,\n threshold: 20,\n loop: false,\n rtl: false\n });\n }\n\n protected abstract onPageChange(nextPageIndex: number): void;\n\n /** 响应获取到的快照事件 */\n protected applySnap(snap: WhiteboardSnap) {\n const { id, sources, pageIds } = snap;\n\n if (!this.isInitialized && !this.isSyncing) {\n this.id = id;\n this.sources = sources;\n this.isSyncing = true;\n\n // 初始化所有的 WhitePages\n this.sources.forEach((source, i) => {\n const page = new WhitePage(\n { imgSrc: source },\n {\n mode: this.mode,\n whiteboard: this,\n parentContainer: this.pagesContainer\n }\n );\n page.id = pageIds[i];\n\n // 这里隐藏 Dashboard 的图片源,Siema 切换的是占位图片\n page.container.style.visibility = 'hidden';\n\n this.pages.push(page);\n\n page.open();\n });\n\n this.initSiema();\n this.isInitialized = true;\n this.isSyncing = false;\n }\n\n // 如果已经初始化完毕,则进行状态同步\n this.onPageChange(snap.visiblePageIndex);\n\n // 同步 Pages\n (snap.pages || []).forEach(pageSnap => {\n const page = this.pageMap[pageSnap.id];\n\n if (page) {\n page.applySnap(pageSnap);\n }\n });\n }\n}\n","import { SyncEvent } from '../../event/SyncEvent';\nimport { createDivWithClassName } from '../../utils/dom';\nimport { AbstractWhiteboard } from '../AbstractWhiteboard/index';\nimport { Mode } from '../../utils/types';\n\nconst prefix = 'fcw-board';\n\nexport class MirrorWhiteboard extends AbstractWhiteboard {\n mode: Mode = 'mirror';\n\n /** 初始化操作 */\n protected init() {\n // 为 target 添加子 imgs 容器\n this.imgsContainer = createDivWithClassName(`${prefix}-imgs`, this.target);\n // 为 target 添加子 pages 容器\n this.pagesContainer = createDivWithClassName(`${prefix}-pages`, this.target);\n\n if (!this.eventHub) {\n throw new Error('Invalid eventHub');\n }\n\n this.eventHub.on('sync', (ev: SyncEvent) => {\n if (ev.target !== 'whiteboard' || !ev.border) {\n return;\n }\n\n if (ev.event === 'borderSnap') {\n this.applySnap(ev.border);\n }\n\n if (ev.event === 'borderChangePage' && ev.id === this.id) {\n if (this.isInitialized) {\n this.onPageChange(ev.border.visiblePageIndex);\n }\n }\n\n if (ev.event === 'finish' && ev.id === this.id) {\n this.destroy();\n }\n });\n }\n\n public destroy() {\n super.destroy();\n }\n\n /** 响应页面切换的事件 */\n onPageChange(nextPageIndex: number) {\n if (this.visiblePageIndex === nextPageIndex) {\n return;\n }\n\n this.siema.goTo(nextPageIndex);\n this.visiblePageIndex = nextPageIndex;\n\n // 将所有的 Page 隐藏\n this.pages.forEach((page, i) => {\n if (nextPageIndex === i) {\n page.show();\n } else {\n page.hide();\n }\n });\n\n this.emit({\n event: 'borderChangePage',\n id: this.id,\n target: 'whiteboard',\n border: this.captureSnap()\n });\n }\n}\n","import { MirrorWhiteboard } from '../MirrorWhiteboard';\nimport { SyncEvent } from '../../event/SyncEvent';\nimport { EventHub } from '../../event/EventHub';\n\n// 窗口大小为一分钟\nconst windowSize = 60 * 1000;\nconst duration = 0.05;\n\n/** 根据某个时间点,获取一系列的 Event,获取的是绝对时间;这里的 startTime 和 endTime 都是当初记录时候关联的绝对时间 */\nexport type onLoadFunc = (startTime: number, endTime: number) => Promise;\n\nexport class ReplayWhiteboard extends MirrorWhiteboard {\n leftEvents: SyncEvent[] = [];\n\n // 记录开始时间\n recordStartTime: number;\n // 当前的相对时间\n currentRelativeTime: number = 0;\n loadedRelativeTime: number = -1;\n\n // Inner Handler\n interval: any;\n loadingLock: boolean = false;\n seekingLock: boolean = false;\n onLoad: onLoadFunc;\n\n /** Getter & Setter */\n /** 设置录播相关的上下文信息 */\n setContext(recordStartTime: number, onLoad: onLoadFunc) {\n this.recordStartTime = recordStartTime;\n this.onLoad = onLoad;\n\n if (this.interval) {\n clearInterval(this.interval);\n }\n\n this.interval = setInterval(() => {\n this.seek();\n }, duration * 1000);\n }\n\n setCurrentRelativeTime(time: number) {\n this.currentRelativeTime = time;\n this.loadedRelativeTime = this.currentRelativeTime - 1;\n }\n\n /** 扩展父类的关闭函数 */\n close() {\n super.close();\n\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n protected init() {\n this.eventHub = new EventHub();\n\n super.init();\n }\n\n /** 加载全部的事件 */\n private loadEvents() {\n if (this.onLoad && !this.loadingLock) {\n this.loadingLock = true;\n\n const startTime = this.recordStartTime + this.currentRelativeTime;\n const endTime = startTime + windowSize;\n\n this.onLoad(startTime, endTime)\n .then(events => {\n this.loadedRelativeTime = this.currentRelativeTime;\n this.leftEvents.push(...(events || []));\n })\n .finally(() => {\n this.loadingLock = false;\n });\n }\n }\n\n /** 回调,定期更新时间,执行操作 */\n private seek = () => {\n if (this.seekingLock) {\n return;\n }\n this.seekingLock = true;\n // 如果已经进入到了加载完毕的状态,则\n if (this.loadedRelativeTime < this.currentRelativeTime) {\n this.loadEvents();\n }\n\n // 获取需要回放的 Events,即所有小于当前时间点的 Events\n\n const waitingEvents: SyncEvent[] = [];\n const leftEvents: SyncEvent[] = [];\n\n this.leftEvents.forEach((e, i) => {\n if (e.timestamp && e.timestamp < this.currentRelativeTime + this.recordStartTime) {\n waitingEvents.push(e);\n } else {\n leftEvents.push(e);\n }\n });\n\n this.leftEvents = leftEvents;\n\n waitingEvents.forEach(e => {\n this.perform(e);\n });\n\n this.currentRelativeTime += duration;\n this.seekingLock = false;\n };\n\n /** 执行事件回放操作 */\n private perform = (e: SyncEvent) => {\n this.eventHub!.emit('sync', e);\n };\n}\n","\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js??ref--11-1!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js??ref--11-3!./index.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import { Source, Mode } from './../../utils/types';\nimport { Drawboard } from './../../drawboard/Drawboard/index';\nimport { TextMarker } from '../../markers/TextMarker/index';\nimport { SyncEvent } from '../../event/SyncEvent';\nimport { uuid } from '../../utils/uuid';\nimport { getMarkerByType } from '../../markers/types';\nimport { createDivWithClassName } from '../../utils/dom';\nimport { WhitepageSnap } from '../AbstractWhiteboard/snap';\nimport { AbstractWhiteboard } from '../AbstractWhiteboard/index';\n\nimport './index.less';\nimport { ToolbarItem } from '../../toolbar/ToolbarItem';\n\nconst prefix = 'fcw-page';\n\n/** 白板中的每一页 */\nexport class WhitePage {\n id: string = uuid();\n\n source: Source;\n target: HTMLImageElement;\n\n /** UI Options */\n container: HTMLDivElement;\n // 父容器指针\n parentContainer?: HTMLDivElement;\n mode: Mode = 'master';\n\n /** Handlers */\n drawboard: Drawboard;\n whiteboard?: AbstractWhiteboard;\n\n constructor(\n source: Source,\n {\n mode,\n whiteboard,\n parentContainer,\n extraToolbarItems\n }: Partial & {\n extraToolbarItems?: ToolbarItem[];\n } = {}\n ) {\n if (mode) {\n this.mode = mode;\n }\n this.parentContainer = parentContainer;\n this.whiteboard = whiteboard;\n\n this.initSource(source);\n\n if (this.mode === 'master') {\n this.initMaster(extraToolbarItems);\n }\n\n if (this.mode === 'mirror') {\n this.initMirror();\n }\n }\n\n /** LifeCycle open - destroy */\n public open() {\n this.drawboard.open();\n }\n\n public hide() {\n this.drawboard.hide();\n }\n\n public show() {\n this.drawboard.show();\n }\n\n public destroy() {\n this.drawboard.destroy();\n }\n\n /** 生成快照 */\n public captureSnap(): WhitepageSnap {\n const markerSnaps = this.drawboard.markers.map(m => m.captureSnap());\n\n return {\n id: this.id,\n markers: markerSnaps\n };\n }\n\n /** 应用快照 */\n public applySnap(snap: WhitepageSnap) {\n const markerIdsSet = new Set();\n\n snap.markers.forEach(markerSnap => {\n // 判断是否存在,存在则同步,否则创建\n const marker = this.drawboard.markerMap[markerSnap.id];\n\n markerIdsSet.add(markerSnap.id);\n\n // 如果存在则直接应用,否则创建新的 Marker\n if (marker) {\n marker.applySnap(markerSnap);\n } else {\n const newMarker = this.drawboard.addMarker(getMarkerByType(markerSnap.type), {\n id: markerSnap.id\n });\n newMarker.applySnap(markerSnap);\n }\n });\n\n // 移除当前不存在的 Marker\n this.drawboard.markers.forEach(marker => {\n if (!markerIdsSet.has(marker.id)) {\n // 如果不存在该 Marker,则删除\n this.drawboard.deleteMarkerWithEvent(marker);\n }\n });\n }\n\n /** 初始化源 */\n private initSource(source: Source) {\n // 判断 Source 的类型是否符合要求\n if (typeof source.imgSrc === 'string' && !this.parentContainer) {\n throw new Error('Invalid source, If you set image url, you must also set parentContainer');\n }\n\n this.source = source;\n\n // 如果传入的 imgEle,则直接使用\n if (source.imgEle) {\n this.target = source.imgEle!;\n }\n\n // 如果是图片,则需要创建 Image 元素\n if (typeof source.imgSrc === 'string') {\n this.container = createDivWithClassName(prefix, this.parentContainer!);\n this.container.id = this.id;\n\n this.target = document.createElement('img');\n this.target.src = source.imgSrc;\n this.target.alt = 'Siema image';\n\n this.container.appendChild(this.target);\n }\n }\n\n /** 以 Master 模式启动 */\n protected initMaster(extraToolbarItems?: ToolbarItem[]) {\n if (this.whiteboard) {\n // 对于 WhitePage 中加载的 Drawboard,必须是传入自身可控的 Image 元素\n this.drawboard = new Drawboard(\n { imgEle: this.target },\n {\n extraToolbarItems,\n mountContainer: this.whiteboard!.target,\n page: this,\n onChange: ev => this.whiteboard!.emit(ev)\n }\n );\n } else {\n this.drawboard = new Drawboard(\n { imgEle: this.target },\n { page: this, mountContainer: this.whiteboard!.target }\n );\n }\n }\n\n /** 以 Mirror 模式启动 */\n protected initMirror() {\n if (!this.whiteboard) {\n throw new Error('Invalid whiteboard');\n }\n\n this.drawboard = new Drawboard(\n { imgEle: this.target },\n { page: this, mountContainer: this.whiteboard!.target }\n );\n\n this.whiteboard!.eventHub!.on('sync', (ev: SyncEvent) => {\n try {\n // 判断是否为 WhitePage 的同步\n if (ev.target === 'page' && ev.id === this.id) {\n this.onPageSync();\n }\n\n // 处理 Marker 的同步事件\n if (ev.target === 'marker') {\n this.onMarkerSync(ev);\n }\n } catch (e) {\n console.warn(e);\n }\n });\n }\n\n /** 处理 Page 的同步事件 */\n private onPageSync() {}\n\n /** 处理 Marker 的同步事件 */\n private onMarkerSync(ev: SyncEvent) {\n if (!ev.marker) {\n return;\n }\n\n const id = ev.id;\n\n if (ev.event === 'addMarker' && ev.parentId === this.id) {\n const marker = this.drawboard.markerMap[id!];\n if (!marker) {\n this.drawboard.addMarker(getMarkerByType(ev.marker.type!), {\n id: ev.marker.id,\n originX: ev.marker.dx,\n originY: ev.marker.dy\n });\n }\n }\n\n // 其余的情况,不存在 id 则直接返回空\n if (!id) {\n return;\n }\n\n if (ev.event === 'removeMarker') {\n const marker = this.drawboard.markerMap[id];\n if (marker) {\n this.drawboard.deleteMarker(marker);\n }\n }\n\n if (ev.event === 'moveMarker' || ev.event === 'resizeMarker') {\n const marker = this.drawboard.markerMap[id];\n\n if (marker) {\n marker.reactToManipulation(ev.event, ev.marker);\n }\n }\n\n // 响应文本变化事件\n if (ev.event === 'inputMarker') {\n const marker = this.drawboard.markerMap[id] as TextMarker;\n if (marker) {\n marker.setText(ev.marker.text!);\n }\n }\n }\n}\n","import { ToolbarItem } from './../../toolbar/ToolbarItem';\nimport { WhitePage } from '../WhitePage/index';\nimport { createDivWithClassName } from '../../utils/dom';\nimport { AbstractWhiteboard } from '../AbstractWhiteboard/index';\nimport { Mode } from '../../utils/types';\nimport { separatorToolbarItem } from '../../toolbar/toolbar-items';\n\nconst LeftArrowIcon = require('../../assets/bx-left-arrow.svg');\nconst RightArrowIcon = require('../../assets/bx-right-arrow.svg');\nconst FinishIcon = require('../../assets/finish.svg');\nconst RollbackIcon = require('../../assets/rollback.svg');\n\nconst prefix = 'fcw-board';\n\nexport class Whiteboard extends AbstractWhiteboard {\n mode: Mode = 'master';\n\n /** 销毁操作 */\n public destroy() {\n super.destroy();\n }\n\n /** 初始化操作 */\n protected init() {\n // 为 target 添加子 imgs 容器\n this.imgsContainer = createDivWithClassName(`${prefix}-imgs`, this.target);\n // 为 target 添加子 pages 容器\n this.pagesContainer = createDivWithClassName(`${prefix}-pages`, this.target);\n\n this.initMaster();\n\n // 添加初始化的 Snapshot\n this.snapHistory.push(this.captureSnap(false));\n\n this.emitSnapshot();\n }\n\n /** 以主模式启动 */\n private initMaster() {\n this.isInitialized = true;\n\n // 初始化控制节点\n const prevToolbarItem = {\n icon: LeftArrowIcon,\n name: 'prev-flip-arrow',\n tooltipText: 'Prev',\n onClick: () => {\n const nextPageIndex =\n this.visiblePageIndex - 1 < 0 ? this.pages.length - 1 : this.visiblePageIndex - 1;\n\n document.querySelectorAll('.fc-whiteboard-indicator-current').forEach(e => {\n e.innerHTML = `${nextPageIndex + 1}`;\n });\n\n this.onPageChange(nextPageIndex);\n }\n };\n\n const indicatorContainer = document.createElement('div');\n indicatorContainer.className = 'fc-whiteboard-indicator-container';\n const indicatorCurrent = document.createElement('span');\n indicatorCurrent.className = 'fc-whiteboard-indicator-current';\n indicatorCurrent.innerHTML = `${this.visiblePageIndex + 1}`;\n\n indicatorContainer.appendChild(indicatorCurrent);\n indicatorContainer.appendChild(document.createTextNode(`/${this.sources.length}`));\n\n const indicatorItem: ToolbarItem = {\n name: 'indicator',\n onRender: () => indicatorContainer\n };\n\n const nextToolbarItem = {\n icon: RightArrowIcon,\n name: 'next-flip-arrow',\n tooltipText: 'Next',\n onClick: () => {\n const nextPageIndex =\n this.visiblePageIndex + 1 > this.pages.length - 1 ? 0 : this.visiblePageIndex + 1;\n\n document.querySelectorAll('.fc-whiteboard-indicator-current').forEach(e => {\n e.innerHTML = `${nextPageIndex + 1}`;\n });\n\n this.onPageChange(nextPageIndex);\n }\n };\n\n const finishItem: ToolbarItem = {\n icon: FinishIcon,\n name: 'finish',\n tooltipText: 'Finish',\n onClick: () => {\n this.emit({\n event: 'finish',\n id: this.id,\n target: 'whiteboard'\n });\n }\n };\n\n const rollbackItem: ToolbarItem = {\n icon: RollbackIcon,\n name: 'rollback',\n tooltipText: 'Rollback',\n shortcut: 'ESC',\n onClick: () => {\n this.rollbackSnap();\n }\n };\n\n // 初始化所有的 WhitePages\n this.sources.forEach(source => {\n const page = new WhitePage(\n { imgSrc: source },\n {\n mode: this.mode,\n whiteboard: this,\n parentContainer: this.pagesContainer,\n extraToolbarItems: [\n separatorToolbarItem,\n prevToolbarItem,\n indicatorItem,\n nextToolbarItem,\n separatorToolbarItem,\n finishItem,\n rollbackItem\n ]\n }\n );\n\n // 这里隐藏 Dashboard 的图片源,Siema 切换的是占位图片\n page.container.style.visibility = 'hidden';\n\n this.pages.push(page);\n });\n\n this.initSiema();\n }\n\n /** 响应页面切换的事件 */\n onPageChange(nextPageIndex: number) {\n if (this.visiblePageIndex === nextPageIndex) {\n return;\n }\n\n this.siema.goTo(nextPageIndex);\n this.visiblePageIndex = nextPageIndex;\n\n // 将所有的 Page 隐藏\n this.pages.forEach((page, i) => {\n if (nextPageIndex === i) {\n page.show();\n } else {\n page.hide();\n }\n });\n\n this.emit({\n event: 'borderChangePage',\n id: this.id,\n target: 'whiteboard',\n border: this.captureSnap()\n });\n }\n\n /** 触发快照事件 */\n private emitSnapshot() {\n const innerFunc = () => {\n this.emit({\n event: 'borderSnap',\n id: this.id,\n target: 'whiteboard',\n border: this.captureSnap(false)\n });\n };\n\n // 定期触发事件\n this.emitInterval = setInterval(() => {\n innerFunc();\n }, this.snapInterval);\n\n // 首次事件,延时 500ms 发出\n setTimeout(innerFunc, 500);\n }\n}\n"],"sourceRoot":""}