Нема описа

1
  1. {"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,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;;;AAGA;AACA;AACA;;AAEe,qEAAM,EAAC;AACtB;;;;;;;;;;;;;AC3iFA,eAAe,KAAiD,oBAAoB,SAAiH,CAAC,+CAA+C,mBAAmB,cAAc,4BAA4B,YAAY,qBAAqB,2DAA2D,SAAS,uCAAuC,qCAAqC,oCAAoC,EAAE,iBAAiB,iCAAiC,iBAAiB,YAAY,UAAU,sBAAsB,mBAAmB,iDAAiD,iBAAiB,kBAAkB,aAAa,gBAAgB,8EAA8E,sCAAsC,SAAS,EAAE,8EAA8E,gBAAgB,aAAa,oGAAoG,cAAc,gBAAgB,YAAY,WAAW,KAAK,WAAW,+GAA+G,uBAAuB,wCAAwC,gBAAgB,cAAc,WAAW,gPAAgP,ygBAAygB,kBAAkB,cAAc,aAAa,oCAAoC,4GAA4G,sDAAsD,ygBAAygB,EAAE,oCAAoC,ulBAAulB,EAAE,4BAA4B,2KAA2K,EAAE,wCAAwC,4HAA4H,gLAAgL,wCAAwC,qEAAqE,4BAA4B,KAAK,qEAAqE,iBAAiB,YAAY,4BAA4B,KAAK,uDAAuD,iBAAiB,gCAAgC,eAAe,KAAK,qEAAqE,iBAAiB,8HAA8H,EAAE,6CAA6C,oCAAoC,0OAA0O,EAAE,2CAA2C,yEAAyE,2CAA2C,eAAe,+FAA+F,EAAE,4BAA4B,8EAA8E,+CAA+C,wBAAwB,qBAAqB,0BAA0B,yBAAyB,8LAA8L,sGAAsG,2CAA2C,uDAAuD,iHAAiH,EAAE,4BAA4B,8EAA8E,+CAA+C,wBAAwB,qBAAqB,+DAA+D,yBAAyB,8LAA8L,sGAAsG,2CAA2C,4FAA4F,iHAAiH,EAAE,yCAAyC,uIAAuI,EAAE,wCAAwC,qLAAqL,EAAE,+BAA+B,+CAA+C,wBAAwB,+NAA+N,EAAE,uCAAuC,4IAA4I,mCAAmC,iCAAiC,2FAA2F,EAAE,+EAA+E,EAAE,uCAAuC,wPAAwP,gMAAgM,EAAE,qCAAqC,gQAAgQ,EAAE,iCAAiC,WAAW,4EAA4E,EAAE,0CAA0C,2LAA2L,EAAE,wCAAwC,yHAAyH,EAAE,yCAAyC,sMAAsM,2LAA2L,0KAA0K,qGAAqG,EAAE,yCAAyC,+JAA+J,EAAE,uCAAuC,mKAAmK,EAAE,yCAAyC,wCAAwC,gQAAgQ,0KAA0K,qGAAqG,EAAE,0CAA0C,oMAAoM,EAAE,qCAAqC,sEAAsE,EAAE,iCAAiC,wFAAwF,iEAAiE,oGAAoG,EAAE,mCAAmC,6FAA6F,sGAAsG,wDAAwD,oIAAoI,EAAE,kCAAkC,kCAAkC,EAAE,iCAAiC,4DAA4D,EAAE,+BAA+B,6EAA6E,4DAA4D,gDAAgD,4BAA4B,yCAAyC,+FAA+F,iBAAiB,IAAI,sCAAsC,OAAO,oJAAoJ,uBAAuB,KAAK,yBAAyB,UAAU,EAAE,mCAAmC,+FAA+F,KAAK,GAAG,gCAAgC,GAAG,E;;;;;;;;;;;ACAtxZ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;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,uBAAuB,gDAAgD,+BAA+B,uBAAuB,oEAAoE,gDAAgD,wCAAwC,mEAAmE,iDAAiD,yCAAyC,UAAU,kFAAkF,oCAAoC,4BAA4B,iFAAiF,UAAU,oCAAoC,4BAA4B,6DAA6D,gCAAgC,wBAAwB,iFAAiF,kEAAkE,0DAA0D,gFAAgF,UAAU,kEAAkE,0DAA0D,0EAA0E,oCAAoC,4BAA4B,yEAAyE,UAAU,oCAAoC,4BAA4B,gFAAgF,oCAAoC,4BAA4B,+EAA+E,UAAU,gCAAgC,wBAAwB,uDAAuD,gCAAgC,wBAAwB,2EAA2E,6CAA6C,qCAAqC,0EAA0E,UAAU,8CAA8C,sCAAsC,mDAAmD,0BAA0B,qDAAqD,SAAS,kCAAkC,0BAA0B,aAAa,yDAAyD,kBAAkB,OAAO,4BAA4B,oBAAoB,gDAAgD,6BAA6B,mCAAmC,kCAAkC,SAAS,aAAa,kCAAkC,0BAA0B,mDAAmD,gCAAgC,wBAAwB,uEAAuE,gDAAgD,wCAAwC,sEAAsE,4CAA4C,oCAAoC,UAAU,qFAAqF,mCAAmC,2BAA2B,oFAAoF,UAAU,mCAAmC,2BAA2B,gEAAgE,6BAA6B,qBAAqB,oFAAoF,iEAAiE,yDAAyD,mFAAmF,UAAU,mEAAmE,2DAA2D,6EAA6E,mCAAmC,2BAA2B,4EAA4E,UAAU,mCAAmC,2BAA2B,mFAAmF,mCAAmC,2BAA2B,kFAAkF,UAAU,gCAAgC,wBAAwB,0DAA0D,6BAA6B,qBAAqB,8EAA8E,4CAA4C,oCAAoC,6EAA6E,UAAU,6CAA6C,qCAAqC,iDAAiD,0BAA0B,mDAAmD,YAAY,0CAA0C,kCAAkC,aAAa,uDAAuD,kBAAkB,OAAO,gCAAgC,wBAAwB,8CAA8C,2BAA2B,iCAAiC,oCAAoC,WAAW,aAAa,+BAA+B,uBAAuB,iDAAiD,+BAA+B,uBAAuB,qEAAqE,gDAAgD,wCAAwC,oEAAoE,iDAAiD,yCAAyC,UAAU,mFAAmF,oCAAoC,4BAA4B,kFAAkF,UAAU,oCAAoC,4BAA4B,8DAA8D,+BAA+B,uBAAuB,kFAAkF,kEAAkE,0DAA0D,iFAAiF,UAAU,mEAAmE,2DAA2D,2EAA2E,oCAAoC,4BAA4B,0EAA0E,UAAU,oCAAoC,4BAA4B,iFAAiF,oCAAoC,4BAA4B,gFAAgF,UAAU,gCAAgC,wBAAwB,wDAAwD,+BAA+B,uBAAuB,4EAA4E,6CAA6C,qCAAqC,2EAA2E,UAAU,8CAA8C,sCAAsC,kDAAkD,0BAA0B,oDAAoD,WAAW,0CAA0C,kCAAkC,aAAa,wDAAwD,kBAAkB,OAAO,iCAAiC,yBAAyB,+CAA+C,4BAA4B,iCAAiC,oCAAoC,UAAU,aAAa,kCAAkC,0BAA0B,kDAAkD,gCAAgC,wBAAwB,sEAAsE,gDAAgD,wCAAwC,qEAAqE,iDAAiD,yCAAyC,UAAU,oFAAoF,mCAAmC,2BAA2B,mFAAmF,UAAU,mCAAmC,2BAA2B,+DAA+D,8BAA8B,sBAAsB,mFAAmF,iEAAiE,yDAAyD,kFAAkF,UAAU,kEAAkE,0DAA0D,4EAA4E,mCAAmC,2BAA2B,2EAA2E,UAAU,mCAAmC,2BAA2B,kFAAkF,mCAAmC,2BAA2B,iFAAiF,UAAU,gCAAgC,wBAAwB,yDAAyD,8BAA8B,sBAAsB,6EAA6E,4CAA4C,oCAAoC,4EAA4E,UAAU,6CAA6C,qCAAqC,eAAe,kBAAkB,WAAW,qBAAqB,kBAAkB,0BAA0B,gBAAgB,kBAAkB,sBAAsB,gCAAgC,yBAAyB,iBAAiB,gCAAgC,uBAAuB,eAAe,iCAAiC,gBAAgB,6BAA6B,yFAAyF,oBAAoB,iDAAiD,0DAA0D,gDAAgD,gCAAgC,+BAA+B,kBAAkB,QAAQ,SAAS,kBAAkB,WAAW,WAAW,UAAU,oBAAoB,gBAAgB,kBAAkB,sBAAsB,kBAAkB,wBAAwB,SAAS,QAAQ,WAAW,4CAA4C,mCAAmC,2BAA2B,sBAAsB,aAAa,WAAW,iBAAiB,+BAA+B,4BAA4B,oBAAoB,mDAAmD,UAAU,kDAAkD,UAAU;;AAExqZ;AACA;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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,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;o<n.length;++o)r=n[o],l[r]&&(r=l[r]),e&&\"keypress\"!=e&&f[r]&&(r=f[r],i.push(\"shift\")),y(r)&&i.push(r);return{key:r,modifiers:i,action:e=v(r,i,e)}}function b(t){var e=this;if(t=t||i,!(e instanceof b))return new b(t);e.target=t,e._callbacks={},e._directMap={};var n,r={},o=!1,a=!1,s=!1;function c(t){t=t||{};var e,n=!1;for(e in r)t[e]?n=!0:r[e]=0;n||(s=!1)}function u(t,n,o,i,a,s){var c,u,f,l,p=[],h=o.type;if(!e._callbacks[t])return[];for(\"keyup\"==h&&y(t)&&(n=[t]),c=0;c<e._callbacks[t].length;++c)if(u=e._callbacks[t][c],(i||!u.seq||r[u.seq]==u.level)&&h==u.action&&(\"keypress\"==h&&!o.metaKey&&!o.ctrlKey||(f=n,l=u.modifiers,f.sort().join(\",\")===l.sort().join(\",\")))){var d=!i&&u.combo==a,v=i&&u.seq==i&&u.level==s;(d||v)&&e._callbacks[t].splice(c,1),p.push(u)}return p}function f(t,n,r,o){e.stopCallback(n,n.target||n.srcElement,r,o)||!1===t(n,r)&&(function(t){t.preventDefault?t.preventDefault():t.returnValue=!1}(n),function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}(n))}function l(t){\"number\"!=typeof t.which&&(t.which=t.keyCode);var n=d(t);n&&(\"keyup\"!=t.type||o!==n?e.handleKey(n,function(t){var e=[];return t.shiftKey&&e.push(\"shift\"),t.altKey&&e.push(\"alt\"),t.ctrlKey&&e.push(\"ctrl\"),t.metaKey&&e.push(\"meta\"),e}(t),t):o=!1)}function p(t,e,i,a){function u(e){return function(){s=e,++r[t],clearTimeout(n),n=setTimeout(c,1e3)}}function l(e){f(i,e,t),\"keyup\"!==a&&(o=d(e)),setTimeout(c,10)}r[t]=0;for(var p=0;p<e.length;++p){var h=p+1===e.length?l:u(a||m(e[p+1]).action);v(e[p],h,a,t,p)}}function v(t,n,r,o,i){e._directMap[t+\":\"+r]=n;var a,s=(t=t.replace(/\\s+/g,\" \")).split(\" \");s.length>1?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<o.length;++r)o[r].seq&&(l=Math.max(l,o[r].level));for(r=0;r<o.length;++r)if(o[r].seq){if(o[r].level!=l)continue;p=!0,i[o[r].seq]=1,f(o[r].callback,n,o[r].combo,o[r].seq)}else p||f(o[r].callback,n,o[r].combo);var h=\"keypress\"==n.type&&a;n.type!=s||y(t)||h||c(i),a=p&&\"keydown\"==n.type},e._bindMultiple=function(t,e,n){for(var r=0;r<t.length;++r)v(t[r],e,n)},h(t,\"keypress\",l),h(t,\"keydown\",l),h(t,\"keyup\",l)}}(\"undefined\"!=typeof window?window:null,\"undefined\"!=typeof window?document:null)},function(t,e,n){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var r=n(0);e.normalizeHotkeys=function(t,e){var n=e.map(function(t){return r.normalizeModifiersMap[t]||t}).reverse();return e.indexOf(t)<0&&n.indexOf(t)<0&&n.push(t.toUpperCase()),n.join(\"+\")},e.preventAndStopEvent=function(t){t.preventDefault(),t.stopPropagation()}}])});","/**\n * interact.js 1.4.9\n *\n * Copyright (c) 2012-2019 Taye Adeyemi <dev@taye.me>\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.<action>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<Interactable> }\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/// <reference path=\"./types.d.ts\" />\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) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\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.<br />\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 <html> 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.<br />\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.<br />\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.<br />\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.<br />\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.<br />\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.<br />\n * It will read the variation of the `placement` property.<br />\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.<br />\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.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\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.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\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.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\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.<br />\n * By default, it is set to no-op.<br />\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.<br />\n * By default, it is set to no-op.<br />\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.<br />\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<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,i,r){return i&&e(t.prototype,i),r&&e(t,r),t}}(),l=function(){function e(t){var i=this;if(r(this,e),this.config=e.mergeSettings(t),this.selector=\"string\"==typeof this.config.selector?document.querySelector(this.config.selector):this.config.selector,null===this.selector)throw new Error(\"Something wrong with your selector 😭\");this.resolveSlidesNumber(),this.selectorWidth=this.selector.offsetWidth,this.innerElements=[].slice.call(this.selector.children),this.currentSlide=this.config.loop?this.config.startIndex%this.innerElements.length:Math.max(0,Math.min(this.config.startIndex,this.innerElements.length-this.perPage)),this.transformProperty=e.webkitOrNot(),[\"resizeHandler\",\"touchstartHandler\",\"touchendHandler\",\"touchmoveHandler\",\"mousedownHandler\",\"mouseupHandler\",\"mouseleaveHandler\",\"mousemoveHandler\",\"clickHandler\"].forEach(function(e){i[e]=i[e].bind(i)}),this.init()}return s(e,[{key:\"attachEvents\",value:function(){window.addEventListener(\"resize\",this.resizeHandler),this.config.draggable&&(this.pointerDown=!1,this.drag={startX:0,endX:0,startY:0,letItGo:null,preventClick:!1},this.selector.addEventListener(\"touchstart\",this.touchstartHandler),this.selector.addEventListener(\"touchend\",this.touchendHandler),this.selector.addEventListener(\"touchmove\",this.touchmoveHandler),this.selector.addEventListener(\"mousedown\",this.mousedownHandler),this.selector.addEventListener(\"mouseup\",this.mouseupHandler),this.selector.addEventListener(\"mouseleave\",this.mouseleaveHandler),this.selector.addEventListener(\"mousemove\",this.mousemoveHandler),this.selector.addEventListener(\"click\",this.clickHandler))}},{key:\"detachEvents\",value:function(){window.removeEventListener(\"resize\",this.resizeHandler),this.selector.removeEventListener(\"touchstart\",this.touchstartHandler),this.selector.removeEventListener(\"touchend\",this.touchendHandler),this.selector.removeEventListener(\"touchmove\",this.touchmoveHandler),this.selector.removeEventListener(\"mousedown\",this.mousedownHandler),this.selector.removeEventListener(\"mouseup\",this.mouseupHandler),this.selector.removeEventListener(\"mouseleave\",this.mouseleaveHandler),this.selector.removeEventListener(\"mousemove\",this.mousemoveHandler),this.selector.removeEventListener(\"click\",this.clickHandler)}},{key:\"init\",value:function(){this.attachEvents(),this.selector.style.overflow=\"hidden\",this.selector.style.direction=this.config.rtl?\"rtl\":\"ltr\",this.buildSliderFrame(),this.config.onInit.call(this)}},{key:\"buildSliderFrame\",value:function(){var e=this.selectorWidth/this.perPage,t=this.config.loop?this.innerElements.length+2*this.perPage:this.innerElements.length;this.sliderFrame=document.createElement(\"div\"),this.sliderFrame.style.width=e*t+\"px\",this.enableTransition(),this.config.draggable&&(this.selector.style.cursor=\"-webkit-grab\");var i=document.createDocumentFragment();if(this.config.loop)for(var r=this.innerElements.length-this.perPage;r<this.innerElements.length;r++){var n=this.buildSliderFrameItem(this.innerElements[r].cloneNode(!0));i.appendChild(n)}for(var s=0;s<this.innerElements.length;s++){var l=this.buildSliderFrameItem(this.innerElements[s]);i.appendChild(l)}if(this.config.loop)for(var o=0;o<this.perPage;o++){var a=this.buildSliderFrameItem(this.innerElements[o].cloneNode(!0));i.appendChild(a)}this.sliderFrame.appendChild(i),this.selector.innerHTML=\"\",this.selector.appendChild(this.sliderFrame),this.slideToCurrent()}},{key:\"buildSliderFrameItem\",value:function(e){var t=document.createElement(\"div\");return t.style.cssFloat=this.config.rtl?\"right\":\"left\",t.style.float=this.config.rtl?\"right\":\"left\",t.style.width=(this.config.loop?100/(this.innerElements.length+2*this.perPage):100/this.innerElements.length)+\"%\",t.appendChild(e),t}},{key:\"resolveSlidesNumber\",value:function(){if(\"number\"==typeof this.config.perPage)this.perPage=this.config.perPage;else if(\"object\"===n(this.config.perPage)){this.perPage=1;for(var e in this.config.perPage)window.innerWidth>=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)<Math.abs(this.drag.startX-e.touches[0].pageX)),this.pointerDown&&this.drag.letItGo){e.preventDefault(),this.drag.endX=e.touches[0].pageX,this.sliderFrame.style.webkitTransition=\"all 0ms \"+this.config.easing,this.sliderFrame.style.transition=\"all 0ms \"+this.config.easing;var t=this.config.loop?this.currentSlide+this.perPage:this.currentSlide,i=t*(this.selectorWidth/this.perPage),r=this.drag.endX-this.drag.startX,n=this.config.rtl?i+r:i-r;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(this.config.rtl?1:-1)*n+\"px, 0, 0)\"}}},{key:\"mousedownHandler\",value:function(e){-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\"].indexOf(e.target.nodeName)||(e.preventDefault(),e.stopPropagation(),this.pointerDown=!0,this.drag.startX=e.pageX)}},{key:\"mouseupHandler\",value:function(e){e.stopPropagation(),this.pointerDown=!1,this.selector.style.cursor=\"-webkit-grab\",this.enableTransition(),this.drag.endX&&this.updateAfterDrag(),this.clearDrag()}},{key:\"mousemoveHandler\",value:function(e){if(e.preventDefault(),this.pointerDown){\"A\"===e.target.nodeName&&(this.drag.preventClick=!0),this.drag.endX=e.pageX,this.selector.style.cursor=\"-webkit-grabbing\",this.sliderFrame.style.webkitTransition=\"all 0ms \"+this.config.easing,this.sliderFrame.style.transition=\"all 0ms \"+this.config.easing;var t=this.config.loop?this.currentSlide+this.perPage:this.currentSlide,i=t*(this.selectorWidth/this.perPage),r=this.drag.endX-this.drag.startX,n=this.config.rtl?i+r:i-r;this.sliderFrame.style[this.transformProperty]=\"translate3d(\"+(this.config.rtl?1:-1)*n+\"px, 0, 0)\"}}},{key:\"mouseleaveHandler\",value:function(e){this.pointerDown&&(this.pointerDown=!1,this.selector.style.cursor=\"-webkit-grab\",this.drag.endX=e.pageX,this.drag.preventClick=!1,this.enableTransition(),this.updateAfterDrag(),this.clearDrag())}},{key:\"clickHandler\",value:function(e){this.drag.preventClick&&e.preventDefault(),this.drag.preventClick=!1}},{key:\"remove\",value:function(e,t){if(e<0||e>=this.innerElements.length)throw new Error(\"Item to remove doesn't exist 😭\");var i=e<this.currentSlide,r=this.currentSlide+this.perPage-1===e;(i||r)&&this.currentSlide--,this.innerElements.splice(e,1),this.buildSliderFrame(),t&&t.call(this)}},{key:\"insert\",value:function(e,t,i){if(t<0||t>this.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<this.innerElements.length;r++)i.appendChild(this.innerElements[r]);this.selector.innerHTML=\"\",this.selector.appendChild(i),this.selector.removeAttribute(\"style\")}t&&t.call(this)}}],[{key:\"mergeSettings\",value:function(e){var t={selector:\".siema\",duration:200,easing:\"ease-out\",perPage:1,startIndex:0,draggable:!0,multipleDrag:!0,threshold:20,loop:!1,rtl:!1,onInit:function(){},onChange:function(){}},i=e;for(var r in i)t[r]=i[r];return t}},{key:\"webkitOrNot\",value:function(){return\"string\"==typeof document.documentElement.style.transform?\"transform\":\"WebkitTransform\"}}]),e}();t.default=l,e.exports=t.default}])});","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\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 <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = typeof options.transform === 'function'\n\t\t ? options.transform(obj.css) \n\t\t : options.transform.default(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","/**!\n* tippy.js v4.3.4\n* (c) 2017-2019 atomiks\n* MIT License\n*/\nimport Popper from 'popper.js';\n\nvar css = \".tippy-iOS{cursor:pointer!important;-webkit-tap-highlight-color:transparent}.tippy-popper{transition-timing-function:cubic-bezier(.165,.84,.44,1);max-width:calc(100% - 8px);pointer-events:none;outline:0}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-7px;bottom:-6.5px;-webkit-transform-origin:50% 0;transform-origin:50% 0;margin:0 3px}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;bottom:-7px;margin:0 3px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 25%;transform-origin:0 25%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-55%);transform:scale(1) translate(-50%,-55%)}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%,-45%);transform:scale(.2) translate(-50%,-45%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateY(-10px) rotateX(0);transform:perspective(700px) translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateY(0) rotateX(60deg);transform:perspective(700px) translateY(0) rotateX(60deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px) scale(.5);transform:translateY(-10px) scale(.5)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-7px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%;margin:0 3px}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:8px solid #333;border-right:8px solid transparent;border-left:8px solid transparent;top:-7px;margin:0 3px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -50%;transform-origin:0 -50%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-45%);transform:scale(1) translate(-50%,-45%)}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-50%);transform:scale(.2) translate(-50%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateY(10px) rotateX(0);transform:perspective(700px) translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateY(0) rotateX(-60deg);transform:perspective(700px) translateY(0) rotateX(-60deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px) scale(.5);transform:translateY(10px) scale(.5)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-12px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%;margin:3px 0}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-75%,-50%);transform:scale(.2) translate(-75%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateX(-10px) rotateY(0);transform:perspective(700px) translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateX(0) rotateY(-60deg);transform:perspective(700px) translateX(0) rotateY(-60deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px) scale(.5);transform:translateX(-10px) scale(.5)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-12px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%;margin:3px 0}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:8px solid #333;border-top:8px solid transparent;border-bottom:8px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-50% 0;transform-origin:-50% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(1) translate(-50%,-50%);transform:scale(1) translate(-50%,-50%)}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(.2) translate(-25%,-50%);transform:scale(.2) translate(-25%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{-webkit-transform:perspective(700px) translateX(10px) rotateY(0);transform:perspective(700px) translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:perspective(700px) translateX(0) rotateY(60deg);transform:perspective(700px) translateX(0) rotateY(60deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px) scale(.5);transform:translateX(10px) scale(.5)}.tippy-tooltip{position:relative;color:#fff;border-radius:.25rem;font-size:.875rem;padding:.3125rem .5625rem;line-height:1.4;text-align:center;background-color:#333}.tippy-tooltip[data-size=small]{padding:.1875rem .375rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.375rem .75rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] .tippy-roundarrow path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:18px;height:7px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;background-color:#333;border-radius:50%;width:calc(110% + 2rem);left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\\\"\\\";float:left;padding-top:100%}.tippy-backdrop+.tippy-content{transition-property:opacity;will-change:opacity}.tippy-backdrop+.tippy-content[data-state=visible]{opacity:1}.tippy-backdrop+.tippy-content[data-state=hidden]{opacity:0}\";\n\nfunction _extends() {\n _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 return _extends.apply(this, arguments);\n}\n\nvar version = \"4.3.4\";\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar ua = isBrowser ? navigator.userAgent : '';\nvar isIE = /MSIE |Trident\\//.test(ua);\nvar isUCBrowser = /UCBrowser\\//.test(ua);\nvar isIOS = isBrowser && /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream;\n\nvar defaultProps = {\n a11y: true,\n allowHTML: true,\n animateFill: true,\n animation: 'shift-away',\n appendTo: function appendTo() {\n return document.body;\n },\n aria: 'describedby',\n arrow: false,\n arrowType: 'sharp',\n boundary: 'scrollParent',\n content: '',\n delay: 0,\n distance: 10,\n duration: [325, 275],\n flip: true,\n flipBehavior: 'flip',\n flipOnUpdate: false,\n followCursor: false,\n hideOnClick: true,\n ignoreAttributes: false,\n inertia: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n lazy: true,\n maxWidth: 350,\n multiple: false,\n offset: 0,\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n placement: 'top',\n popperOptions: {},\n role: 'tooltip',\n showOnInit: false,\n size: 'regular',\n sticky: false,\n target: '',\n theme: 'dark',\n touch: true,\n touchHold: false,\n trigger: 'mouseenter focus',\n triggerTarget: null,\n updateDuration: 0,\n wait: null,\n zIndex: 9999\n /**\n * If the set() method encounters one of these, the popperInstance must be\n * recreated\n */\n\n};\nvar POPPER_INSTANCE_DEPENDENCIES = ['arrow', 'arrowType', 'boundary', 'distance', 'flip', 'flipBehavior', 'flipOnUpdate', 'offset', 'placement', 'popperOptions'];\n\nvar elementProto = isBrowser ? Element.prototype : {};\nvar matches = elementProto.matches || elementProto.matchesSelector || elementProto.webkitMatchesSelector || elementProto.mozMatchesSelector || elementProto.msMatchesSelector;\n/**\n * Ponyfill for Array.from - converts iterable values to an array\n */\n\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\n/**\n * Ponyfill for Element.prototype.closest\n */\n\nfunction closest(element, selector) {\n return closestCallback(element, function (el) {\n return matches.call(el, selector);\n });\n}\n/**\n * Works like Element.prototype.closest, but uses a callback instead\n */\n\nfunction closestCallback(element, callback) {\n while (element) {\n if (callback(element)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n}\n\n// Passive event listener config\nvar PASSIVE = {\n passive: true // Popper `preventOverflow` padding\n\n};\nvar PADDING = 4; // Popper attributes\n// In Popper v2 these will be `data-*` instead of `x-*` to adhere to HTML5 spec\n\nvar PLACEMENT_ATTRIBUTE = 'x-placement';\nvar OUT_OF_BOUNDARIES_ATTRIBUTE = 'x-out-of-boundaries'; // Classes\n\nvar IOS_CLASS = \"tippy-iOS\";\nvar ACTIVE_CLASS = \"tippy-active\";\nvar POPPER_CLASS = \"tippy-popper\";\nvar TOOLTIP_CLASS = \"tippy-tooltip\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar ROUND_ARROW_CLASS = \"tippy-roundarrow\"; // Selectors\n\nvar POPPER_SELECTOR = \".\".concat(POPPER_CLASS);\nvar TOOLTIP_SELECTOR = \".\".concat(TOOLTIP_CLASS);\nvar CONTENT_SELECTOR = \".\".concat(CONTENT_CLASS);\nvar BACKDROP_SELECTOR = \".\".concat(BACKDROP_CLASS);\nvar ARROW_SELECTOR = \".\".concat(ARROW_CLASS);\nvar ROUND_ARROW_SELECTOR = \".\".concat(ROUND_ARROW_CLASS);\n\nvar isUsingTouch = false;\nfunction onDocumentTouch() {\n if (isUsingTouch) {\n return;\n }\n\n isUsingTouch = true;\n\n if (isIOS) {\n document.body.classList.add(IOS_CLASS);\n }\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\nvar lastMouseMoveTime = 0;\nfunction onDocumentMouseMove() {\n var now = performance.now(); // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference\n\n if (now - lastMouseMoveTime < 20) {\n isUsingTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n\n if (!isIOS) {\n document.body.classList.remove(IOS_CLASS);\n }\n }\n\n lastMouseMoveTime = now;\n}\nfunction onWindowBlur() {\n var _document = document,\n activeElement = _document.activeElement;\n\n if (activeElement && activeElement.blur && activeElement._tippy) {\n activeElement.blur();\n }\n}\n/**\n * Adds the needed global event listeners\n */\n\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouch, PASSIVE);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar keys = Object.keys(defaultProps);\n/**\n * Returns an object of optional props from data-tippy-* attributes\n */\n\nfunction getDataAttributeOptions(reference) {\n return keys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\".concat(key)) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n}\n/**\n * Polyfills the virtual reference (plain object) with Element.prototype props\n * Mutating because DOM elements are mutated, adds `_tippy` property\n */\n\nfunction polyfillElementPrototypeProperties(virtualReference) {\n var polyfills = {\n isVirtual: true,\n attributes: virtualReference.attributes || {},\n contains: function contains() {},\n setAttribute: function setAttribute(key, value) {\n virtualReference.attributes[key] = value;\n },\n getAttribute: function getAttribute(key) {\n return virtualReference.attributes[key];\n },\n removeAttribute: function removeAttribute(key) {\n delete virtualReference.attributes[key];\n },\n hasAttribute: function hasAttribute(key) {\n return key in virtualReference.attributes;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n classList: {\n classNames: {},\n add: function add(key) {\n virtualReference.classList.classNames[key] = true;\n },\n remove: function remove(key) {\n delete virtualReference.classList.classNames[key];\n },\n contains: function contains(key) {\n return key in virtualReference.classList.classNames;\n }\n }\n };\n\n for (var key in polyfills) {\n virtualReference[key] = polyfills[key];\n }\n}\n\n/**\n * Determines if a value is a \"bare\" virtual element (before mutations done\n * by `polyfillElementPrototypeProperties()`). JSDOM elements show up as\n * [object Object], we can check if the value is \"element-like\" if it has\n * `addEventListener`\n */\n\nfunction isBareVirtualElement(value) {\n return {}.toString.call(value) === '[object Object]' && !value.addEventListener;\n}\n/**\n * Determines if the value is a reference element\n */\n\nfunction isReferenceElement(value) {\n return !!value._tippy && !matches.call(value, POPPER_SELECTOR);\n}\n/**\n * Safe .hasOwnProperty check, for prototype-less objects\n */\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\n/**\n * Returns an array of elements based on the value\n */\n\nfunction getArrayOfElements(value) {\n if (isSingular(value)) {\n // TODO: VirtualReference is not compatible to type Element\n return [value];\n }\n\n if (value instanceof NodeList) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n try {\n return arrayFrom(document.querySelectorAll(value));\n } catch (e) {\n return [];\n }\n}\n/**\n * Returns a value at a given index depending on if it's an array or number\n */\n\nfunction getValue(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? defaultValue : v;\n }\n\n return value;\n}\n/**\n * Debounce utility. To avoid bloating bundle size, we're only passing 1\n * argument here, a more generic function would pass all arguments. Only\n * `onMouseMove` uses this which takes the event object for now.\n */\n\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\n/**\n * Prevents errors from being thrown while accessing nested modifier objects\n * in `popperOptions`\n */\n\nfunction getModifier(obj, key) {\n return obj && obj.modifiers && obj.modifiers[key];\n}\n/**\n * Determines if an array or string includes a value\n */\n\nfunction includes(a, b) {\n return a.indexOf(b) > -1;\n}\n/**\n * Determines if the value is a real element\n */\n\nfunction isRealElement(value) {\n return value instanceof Element;\n}\n/**\n * Determines if the value is singular-like\n */\n\nfunction isSingular(value) {\n return !!(value && hasOwnProperty(value, 'isVirtual')) || isRealElement(value);\n}\n/**\n * Firefox extensions don't allow setting .innerHTML directly, this will trick it\n */\n\nfunction innerHTML() {\n return 'innerHTML';\n}\n/**\n * Evaluates a function if one, or returns the value\n */\n\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(null, args) : value;\n}\n/**\n * Sets a popperInstance `flip` modifier's enabled state\n */\n\nfunction setFlipModifierEnabled(modifiers, value) {\n modifiers.filter(function (m) {\n return m.name === 'flip';\n })[0].enabled = value;\n}\n/**\n * Determines if an element can receive focus\n * Always returns true for virtual objects\n */\n\nfunction canReceiveFocus(element) {\n return isRealElement(element) ? matches.call(element, 'a[href],area[href],button,details,input,textarea,select,iframe,[tabindex]') && !element.hasAttribute('disabled') : true;\n}\n/**\n * Returns a new `div` element\n */\n\nfunction div() {\n return document.createElement('div');\n}\n/**\n * Applies a transition duration to a list of elements\n */\n\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = \"\".concat(value, \"ms\");\n }\n });\n}\n/**\n * Sets the visibility state to elements so they can begin to transition\n */\n\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\n/**\n * Evaluates the props object by merging data attributes and\n * disabling conflicting options where necessary\n */\n\nfunction evaluateProps(reference, props) {\n var out = _extends({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeOptions(reference));\n\n if (out.arrow || isUCBrowser) {\n out.animateFill = false;\n }\n\n return out;\n}\n/**\n * Validates an object of options with the valid default props object\n */\n\nfunction validateOptions(options, defaultProps) {\n Object.keys(options).forEach(function (option) {\n if (!hasOwnProperty(defaultProps, option)) {\n throw new Error(\"[tippy]: `\".concat(option, \"` is not a valid option\"));\n }\n });\n}\n\n/**\n * Sets the innerHTML of an element\n */\n\nfunction setInnerHTML(element, html) {\n element[innerHTML()] = isRealElement(html) ? html[innerHTML()] : html;\n}\n/**\n * Sets the content of a tooltip\n */\n\nfunction setContent(contentEl, props) {\n if (isRealElement(props.content)) {\n setInnerHTML(contentEl, '');\n contentEl.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n var key = props.allowHTML ? 'innerHTML' : 'textContent';\n contentEl[key] = props.content;\n }\n}\n/**\n * Returns the child elements of a popper element\n */\n\nfunction getChildren(popper) {\n return {\n tooltip: popper.querySelector(TOOLTIP_SELECTOR),\n backdrop: popper.querySelector(BACKDROP_SELECTOR),\n content: popper.querySelector(CONTENT_SELECTOR),\n arrow: popper.querySelector(ARROW_SELECTOR) || popper.querySelector(ROUND_ARROW_SELECTOR)\n };\n}\n/**\n * Adds `data-inertia` attribute\n */\n\nfunction addInertia(tooltip) {\n tooltip.setAttribute('data-inertia', '');\n}\n/**\n * Removes `data-inertia` attribute\n */\n\nfunction removeInertia(tooltip) {\n tooltip.removeAttribute('data-inertia');\n}\n/**\n * Creates an arrow element and returns it\n */\n\nfunction createArrowElement(arrowType) {\n var arrow = div();\n\n if (arrowType === 'round') {\n arrow.className = ROUND_ARROW_CLASS;\n setInnerHTML(arrow, '<svg viewBox=\"0 0 18 7\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 7s2.021-.015 5.253-4.218C6.584 1.051 7.797.007 9 0c1.203-.007 2.416 1.035 3.761 2.782C16.012 7.005 18 7 18 7H0z\"/></svg>');\n } else {\n arrow.className = ARROW_CLASS;\n }\n\n return arrow;\n}\n/**\n * Creates a backdrop element and returns it\n */\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n backdrop.setAttribute('data-state', 'hidden');\n return backdrop;\n}\n/**\n * Adds interactive-related attributes\n */\n\nfunction addInteractive(popper, tooltip) {\n popper.setAttribute('tabindex', '-1');\n tooltip.setAttribute('data-interactive', '');\n}\n/**\n * Removes interactive-related attributes\n */\n\nfunction removeInteractive(popper, tooltip) {\n popper.removeAttribute('tabindex');\n tooltip.removeAttribute('data-interactive');\n}\n/**\n * Add/remove transitionend listener from tooltip\n */\n\nfunction updateTransitionEndListener(tooltip, action, listener) {\n // UC Browser hasn't adopted the `transitionend` event despite supporting\n // unprefixed transitions...\n var eventName = isUCBrowser && document.body.style.webkitTransition !== undefined ? 'webkitTransitionEnd' : 'transitionend';\n tooltip[action + 'EventListener'](eventName, listener);\n}\n/**\n * Returns the popper's placement, ignoring shifting (top-start, etc)\n */\n\nfunction getBasicPlacement(popper) {\n var fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE);\n return fullPlacement ? fullPlacement.split('-')[0] : '';\n}\n/**\n * Triggers reflow\n */\n\nfunction reflow(popper) {\n void popper.offsetHeight;\n}\n/**\n * Adds/removes theme from tooltip's classList\n */\n\nfunction updateTheme(tooltip, action, theme) {\n theme.split(' ').forEach(function (themeName) {\n tooltip.classList[action](themeName + '-theme');\n });\n}\n/**\n * Constructs the popper element and returns it\n */\n\nfunction createPopperElement(id, props) {\n var popper = div();\n popper.className = POPPER_CLASS;\n popper.id = \"tippy-\".concat(id);\n popper.style.zIndex = '' + props.zIndex;\n popper.style.position = 'absolute';\n popper.style.top = '0';\n popper.style.left = '0';\n\n if (props.role) {\n popper.setAttribute('role', props.role);\n }\n\n var tooltip = div();\n tooltip.className = TOOLTIP_CLASS;\n tooltip.style.maxWidth = props.maxWidth + (typeof props.maxWidth === 'number' ? 'px' : '');\n tooltip.setAttribute('data-size', props.size);\n tooltip.setAttribute('data-animation', props.animation);\n tooltip.setAttribute('data-state', 'hidden');\n updateTheme(tooltip, 'add', props.theme);\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n\n if (props.interactive) {\n addInteractive(popper, tooltip);\n }\n\n if (props.arrow) {\n tooltip.appendChild(createArrowElement(props.arrowType));\n }\n\n if (props.animateFill) {\n tooltip.appendChild(createBackdropElement());\n tooltip.setAttribute('data-animatefill', '');\n }\n\n if (props.inertia) {\n addInertia(tooltip);\n }\n\n setContent(content, props);\n tooltip.appendChild(content);\n popper.appendChild(tooltip);\n return popper;\n}\n/**\n * Updates the popper element based on the new props\n */\n\nfunction updatePopperElement(popper, prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n tooltip = _getChildren.tooltip,\n content = _getChildren.content,\n backdrop = _getChildren.backdrop,\n arrow = _getChildren.arrow;\n\n popper.style.zIndex = '' + nextProps.zIndex;\n tooltip.setAttribute('data-size', nextProps.size);\n tooltip.setAttribute('data-animation', nextProps.animation);\n tooltip.style.maxWidth = nextProps.maxWidth + (typeof nextProps.maxWidth === 'number' ? 'px' : '');\n\n if (nextProps.role) {\n popper.setAttribute('role', nextProps.role);\n } else {\n popper.removeAttribute('role');\n }\n\n if (prevProps.content !== nextProps.content) {\n setContent(content, nextProps);\n } // animateFill\n\n\n if (!prevProps.animateFill && nextProps.animateFill) {\n tooltip.appendChild(createBackdropElement());\n tooltip.setAttribute('data-animatefill', '');\n } else if (prevProps.animateFill && !nextProps.animateFill) {\n tooltip.removeChild(backdrop);\n tooltip.removeAttribute('data-animatefill');\n } // arrow\n\n\n if (!prevProps.arrow && nextProps.arrow) {\n tooltip.appendChild(createArrowElement(nextProps.arrowType));\n } else if (prevProps.arrow && !nextProps.arrow) {\n tooltip.removeChild(arrow);\n } // arrowType\n\n\n if (prevProps.arrow && nextProps.arrow && prevProps.arrowType !== nextProps.arrowType) {\n tooltip.replaceChild(createArrowElement(nextProps.arrowType), arrow);\n } // interactive\n\n\n if (!prevProps.interactive && nextProps.interactive) {\n addInteractive(popper, tooltip);\n } else if (prevProps.interactive && !nextProps.interactive) {\n removeInteractive(popper, tooltip);\n } // inertia\n\n\n if (!prevProps.inertia && nextProps.inertia) {\n addInertia(tooltip);\n } else if (prevProps.inertia && !nextProps.inertia) {\n removeInertia(tooltip);\n } // theme\n\n\n if (prevProps.theme !== nextProps.theme) {\n updateTheme(tooltip, 'remove', prevProps.theme);\n updateTheme(tooltip, 'add', nextProps.theme);\n }\n}\n/**\n * Hides all visible poppers on the document\n */\n\nfunction hideAll() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n arrayFrom(document.querySelectorAll(POPPER_SELECTOR)).forEach(function (popper) {\n var instance = popper._tippy;\n\n if (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n instance.hide(duration);\n }\n }\n });\n}\n/**\n * Determines if the mouse cursor is outside of the popper's interactive border\n * region\n */\n\nfunction isCursorOutsideInteractiveBorder(popperPlacement, popperRect, event, props) {\n if (!popperPlacement) {\n return true;\n }\n\n var x = event.clientX,\n y = event.clientY;\n var interactiveBorder = props.interactiveBorder,\n distance = props.distance;\n var exceedsTop = popperRect.top - y > (popperPlacement === 'top' ? interactiveBorder + distance : interactiveBorder);\n var exceedsBottom = y - popperRect.bottom > (popperPlacement === 'bottom' ? interactiveBorder + distance : interactiveBorder);\n var exceedsLeft = popperRect.left - x > (popperPlacement === 'left' ? interactiveBorder + distance : interactiveBorder);\n var exceedsRight = x - popperRect.right > (popperPlacement === 'right' ? interactiveBorder + distance : interactiveBorder);\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n}\n/**\n * Returns the distance offset, taking into account the default offset due to\n * the transform: translate() rule (10px) in CSS\n */\n\nfunction getOffsetDistanceInPx(distance) {\n return -(distance - 10) + 'px';\n}\n\nvar idCounter = 1; // Workaround for IE11's lack of new MouseEvent constructor\n\nvar mouseMoveListeners = [];\n/**\n * Creates and returns a Tippy object. We're using a closure pattern instead of\n * a class so that the exposed object API is clean without private members\n * prefixed with `_`.\n */\n\nfunction createTippy(reference, collectionProps) {\n var props = evaluateProps(reference, collectionProps); // If the reference shouldn't have multiple tippys, return null early\n\n if (!props.multiple && reference._tippy) {\n return null;\n }\n /* ======================= 🔒 Private members 🔒 ======================= */\n\n\n var lastTriggerEventType;\n var lastMouseMoveEvent;\n var showTimeoutId;\n var hideTimeoutId;\n var scheduleHideAnimationFrameId;\n var isScheduledToShow = false;\n var isBeingDestroyed = false;\n var previousPlacement;\n var wasVisibleDuringPreviousUpdate = false;\n var hasMountCallbackRun = false;\n var currentMountCallback;\n var currentTransitionEndListener;\n var listeners = [];\n var currentComputedPadding;\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n /* ======================= 🔑 Public members 🔑 ======================= */\n\n var id = idCounter++;\n var popper = createPopperElement(id, props);\n var popperChildren = getChildren(popper);\n var popperInstance = null;\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: popper,\n popperChildren: popperChildren,\n popperInstance: popperInstance,\n props: props,\n state: state,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n set: set,\n setContent: setContent,\n show: show,\n hide: hide,\n enable: enable,\n disable: disable,\n destroy: destroy\n /* ==================== Initial instance mutations =================== */\n\n };\n reference._tippy = instance;\n popper._tippy = instance;\n addTriggersToReference();\n\n if (!props.lazy) {\n createPopperInstance();\n }\n\n if (props.showOnInit) {\n scheduleShow();\n } // Ensure the event listeners target can receive focus\n\n\n if (props.a11y && !props.target && !canReceiveFocus(getEventListenersTarget())) {\n getEventListenersTarget().setAttribute('tabindex', '0');\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function (event) {\n if (instance.props.interactive && instance.state.isVisible && lastTriggerEventType === 'mouseenter') {\n // We don't want props.onTrigger() to be called here, since the `event`\n // object is not related to the reference element\n scheduleShow(event, true);\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && lastTriggerEventType === 'mouseenter') {\n document.addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance;\n /* ======================= 🔒 Private methods 🔒 ======================= */\n\n /**\n * Removes the follow cursor listener\n */\n\n function removeFollowCursorListener() {\n document.removeEventListener('mousemove', positionVirtualReferenceNearCursor);\n }\n /**\n * Cleans up interactive mouse listeners\n */\n\n\n function cleanupInteractiveMouseListeners() {\n document.body.removeEventListener('mouseleave', scheduleHide);\n document.removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n /**\n * Returns correct target used for event listeners\n */\n\n\n function getEventListenersTarget() {\n return instance.props.triggerTarget || reference;\n }\n /**\n * Adds the document click event listener for the instance\n */\n\n\n function addDocumentClickListener() {\n document.addEventListener('click', onDocumentClick, true);\n }\n /**\n * Removes the document click event listener for the instance\n */\n\n\n function removeDocumentClickListener() {\n document.removeEventListener('click', onDocumentClick, true);\n }\n /**\n * Returns transitionable inner elements used in show/hide methods\n */\n\n\n function getTransitionableElements() {\n return [instance.popperChildren.tooltip, instance.popperChildren.backdrop, instance.popperChildren.content];\n }\n /**\n * Determines if the instance is in `followCursor` mode.\n * NOTE: in v5, touch devices will use `initial` behavior no matter the value.\n */\n\n\n function getIsInLooseFollowCursorMode() {\n var followCursor = instance.props.followCursor;\n return followCursor && lastTriggerEventType !== 'focus' || isUsingTouch && followCursor === 'initial';\n }\n /**\n * Updates the tooltip's position on each animation frame\n */\n\n\n function makeSticky() {\n setTransitionDuration([popper], isIE ? 0 : instance.props.updateDuration);\n\n function updatePosition() {\n instance.popperInstance.scheduleUpdate();\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n } else {\n setTransitionDuration([popper], 0);\n }\n }\n\n updatePosition();\n }\n /**\n * Invokes a callback once the tooltip has fully transitioned out\n */\n\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n /**\n * Invokes a callback once the tooltip has fully transitioned in\n */\n\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n /**\n * Invokes a callback once the tooltip's CSS transition ends\n */\n\n\n function onTransitionEnd(duration, callback) {\n var tooltip = instance.popperChildren.tooltip;\n /**\n * Listener added as the `transitionend` handler\n */\n\n function listener(event) {\n if (event.target === tooltip) {\n updateTransitionEndListener(tooltip, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(tooltip, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(tooltip, 'add', listener);\n currentTransitionEndListener = listener;\n }\n /**\n * Adds an event listener to the reference and stores it in `listeners`\n */\n\n\n function on(eventType, handler) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n getEventListenersTarget().addEventListener(eventType, handler, options);\n listeners.push({\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n /**\n * Adds event listeners to the reference based on the `trigger` prop\n */\n\n\n function addTriggersToReference() {\n if (instance.props.touchHold && !instance.props.target) {\n on('touchstart', onTrigger, PASSIVE);\n on('touchend', onMouseLeave, PASSIVE);\n }\n\n instance.props.trigger.trim().split(' ').forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n } // Non-delegates\n\n\n if (!instance.props.target) {\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE ? 'focusout' : 'blur', onBlur);\n break;\n }\n } else {\n // Delegates\n switch (eventType) {\n case 'mouseenter':\n on('mouseover', onDelegateShow);\n on('mouseout', onDelegateHide);\n break;\n\n case 'focus':\n on('focusin', onDelegateShow);\n on('focusout', onDelegateHide);\n break;\n\n case 'click':\n on(eventType, onDelegateShow);\n break;\n }\n }\n });\n }\n /**\n * Removes event listeners from the reference\n */\n\n\n function removeTriggersFromReference() {\n listeners.forEach(function (_ref) {\n var eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n getEventListenersTarget().removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n /**\n * Positions the virtual reference near the cursor\n */\n\n\n function positionVirtualReferenceNearCursor(event) {\n var _lastMouseMoveEvent = lastMouseMoveEvent = event,\n x = _lastMouseMoveEvent.clientX,\n y = _lastMouseMoveEvent.clientY; // Gets set once popperInstance `onCreate` has been called\n\n\n if (!currentComputedPadding) {\n return;\n } // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n\n\n var isCursorOverReference = closestCallback(event.target, function (el) {\n return el === reference;\n });\n var rect = reference.getBoundingClientRect();\n var followCursor = instance.props.followCursor;\n var isHorizontal = followCursor === 'horizontal';\n var isVertical = followCursor === 'vertical'; // The virtual reference needs some size to prevent itself from overflowing\n\n var isVerticalPlacement = includes(['top', 'bottom'], getBasicPlacement(popper));\n var fullPlacement = popper.getAttribute(PLACEMENT_ATTRIBUTE);\n var isVariation = fullPlacement ? !!fullPlacement.split('-')[1] : false;\n var size = isVerticalPlacement ? popper.offsetWidth : popper.offsetHeight;\n var halfSize = size / 2;\n var verticalIncrease = isVerticalPlacement ? 0 : isVariation ? size : halfSize;\n var horizontalIncrease = isVerticalPlacement ? isVariation ? size : halfSize : 0;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.popperInstance.reference = _extends({}, instance.popperInstance.reference, {\n // These `client` values don't get used by Popper.js if they are 0\n clientWidth: 0,\n clientHeight: 0,\n getBoundingClientRect: function getBoundingClientRect() {\n return {\n width: isVerticalPlacement ? size : 0,\n height: isVerticalPlacement ? 0 : size,\n top: (isHorizontal ? rect.top : y) - verticalIncrease,\n bottom: (isHorizontal ? rect.bottom : y) + verticalIncrease,\n left: (isVertical ? rect.left : x) - horizontalIncrease,\n right: (isVertical ? rect.right : x) + horizontalIncrease\n };\n }\n });\n instance.popperInstance.update();\n }\n\n if (followCursor === 'initial' && instance.state.isVisible) {\n removeFollowCursorListener();\n }\n }\n /**\n * Creates the tippy instance for a delegate when it's been triggered\n */\n\n\n function createDelegateChildTippy(event) {\n if (event) {\n var targetEl = closest(event.target, instance.props.target);\n\n if (targetEl && !targetEl._tippy) {\n createTippy(targetEl, _extends({}, instance.props, {\n content: invokeWithArgsOrReturn(collectionProps.content, [targetEl]),\n appendTo: collectionProps.appendTo,\n target: '',\n showOnInit: true\n }));\n }\n }\n }\n /**\n * Event listener invoked upon trigger\n */\n\n\n function onTrigger(event) {\n if (!instance.state.isEnabled || isEventListenerStopped(event)) {\n return;\n }\n\n if (!instance.state.isVisible) {\n lastTriggerEventType = event.type;\n\n if (event instanceof MouseEvent) {\n lastMouseMoveEvent = event; // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n }\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && instance.props.hideOnClick !== false && instance.state.isVisible) {\n scheduleHide();\n } else {\n scheduleShow(event);\n }\n }\n /**\n * Event listener used for interactive tooltips to detect when they should\n * hide\n */\n\n\n function onMouseMove(event) {\n var isCursorOverPopper = closest(event.target, POPPER_SELECTOR) === popper;\n var isCursorOverReference = closestCallback(event.target, function (el) {\n return el === reference;\n });\n\n if (isCursorOverPopper || isCursorOverReference) {\n return;\n }\n\n if (isCursorOutsideInteractiveBorder(getBasicPlacement(popper), popper.getBoundingClientRect(), event, instance.props)) {\n cleanupInteractiveMouseListeners();\n scheduleHide();\n }\n }\n /**\n * Event listener invoked upon mouseleave\n */\n\n\n function onMouseLeave(event) {\n if (isEventListenerStopped(event)) {\n return;\n }\n\n if (instance.props.interactive) {\n document.body.addEventListener('mouseleave', scheduleHide);\n document.addEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners.push(debouncedOnMouseMove);\n return;\n }\n\n scheduleHide();\n }\n /**\n * Event listener invoked upon blur\n */\n\n\n function onBlur(event) {\n if (event.target !== getEventListenersTarget()) {\n return;\n }\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide();\n }\n /**\n * Event listener invoked when a child target is triggered\n */\n\n\n function onDelegateShow(event) {\n if (closest(event.target, instance.props.target)) {\n scheduleShow(event);\n }\n }\n /**\n * Event listener invoked when a child target should hide\n */\n\n\n function onDelegateHide(event) {\n if (closest(event.target, instance.props.target)) {\n scheduleHide();\n }\n }\n /**\n * Determines if an event listener should stop further execution due to the\n * `touchHold` option\n */\n\n\n function isEventListenerStopped(event) {\n var supportsTouch = 'ontouchstart' in window;\n var isTouchEvent = includes(event.type, 'touch');\n var touchHold = instance.props.touchHold;\n return supportsTouch && isUsingTouch && touchHold && !isTouchEvent || isUsingTouch && !touchHold && isTouchEvent;\n }\n /**\n * Runs the mount callback\n */\n\n\n function runMountCallback() {\n if (!hasMountCallbackRun && currentMountCallback) {\n hasMountCallbackRun = true;\n reflow(popper);\n currentMountCallback();\n }\n }\n /**\n * Creates the popper instance for the instance\n */\n\n\n function createPopperInstance() {\n var popperOptions = instance.props.popperOptions;\n var _instance$popperChild = instance.popperChildren,\n tooltip = _instance$popperChild.tooltip,\n arrow = _instance$popperChild.arrow;\n var preventOverflowModifier = getModifier(popperOptions, 'preventOverflow');\n\n function applyMutations(data) {\n if (instance.props.flip && !instance.props.flipOnUpdate) {\n if (data.flipped) {\n instance.popperInstance.options.placement = data.placement;\n }\n\n setFlipModifierEnabled(instance.popperInstance.modifiers, false);\n } // Apply all of the popper's attributes to the tootip node as well.\n // Allows users to avoid using the .tippy-popper selector for themes.\n\n\n tooltip.setAttribute(PLACEMENT_ATTRIBUTE, data.placement);\n\n if (data.attributes[OUT_OF_BOUNDARIES_ATTRIBUTE] !== false) {\n tooltip.setAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE, '');\n } else {\n tooltip.removeAttribute(OUT_OF_BOUNDARIES_ATTRIBUTE);\n } // Prevents a transition when changing placements (while tippy is visible)\n // for scroll/resize updates\n\n\n if (previousPlacement && previousPlacement !== data.placement && wasVisibleDuringPreviousUpdate) {\n tooltip.style.transition = 'none';\n requestAnimationFrame(function () {\n tooltip.style.transition = '';\n });\n }\n\n previousPlacement = data.placement;\n wasVisibleDuringPreviousUpdate = instance.state.isVisible;\n var basicPlacement = getBasicPlacement(popper);\n var styles = tooltip.style; // Account for the `distance` offset\n\n styles.top = styles.bottom = styles.left = styles.right = '';\n styles[basicPlacement] = getOffsetDistanceInPx(instance.props.distance);\n var padding = preventOverflowModifier && preventOverflowModifier.padding !== undefined ? preventOverflowModifier.padding : PADDING;\n var isPaddingNumber = typeof padding === 'number';\n\n var computedPadding = _extends({\n top: isPaddingNumber ? padding : padding.top,\n bottom: isPaddingNumber ? padding : padding.bottom,\n left: isPaddingNumber ? padding : padding.left,\n right: isPaddingNumber ? padding : padding.right\n }, !isPaddingNumber && padding);\n\n computedPadding[basicPlacement] = isPaddingNumber ? padding + instance.props.distance : (padding[basicPlacement] || 0) + instance.props.distance;\n instance.popperInstance.modifiers.filter(function (m) {\n return m.name === 'preventOverflow';\n })[0].padding = computedPadding;\n currentComputedPadding = computedPadding;\n }\n\n var config = _extends({\n eventsEnabled: false,\n placement: instance.props.placement\n }, popperOptions, {\n modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, {\n preventOverflow: _extends({\n boundariesElement: instance.props.boundary,\n padding: PADDING\n }, preventOverflowModifier),\n arrow: _extends({\n element: arrow,\n enabled: !!arrow\n }, getModifier(popperOptions, 'arrow')),\n flip: _extends({\n enabled: instance.props.flip,\n // The tooltip is offset by 10px from the popper in CSS,\n // we need to account for its distance\n padding: instance.props.distance + PADDING,\n behavior: instance.props.flipBehavior\n }, getModifier(popperOptions, 'flip')),\n offset: _extends({\n offset: instance.props.offset\n }, getModifier(popperOptions, 'offset'))\n }),\n onCreate: function onCreate(data) {\n applyMutations(data);\n runMountCallback();\n\n if (popperOptions && popperOptions.onCreate) {\n popperOptions.onCreate(data);\n }\n },\n onUpdate: function onUpdate(data) {\n applyMutations(data);\n runMountCallback();\n\n if (popperOptions && popperOptions.onUpdate) {\n popperOptions.onUpdate(data);\n }\n }\n });\n\n instance.popperInstance = new Popper(reference, popper, config);\n }\n /**\n * Mounts the tooltip to the DOM\n */\n\n\n function mount() {\n hasMountCallbackRun = false;\n var isInLooseFollowCursorMode = getIsInLooseFollowCursorMode();\n\n if (instance.popperInstance) {\n setFlipModifierEnabled(instance.popperInstance.modifiers, instance.props.flip);\n\n if (!isInLooseFollowCursorMode) {\n instance.popperInstance.reference = reference;\n instance.popperInstance.enableEventListeners();\n }\n\n instance.popperInstance.scheduleUpdate();\n } else {\n createPopperInstance();\n\n if (!isInLooseFollowCursorMode) {\n instance.popperInstance.enableEventListeners();\n }\n }\n\n var appendTo = instance.props.appendTo;\n var parentNode = appendTo === 'parent' ? reference.parentNode : invokeWithArgsOrReturn(appendTo, [reference]);\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n instance.props.onMount(instance);\n instance.state.isMounted = true;\n }\n }\n /**\n * Setup before show() is invoked (delays, etc.)\n */\n\n\n function scheduleShow(event, shouldAvoidCallingOnTrigger) {\n clearDelayTimeouts();\n\n if (instance.state.isVisible) {\n return;\n } // Is a delegate, create an instance for the child target\n\n\n if (instance.props.target) {\n return createDelegateChildTippy(event);\n }\n\n isScheduledToShow = true;\n\n if (event && !shouldAvoidCallingOnTrigger) {\n instance.props.onTrigger(instance, event);\n }\n\n if (instance.props.wait) {\n return instance.props.wait(instance, event);\n } // If the tooltip has a delay, we need to be listening to the mousemove as\n // soon as the trigger event is fired, so that it's in the correct position\n // upon mount.\n // Edge case: if the tooltip is still mounted, but then scheduleShow() is\n // called, it causes a jump.\n\n\n if (getIsInLooseFollowCursorMode() && !instance.state.isMounted) {\n if (!instance.popperInstance) {\n createPopperInstance();\n }\n\n document.addEventListener('mousemove', positionVirtualReferenceNearCursor);\n }\n\n addDocumentClickListener();\n var delay = getValue(instance.props.delay, 0, defaultProps.delay);\n\n if (delay) {\n showTimeoutId = setTimeout(function () {\n show();\n }, delay);\n } else {\n show();\n }\n }\n /**\n * Setup before hide() is invoked (delays, etc.)\n */\n\n\n function scheduleHide() {\n clearDelayTimeouts();\n\n if (!instance.state.isVisible) {\n return removeFollowCursorListener();\n }\n\n isScheduledToShow = false;\n var delay = getValue(instance.props.delay, 1, defaultProps.delay);\n\n if (delay) {\n hideTimeoutId = setTimeout(function () {\n if (instance.state.isVisible) {\n hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrameId = requestAnimationFrame(function () {\n hide();\n });\n }\n }\n /**\n * Listener to handle clicks on the document to determine if the\n * instance should hide\n */\n\n\n function onDocumentClick(event) {\n // Clicked on interactive popper\n if (instance.props.interactive && popper.contains(event.target)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (getEventListenersTarget().contains(event.target)) {\n if (isUsingTouch) {\n return;\n }\n\n if (instance.state.isVisible && includes(instance.props.trigger, 'click')) {\n return;\n }\n }\n\n if (instance.props.hideOnClick === true) {\n clearDelayTimeouts();\n hide();\n }\n }\n /* ======================= 🔑 Public methods 🔑 ======================= */\n\n /**\n * Enables the instance to allow it to show or hide\n */\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n /**\n * Disables the instance to disallow it to show or hide\n */\n\n\n function disable() {\n instance.state.isEnabled = false;\n }\n /**\n * Clears pending timeouts related to the `delay` prop if any\n */\n\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeoutId);\n clearTimeout(hideTimeoutId);\n cancelAnimationFrame(scheduleHideAnimationFrameId);\n }\n /**\n * Sets new props for the instance and redraws the tooltip\n */\n\n\n function set(options) {\n // Backwards-compatible after TypeScript change\n options = options || {};\n validateOptions(options, defaultProps);\n removeTriggersFromReference();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, _extends({}, instance.props, options, {\n ignoreAttributes: true\n }));\n nextProps.ignoreAttributes = hasOwnProperty(options, 'ignoreAttributes') ? options.ignoreAttributes || false : prevProps.ignoreAttributes;\n instance.props = nextProps;\n addTriggersToReference();\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n updatePopperElement(popper, prevProps, nextProps);\n instance.popperChildren = getChildren(popper);\n\n if (instance.popperInstance) {\n if (POPPER_INSTANCE_DEPENDENCIES.some(function (prop) {\n return hasOwnProperty(options, prop) && options[prop] !== prevProps[prop];\n })) {\n instance.popperInstance.destroy();\n createPopperInstance();\n\n if (instance.state.isVisible) {\n instance.popperInstance.enableEventListeners();\n }\n\n if (instance.props.followCursor && lastMouseMoveEvent) {\n positionVirtualReferenceNearCursor(lastMouseMoveEvent);\n }\n } else {\n instance.popperInstance.update();\n }\n }\n }\n /**\n * Shortcut for .set({ content: newContent })\n */\n\n\n function setContent(content) {\n set({\n content: content\n });\n }\n /**\n * Shows the tooltip\n */\n\n\n function show() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(instance.props.duration, 0, defaultProps.duration[1]);\n\n if (instance.state.isDestroyed || !instance.state.isEnabled || isUsingTouch && !instance.props.touch) {\n return;\n } // Standardize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n\n if (getEventListenersTarget().hasAttribute('disabled')) {\n return;\n }\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n addDocumentClickListener();\n popper.style.visibility = 'visible';\n instance.state.isVisible = true;\n\n if (instance.props.interactive) {\n getEventListenersTarget().classList.add(ACTIVE_CLASS);\n } // Prevent a transition if the popper is at the opposite placement\n\n\n var transitionableElements = getTransitionableElements();\n setTransitionDuration(transitionableElements.concat(popper), 0);\n\n currentMountCallback = function currentMountCallback() {\n if (!instance.state.isVisible) {\n return;\n }\n\n var isInLooseFollowCursorMode = getIsInLooseFollowCursorMode();\n\n if (isInLooseFollowCursorMode && lastMouseMoveEvent) {\n positionVirtualReferenceNearCursor(lastMouseMoveEvent);\n } else if (!isInLooseFollowCursorMode) {\n // Double update will apply correct mutations\n instance.popperInstance.update();\n }\n\n if (instance.popperChildren.backdrop) {\n instance.popperChildren.content.style.transitionDelay = Math.round(duration / 12) + 'ms';\n }\n\n if (instance.props.sticky) {\n makeSticky();\n }\n\n setTransitionDuration([popper], instance.props.updateDuration);\n setTransitionDuration(transitionableElements, duration);\n setVisibilityState(transitionableElements, 'visible');\n onTransitionedIn(duration, function () {\n if (instance.props.aria) {\n getEventListenersTarget().setAttribute(\"aria-\".concat(instance.props.aria), popper.id);\n }\n\n instance.props.onShown(instance);\n instance.state.isShown = true;\n });\n };\n\n mount();\n }\n /**\n * Hides the tooltip\n */\n\n\n function hide() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getValue(instance.props.duration, 1, defaultProps.duration[1]);\n\n if (instance.state.isDestroyed || !instance.state.isEnabled && !isBeingDestroyed) {\n return;\n }\n\n if (instance.props.onHide(instance) === false && !isBeingDestroyed) {\n return;\n }\n\n removeDocumentClickListener();\n popper.style.visibility = 'hidden';\n instance.state.isVisible = false;\n instance.state.isShown = false;\n wasVisibleDuringPreviousUpdate = false;\n\n if (instance.props.interactive) {\n getEventListenersTarget().classList.remove(ACTIVE_CLASS);\n }\n\n var transitionableElements = getTransitionableElements();\n setTransitionDuration(transitionableElements, duration);\n setVisibilityState(transitionableElements, 'hidden');\n onTransitionedOut(duration, function () {\n if (!isScheduledToShow) {\n removeFollowCursorListener();\n }\n\n if (instance.props.aria) {\n getEventListenersTarget().removeAttribute(\"aria-\".concat(instance.props.aria));\n }\n\n instance.popperInstance.disableEventListeners();\n instance.popperInstance.options.placement = instance.props.placement;\n popper.parentNode.removeChild(popper);\n instance.props.onHidden(instance);\n instance.state.isMounted = false;\n });\n }\n /**\n * Destroys the tooltip\n */\n\n\n function destroy(destroyTargetInstances) {\n if (instance.state.isDestroyed) {\n return;\n }\n\n isBeingDestroyed = true; // If the popper is currently mounted to the DOM, we want to ensure it gets\n // hidden and unmounted instantly upon destruction\n\n if (instance.state.isMounted) {\n hide(0);\n }\n\n removeTriggersFromReference();\n delete reference._tippy;\n var target = instance.props.target;\n\n if (target && destroyTargetInstances && isRealElement(reference)) {\n arrayFrom(reference.querySelectorAll(target)).forEach(function (child) {\n if (child._tippy) {\n child._tippy.destroy();\n }\n });\n }\n\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n }\n\n isBeingDestroyed = false;\n instance.state.isDestroyed = true;\n }\n}\n\n/**\n * Groups an array of instances by taking control of their props during\n * certain lifecycles.\n */\nfunction group(instances) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? instances[0].props.delay : _ref$delay,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 0 : _ref$duration;\n\n var isAnyTippyOpen = false;\n instances.forEach(function (instance) {\n if (instance._originalProps) {\n instance.set(instance._originalProps);\n } else {\n instance._originalProps = _extends({}, instance.props);\n }\n });\n\n function setIsAnyTippyOpen(value) {\n isAnyTippyOpen = value;\n updateInstances();\n }\n\n function onShow(instance) {\n instance._originalProps.onShow(instance);\n\n instances.forEach(function (instance) {\n instance.set({\n duration: duration\n });\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n });\n setIsAnyTippyOpen(true);\n }\n\n function onHide(instance) {\n instance._originalProps.onHide(instance);\n\n setIsAnyTippyOpen(false);\n }\n\n function onShown(instance) {\n instance._originalProps.onShown(instance);\n\n instance.set({\n duration: instance._originalProps.duration\n });\n }\n\n function updateInstances() {\n instances.forEach(function (instance) {\n instance.set({\n onShow: onShow,\n onShown: onShown,\n onHide: onHide,\n delay: isAnyTippyOpen ? [0, Array.isArray(delay) ? delay[1] : delay] : delay,\n duration: isAnyTippyOpen ? duration : instance._originalProps.duration\n });\n });\n }\n\n updateInstances();\n}\n\nvar globalEventListenersBound = false;\n/**\n * Exported module\n */\n\nfunction tippy(targets, options) {\n validateOptions(options || {}, defaultProps);\n\n if (!globalEventListenersBound) {\n bindGlobalEventListeners();\n globalEventListenersBound = true;\n }\n\n var props = _extends({}, defaultProps, options); // If they are specifying a virtual positioning reference, we need to polyfill\n // some native DOM props\n\n\n if (isBareVirtualElement(targets)) {\n polyfillElementPrototypeProperties(targets);\n }\n\n var instances = getArrayOfElements(targets).reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, props);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isSingular(targets) ? instances[0] : instances;\n}\n/**\n * Static props\n */\n\n\ntippy.version = version;\ntippy.defaults = defaultProps;\n/**\n * Static methods\n */\n\ntippy.setDefaults = function (partialDefaults) {\n Object.keys(partialDefaults).forEach(function (key) {\n // @ts-ignore\n defaultProps[key] = partialDefaults[key];\n });\n};\n\ntippy.hideAll = hideAll;\ntippy.group = group;\n/**\n * Auto-init tooltips for elements with a `data-tippy=\"...\"` attribute\n */\n\nfunction autoInit() {\n arrayFrom(document.querySelectorAll('[data-tippy]')).forEach(function (el) {\n var content = el.getAttribute('data-tippy');\n\n if (content) {\n tippy(el, {\n content: content\n });\n }\n });\n}\n\nif (isBrowser) {\n setTimeout(autoInit);\n}\n\n/**\n * Injects a string of CSS styles to a style node in <head>\n */\n\nfunction injectCSS(css) {\n if (isBrowser) {\n var style = document.createElement('style');\n style.type = 'text/css';\n style.textContent = css;\n style.setAttribute('data-tippy-stylesheet', '');\n var head = document.head;\n var firstChild = head.firstChild;\n\n if (firstChild) {\n head.insertBefore(style, firstChild);\n } else {\n head.appendChild(style);\n }\n }\n}\n\ninjectCSS(css);\n\nexport default tippy;\n//# sourceMappingURL=index.all.js.map\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg t=\\\"1553418887330\\\" class=\\\"icon\\\" style viewBox=\\\"0 0 1024 1024\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" p-id=\\\"2264\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><defs><style type=\\\"text/css\\\"></style></defs><path d=\\\"M787.797333 90.197333a42.581333 42.581333 0 0 0-44.074666 2.688l-554.666667 384a42.794667 42.794667 0 0 0 0 70.186667l554.666667 384A42.666667 42.666667 0 0 0 810.666667 896V128a42.666667 42.666667 0 0 0-22.869334-37.802667zM725.333333 814.549333L288.298667 512 725.333333 209.450667v605.098666z\\\" p-id=\\\"2265\\\"></path></svg>\"","module.exports = \"<svg t=\\\"1553418900235\\\" class=\\\"icon\\\" style viewBox=\\\"0 0 1024 1024\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" p-id=\\\"2709\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><defs><style type=\\\"text/css\\\"></style></defs><path d=\\\"M236.202667 933.802667a42.837333 42.837333 0 0 0 44.074666-2.730667l554.666667-384a42.666667 42.666667 0 0 0 0-70.144l-554.666667-384A42.581333 42.581333 0 0 0 213.333333 128v768a42.666667 42.666667 0 0 0 22.869334 37.802667zM298.666667 209.450667L735.701333 512 298.666667 814.549333V209.450667z\\\" p-id=\\\"2710\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg t=\\\"1555470391343\\\" class=\\\"icon\\\" style viewBox=\\\"0 0 1024 1024\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" p-id=\\\"2050\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" id=\\\"drag-handler\\\"><defs><style type=\\\"text/css\\\"></style></defs><path d=\\\"M298.666667 810.666667v-85.333334h85.333333v85.333334H298.666667m170.666666 0v-85.333334h85.333334v85.333334h-85.333334m170.666667 0v-85.333334h85.333333v85.333334h-85.333333m-341.333333-170.666667v-85.333333h85.333333v85.333333H298.666667m170.666666 0v-85.333333h85.333334v85.333333h-85.333334m170.666667 0v-85.333333h85.333333v85.333333h-85.333333m-341.333333-170.666667V384h85.333333v85.333333H298.666667m170.666666 0V384h85.333334v85.333333h-85.333334m170.666667 0V384h85.333333v85.333333h-85.333333M298.666667 298.666667V213.333333h85.333333v85.333334H298.666667m170.666666 0V213.333333h85.333334v85.333334h-85.333334m170.666667 0V213.333333h85.333333v85.333334h-85.333333z\\\" fill p-id=\\\"2051\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path d=\\\"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg style=\\\"height:20px;\\\" viewBox=\\\"0 0 18 18\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><title>teacher_ppt_bar_btn_finish</title><desc>Created with Sketch.</desc><g id=\\\"Demo\\\" stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" fill-opacity=\\\"0.776211504\\\"><g id=\\\"教师端_白板\\\" transform=\\\"translate(-957.000000, -578.000000)\\\" fill=\\\"#FF3366\\\"><g id=\\\"分组-6\\\" transform=\\\"translate(484.000000, 569.000000)\\\"><g id=\\\"Group-29\\\"><g id=\\\"teacher_ppt_bar_bj\\\"><g id=\\\"分组-10\\\" transform=\\\"translate(382.000000, 9.000000)\\\"><g id=\\\"分组-5\\\"><g id=\\\"teacher_ppt_bar_btn_finish\\\" transform=\\\"translate(91.000000, 0.000000)\\\"><g id=\\\"icon/ppt/结束\\\"><g id=\\\"结束\\\" transform=\\\"translate(3.000000, 3.000000)\\\"><path d=\\\"M6.13493151,13 C5.30684932,13 4.50547945,12.839726 3.77534247,12.5191781 C3.03630137,12.1986301 2.38630137,11.7534247 1.83424658,11.210274 C1.28219178,10.6671233 0.845890411,10.0082192 0.525342466,9.27808219 C0.204794521,8.5390411 0.0445205479,7.73767123 0.0445205479,6.90068493 C0.0445205479,6.41986301 0.0979452055,5.94794521 0.21369863,5.48493151 C0.329452055,5.02191781 0.489726027,4.57671233 0.694520548,4.15821918 C0.899315068,3.73972603 1.16643836,3.34794521 1.46917808,2.99178082 C1.78082192,2.62671233 2.12808219,2.29726027 2.5109589,2.00342466 C2.64452055,1.90547945 2.77808219,1.8609589 2.92945205,1.8609589 C2.96506849,1.8609589 3.00068493,1.8609589 3.04520548,1.86986301 C3.24109589,1.89657534 3.39246575,1.99452055 3.51712329,2.15479452 C3.64178082,2.31506849 3.67739726,2.48424658 3.65068493,2.68013699 C3.6239726,2.8760274 3.5260274,3.03630137 3.36575342,3.15205479 C2.76027397,3.58835616 2.27945205,4.14041096 1.95890411,4.79041096 C1.63835616,5.44041096 1.46917808,6.14383562 1.46917808,6.89178082 C1.46917808,7.53287671 1.59383562,8.13835616 1.83424658,8.70821918 C2.07465753,9.27808219 2.4130137,9.77671233 2.83150685,10.1952055 C3.25,10.6136986 3.74863014,10.9520548 4.31849315,11.2013699 C4.88835616,11.4506849 5.49383562,11.5753425 6.13493151,11.5753425 C6.7760274,11.5753425 7.39041096,11.4506849 7.95136986,11.2013699 C8.51232877,10.9520548 9.01986301,10.6136986 9.43835616,10.1952055 C9.85684932,9.77671233 10.1952055,9.27808219 10.4445205,8.70821918 C10.6938356,8.13835616 10.8184932,7.53287671 10.8184932,6.89178082 C10.8184932,6.13493151 10.640411,5.41369863 10.2931507,4.7369863 C9.94589041,4.06027397 9.44726027,3.49931507 8.81506849,3.0630137 C8.64589041,2.94726027 8.54794521,2.79589041 8.52123288,2.6 C8.48561644,2.40410959 8.53013699,2.2260274 8.6369863,2.05684932 C8.74383562,1.90547945 8.89520548,1.80753425 9.09109589,1.77191781 C9.13561644,1.7630137 9.18013699,1.7630137 9.22465753,1.7630137 C9.36712329,1.7630137 9.50068493,1.80753425 9.63424658,1.89657534 C10.0349315,2.18150685 10.4089041,2.51986301 10.7205479,2.88493151 C11.0410959,3.25 11.3171233,3.65068493 11.539726,4.07808219 C11.7623288,4.50547945 11.940411,4.95958904 12.0561644,5.43150685 C12.1719178,5.90342466 12.2342466,6.39315068 12.2342466,6.88287671 C12.2342466,7.71986301 12.0739726,8.52123288 11.7534247,9.26027397 C11.4328767,9.99931507 10.9876712,10.6493151 10.4445205,11.2013699 C9.90136986,11.7445205 9.24246575,12.189726 8.50342466,12.510274 C7.78219178,12.839726 6.98082192,13 6.13493151,13 Z M6.13493151,6.75821918 C5.9390411,6.75821918 5.77876712,6.6869863 5.63630137,6.55342466 C5.50273973,6.4109589 5.43150685,6.25068493 5.43150685,6.05479452 L5.43150685,0.721232877 C5.43150685,0.525342466 5.50273973,0.356164384 5.63630137,0.21369863 C5.77876712,0.0712328767 5.9390411,0 6.13493151,0 C6.33972603,0 6.50890411,0.0712328767 6.64246575,0.21369863 C6.78493151,0.356164384 6.84726027,0.525342466 6.84726027,0.721232877 L6.84726027,6.05479452 C6.84726027,6.25068493 6.7760274,6.4109589 6.64246575,6.55342466 C6.50890411,6.6869863 6.33972603,6.75821918 6.13493151,6.75821918 Z\\\" id=\\\"Shape\\\" fill-rule=\\\"nonzero\\\"></path></g></g></g></g></g></g></g></g></g></g></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 544 512\\\"><path d=\\\"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"><path d=\\\"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6 400H54c-3.3 0-6-2.7-6-6V86c0-3.3 2.7-6 6-6h340c3.3 0 6 2.7 6 6v340c0 3.3-2.7 6-6 6z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg t=\\\"1560078592996\\\" class=\\\"icon\\\" style viewBox=\\\"0 0 1024 1024\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" p-id=\\\"2653\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><defs><style type=\\\"text/css\\\"></style></defs><path d=\\\"M811.488 424.512Q722.976 336 597.984 336h-336l114.016-114.016q12-12 12-28.512t-12-28-28.512-11.488-28.512 12l-183.008 183.008q-12 12-12 28.512t12 28.512l178.016 178.016q12 12 28.512 12t28-11.488 11.488-28-11.008-28.512l-112.992-112h340q92 0 156.992 64.992t64.992 156.992v192q0 16.992 12 28.512t28.512 11.488 28-11.488 11.488-28.512v-192q0-124.992-88.512-213.504z\\\" p-id=\\\"2654\\\" fill=\\\"#2c2c2c\\\"></path></svg>\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 448 512\\\"><path d=\\\"M152 416h-24.013l26.586-80.782H292.8L319.386 416H296c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16h-26.739L275.495 42.746A16 16 0 0 0 260.382 32h-72.766a16 16 0 0 0-15.113 10.746L42.739 416H16c-8.837 0-16 7.163-16 16v32c0 8.837 7.163 16 16 16h136c8.837 0 16-7.163 16-16v-32c0-8.837-7.163-16-16-16zm64.353-271.778c4.348-15.216 6.61-28.156 7.586-34.644.839 6.521 2.939 19.476 7.727 34.706l41.335 124.006h-98.619l41.971-124.068z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","module.exports = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 352 512\\\"><path d=\\\"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\\\"></path></svg><!-- Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->\"","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<Drawboard> & { 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<string, ToolbarButton> {\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<ToolbarItem>) {\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<string, WhitePage> {\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<AbstractWhiteboard> = {}\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<SyncEvent[]>;\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<WhitePage> & {\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":""}