{"version":3,"file":"js/pretix-presale.js","mappings":"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","sources":["webpack://frontrow-viewer/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://frontrow-viewer/./src/SeatingCart.vue","webpack://frontrow-viewer/./src/components/cart/CartItem.vue","webpack://frontrow-viewer/src/components/cart/CartItem.vue","webpack://frontrow-viewer/./src/components/cart/CartItem.vue?bfda","webpack://frontrow-viewer/./src/components/cart/CartItem.vue?6739","webpack://frontrow-viewer/src/SeatingCart.vue","webpack://frontrow-viewer/./src/SeatingCart.vue?6df8","webpack://frontrow-viewer/./src/SeatingCart.vue?e5f8","webpack://frontrow-viewer/./src/cart.js","webpack://frontrow-viewer/./src/SeatingCheckoutButton.vue","webpack://frontrow-viewer/./src/lib/validation.mjs","webpack://frontrow-viewer/src/SeatingCheckoutButton.vue","webpack://frontrow-viewer/./src/SeatingCheckoutButton.vue?9839","webpack://frontrow-viewer/./src/SeatingCheckoutButton.vue?62e8","webpack://frontrow-viewer/./src/checkout-button.js","webpack://frontrow-viewer/./node_modules/@vue/web-component-wrapper/dist/vue-wc-wrapper.js","webpack://frontrow-viewer/./src/SeatingPlan.vue","webpack://frontrow-viewer/./src/components/plan/PlanView.vue","webpack://frontrow-viewer/./src/lib/colors.js","webpack://frontrow-viewer/./node_modules/vuex/dist/vuex.esm.js","webpack://frontrow-viewer/./src/components/plan/ItemsFilter.vue","webpack://frontrow-viewer/./src/components/plan/ItemsFilterItem.vue","webpack://frontrow-viewer/src/components/plan/ItemsFilterItem.vue","webpack://frontrow-viewer/./src/components/plan/ItemsFilterItem.vue?c055","webpack://frontrow-viewer/./src/components/plan/ItemsFilterItem.vue?a821","webpack://frontrow-viewer/src/components/plan/ItemsFilter.vue","webpack://frontrow-viewer/./src/components/plan/ItemsFilter.vue?b64d","webpack://frontrow-viewer/./src/components/plan/ItemsFilter.vue?3c55","webpack://frontrow-viewer/./src/components/plan/CursorAddon.vue","webpack://frontrow-viewer/src/components/plan/CursorAddon.vue","webpack://frontrow-viewer/./src/components/plan/CursorAddon.vue?3d94","webpack://frontrow-viewer/./src/components/plan/CursorAddon.vue?485c","webpack://frontrow-viewer/./src/components/plan/InstructionsOverlay.vue","webpack://frontrow-viewer/src/components/plan/InstructionsOverlay.vue","webpack://frontrow-viewer/./src/components/plan/InstructionsOverlay.vue?c86b","webpack://frontrow-viewer/./src/components/plan/InstructionsOverlay.vue?fb36","webpack://frontrow-viewer/./src/components/plan/PlanZone.vue","webpack://frontrow-viewer/./src/components/plan/PlanRow.vue","webpack://frontrow-viewer/./src/components/plan/PlanSeat.vue","webpack://frontrow-viewer/src/components/plan/PlanSeat.vue","webpack://frontrow-viewer/./src/components/plan/PlanSeat.vue?6dfd","webpack://frontrow-viewer/./src/components/plan/PlanSeat.vue?7bf6","webpack://frontrow-viewer/src/components/plan/PlanRow.vue","webpack://frontrow-viewer/./src/components/plan/PlanRow.vue?11a8","webpack://frontrow-viewer/./src/components/plan/PlanRow.vue?6f1a","webpack://frontrow-viewer/./src/components/plan/PlanArea.vue","webpack://frontrow-viewer/src/components/plan/PlanArea.vue","webpack://frontrow-viewer/./src/components/plan/PlanArea.vue?52f4","webpack://frontrow-viewer/./src/components/plan/PlanArea.vue?003b","webpack://frontrow-viewer/./src/lib/convexhull.js","webpack://frontrow-viewer/src/components/plan/PlanZone.vue","webpack://frontrow-viewer/./src/components/plan/PlanZone.vue?381b","webpack://frontrow-viewer/./src/components/plan/PlanZone.vue?d99f","webpack://frontrow-viewer/./src/components/plan/SelectionArea.vue","webpack://frontrow-viewer/./src/lib/geometry.js","webpack://frontrow-viewer/src/components/plan/SelectionArea.vue","webpack://frontrow-viewer/./src/components/plan/SelectionArea.vue?f62d","webpack://frontrow-viewer/./src/components/plan/SelectionArea.vue?6d2e","webpack://frontrow-viewer/./node_modules/d3-selection/src/selector.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/select.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/array.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selectorAll.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/selectAll.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/matcher.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/selectChild.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/selectChildren.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/filter.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/sparse.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/enter.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/constant.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/data.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/exit.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/join.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/merge.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/order.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/sort.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/call.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/nodes.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/node.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/size.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/empty.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/each.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/namespaces.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/namespace.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/attr.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/window.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/style.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/property.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/classed.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/text.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/html.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/raise.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/lower.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/creator.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/append.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/insert.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/remove.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/clone.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/datum.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/on.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/dispatch.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/iterator.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/selection/index.js","webpack://frontrow-viewer/./node_modules/d3-dispatch/src/dispatch.js","webpack://frontrow-viewer/./node_modules/d3-timer/src/timer.js","webpack://frontrow-viewer/./node_modules/d3-timer/src/timeout.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/schedule.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/interrupt.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/selection/interrupt.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/number.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/transform/parse.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/transform/index.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/tween.js","webpack://frontrow-viewer/./node_modules/d3-color/src/define.js","webpack://frontrow-viewer/./node_modules/d3-color/src/color.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/basis.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/basisClosed.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/constant.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/color.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/rgb.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/string.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/interpolate.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/attr.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/attrTween.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/delay.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/duration.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/ease.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/easeVarying.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/filter.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/merge.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/on.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/remove.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/select.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/selectAll.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/selection.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/style.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/styleTween.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/text.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/textTween.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/transition.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/end.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/transition/index.js","webpack://frontrow-viewer/./node_modules/d3-ease/src/cubic.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/selection/transition.js","webpack://frontrow-viewer/./node_modules/d3-transition/src/selection/index.js","webpack://frontrow-viewer/./node_modules/d3-brush/src/brush.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/select.js","webpack://frontrow-viewer/./node_modules/d3-drag/src/noevent.js","webpack://frontrow-viewer/./node_modules/d3-drag/src/nodrag.js","webpack://frontrow-viewer/./node_modules/d3-interpolate/src/zoom.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/sourceEvent.js","webpack://frontrow-viewer/./node_modules/d3-selection/src/pointer.js","webpack://frontrow-viewer/./node_modules/d3-zoom/src/constant.js","webpack://frontrow-viewer/./node_modules/d3-zoom/src/event.js","webpack://frontrow-viewer/./node_modules/d3-zoom/src/transform.js","webpack://frontrow-viewer/./node_modules/d3-zoom/src/noevent.js","webpack://frontrow-viewer/./node_modules/d3-zoom/src/zoom.js","webpack://frontrow-viewer/src/components/plan/PlanView.vue","webpack://frontrow-viewer/./src/components/plan/PlanView.vue?e67c","webpack://frontrow-viewer/./src/components/plan/PlanView.vue?4a49","webpack://frontrow-viewer/./src/components/FloatingTooltip.vue","webpack://frontrow-viewer/src/components/FloatingTooltip.vue","webpack://frontrow-viewer/./src/components/FloatingTooltip.vue?bfd8","webpack://frontrow-viewer/./src/components/FloatingTooltip.vue?59b1","webpack://frontrow-viewer/./src/components/TooltipSeat.vue","webpack://frontrow-viewer/src/components/TooltipSeat.vue","webpack://frontrow-viewer/./src/components/TooltipSeat.vue?d1a2","webpack://frontrow-viewer/./src/components/TooltipSeat.vue?ed05","webpack://frontrow-viewer/./src/store/plan.js","webpack://frontrow-viewer/./src/store/event.js","webpack://frontrow-viewer/./src/store/filter.js","webpack://frontrow-viewer/./src/store/ui.js","webpack://frontrow-viewer/./src/store/index.js","webpack://frontrow-viewer/src/SeatingPlan.vue","webpack://frontrow-viewer/./src/SeatingPlan.vue?1130","webpack://frontrow-viewer/./src/SeatingPlan.vue?f260","webpack://frontrow-viewer/./src/plan.js","webpack://frontrow-viewer/./node_modules/core-js/internals/a-callable.js","webpack://frontrow-viewer/./node_modules/core-js/internals/an-object.js","webpack://frontrow-viewer/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://frontrow-viewer/./node_modules/core-js/internals/create-property-descriptor.js","webpack://frontrow-viewer/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://frontrow-viewer/./node_modules/core-js/internals/define-global-property.js","webpack://frontrow-viewer/./node_modules/core-js/internals/descriptors.js","webpack://frontrow-viewer/./node_modules/core-js/internals/document-create-element.js","webpack://frontrow-viewer/./node_modules/core-js/internals/engine-user-agent.js","webpack://frontrow-viewer/./node_modules/core-js/internals/engine-v8-version.js","webpack://frontrow-viewer/./node_modules/core-js/internals/fails.js","webpack://frontrow-viewer/./node_modules/core-js/internals/function-bind-native.js","webpack://frontrow-viewer/./node_modules/core-js/internals/function-call.js","webpack://frontrow-viewer/./node_modules/core-js/internals/function-name.js","webpack://frontrow-viewer/./node_modules/core-js/internals/function-uncurry-this.js","webpack://frontrow-viewer/./node_modules/core-js/internals/get-built-in.js","webpack://frontrow-viewer/./node_modules/core-js/internals/get-method.js","webpack://frontrow-viewer/./node_modules/core-js/internals/global.js","webpack://frontrow-viewer/./node_modules/core-js/internals/has-own-property.js","webpack://frontrow-viewer/./node_modules/core-js/internals/hidden-keys.js","webpack://frontrow-viewer/./node_modules/core-js/internals/ie8-dom-define.js","webpack://frontrow-viewer/./node_modules/core-js/internals/inspect-source.js","webpack://frontrow-viewer/./node_modules/core-js/internals/internal-state.js","webpack://frontrow-viewer/./node_modules/core-js/internals/is-callable.js","webpack://frontrow-viewer/./node_modules/core-js/internals/is-object.js","webpack://frontrow-viewer/./node_modules/core-js/internals/is-pure.js","webpack://frontrow-viewer/./node_modules/core-js/internals/is-symbol.js","webpack://frontrow-viewer/./node_modules/core-js/internals/make-built-in.js","webpack://frontrow-viewer/./node_modules/core-js/internals/native-symbol.js","webpack://frontrow-viewer/./node_modules/core-js/internals/native-weak-map.js","webpack://frontrow-viewer/./node_modules/core-js/internals/object-define-property.js","webpack://frontrow-viewer/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://frontrow-viewer/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://frontrow-viewer/./node_modules/core-js/internals/regexp-flags.js","webpack://frontrow-viewer/./node_modules/core-js/internals/require-object-coercible.js","webpack://frontrow-viewer/./node_modules/core-js/internals/shared-key.js","webpack://frontrow-viewer/./node_modules/core-js/internals/shared-store.js","webpack://frontrow-viewer/./node_modules/core-js/internals/shared.js","webpack://frontrow-viewer/./node_modules/core-js/internals/to-object.js","webpack://frontrow-viewer/./node_modules/core-js/internals/to-primitive.js","webpack://frontrow-viewer/./node_modules/core-js/internals/to-property-key.js","webpack://frontrow-viewer/./node_modules/core-js/internals/try-to-string.js","webpack://frontrow-viewer/./node_modules/core-js/internals/uid.js","webpack://frontrow-viewer/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://frontrow-viewer/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://frontrow-viewer/./node_modules/core-js/internals/well-known-symbol.js","webpack://frontrow-viewer/./node_modules/core-js/modules/es.regexp.flags.js","webpack://frontrow-viewer/external var \"Vue\"","webpack://frontrow-viewer/webpack/bootstrap","webpack://frontrow-viewer/webpack/runtime/compat get default export","webpack://frontrow-viewer/webpack/runtime/define property getters","webpack://frontrow-viewer/webpack/runtime/global","webpack://frontrow-viewer/webpack/runtime/hasOwnProperty shorthand","webpack://frontrow-viewer/webpack/runtime/make namespace object","webpack://frontrow-viewer/./src/pretix-presale.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier /* server only */,\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options =\n    typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) {\n    // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n          injectStyles.call(\n            this,\n            (options.functional ? this.parent : this).$root.$options.shadowRoot\n          )\n        }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection(h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"seating-cart\"},[(_vm.selection.length)?_c('section',{staticClass:\"seating-cart-items\"},_vm._l((_vm.selection),function(s,index){return _c('cart-item',{key:s.seat.seat_guid,ref:\"items\",refInFor:true,attrs:{\"seat\":s.seat,\"item\":s.item,\"index\":index+1,\"valid\":_vm.isValid,\"gettext\":_vm.gettext},on:{\"remove\":_vm.onSeatRemove}})}),1):(!_vm.loading)?_c('p',{staticClass:\"seating-cart-hint\"},[_vm._v(_vm._s(_vm.gettext(\"Please select a seat by clicking on it.\")))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('article',{staticClass:\"seating-cart-item\"},[(_vm.valid)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":_vm.inputName,\"data-item\":_vm.item.id},domProps:{\"value\":_vm.seat.seat_guid}}):_vm._e(),_c('div',{staticClass:\"seating-item-name\"},[_c('h4',[_vm._v(_vm._s(_vm.item.name)),_c('i',{staticClass:\"fa fa-ticket\",attrs:{\"aria-hidden\":\"true\"}})]),_c('button',{staticClass:\"btn btn-link\",attrs:{\"type\":\"button\",\"aria-label\":_vm.removeButtonLabel},on:{\"click\":_vm.remove}},[_c('i',{staticClass:\"fa fa-trash\",attrs:{\"aria-hidden\":\"true\"}})])]),_c('p',{staticClass:\"seating-item-seat\"},[_vm._v(_vm._s(_vm.seatLabelZoneFirst))]),(_vm.item.description)?_c('p',{staticClass:\"seating-item-description\",domProps:{\"innerHTML\":_vm._s(_vm.item.description)}}):_vm._e(),(_vm.item.variations.length > 1)?_c('p',{staticClass:\"seating-item-variation\"},[_c('select',{ref:\"select\",staticClass:\"form-control\",attrs:{\"name\":_vm.selectName,\"aria-label\":_vm.selectVariationLabel,\"aria-describedby\":'desc_'+_vm.selectName},on:{\"change\":_vm.change}},_vm._l((_vm.item.variations),function(v){return _c('option',{domProps:{\"value\":v.id,\"selected\":v.id == _vm.variation.id}},[_vm._v(_vm._s(v.name)+\" - \"+_vm._s(v.price))])}),0)]):_vm._e(),(_vm.variation?.description)?_c('p',{staticClass:\"seating-item-variation-description\",attrs:{\"id\":'desc_'+_vm.selectName},domProps:{\"innerHTML\":_vm._s(_vm.variation.description)}}):_vm._e(),(_vm.originalPrice)?_c('p',{staticClass:\"seating-item-price\"},[_c('del',[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.labelOriginalPrice))]),_vm._v(_vm._s(_vm.originalPrice))]),_vm._v(\" \"),_c('ins',[_c('span',{staticClass:\"sr-only\"},[_vm._v(_vm._s(_vm.labelNewPrice))]),_vm._v(_vm._s(_vm.price))])]):(_vm.item.variations.length < 2)?_c('p',{staticClass:\"seating-item-price\"},[_vm._v(_vm._s(_vm.price))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\narticle(class=\"seating-cart-item\")\n\tinput(v-if=\"valid\"\n\t\ttype=\"hidden\"\n\t\t:name=\"inputName\"\n\t\t:value=\"seat.seat_guid\"\n\t\tv-bind:data-item=\"item.id\"\n\t)\n\tdiv.seating-item-name\n\t\th4 {{item.name}}\n\t\t\ti.fa.fa-ticket(aria-hidden=\"true\")\n\t\tbutton.btn.btn-link(@click=\"remove\", type=\"button\", v-bind:aria-label=\"removeButtonLabel\")\n\t\t\ti.fa.fa-trash(aria-hidden=\"true\")\n\tp.seating-item-seat {{seatLabelZoneFirst}}\n\tp.seating-item-description(v-if=\"item.description\", v-html=\"item.description\")\n\tp.seating-item-variation(v-if=\"item.variations.length > 1\")\n\t\tselect(@change=\"change\", ref=\"select\", :name=\"selectName\", v-bind:aria-label=\"selectVariationLabel\", v-bind:aria-describedby=\"'desc_'+selectName\", class=\"form-control\")\n\t\t\toption(v-for=\"v in item.variations\", :value=\"v.id\", :selected=\"v.id == variation.id\") {{v.name}} - {{v.price}}\n\tp.seating-item-variation-description(v-if=\"variation?.description\", :id=\"'desc_'+selectName\", v-html=\"variation.description\")\n\tp.seating-item-price(v-if=\"originalPrice\")\n\t\tdel\n\t\t\tspan.sr-only {{ labelOriginalPrice }}\n\t\t\t| {{ originalPrice }}\n\t\t| &#x20;\n\t\tins\n\t\t\tspan.sr-only {{ labelNewPrice }}\n\t\t\t| {{ price }}\n\tp.seating-item-price(v-else-if=\"item.variations.length < 2\") {{ price }}\n\n</template>\n<script>\nexport default {\n\tprops: {\n\t\tindex: Number,\n\t\tseat: Object,\n\t\titem: Object,\n\t\tvalid: Boolean,\n\t\tgettext: Function,\n\t},\n\tdata () {\n\t\treturn {\n\t\t\tvariation: Object,\n\t\t}\n\t},\n\tcomputed: {\n\t\tinputName () {\n\t\t\treturn 'seat_0' + (this.variation && this.variation.id ? '_' + this.variation.id : '')\n\t\t},\n\t\tselectName () {\n\t\t\treturn 'input_variation_' + this.index\n\t\t},\n\t\tzoneLabel () {\n\t\t\treturn this.seat.zone.name\n\t\t},\n\t\trowLabel () {\n\t\t\treturn (this.seat.row.row_label || this.gettext('Row %s')).replace('%s', this.seat.row.row_number)\n\t\t},\n\t\tseatLabel () {\n\t\t\treturn (this.seat.row.seat_label || this.gettext('Seat %s')).replace('%s', this.seat.seat_number)\n\t\t},\n\t\tseatLabelZoneFirst () {\n\t\t\treturn this.gettext('%(zone)s - %(row)s - %(seat)s')\n\t\t\t\t.replace('%(zone)s', this.zoneLabel)\n\t\t\t\t.replace('%(row)s', this.rowLabel)\n\t\t\t\t.replace('%(seat)s', this.seatLabel)\n\t\t},\n\t\tseatLabelSeatFirst () {\n\t\t\treturn this.gettext('%(seat)s, %(row)s, %(zone)s')\n\t\t\t\t.replace('%(zone)s', this.zoneLabel)\n\t\t\t\t.replace('%(row)s', this.rowLabel)\n\t\t\t\t.replace('%(seat)s', this.seatLabel)\n\t\t},\n\t\tremoveButtonLabel () {\n\t\t\treturn this.gettext('Remove %s from selection').replace('%s', this.seatLabelSeatFirst)\n\t\t},\n\t\tselectVariationLabel () {\n\t\t\treturn this.gettext('Select variation for %s').replace('%s', this.seatLabelSeatFirst)\n\t\t},\n\t\tprice () {\n\t\t\treturn this.item.variations.length ? this.variation.price : this.item.price\n\t\t},\n\t\toriginalPrice () {\n\t\t\treturn this.item.variations.length ? this.variation.original_price : this.item.original_price\n\t\t},\n\t\tlabelOriginalPrice () {\n\t\t\treturn this.gettext('Original price:')\n\t\t},\n\t\tlabelNewPrice () {\n\t\t\treturn this.gettext('New price:')\n\t\t},\n\t},\n\twatch: {\n\t\titem: {\n\t\t\timmediate: true,\n\t\t\thandler (newValue) {\n\t\t\t\tthis.variation = newValue.variations.length ? newValue.variations[0] : null\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tremove (event) {\n\t\t\tthis.$emit('remove', {seat: this.seat})\n\t\t},\n\t\tchange (event) {\n\t\t\tthis.variation = this.item.variations[this.$refs.select.selectedIndex]\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CartItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CartItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CartItem.vue?vue&type=template&id=b4a4b388&lang=pug\"\nimport script from \"./CartItem.vue?vue&type=script&lang=js\"\nexport * from \"./CartItem.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template lang=\"pug\">\n.seating-cart\n\tsection(v-if=\"selection.length\", class=\"seating-cart-items\")\n\t\tcart-item(v-for=\"(s, index) in selection\"\n\t\t\t:key=\"s.seat.seat_guid\"\n\t\t\t:seat=\"s.seat\"\n\t\t\t:item=\"s.item\"\n\t\t\t:index=\"index+1\"\n\t\t\t:valid=\"isValid\"\n\t\t\t@remove=\"onSeatRemove\"\n\t\t\t:gettext=\"gettext\"\n\t\t\tref=\"items\"\n\t\t)\n\tp.seating-cart-hint(v-else-if=\"!loading\") {{gettext(\"Please select a seat by clicking on it.\")}}\n</template>\n<script>\n\nimport CartItem from 'components/cart/CartItem'\n\nexport default {\n\tcomponents: {CartItem},\n\tprops: {\n\t\tseatingPlan: {\n\t\t\t// CSS-selector for plan, usually #<id>\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: 'pretix-seating-plan'\n\t\t},\n\t\tcheckoutButton: {\n\t\t\t// CSS-selector for checkout-button, usually #<id>\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: 'pretix-seating-checkout-button'\n\t\t},\n\t\ttranslation: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault (rawProps) {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\t},\n\tdata () {\n\t\treturn {\n\t\t\t// Array of seat-Objects\n\t\t\tselection: [],\n\t\t\t// CustomElement/DOM-Node of pretix-seatingplan\n\t\t\tplanElement: null,\n\t\t\t// currently methods are not exposed, so we need vueComponent of plan-DOMNode\n\t\t\tplanComponent: null,\n\t\t\tisValid: true,\n\t\t\tloading: true,\n\t\t}\n\t},\n\twatch: {\n\t\tseatingPlan: {\n\t\t\timmediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\twindow.customElements.whenDefined('pretix-seating-plan').then(() => {\n\t\t\t\t\tif (document.readyState === 'loading') {\n\t\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', this.setPlan)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setPlan()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tcheckoutButton: {\n\t\t\timmediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\tif (oldValue) {\n\t\t\t\t\tdocument.querySelector(oldValue)?.removeEventListener(this.onValidate)\n\t\t\t\t}\n\t\t\t\twindow.customElements.whenDefined('pretix-seating-checkout-button').then(() => {\n\t\t\t\t\tif (document.readyState === 'loading') {\n\t\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', resolve)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}).then(() => {\n\t\t\t\t\tdocument.querySelector(newValue)?.addEventListener('validate', this.onValidate)\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tgettext (s) {\n\t\t\treturn this.translation[s] || s\n\t\t},\n\t\tonSeatRemove (e) {\n\t\t\tthis.planComponent.unselectSeat(e.seat.seat_guid)\n\t\t},\n\t\tsetPlan () {\n\t\t\tthis.planElement = document.querySelector(this.seatingPlan)\n\t\t\tif (!this.planElement) return\n\t\t\tthis.planComponent = this.planElement.vueComponent\n\n\t\t\tthis.planElement.addEventListener('load', (e) => {\n\t\t\t\tthis.planComponent = this.planElement?.vueComponent\n\t\t\t\tthis.loading = false\n\t\t\t})\n\t\t\tthis.planElement.addEventListener('error', (e) => {\n\t\t\t\tconsole.error('plan.error-event', e)\n\t\t\t})\n\t\t\tthis.planElement.addEventListener('select', (e) => {\n\t\t\t\t// currently only complete selection is given every time an update happens\n\t\t\t\tthis.selection = e.detail[0]\n\t\t\t})\n\t\t},\n\t\tgetSelectedSeats () {\n\t\t\tconst seats = []\n\t\t\tthis.$refs.items.forEach(i => {\n\t\t\t\tseats.push({seat: i.seat.seat_guid, item: i.item.id, variation: i.variation?.id || null })\n\t\t\t})\n\t\t\treturn seats\n\t\t},\n\t\tonValidate (e) {\n\t\t\tthis.isValid = e.detail.valid\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingCart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingCart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SeatingCart.vue?vue&type=template&id=78de785a&lang=pug\"\nimport script from \"./SeatingCart.vue?vue&type=script&lang=js\"\nexport * from \"./SeatingCart.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport SeatingCart from './SeatingCart.vue'\n\nwindow.customElements.define('pretix-seating-cart',\n\tclass extends HTMLElement {\n\t\tconnectedCallback () {\n\t\t\tif (!this.isConnected) return\n\n\t\t\tconst seatingPlan = this.getAttribute('seating-plan') || 'pretix-seating-plan'\n\t\t\tconst checkoutButton = this.getAttribute('checkout-button') || 'pretix-seating-checkout-button'\n\t\t\tlet translation = {}\n\t\t\tconst settings = this.querySelector('script')?.textContent\n\t\t\tif (settings) {\n\t\t\t\ttry {\n\t\t\t\t\ttranslation = JSON.parse(settings).translation || {}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// create div below customElement instead of Vue replacing it\n\t\t\tconst el = document.createElement('div')\n\t\t\tthis.appendChild(el)\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tconst app = new Vue({\n\t\t\t\tel,\n\t\t\t\trender: h => h(SeatingCart, {props: { seatingPlan, checkoutButton, translation }}),\n\t\t\t})\n\t\t}\n\t}\n)\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"seating-checkout\"},[(_vm.errorMessage)?_c('p',{staticClass:\"alert alert-warning\",attrs:{\"aria-live\":\"polite\"}},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e(),_c('p',[(_vm.isValid)?_c('button',{staticClass:\"btn btn-primary btn-block btn-lg\",attrs:{\"type\":\"submit\"}},[_c('i',{staticClass:\"fa fa-cart-plus\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.checkoutLabel))]):_vm._e(),(_vm.isFixable)?_c('button',{staticClass:\"btn btn-info btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onOptimize}},[_c('i',{staticClass:\"fa fa-wrench\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"+_vm._s(_vm.gettext(\"Propose similar seats\")))]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const hasSingles = (seats, isSeatAvailable) => {\n\t// Validate that the user does not create a situation where a single seat stays empty in the middle,\n\t// since nobody is going to buy that seat.\n\tconst selectedGuids = seats.map(seat => seat.seat_guid)\n\tconst selectedRows = [...new Set(seats.map(seat => seat.row))]\n\tlet category = null\n\t// TODO: optimization group seats per row and abort if all selected seats of a row have been tested\n\n\tfor (const row of selectedRows) {\n\t\t// For every row, we iterate over the seats and count the length of each \"gap\" of unselected seats.\n\t\tlet gap = 2// We do not start with 0 since we do allow to leave single seats at the very edge of the row\n\t\tlet gapStartedBySelected = false\n\t\tfor (const [seati, seat] of Array.from(row.seats.entries())) {\n\t\t\tif (seat.category !== category) {\n\t\t\t\t// The category changed. We treat this like a new row and restart our counters;\n\t\t\t\tgap = 2\n\t\t\t\tgapStartedBySelected = false\n\t\t\t}\n\t\t\tcategory = seat.category\n\t\t\tif (!isSeatAvailable(seat)) {\n\t\t\t\t// This seat is unavailable, we reset our gap counter. If we previously found a gap of length one *and*\n\t\t\t\t// the gap was started by a selected seat, we fail.\n\t\t\t\tif (gap === 1 && gapStartedBySelected) {\n\t\t\t\t\t// Exception: This is allowed when there is a connected bunch of selected seats that are not preceded by\n\t\t\t\t\t// an available seat.\n\t\t\t\t\tlet allowed = false\n\t\t\t\t\tfor (let lookbehind = seati - 2; lookbehind >= 0; lookbehind--) {\n\t\t\t\t\t\tif (!isSeatAvailable(row.seats[lookbehind])) {\n\t\t\t\t\t\t\tallowed = true\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else if (!selectedGuids.includes(row.seats[lookbehind].seat_guid)) {\n\t\t\t\t\t\t\tallowed = false\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!allowed) {\n\t\t\t\t\t\treturn true// {msg: \"Please do not leave single seats empty.\", fixable: false};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgap = 0\n\t\t\t\tgapStartedBySelected = false\n\t\t\t} else if (selectedGuids.includes(seat.seat_guid)) {\n\t\t\t\t// This seat is selected, we reset our gap counter. If we previously found a gap of length one.\n\t\t\t\tif (gap === 1) {\n\t\t\t\t\t// Exception: This is allowed when there is a connected bunch of selected seats that are not followed by\n\t\t\t\t\t// an available seat and the gap is not created by selected seats on both sides.\n\t\t\t\t\tlet allowed = false\n\t\t\t\t\tfor (let lookahead = seati + 1; lookahead < row.seats.length; lookahead++) {\n\t\t\t\t\t\tif (!isSeatAvailable(row.seats[lookahead])) {\n\t\t\t\t\t\t\tallowed = !gapStartedBySelected\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t} else if (!selectedGuids.includes(row.seats[lookahead].seat_guid)) {\n\t\t\t\t\t\t\tallowed = false\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!allowed) {\n\t\t\t\t\t\treturn true// {msg: \"Please do not leave single seats empty.\", fixable: false};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgap = 0\n\t\t\t\tgapStartedBySelected = true\n\t\t\t} else {\n\t\t\t\tgap++\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\nconst selectionCanBeOptimized = (seats, isSeatAvailable) => {\n\tconst groups = splitSelectionIntoGroups(seats)\n\tfor (const group of groups) {\n\t\tconst better = proposeBetterGroup(seats, group, isSeatAvailable)\n\t\tif (better.offset !== group.offset) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nconst optimizeSelection = (seats, isSeatAvailable) => {\n\tlet maxruns = 100\n\tlet newSeats = Object.values(seats).filter(seat => {\n\t\treturn seat !== undefined\n\t})\n\n\twhile (maxruns--) {\n\t\tlet improved = false\n\t\tconst groups = splitSelectionIntoGroups(newSeats)\n\t\tconst selectedGuids = newSeats.map(seat => seat.seat_guid)\n\t\tfor (const group of groups) {\n\t\t\tconst better = proposeBetterGroup(newSeats, group, isSeatAvailable)\n\t\t\tif (better.offset !== group.offset) {\n\t\t\t\tconst newSelected = better.seats.map(seat => seat.seat_guid)\n\n\t\t\t\tbetter.seats.filter(seat => !selectedGuids.includes(seat.seat_guid)).forEach(\n\t\t\t\t\tseat => {\n\t\t\t\t\t\tnewSeats.push(seat)\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tgroup.seats.filter(seat => !newSelected.includes(seat.seat_guid)).forEach(\n\t\t\t\t\tseat => {\n\t\t\t\t\t\tnewSeats = newSeats.filter(s => s.seat_guid !== seat.seat_guid)\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\timproved = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif (!improved) {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn newSeats\n}\n\nconst splitSelectionIntoGroups = (seats) => {\n\tconst selectedGuids = seats.map(seat => seat.seat_guid)\n\tconst selectedRows = [...new Set(seats.map(seat => seat.row))]\n\tconst groups = []\n\tfor (const row of selectedRows) {\n\t\tlet currentGroup = null\n\t\tlet category = null\n\t\tfor (const [seati, seat] of Array.from(row.seats.entries())) {\n\t\t\tif (seat.category !== category) {\n\t\t\t\tcurrentGroup = {seats: [], row, offset: -1}\n\t\t\t\tcategory = seat.category\n\t\t\t}\n\t\t\tif (!selectedGuids.includes(seat.seat_guid)) {\n\t\t\t\tcurrentGroup = {seats: [], row, offset: -1}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcurrentGroup.seats.push(seat)\n\t\t\tif (currentGroup.seats.length === 1) {\n\t\t\t\tcurrentGroup.offset = seati\n\t\t\t\tgroups.push(currentGroup)\n\t\t\t}\n\t\t}\n\t}\n\treturn groups\n}\n\nconst penaltyForGroup = (group, seats, isSeatAvailable) => {\n\tconst groupSelectedGuids = group.seats.map(seat => seat.seat_guid)\n\tconst selectedGuids = seats.map(seat => seat.seat_guid)\n\tlet penaltyLeft = 0\n\tlet penaltyRight = 0\n\tlet leftDone = false\n\tlet rightDone = false\n\tlet leftFound = false\n\tlet rightFound = false\n\tlet penalty = 0\n\n\t// TODO: seat available muss ins SEAT-Objekt verschoben werden\n\tconst fillsGap = (\n\t\t(group.offset === 0 || !isSeatAvailable(group.row.seats[group.offset - 1])) &&\n\t\t(group.offset + group.seats.length === group.row.seats.length || !isSeatAvailable(group.row.seats[group.offset + group.seats.length]))\n\t)\n\tif (fillsGap) {\n\t\treturn 0\n\t}\n\n\t// Assign penalty based on distance from starting point\n\t// for (const [seati, seat] of Array.from(group.row.seats.entries())) {\n\tfor (const seat of group.row.seats) {\n\t\tif (seat.start_direction && seat.start_direction.includes('>') && !leftDone) {\n\t\t\tpenaltyLeft = 0\n\t\t\tleftFound = true\n\t\t}\n\t\tif (groupSelectedGuids.includes(seat.seat_guid)) {\n\t\t\tif (!leftFound) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tleftDone = true\n\t\t} else {\n\t\t\tif (!leftDone) {\n\t\t\t\tpenaltyLeft++\n\t\t\t}\n\t\t}\n\t}\n\t// for (const [seati, seat] of Array.from(group.row.seats.entries()).reverse()) {\n\tfor (const seat of group.row.seats.slice().reverse()) {\n\t\tif (seat.start_direction && seat.start_direction.includes('<') && !rightDone) {\n\t\t\tpenaltyRight = 0\n\t\t\trightFound = true\n\t\t}\n\t\tif (groupSelectedGuids.includes(seat.seat_guid)) {\n\t\t\tif (!rightFound) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\trightDone = true\n\t\t} else {\n\t\t\tif (!rightDone) {\n\t\t\t\tpenaltyRight++\n\t\t\t}\n\t\t}\n\t}\n\tif (leftFound && rightFound) {\n\t\tpenalty = Math.min(penaltyLeft, penaltyRight)\n\t} else if (leftFound) {\n\t\tpenalty = penaltyLeft\n\t} else if (rightFound) {\n\t\tpenalty = penaltyRight\n\t}\n\n\tconst singleKept = ((\n\t// Middle of row, single on the left\n\t\tgroup.offset > 1 &&\n\t\tgroup.row.seats[group.offset - 1].category === group.row.seats[group.offset].category &&\n\t\tgroup.row.seats[group.offset - 2].category === group.row.seats[group.offset].category &&\n\t\tisSeatAvailable(group.row.seats[group.offset - 1]) &&\n\t\t!selectedGuids.includes(group.row.seats[group.offset - 1].seat_guid) &&\n\t\t(!isSeatAvailable(group.row.seats[group.offset - 2]) || selectedGuids.includes(group.row.seats[group.offset - 2].seat_guid))\n\t) || (\n\t// Beginning of row, single on the left\n\t\tgroup.offset === 1 &&\n\t\tgroup.row.seats[group.offset - 1].category === group.row.seats[group.offset].category &&\n\t\tisSeatAvailable(group.row.seats[group.offset - 1]) &&\n\t\t!selectedGuids.includes(group.row.seats[group.offset - 1].seat_guid)\n\t) || (\n\t// Middle of the row, single on the right\n\t\tgroup.offset + group.seats.length < group.row.seats.length - 1 &&\n\t\tgroup.row.seats[group.offset + group.seats.length].category === group.row.seats[group.offset + group.seats.length - 1].category &&\n\t\tgroup.row.seats[group.offset + group.seats.length + 1].category === group.row.seats[group.offset + group.seats.length - 1].category &&\n\t\tisSeatAvailable(group.row.seats[group.offset + group.seats.length]) &&\n\t\t!selectedGuids.includes(group.row.seats[group.offset + group.seats.length].seat_guid) &&\n\t\t(!isSeatAvailable(group.row.seats[group.offset + group.seats.length + 1]) || selectedGuids.includes(group.row.seats[group.offset + group.seats.length + 1].seat_guid))\n\t) || (\n\t// End of the row, single on the right\n\t\tgroup.offset + group.seats.length === group.row.seats.length - 1 &&\n\t\tgroup.row.seats[group.offset + group.seats.length].category === group.row.seats[group.offset + group.seats.length - 1].category &&\n\t\tisSeatAvailable(group.row.seats[group.offset + group.seats.length]) &&\n\t\t!selectedGuids.includes(group.row.seats[group.offset + group.seats.length].seat_guid)\n\t))\n\tif (singleKept) {\n\t\tpenalty += 100\n\t}\n\n\treturn penalty\n}\n\nconst proposeBetterGroup = (seats, group, isSeatAvailable) => {\n\tconst groupSelectedGuids = group.seats.map(seat => seat.seat_guid)\n\tconst selectedGuids = seats.map(seat => seat.seat_guid)\n\tlet offset = 1\n\tlet min = penaltyForGroup(group, seats, isSeatAvailable)\n\n\tconst countPerCategory = {}\n\t// for (const [seati, seat] of Array.from(group.seats.entries())) {\n\tfor (const seat of group.seats) {\n\t\tcountPerCategory[seat.category] = (countPerCategory[seat.category] ? countPerCategory[seat.category] : 0) + 1\n\t}\n\n\tlet argmin = group\n\tif (min === 0) {\n\t\treturn group\n\t}\n\n\tconst isValidGroup = function (proposal) {\n\t\tif (proposal.seats.filter(s => !isSeatAvailable(s)).length) {\n\t\t\t// Do not propose unavailable seats\n\t\t\treturn false\n\t\t}\n\t\tif (proposal.seats.filter(s => selectedGuids.includes(s.seat_guid) && !groupSelectedGuids.includes(s.seat_guid)).length) {\n\t\t\t// Do not propose seats selected in other groups\n\t\t\treturn false\n\t\t}\n\n\t\t// Do not propose seats with other categories\n\t\tconst pCountPerCategory = {}\n\t\t// for (const [seati, seat] of Array.from(proposal.seats.entries())) {\n\t\tfor (const seat of proposal.seats) {\n\t\t\tpCountPerCategory[seat.category] = (pCountPerCategory[seat.category] ? pCountPerCategory[seat.category] : 0) + 1\n\t\t}\n\t\tfor (const cat in pCountPerCategory) {\n\t\t\tif (countPerCategory[cat] !== pCountPerCategory[cat]) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\twhile (group.offset - offset >= 0 || group.offset + group.seats.length + offset < group.row.seats.length) {\n\t\tif (group.offset - offset >= 0) {\n\t\t\tconst shifted = {\n\t\t\t\tseats: group.row.seats.slice(group.offset - offset, group.offset - offset + group.seats.length),\n\t\t\t\trow: group.row,\n\t\t\t\toffset: group.offset - offset\n\t\t\t}\n\t\t\tif (isValidGroup(shifted)) {\n\t\t\t\tconst shiftedIds = shifted.seats.map(s => s.seat_guid)\n\t\t\t\tconst newSeats = group.row.seats.filter(s => (shiftedIds.includes(s.seat_guid) || (selectedGuids.includes(s.seat_guid) && !groupSelectedGuids.includes(s.seat_guid))))\n\t\t\t\tconst penalty = penaltyForGroup(shifted, newSeats, isSeatAvailable)\n\t\t\t\tif (penalty < min) {\n\t\t\t\t\tmin = penalty\n\t\t\t\t\targmin = shifted\n\t\t\t\t}\n\t\t\t\tif (penalty === 0) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (group.offset + group.seats.length + offset - 1 < group.row.seats.length) {\n\t\t\tconst shifted = {\n\t\t\t\tseats: group.row.seats.slice(group.offset + offset, group.offset + offset + group.seats.length),\n\t\t\t\trow: group.row,\n\t\t\t\toffset: group.offset + offset\n\t\t\t}\n\t\t\tif (isValidGroup(shifted)) {\n\t\t\t\tconst shiftedIds = shifted.seats.map(s => s.seat_guid)\n\t\t\t\tconst newSeats = group.row.seats.filter(s => (shiftedIds.includes(s.seat_guid) || (selectedGuids.includes(s.seat_guid) && !groupSelectedGuids.includes(s.seat_guid))))\n\t\t\t\tconst penalty = penaltyForGroup(shifted, newSeats, isSeatAvailable)\n\t\t\t\tif (penalty < min) {\n\t\t\t\t\tmin = penalty\n\t\t\t\t\targmin = shifted\n\t\t\t\t}\n\t\t\t\tif (penalty === 0) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\toffset++\n\t}\n\n\treturn argmin\n}\n\nexport {\n\thasSingles,\n\toptimizeSelection,\n\tselectionCanBeOptimized,\n}\n","<template lang=\"pug\">\n.seating-checkout\n\tp.alert.alert-warning(v-if=\"errorMessage\", aria-live=\"polite\") {{errorMessage}}\n\tp\n\t\tbutton.btn.btn-primary.btn-block.btn-lg(v-if=\"isValid\", type=\"submit\")\n\t\t\ti.fa.fa-cart-plus(aria-hidden=\"true\")\n\t\t\t|\n\t\t\t| {{checkoutLabel}}\n\t\tbutton.btn.btn-info.btn-block(v-if=\"isFixable\", type=\"button\", @click=\"onOptimize\")\n\t\t\ti.fa.fa-wrench(aria-hidden=\"true\")\n\t\t\t|\n\t\t\t| {{gettext(\"Propose similar seats\")}}\n</template>\n<script>\nimport {\n\thasSingles, optimizeSelection, selectionCanBeOptimized\n} from 'lib/validation'\n\nexport default {\n\tprops: {\n\t\tseatingPlan: {\n\t\t\t// CSS-selector for plan, usually #<id>\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: 'pretix-seating-plan'\n\t\t},\n\t\ttranslation: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault (rawProps) {\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\t},\n\tdata () {\n\t\treturn {\n\t\t\t// Array of seat-Objects\n\t\t\tselection: [],\n\t\t\t// CustomElement/DOM-Node of pretix-seatingplan\n\t\t\tplanElement: null,\n\t\t\t// currently methods are not exposed, so we need vueComponent of plan-DOMNode\n\t\t\tplanComponent: null,\n\t\t\terrorMessage: '',\n\t\t\tisValid: false,\n\t\t\tisFixable: false,\n\t\t\tmin: 1,\n\t\t\tmax: null,\n\t\t\toptimize: false,\n\t\t\tallowSingles: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcheckoutLabel () {\n\t\t\tif (this.selection.length === 1) return this.gettext('Add one ticket to cart')\n\t\t\treturn this.gettext('Add %d tickets to cart').replace('%d', this.selection.length)\n\t\t}\n\t},\n\twatch: {\n\t\tseatingPlan: {\n\t\t\timmediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\twindow.customElements.whenDefined('pretix-seating-plan').then(() => {\n\t\t\t\t\tif (document.readyState === 'loading') {\n\t\t\t\t\t\tdocument.addEventListener('DOMContentLoaded', this.setPlan)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setPlan()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tselection (newValue) {\n\t\t\tthis.validate()\n\t\t\tthis.$root.$emit('validate', {valid: this.isValid, fixable: this.isFixable})\n\t\t},\n\t},\n\tmethods: {\n\t\tgettext (s) {\n\t\t\treturn this.translation[s] || s\n\t\t},\n\t\tvalidate () {\n\t\t\tthis.isFixable = false\n\t\t\tthis.isValid = false\n\t\t\tconst nrOfSeats = this.selection.length\n\t\t\tif (!nrOfSeats) {\n\t\t\t\t// this.errorMessage = this.gettext('No seats selected.')\n\t\t\t\tthis.errorMessage = ''\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.min && nrOfSeats < this.min) {\n\t\t\t\tthis.errorMessage = this.gettext('You need to select at least %(min)s seats.').replace('%(min)s', this.min)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.max && nrOfSeats > this.max) {\n\t\t\t\tif (this.max === 1) {\n\t\t\t\t\tthis.errorMessage = this.gettext('You can only choose one seat.')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tconst delta = nrOfSeats - this.max\n\t\t\t\tconst msg = delta === 1\n\t\t\t\t\t? this.gettext('You can choose no more than %(max)s seats. Please remove one seat from your selection to proceed.')\n\t\t\t\t\t: this.gettext('You can choose no more than %(max)s seats. Please remove %(count)s seats from your selection to proceed.')\n\t\t\t\tthis.errorMessage = msg.replace('%(max)s', this.max).replace('%(count)s', delta)\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// try to optimize before checking allowSingles\n\t\t\tconst selectedSeats = this.selection.map(s => s.seat)\n\t\t\tif (this.optimize && selectionCanBeOptimized(selectedSeats, this.isSeatAvailable)) {\n\t\t\t\tthis.isFixable = true\n\t\t\t\tthis.errorMessage = this.gettext('We need you to select different seats to allow us to fill as many seats as possible.')\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.allowSingles === false && hasSingles(selectedSeats, this.isSeatAvailable)) {\n\t\t\t\tthis.errorMessage = this.gettext('Please do not leave single seats empty.')\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.isValid = true\n\t\t\tthis.errorMessage = ''\n\t\t\treturn true\n\t\t},\n\t\tisSeatAvailable (seat) {\n\t\t\treturn this.planComponent?.isSeatAvailable(seat.seat_guid)\n\t\t},\n\t\tsetPlan () {\n\t\t\tthis.planElement = document.querySelector(this.seatingPlan)\n\t\t\tif (!this.planElement) return\n\t\t\tthis.planComponent = this.planElement.vueComponent\n\n\t\t\tthis.planElement.addEventListener('load', (e) => {\n\t\t\t\tthis.planComponent = this.planElement.vueComponent\n\t\t\t\tconst validation = this.planComponent.getValidationRules()\n\t\t\t\tif (validation) {\n\t\t\t\t\tthis.max = validation.maximumNumber\n\t\t\t\t\tthis.optimize = validation.optimizedOrder\n\t\t\t\t\tthis.allowSingles = validation.allowSingles\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.planElement.addEventListener('error', (e) => {\n\t\t\t\tconsole.error('plan.error-event', e)\n\t\t\t})\n\t\t\tthis.planElement.addEventListener('select', (e) => {\n\t\t\t\t// currently only complete selection is given every time an update happens\n\t\t\t\tthis.selection = e.detail[0]\n\t\t\t})\n\t\t},\n\t\tonOptimize (e) {\n\t\t\te.preventDefault()\n\t\t\tconst currentSelection = this.selection.map(s => s.seat)\n\t\t\tconst newSelection = optimizeSelection(currentSelection, this.isSeatAvailable)\n\t\t\tconst droppedSeats = currentSelection.filter(seat => !newSelection.includes(seat))\n\t\t\tdroppedSeats/* .filter(seat => seat.variation) */.forEach(seat => {\n\t\t\t\tthis.planComponent.unselectSeat(seat.seat_guid)\n\t\t\t\t// TODO: fix variation? This somehow magically works – as the same number of seats is selected?\n\t\t\t\t// currently the selected variation is only saved in pretix-seating-cart, maybe save it in pretix-seating as well?\n\t\t\t\t/*\n\t\t\t\tif (!seat.variation) return\n\t\t\t\tconst v = seat.variation\n\t\t\t\tconst c = seat.category\n\t\t\t\tif (droppedVariations[c]) {\n\t\t\t\t\tdroppedVariations[c].push(v)\n\t\t\t\t} else {\n\t\t\t\t\tdroppedVariations[c] = [v]\n\t\t\t\t}\n\t\t\t\t*/\n\t\t\t})\n\n\t\t\tconst addSeats = newSelection.filter(seat => !currentSelection.includes(seat))\n\t\t\taddSeats.forEach(seat => {\n\t\t\t\t/*\n\t\t\t\tconst c = seat.category\n\t\t\t\tconst v = droppedVariations[c] ? droppedVariations[c].shift() : null\n\t\t\t\tif (v) {\n\t\t\t\t\tconsole.warn(\"TODO: select variation on local seat in checkout\")\n\t\t\t\t\t//this.$store.commit('selectVariation', {seat, variation: v})\n\t\t\t\t}\n\t\t\t\t*/\n\t\t\t\tthis.planComponent.selectSeat(seat.seat_guid)\n\t\t\t})\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingCheckoutButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingCheckoutButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SeatingCheckoutButton.vue?vue&type=template&id=1ec7d3e2&lang=pug\"\nimport script from \"./SeatingCheckoutButton.vue?vue&type=script&lang=js\"\nexport * from \"./SeatingCheckoutButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport SeatingCheckoutButton from './SeatingCheckoutButton.vue'\n\nwindow.customElements.define('pretix-seating-checkout-button',\n\tclass extends HTMLElement {\n\t\tconnectedCallback () {\n\t\t\tif (!this.isConnected) return\n\n\t\t\tconst seatingPlan = this.getAttribute('seating-plan') || 'pretix-seating-plan'\n\t\t\tlet translation = {}\n\t\t\tconst settings = this.querySelector('script')?.textContent\n\t\t\tif (settings) {\n\t\t\t\ttry {\n\t\t\t\t\ttranslation = JSON.parse(settings).translation || {}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// create div below customElement instead of Vue replacing it\n\t\t\tconst el = document.createElement('div')\n\t\t\tthis.appendChild(el)\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tconst app = new Vue({\n\t\t\t\tel,\n\t\t\t\trender: h => h(SeatingCheckoutButton, {props: { seatingPlan, translation }}),\n\t\t\t})\n\t\t\tapp.$on('validate', (e) => {\n\t\t\t\tthis.dispatchEvent(new CustomEvent('validate', { detail: e }))\n\t\t\t})\n\t\t}\n\t}\n)\n","const camelizeRE = /-(\\w)/g;\nconst camelize = str => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n};\n\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = str => {\n  return str.replace(hyphenateRE, '-$1').toLowerCase()\n};\n\nfunction getInitialProps (propsList) {\n  const res = {};\n  propsList.forEach(key => {\n    res[key] = undefined;\n  });\n  return res\n}\n\nfunction injectHook (options, key, hook) {\n  options[key] = [].concat(options[key] || []);\n  options[key].unshift(hook);\n}\n\nfunction callHooks (vm, hook) {\n  if (vm) {\n    const hooks = vm.$options[hook] || [];\n    hooks.forEach(hook => {\n      hook.call(vm);\n    });\n  }\n}\n\nfunction createCustomEvent (name, args) {\n  return new CustomEvent(name, {\n    bubbles: false,\n    cancelable: false,\n    detail: args\n  })\n}\n\nconst isBoolean = val => /function Boolean/.test(String(val));\nconst isNumber = val => /function Number/.test(String(val));\n\nfunction convertAttributeValue (value, name, { type } = {}) {\n  if (isBoolean(type)) {\n    if (value === 'true' || value === 'false') {\n      return value === 'true'\n    }\n    if (value === '' || value === name || value != null) {\n      return true\n    }\n    return value\n  } else if (isNumber(type)) {\n    const parsed = parseFloat(value, 10);\n    return isNaN(parsed) ? value : parsed\n  } else {\n    return value\n  }\n}\n\nfunction toVNodes (h, children) {\n  const res = [];\n  for (let i = 0, l = children.length; i < l; i++) {\n    res.push(toVNode(h, children[i]));\n  }\n  return res\n}\n\nfunction toVNode (h, node) {\n  if (node.nodeType === 3) {\n    return node.data.trim() ? node.data : null\n  } else if (node.nodeType === 1) {\n    const data = {\n      attrs: getAttributes(node),\n      domProps: {\n        innerHTML: node.innerHTML\n      }\n    };\n    if (data.attrs.slot) {\n      data.slot = data.attrs.slot;\n      delete data.attrs.slot;\n    }\n    return h(node.tagName, data)\n  } else {\n    return null\n  }\n}\n\nfunction getAttributes (node) {\n  const res = {};\n  for (let i = 0, l = node.attributes.length; i < l; i++) {\n    const attr = node.attributes[i];\n    res[attr.nodeName] = attr.nodeValue;\n  }\n  return res\n}\n\nfunction wrap (Vue, Component) {\n  const isAsync = typeof Component === 'function' && !Component.cid;\n  let isInitialized = false;\n  let hyphenatedPropsList;\n  let camelizedPropsList;\n  let camelizedPropsMap;\n\n  function initialize (Component) {\n    if (isInitialized) return\n\n    const options = typeof Component === 'function'\n      ? Component.options\n      : Component;\n\n    // extract props info\n    const propsList = Array.isArray(options.props)\n      ? options.props\n      : Object.keys(options.props || {});\n    hyphenatedPropsList = propsList.map(hyphenate);\n    camelizedPropsList = propsList.map(camelize);\n    const originalPropsAsObject = Array.isArray(options.props) ? {} : options.props || {};\n    camelizedPropsMap = camelizedPropsList.reduce((map, key, i) => {\n      map[key] = originalPropsAsObject[propsList[i]];\n      return map\n    }, {});\n\n    // proxy $emit to native DOM events\n    injectHook(options, 'beforeCreate', function () {\n      const emit = this.$emit;\n      this.$emit = (name, ...args) => {\n        this.$root.$options.customElement.dispatchEvent(createCustomEvent(name, args));\n        return emit.call(this, name, ...args)\n      };\n    });\n\n    injectHook(options, 'created', function () {\n      // sync default props values to wrapper on created\n      camelizedPropsList.forEach(key => {\n        this.$root.props[key] = this[key];\n      });\n    });\n\n    // proxy props as Element properties\n    camelizedPropsList.forEach(key => {\n      Object.defineProperty(CustomElement.prototype, key, {\n        get () {\n          return this._wrapper.props[key]\n        },\n        set (newVal) {\n          this._wrapper.props[key] = newVal;\n        },\n        enumerable: false,\n        configurable: true\n      });\n    });\n\n    isInitialized = true;\n  }\n\n  function syncAttribute (el, key) {\n    const camelized = camelize(key);\n    const value = el.hasAttribute(key) ? el.getAttribute(key) : undefined;\n    el._wrapper.props[camelized] = convertAttributeValue(\n      value,\n      key,\n      camelizedPropsMap[camelized]\n    );\n  }\n\n  class CustomElement extends HTMLElement {\n    constructor () {\n      const self = super();\n      self.attachShadow({ mode: 'open' });\n\n      const wrapper = self._wrapper = new Vue({\n        name: 'shadow-root',\n        customElement: self,\n        shadowRoot: self.shadowRoot,\n        data () {\n          return {\n            props: {},\n            slotChildren: []\n          }\n        },\n        render (h) {\n          return h(Component, {\n            ref: 'inner',\n            props: this.props\n          }, this.slotChildren)\n        }\n      });\n\n      // Use MutationObserver to react to future attribute & slot content change\n      const observer = new MutationObserver(mutations => {\n        let hasChildrenChange = false;\n        for (let i = 0; i < mutations.length; i++) {\n          const m = mutations[i];\n          if (isInitialized && m.type === 'attributes' && m.target === self) {\n            syncAttribute(self, m.attributeName);\n          } else {\n            hasChildrenChange = true;\n          }\n        }\n        if (hasChildrenChange) {\n          wrapper.slotChildren = Object.freeze(toVNodes(\n            wrapper.$createElement,\n            self.childNodes\n          ));\n        }\n      });\n      observer.observe(self, {\n        childList: true,\n        subtree: true,\n        characterData: true,\n        attributes: true\n      });\n    }\n\n    get vueComponent () {\n      return this._wrapper.$refs.inner\n    }\n\n    connectedCallback () {\n      const wrapper = this._wrapper;\n      if (!wrapper._isMounted) {\n        // initialize attributes\n        const syncInitialAttributes = () => {\n          wrapper.props = getInitialProps(camelizedPropsList);\n          hyphenatedPropsList.forEach(key => {\n            syncAttribute(this, key);\n          });\n        };\n\n        if (isInitialized) {\n          syncInitialAttributes();\n        } else {\n          // async & unresolved\n          Component().then(resolved => {\n            if (resolved.__esModule || resolved[Symbol.toStringTag] === 'Module') {\n              resolved = resolved.default;\n            }\n            initialize(resolved);\n            syncInitialAttributes();\n          });\n        }\n        // initialize children\n        wrapper.slotChildren = Object.freeze(toVNodes(\n          wrapper.$createElement,\n          this.childNodes\n        ));\n        wrapper.$mount();\n        this.shadowRoot.appendChild(wrapper.$el);\n      } else {\n        callHooks(this.vueComponent, 'activated');\n      }\n    }\n\n    disconnectedCallback () {\n      callHooks(this.vueComponent, 'deactivated');\n    }\n  }\n\n  if (!isAsync) {\n    initialize(Component);\n  }\n\n  return CustomElement\n}\n\nexport default wrap;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app\"}},[_c('link',{attrs:{\"rel\":\"stylesheet\",\"type\":\"text/css\",\"href\":_vm.styleSrc}}),_c('div',{attrs:{\"hidden\":\"\"}},[_vm._t(\"default\")],2),(!_vm.loading && !_vm.errored)?_c('plan-view',{attrs:{\"scrollZoomWithModifier\":_vm.scrollZoomWithModifier,\"panWithModifier\":_vm.panWithModifier}}):_vm._e(),(_vm.loading)?_c('p',{attrs:{\"id\":\"loading\"}},[_c('svg',{staticStyle:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"stroke-linejoin\":\"round\",\"stroke-miterlimit\":\"2\"},attrs:{\"viewBox\":\"0 0 16 16\",\"width\":\"256\",\"height\":\"256\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xml:space\":\"preserve\"}},[_c('title',[_vm._v(_vm._s(_vm._(\"Loading …\")))]),_c('path',{staticStyle:{\"fill-rule\":\"nonzero\"},attrs:{\"d\":\"M11.95 2.547a2.29 2.29 0 0 1-2.286 2.286 2.29 2.29 0 0 1-2.285-2.286A2.289 2.289 0 0 1 9.664.262a2.29 2.29 0 0 1 2.286 2.285Zm4.571-.973a.325.325 0 0 0-.259-.321l-1.633-.25a4.927 4.927 0 0 0-.367-.875c.304-.42.634-.813.938-1.223a.336.336 0 0 0 .071-.206.3.3 0 0 0-.062-.196c-.375-.527-1-1.081-1.473-1.518a.351.351 0 0 0-.224-.089c-.08 0-.16.026-.214.08l-1.268.955a5.193 5.193 0 0 0-.803-.33l-.25-1.643c-.018-.152-.161-.268-.322-.268H8.673a.326.326 0 0 0-.321.25c-.143.536-.197 1.116-.259 1.661a5.346 5.346 0 0 0-.813.339l-1.232-.955a.393.393 0 0 0-.232-.089c-.304 0-1.509 1.303-1.723 1.598a.343.343 0 0 0-.081.205c0 .081.036.152.09.214.33.402.652.804.955 1.233a4.65 4.65 0 0 0-.348.821l-1.661.25c-.134.027-.241.188-.241.321v1.983c0 .151.107.294.259.321l1.634.241a4.7 4.7 0 0 0 .366.884c-.304.42-.634.813-.937 1.223a.346.346 0 0 0-.009.411c.375.518 1 1.071 1.473 1.5a.32.32 0 0 0 .223.098c.08 0 .161-.027.223-.08l1.259-.956c.259.134.527.242.804.331l.25 1.643c.018.151.16.268.321.268h1.982a.329.329 0 0 0 .322-.25c.143-.536.196-1.117.259-1.661.276-.089.553-.206.812-.339l1.232.964c.072.044.152.08.232.08.304 0 1.509-1.312 1.724-1.598a.3.3 0 0 0 .08-.205.357.357 0 0 0-.089-.224 18.424 18.424 0 0 1-.956-1.232c.143-.259.25-.527.349-.812l1.651-.25c.143-.027.25-.188.25-.322V1.574Z\",\"transform\":\"translate(-1.664 5.453)\",\"fill\":\"#fff\"}})])]):_vm._e(),(_vm.errored)?_c('p',{attrs:{\"id\":\"error\"}},[_c('svg',{staticStyle:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"stroke-linejoin\":\"round\",\"stroke-miterlimit\":\"2\"},attrs:{\"viewBox\":\"0 0 16 16\",\"width\":\"256\",\"height\":\"256\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xml:space\":\"preserve\"}},[_c('title',[_vm._v(\"Error:\")]),_c('g',{attrs:{\"transform\":\"matrix(1,0,0,1,1.14285,13.7143)\"}},[_c('path',{staticStyle:{\"fill-rule\":\"nonzero\"},attrs:{\"d\":\"M10.259,-3.696C10.259,-3.545 10.196,-3.393 10.089,-3.286L9.286,-2.482C9.179,-2.375 9.027,-2.313 8.875,-2.313C8.723,-2.313 8.58,-2.375 8.473,-2.482L6.857,-4.098L5.241,-2.482C5.134,-2.375 4.991,-2.313 4.839,-2.313C4.688,-2.313 4.536,-2.375 4.429,-2.482L3.625,-3.286C3.518,-3.393 3.455,-3.545 3.455,-3.696C3.455,-3.848 3.518,-3.991 3.625,-4.098L5.241,-5.714L3.625,-7.33C3.518,-7.438 3.455,-7.58 3.455,-7.732C3.455,-7.884 3.518,-8.036 3.625,-8.143L4.429,-8.946C4.536,-9.054 4.688,-9.116 4.839,-9.116C4.991,-9.116 5.134,-9.054 5.241,-8.946L6.857,-7.33L8.473,-8.946C8.58,-9.054 8.723,-9.116 8.875,-9.116C9.027,-9.116 9.179,-9.054 9.286,-8.946L10.089,-8.143C10.196,-8.036 10.259,-7.884 10.259,-7.732C10.259,-7.58 10.196,-7.438 10.089,-7.33L8.473,-5.714L10.089,-4.098C10.196,-3.991 10.259,-3.848 10.259,-3.696ZM13.714,-5.714C13.714,-9.5 10.643,-12.571 6.857,-12.571C3.071,-12.571 0,-9.5 0,-5.714C0,-1.929 3.071,1.143 6.857,1.143C10.643,1.143 13.714,-1.929 13.714,-5.714Z\"}})])]),_vm._v(_vm._s(_vm.errorMessage))]):_vm._e(),_c('p',{attrs:{\"id\":\"status\",\"vi-if\":\"statusMessage\"},domProps:{\"innerHTML\":_vm._s(_vm.statusMessage)}}),_c('floating-tooltip'),_c('tooltip-seat')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"c-plan\"},[_c('items-filter'),(_vm.plan.size)?_c('svg',{ref:\"svg\",attrs:{\"viewport\":_vm.viewport,\"preserveAspectRatio\":\"none\",\"id\":\"plan-svg\",\"role\":\"group\"},on:{\"mousedown\":_vm.mousedown,\"focusin\":_vm.onFocusin,\"dblclick\":_vm.onDblclick}},[_c('g',{class:_vm.mainclasses,attrs:{\"transform\":_vm.$store.state.zoomTransform.toString()}},[_c('g',{ref:\"toggle\",attrs:{\"role\":\"button\",\"tabindex\":\"0\",\"aria-label\":_vm._('Select a zone'),\"aria-controls\":\"plan-view\",\"aria-expanded\":_vm.plan.active ? 'true' : 'false'},on:{\"click\":_vm.toggleActive,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggleActive.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.toggleActive.apply(null, arguments)}],\"~focus\":function($event){return _vm.setToggleSize.apply(null, arguments)}}},[_c('rect',{ref:\"outline\",attrs:{\"vector-effect\":\"non-scaling-stroke\"}}),_c('polyline',{attrs:{\"points\":\"-1.5,-3 1.5,0 -1.5,3\",\"vector-effect\":\"non-scaling-stroke\"}}),_c('text',[_vm._v(_vm._s(_vm._('Select a zone')))])]),_c('g',{ref:\"container\",attrs:{\"aria-hidden\":_vm.plan.active ? 'false' : 'true',\"id\":\"plan-view\"}},_vm._l((_vm.plan.zones),function(zone){return _c('plan-zone',{key:zone.index,ref:\"zones\",refInFor:true,attrs:{\"zone\":zone,\"plan\":_vm.plan}})}),1),(_vm.selectFrom)?_c('selection-area',{attrs:{\"offsetParent\":_vm.$refs.svg,\"from\":_vm.selectFrom,\"transform\":_vm.$store.state.zoomTransform},on:{\"select\":_vm.onAreaSelect}}):_vm._e()],1)]):_vm._e(),(_vm.cursorAddon)?_c('cursor-addon',{attrs:{\"cursor\":_vm.cursorAddon}}):_vm._e(),_c('div',{staticClass:\"button-group\"},[_c('button',{staticClass:\"btn-zoom btn-zoom-in\",on:{\"click\":_vm.zoomIn}},[_vm._v(_vm._s(_vm._('Zoom in')))]),_c('button',{staticClass:\"btn-zoom btn-zoom-out\",on:{\"click\":_vm.zoomOut}},[_vm._v(_vm._s(_vm._('Zoom out')))])]),_c('instructions-overlay')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function luminanace (r, g, b) {\n\tconst a = [r, g, b].map(function (v) {\n\t\tv /= 255\n\t\treturn v <= 0.03928\n\t\t\t? v / 12.92\n\t\t\t: Math.pow((v + 0.055) / 1.055, 2.4)\n\t})\n\treturn a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722\n}\n\nfunction contrast (rgb1, rgb2) {\n\tconst l1 = luminanace(rgb1[0], rgb1[1], rgb1[2]) + 0.05\n\tconst l2 = luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05\n\tlet ratio = l1 / l2\n\tif (l2 > l1) {\n\t\tratio = 1 / ratio\n\t}\n\treturn ratio\n}\n\nfunction hex2rgb (hex) {\n\t// Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n\tconst shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i\n\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\n\t\treturn r + r + g + g + b + b\n\t})\n\n\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\treturn result\n\t\t? [\n\t\t\tparseInt(result[1], 16),\n\t\t\tparseInt(result[2], 16),\n\t\t\tparseInt(result[3], 16)\n\t\t]\n\t\t: null\n}\n\n// lighten a color by overlaying white in blend-mode screen\nfunction lighten (color, amount) {\n\tlet channels = [200, 200, 200]\n\tif (color.startsWith('#')) {\n\t\tchannels = hex2rgb(color)\n\t} else if (color.startsWith('rgb')) {\n\t\tchannels = color.substring(color.indexOf('(') + 1, color.indexOf(')')).split(',').map(x => parseInt(x, 10))\n\t}\n\tchannels = channels.map(x => x / 255).map(x => 1 - (1 - x) * (1 - amount), 0).map(x => Math.round(x * 255))\n\treturn `rgb(${channels.join(',')})`\n}\n\nexport {contrast, hex2rgb, lighten}\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n  var version = Number(Vue.version.split('.')[0]);\n\n  if (version >= 2) {\n    Vue.mixin({ beforeCreate: vuexInit });\n  } else {\n    // override init and inject vuex init procedure\n    // for 1.x backwards compatibility.\n    var _init = Vue.prototype._init;\n    Vue.prototype._init = function (options) {\n      if ( options === void 0 ) options = {};\n\n      options.init = options.init\n        ? [vuexInit].concat(options.init)\n        : vuexInit;\n      _init.call(this, options);\n    };\n  }\n\n  /**\n   * Vuex init hook, injected into each instances init hooks list.\n   */\n\n  function vuexInit () {\n    var options = this.$options;\n    // store injection\n    if (options.store) {\n      this.$store = typeof options.store === 'function'\n        ? options.store()\n        : options.store;\n    } else if (options.parent && options.parent.$store) {\n      this.$store = options.parent.$store;\n    }\n  }\n}\n\nvar target = typeof window !== 'undefined'\n  ? window\n  : typeof global !== 'undefined'\n    ? global\n    : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n  if (!devtoolHook) { return }\n\n  store._devtoolHook = devtoolHook;\n\n  devtoolHook.emit('vuex:init', store);\n\n  devtoolHook.on('vuex:travel-to-state', function (targetState) {\n    store.replaceState(targetState);\n  });\n\n  store.subscribe(function (mutation, state) {\n    devtoolHook.emit('vuex:mutation', mutation, state);\n  }, { prepend: true });\n\n  store.subscribeAction(function (action, state) {\n    devtoolHook.emit('vuex:action', action, state);\n  }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n  return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n  if ( cache === void 0 ) cache = [];\n\n  // just return if obj is immutable value\n  if (obj === null || typeof obj !== 'object') {\n    return obj\n  }\n\n  // if obj is hit, it is in circular structure\n  var hit = find(cache, function (c) { return c.original === obj; });\n  if (hit) {\n    return hit.copy\n  }\n\n  var copy = Array.isArray(obj) ? [] : {};\n  // put the copy into cache at first\n  // because we want to refer it in recursive deepCopy\n  cache.push({\n    original: obj,\n    copy: copy\n  });\n\n  Object.keys(obj).forEach(function (key) {\n    copy[key] = deepCopy(obj[key], cache);\n  });\n\n  return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n  Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n  return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n  if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n  return function () {\n    return fn(arg)\n  }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n  this.runtime = runtime;\n  // Store some children item\n  this._children = Object.create(null);\n  // Store the origin module object which passed by programmer\n  this._rawModule = rawModule;\n  var rawState = rawModule.state;\n\n  // Store the origin module's state\n  this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n  return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n  this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n  delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n  return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n  return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n  this._rawModule.namespaced = rawModule.namespaced;\n  if (rawModule.actions) {\n    this._rawModule.actions = rawModule.actions;\n  }\n  if (rawModule.mutations) {\n    this._rawModule.mutations = rawModule.mutations;\n  }\n  if (rawModule.getters) {\n    this._rawModule.getters = rawModule.getters;\n  }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n  forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n  if (this._rawModule.getters) {\n    forEachValue(this._rawModule.getters, fn);\n  }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n  if (this._rawModule.actions) {\n    forEachValue(this._rawModule.actions, fn);\n  }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n  if (this._rawModule.mutations) {\n    forEachValue(this._rawModule.mutations, fn);\n  }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n  // register root module (Vuex.Store options)\n  this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n  return path.reduce(function (module, key) {\n    return module.getChild(key)\n  }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n  var module = this.root;\n  return path.reduce(function (namespace, key) {\n    module = module.getChild(key);\n    return namespace + (module.namespaced ? key + '/' : '')\n  }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n  update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n    var this$1 = this;\n    if ( runtime === void 0 ) runtime = true;\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assertRawModule(path, rawModule);\n  }\n\n  var newModule = new Module(rawModule, runtime);\n  if (path.length === 0) {\n    this.root = newModule;\n  } else {\n    var parent = this.get(path.slice(0, -1));\n    parent.addChild(path[path.length - 1], newModule);\n  }\n\n  // register nested modules\n  if (rawModule.modules) {\n    forEachValue(rawModule.modules, function (rawChildModule, key) {\n      this$1.register(path.concat(key), rawChildModule, runtime);\n    });\n  }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n  var child = parent.getChild(key);\n\n  if (!child) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.warn(\n        \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n        \"not registered\"\n      );\n    }\n    return\n  }\n\n  if (!child.runtime) {\n    return\n  }\n\n  parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n  var parent = this.get(path.slice(0, -1));\n  var key = path[path.length - 1];\n\n  if (parent) {\n    return parent.hasChild(key)\n  }\n\n  return false\n};\n\nfunction update (path, targetModule, newModule) {\n  if ((process.env.NODE_ENV !== 'production')) {\n    assertRawModule(path, newModule);\n  }\n\n  // update target module\n  targetModule.update(newModule);\n\n  // update nested modules\n  if (newModule.modules) {\n    for (var key in newModule.modules) {\n      if (!targetModule.getChild(key)) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\n            \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n            'manual reload is needed'\n          );\n        }\n        return\n      }\n      update(\n        path.concat(key),\n        targetModule.getChild(key),\n        newModule.modules[key]\n      );\n    }\n  }\n}\n\nvar functionAssert = {\n  assert: function (value) { return typeof value === 'function'; },\n  expected: 'function'\n};\n\nvar objectAssert = {\n  assert: function (value) { return typeof value === 'function' ||\n    (typeof value === 'object' && typeof value.handler === 'function'); },\n  expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n  getters: functionAssert,\n  mutations: functionAssert,\n  actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n  Object.keys(assertTypes).forEach(function (key) {\n    if (!rawModule[key]) { return }\n\n    var assertOptions = assertTypes[key];\n\n    forEachValue(rawModule[key], function (value, type) {\n      assert(\n        assertOptions.assert(value),\n        makeAssertionMessage(path, key, type, value, assertOptions.expected)\n      );\n    });\n  });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n  var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n  if (path.length > 0) {\n    buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n  }\n  buf += \" is \" + (JSON.stringify(value)) + \".\";\n  return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #731\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n    assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n    assert(this instanceof Store, \"store must be called with the new operator.\");\n  }\n\n  var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n  var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n  // store internal state\n  this._committing = false;\n  this._actions = Object.create(null);\n  this._actionSubscribers = [];\n  this._mutations = Object.create(null);\n  this._wrappedGetters = Object.create(null);\n  this._modules = new ModuleCollection(options);\n  this._modulesNamespaceMap = Object.create(null);\n  this._subscribers = [];\n  this._watcherVM = new Vue();\n  this._makeLocalGettersCache = Object.create(null);\n\n  // bind commit and dispatch to self\n  var store = this;\n  var ref = this;\n  var dispatch = ref.dispatch;\n  var commit = ref.commit;\n  this.dispatch = function boundDispatch (type, payload) {\n    return dispatch.call(store, type, payload)\n  };\n  this.commit = function boundCommit (type, payload, options) {\n    return commit.call(store, type, payload, options)\n  };\n\n  // strict mode\n  this.strict = strict;\n\n  var state = this._modules.root.state;\n\n  // init root module.\n  // this also recursively registers all sub-modules\n  // and collects all module getters inside this._wrappedGetters\n  installModule(this, state, [], this._modules.root);\n\n  // initialize the store vm, which is responsible for the reactivity\n  // (also registers _wrappedGetters as computed properties)\n  resetStoreVM(this, state);\n\n  // apply plugins\n  plugins.forEach(function (plugin) { return plugin(this$1); });\n\n  var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n  if (useDevtools) {\n    devtoolPlugin(this);\n  }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n  return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(false, \"use store.replaceState() to explicit replace store state.\");\n  }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n    var this$1 = this;\n\n  // check object-style commit\n  var ref = unifyObjectStyle(_type, _payload, _options);\n    var type = ref.type;\n    var payload = ref.payload;\n    var options = ref.options;\n\n  var mutation = { type: type, payload: payload };\n  var entry = this._mutations[type];\n  if (!entry) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] unknown mutation type: \" + type));\n    }\n    return\n  }\n  this._withCommit(function () {\n    entry.forEach(function commitIterator (handler) {\n      handler(payload);\n    });\n  });\n\n  this._subscribers\n    .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n    .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n  if (\n    (process.env.NODE_ENV !== 'production') &&\n    options && options.silent\n  ) {\n    console.warn(\n      \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n      'Use the filter functionality in the vue-devtools'\n    );\n  }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n    var this$1 = this;\n\n  // check object-style dispatch\n  var ref = unifyObjectStyle(_type, _payload);\n    var type = ref.type;\n    var payload = ref.payload;\n\n  var action = { type: type, payload: payload };\n  var entry = this._actions[type];\n  if (!entry) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] unknown action type: \" + type));\n    }\n    return\n  }\n\n  try {\n    this._actionSubscribers\n      .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n      .filter(function (sub) { return sub.before; })\n      .forEach(function (sub) { return sub.before(action, this$1.state); });\n  } catch (e) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.warn(\"[vuex] error in before action subscribers: \");\n      console.error(e);\n    }\n  }\n\n  var result = entry.length > 1\n    ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n    : entry[0](payload);\n\n  return new Promise(function (resolve, reject) {\n    result.then(function (res) {\n      try {\n        this$1._actionSubscribers\n          .filter(function (sub) { return sub.after; })\n          .forEach(function (sub) { return sub.after(action, this$1.state); });\n      } catch (e) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\"[vuex] error in after action subscribers: \");\n          console.error(e);\n        }\n      }\n      resolve(res);\n    }, function (error) {\n      try {\n        this$1._actionSubscribers\n          .filter(function (sub) { return sub.error; })\n          .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n      } catch (e) {\n        if ((process.env.NODE_ENV !== 'production')) {\n          console.warn(\"[vuex] error in error action subscribers: \");\n          console.error(e);\n        }\n      }\n      reject(error);\n    });\n  })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n  return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n  var subs = typeof fn === 'function' ? { before: fn } : fn;\n  return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n    var this$1 = this;\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n  }\n  return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n    var this$1 = this;\n\n  this._withCommit(function () {\n    this$1._vm._data.$$state = state;\n  });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n    if ( options === void 0 ) options = {};\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n    assert(path.length > 0, 'cannot register the root module by using registerModule.');\n  }\n\n  this._modules.register(path, rawModule);\n  installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n  // reset store to update getters...\n  resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n    var this$1 = this;\n\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  this._modules.unregister(path);\n  this._withCommit(function () {\n    var parentState = getNestedState(this$1.state, path.slice(0, -1));\n    Vue.delete(parentState, path[path.length - 1]);\n  });\n  resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n  if (typeof path === 'string') { path = [path]; }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(Array.isArray(path), \"module path must be a string or an Array.\");\n  }\n\n  return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n  this._modules.update(newOptions);\n  resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n  var committing = this._committing;\n  this._committing = true;\n  fn();\n  this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n  if (subs.indexOf(fn) < 0) {\n    options && options.prepend\n      ? subs.unshift(fn)\n      : subs.push(fn);\n  }\n  return function () {\n    var i = subs.indexOf(fn);\n    if (i > -1) {\n      subs.splice(i, 1);\n    }\n  }\n}\n\nfunction resetStore (store, hot) {\n  store._actions = Object.create(null);\n  store._mutations = Object.create(null);\n  store._wrappedGetters = Object.create(null);\n  store._modulesNamespaceMap = Object.create(null);\n  var state = store.state;\n  // init all modules\n  installModule(store, state, [], store._modules.root, true);\n  // reset vm\n  resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n  var oldVm = store._vm;\n\n  // bind store public getters\n  store.getters = {};\n  // reset local getters cache\n  store._makeLocalGettersCache = Object.create(null);\n  var wrappedGetters = store._wrappedGetters;\n  var computed = {};\n  forEachValue(wrappedGetters, function (fn, key) {\n    // use computed to leverage its lazy-caching mechanism\n    // direct inline function use will lead to closure preserving oldVm.\n    // using partial to return function with only arguments preserved in closure environment.\n    computed[key] = partial(fn, store);\n    Object.defineProperty(store.getters, key, {\n      get: function () { return store._vm[key]; },\n      enumerable: true // for local getters\n    });\n  });\n\n  // use a Vue instance to store the state tree\n  // suppress warnings just in case the user has added\n  // some funky global mixins\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  store._vm = new Vue({\n    data: {\n      $$state: state\n    },\n    computed: computed\n  });\n  Vue.config.silent = silent;\n\n  // enable strict mode for new vm\n  if (store.strict) {\n    enableStrictMode(store);\n  }\n\n  if (oldVm) {\n    if (hot) {\n      // dispatch changes in all subscribed watchers\n      // to force getter re-evaluation for hot reloading.\n      store._withCommit(function () {\n        oldVm._data.$$state = null;\n      });\n    }\n    Vue.nextTick(function () { return oldVm.$destroy(); });\n  }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n  var isRoot = !path.length;\n  var namespace = store._modules.getNamespace(path);\n\n  // register in namespace map\n  if (module.namespaced) {\n    if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n    }\n    store._modulesNamespaceMap[namespace] = module;\n  }\n\n  // set state\n  if (!isRoot && !hot) {\n    var parentState = getNestedState(rootState, path.slice(0, -1));\n    var moduleName = path[path.length - 1];\n    store._withCommit(function () {\n      if ((process.env.NODE_ENV !== 'production')) {\n        if (moduleName in parentState) {\n          console.warn(\n            (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n          );\n        }\n      }\n      Vue.set(parentState, moduleName, module.state);\n    });\n  }\n\n  var local = module.context = makeLocalContext(store, namespace, path);\n\n  module.forEachMutation(function (mutation, key) {\n    var namespacedType = namespace + key;\n    registerMutation(store, namespacedType, mutation, local);\n  });\n\n  module.forEachAction(function (action, key) {\n    var type = action.root ? key : namespace + key;\n    var handler = action.handler || action;\n    registerAction(store, type, handler, local);\n  });\n\n  module.forEachGetter(function (getter, key) {\n    var namespacedType = namespace + key;\n    registerGetter(store, namespacedType, getter, local);\n  });\n\n  module.forEachChild(function (child, key) {\n    installModule(store, rootState, path.concat(key), child, hot);\n  });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n  var noNamespace = namespace === '';\n\n  var local = {\n    dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n          console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      return store.dispatch(type, payload)\n    },\n\n    commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n      var args = unifyObjectStyle(_type, _payload, _options);\n      var payload = args.payload;\n      var options = args.options;\n      var type = args.type;\n\n      if (!options || !options.root) {\n        type = namespace + type;\n        if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n          console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n          return\n        }\n      }\n\n      store.commit(type, payload, options);\n    }\n  };\n\n  // getters and state object must be gotten lazily\n  // because they will be changed by vm update\n  Object.defineProperties(local, {\n    getters: {\n      get: noNamespace\n        ? function () { return store.getters; }\n        : function () { return makeLocalGetters(store, namespace); }\n    },\n    state: {\n      get: function () { return getNestedState(store.state, path); }\n    }\n  });\n\n  return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n  if (!store._makeLocalGettersCache[namespace]) {\n    var gettersProxy = {};\n    var splitPos = namespace.length;\n    Object.keys(store.getters).forEach(function (type) {\n      // skip if the target getter is not match this namespace\n      if (type.slice(0, splitPos) !== namespace) { return }\n\n      // extract local getter type\n      var localType = type.slice(splitPos);\n\n      // Add a port to the getters proxy.\n      // Define as getter property because\n      // we do not want to evaluate the getters in this time.\n      Object.defineProperty(gettersProxy, localType, {\n        get: function () { return store.getters[type]; },\n        enumerable: true\n      });\n    });\n    store._makeLocalGettersCache[namespace] = gettersProxy;\n  }\n\n  return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n  var entry = store._mutations[type] || (store._mutations[type] = []);\n  entry.push(function wrappedMutationHandler (payload) {\n    handler.call(store, local.state, payload);\n  });\n}\n\nfunction registerAction (store, type, handler, local) {\n  var entry = store._actions[type] || (store._actions[type] = []);\n  entry.push(function wrappedActionHandler (payload) {\n    var res = handler.call(store, {\n      dispatch: local.dispatch,\n      commit: local.commit,\n      getters: local.getters,\n      state: local.state,\n      rootGetters: store.getters,\n      rootState: store.state\n    }, payload);\n    if (!isPromise(res)) {\n      res = Promise.resolve(res);\n    }\n    if (store._devtoolHook) {\n      return res.catch(function (err) {\n        store._devtoolHook.emit('vuex:error', err);\n        throw err\n      })\n    } else {\n      return res\n    }\n  });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n  if (store._wrappedGetters[type]) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error((\"[vuex] duplicate getter key: \" + type));\n    }\n    return\n  }\n  store._wrappedGetters[type] = function wrappedGetter (store) {\n    return rawGetter(\n      local.state, // local state\n      local.getters, // local getters\n      store.state, // root state\n      store.getters // root getters\n    )\n  };\n}\n\nfunction enableStrictMode (store) {\n  store._vm.$watch(function () { return this._data.$$state }, function () {\n    if ((process.env.NODE_ENV !== 'production')) {\n      assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n    }\n  }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n  return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n  if (isObject(type) && type.type) {\n    options = payload;\n    payload = type;\n    type = type.type;\n  }\n\n  if ((process.env.NODE_ENV !== 'production')) {\n    assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n  }\n\n  return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n  if (Vue && _Vue === Vue) {\n    if ((process.env.NODE_ENV !== 'production')) {\n      console.error(\n        '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n      );\n    }\n    return\n  }\n  Vue = _Vue;\n  applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n    console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(states).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedState () {\n      var state = this.$store.state;\n      var getters = this.$store.getters;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n        if (!module) {\n          return\n        }\n        state = module.context.state;\n        getters = module.context.getters;\n      }\n      return typeof val === 'function'\n        ? val.call(this, state, getters)\n        : state[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n    console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(mutations).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedMutation () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // Get the commit method from store\n      var commit = this.$store.commit;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n        if (!module) {\n          return\n        }\n        commit = module.context.commit;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [commit].concat(args))\n        : commit.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n    console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(getters).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    // The namespace has been mutated by normalizeNamespace\n    val = namespace + val;\n    res[key] = function mappedGetter () {\n      if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n        return\n      }\n      if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n        console.error((\"[vuex] unknown getter: \" + val));\n        return\n      }\n      return this.$store.getters[val]\n    };\n    // mark vuex getter for devtools\n    res[key].vuex = true;\n  });\n  return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n  var res = {};\n  if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n    console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n  }\n  normalizeMap(actions).forEach(function (ref) {\n    var key = ref.key;\n    var val = ref.val;\n\n    res[key] = function mappedAction () {\n      var args = [], len = arguments.length;\n      while ( len-- ) args[ len ] = arguments[ len ];\n\n      // get dispatch function from store\n      var dispatch = this.$store.dispatch;\n      if (namespace) {\n        var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n        if (!module) {\n          return\n        }\n        dispatch = module.context.dispatch;\n      }\n      return typeof val === 'function'\n        ? val.apply(this, [dispatch].concat(args))\n        : dispatch.apply(this.$store, [val].concat(args))\n    };\n  });\n  return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n  mapState: mapState.bind(null, namespace),\n  mapGetters: mapGetters.bind(null, namespace),\n  mapMutations: mapMutations.bind(null, namespace),\n  mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n  if (!isValidMap(map)) {\n    return []\n  }\n  return Array.isArray(map)\n    ? map.map(function (key) { return ({ key: key, val: key }); })\n    : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n  return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n  return function (namespace, map) {\n    if (typeof namespace !== 'string') {\n      map = namespace;\n      namespace = '';\n    } else if (namespace.charAt(namespace.length - 1) !== '/') {\n      namespace += '/';\n    }\n    return fn(namespace, map)\n  }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n  var module = store._modulesNamespaceMap[namespace];\n  if ((process.env.NODE_ENV !== 'production') && !module) {\n    console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n  }\n  return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n  if ( ref === void 0 ) ref = {};\n  var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n  var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n  var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n  var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n  var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n  var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n  var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n  var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n  var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n  return function (store) {\n    var prevState = deepCopy(store.state);\n\n    if (typeof logger === 'undefined') {\n      return\n    }\n\n    if (logMutations) {\n      store.subscribe(function (mutation, state) {\n        var nextState = deepCopy(state);\n\n        if (filter(mutation, prevState, nextState)) {\n          var formattedTime = getFormattedTime();\n          var formattedMutation = mutationTransformer(mutation);\n          var message = \"mutation \" + (mutation.type) + formattedTime;\n\n          startMessage(logger, message, collapsed);\n          logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n          logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n          logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n          endMessage(logger);\n        }\n\n        prevState = nextState;\n      });\n    }\n\n    if (logActions) {\n      store.subscribeAction(function (action, state) {\n        if (actionFilter(action, state)) {\n          var formattedTime = getFormattedTime();\n          var formattedAction = actionTransformer(action);\n          var message = \"action \" + (action.type) + formattedTime;\n\n          startMessage(logger, message, collapsed);\n          logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n          endMessage(logger);\n        }\n      });\n    }\n  }\n}\n\nfunction startMessage (logger, message, collapsed) {\n  var startMessage = collapsed\n    ? logger.groupCollapsed\n    : logger.group;\n\n  // render\n  try {\n    startMessage.call(logger, message);\n  } catch (e) {\n    logger.log(message);\n  }\n}\n\nfunction endMessage (logger) {\n  try {\n    logger.groupEnd();\n  } catch (e) {\n    logger.log('—— log end ——');\n  }\n}\n\nfunction getFormattedTime () {\n  var time = new Date();\n  return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n  return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n  return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n  Store: Store,\n  install: install,\n  version: '3.6.2',\n  mapState: mapState,\n  mapMutations: mapMutations,\n  mapGetters: mapGetters,\n  mapActions: mapActions,\n  createNamespacedHelpers: createNamespacedHelpers,\n  createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classObject},[_c('p',{staticClass:\"items-filter-head\"},[_c('button',{ref:\"toggle\",staticClass:\"toggle\",attrs:{\"type\":\"button\",\"aria-expanded\":\"false\",\"aria-controls\":\"items-filter-fieldset\"},on:{\"click\":_vm.toggleList}},[_c('svg',{attrs:{\"id\":\"filter-icon\",\"svg\":\"\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 32 32\",\"role\":\"img\"}},[_c('title',[_vm._v(_vm._s(_vm._('Filter')))]),_c('rect',{attrs:{\"id\":\"filter-icon-box\",\"x\":\"3.5\",\"y\":\"3.5\",\"width\":\"10\",\"height\":\"10\",\"rx\":\"1\",\"ry\":\"1\",\"fill\":\"none\"}}),_c('polyline',{attrs:{\"id\":\"filter-icon-check\",\"points\":\"5.5 8 8 10.5 12 6.5\",\"stroke-width\":\"1.5\"}}),_c('use',{attrs:{\"href\":\"#filter-icon-box\",\"x\":\"0\",\"y\":\"13\"}}),_c('use',{attrs:{\"id\":\"filter-icon-check-2\",\"href\":\"#filter-icon-check\",\"x\":\"0\",\"y\":\"13\"}}),_c('polyline',{attrs:{\"id\":\"filter-icon-pointer\",\"points\":\"17 14 22 18 27 14\",\"stroke-width\":\"2\",\"vector-effect\":\"non-scaling-stroke\"}})]),_c('span',[_vm._v(_vm._s(_vm._('Filter seats')))])]),_c('span',{staticClass:\"item-filter-item\"},[_c('input',{ref:\"checkall\",attrs:{\"type\":\"checkbox\",\"id\":\"item-filter-all-none\"},domProps:{\"checked\":_vm.isItemFilterEmpty},on:{\"change\":_vm.onItemFilterAllNone}}),_c('label',{attrs:{\"for\":\"item-filter-all-none\"}},[_vm._v(_vm._s(_vm._('Select all')))])])]),_c('fieldset',{attrs:{\"id\":\"items-filter-fieldset\"}},[_c('legend',[_vm._v(_vm._s(_vm._('Filter seats')))]),_c('ul',{ref:\"itemlist\",staticClass:\"items-filter-items\"},_vm._l((_vm.items),function(i){return _c('items-filter-item',{key:i.id,attrs:{\"item\":i}})}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{class:_vm.classObject},[_c('input',{attrs:{\"type\":\"checkbox\",\"id\":_vm.inputName},domProps:{\"checked\":_vm.isChecked},on:{\"change\":_vm.onChange}}),_c('label',{attrs:{\"for\":_vm.inputName}},[_c('strong',[_vm._v(_vm._s(_vm.item.name))]),_c('span',{staticClass:\"item-price text-muted\"},[_vm._v(_vm._s(_vm.priceLabel))])]),_c('span',{staticClass:\"cat-dots\"},_vm._l((_vm.categoryIndexes),function(idx){return _c('span',{staticClass:\"cat-dot\",style:(_vm.categoryDotStyle(idx))})}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\nli(:class=\"classObject\")\n\tinput(type=\"checkbox\" @change=\"onChange\" :checked=\"isChecked\" :id=\"inputName\")\n\tlabel(:for=\"inputName\")\n\t\tstrong {{item.name}}\n\t\tspan.item-price.text-muted {{priceLabel}}\n\tspan.cat-dots\n\t\tspan.cat-dot(v-for=\"idx in categoryIndexes\" :style=\"categoryDotStyle(idx)\")\n</template>\n<script>\nimport {mapGetters} from 'vuex'\n\nexport default {\n\tprops: {\n\t\titem: Object,\n\t},\n\tdata () {\n\t\treturn {\n\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters('plan', ['categories']),\n\t\t...mapGetters('filter', ['isFiltered']),\n\t\tisChecked () {\n\t\t\treturn !this.isFiltered(this.item)\n\t\t},\n\t\tcategoryIndexes () {\n\t\t\tconst indexes = []\n\t\t\tthis.item.categories.forEach(category => {\n\t\t\t\tconst idx = this.categories.findIndex(c => c.name === category)\n\t\t\t\tif (idx > -1) indexes.push(idx)\n\t\t\t})\n\t\t\treturn indexes\n\t\t},\n\t\tclassObject () {\n\t\t\treturn {\n\t\t\t\t'item-filter-item': true,\n\t\t\t\t// isChecked: this.isChecked,\n\t\t\t}\n\t\t},\n\t\tinputName () {\n\t\t\treturn 'item-filter-' + this.item.id\n\t\t},\n\t\tpriceLabel () {\n\t\t\tif (!this.item.variations || !this.item.variations.length) return this.item.price\n\t\t\tconst prices = this.item.variations.map(v => v.price)\n\t\t\t// filter to unique prices in case variations have the same price\n\t\t\treturn prices.filter((v, i, a) => a.indexOf(v) === i).join(' / ')\n\t\t}\n\t},\n\tmethods: {\n\t\tcategoryDotStyle (idx) {\n\t\t\treturn `background: var(--category-${idx}-color)`\n\t\t},\n\t\tonChange (event) {\n\t\t\tthis.$store.commit(event.target.checked ? 'filter/remove' : 'filter/add', { item: this.item })\n\t\t}\n\t},\n}\n</script>\n<style lang=\"stylus\">\n\t.item-filter-item\n\t\tdisplay: flex\n\t\talign-items: flex-start\n\t\tmargin: 0\n\t\tpadding: 0.7em 0 0.4em\n\t\tgap: 0.25em\n\n\t\t&+.item-filter-item\n\t\t\tborder-top: 1px solid #ccc\n\n\t\tlabel\n\t\t\tflex: 1\n\t\t\tcursor: pointer\n\t\t\tdisplay: flex\n\t\t\tflex-wrap: wrap\n\t\t\tgap: .5em\n\n\t\t\tstrong\n\t\t\t\tflex: 1\n\n\t\t.cat-dot\n\t\t\tdisplay: inline-block\n\t\t\twidth: 1em\n\t\t\theight: 1em\n\t\t\tborder-radius: 50%\n\t\t\tborder: 2px solid #fff\n\t\t\tmargin-right: 0.4em\n\n\t\t.cat-dot + .cat-dot\n\t\t\tmargin-left: -1.1em\n\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ItemsFilterItem.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ItemsFilterItem.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ItemsFilterItem.vue?vue&type=template&id=fe7bb7f8&lang=pug\"\nimport script from \"./ItemsFilterItem.vue?vue&type=script&lang=js\"\nexport * from \"./ItemsFilterItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemsFilterItem.vue?vue&type=style&index=0&id=fe7bb7f8&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template lang=\"pug\">\ndiv(:class=\"classObject\")\n\tp.items-filter-head\n\t\tbutton.toggle(type=\"button\" @click=\"toggleList\" ref=\"toggle\" aria-expanded=\"false\" aria-controls=\"items-filter-fieldset\")\n\t\t\tsvg(id=\"filter-icon\" svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\" role=\"img\")\n\t\t\t\ttitle {{ _('Filter') }}\n\t\t\t\trect(id=\"filter-icon-box\" x=\"3.5\" y=\"3.5\" width=\"10\" height=\"10\" rx=\"1\" ry=\"1\" fill=\"none\")\n\t\t\t\tpolyline(id=\"filter-icon-check\" points=\"5.5 8 8 10.5 12 6.5\" stroke-width=\"1.5\")\n\t\t\t\tuse(href=\"#filter-icon-box\" x=\"0\" y=\"13\")\n\t\t\t\tuse(id=\"filter-icon-check-2\" href=\"#filter-icon-check\" x=\"0\" y=\"13\")\n\t\t\t\tpolyline(id=\"filter-icon-pointer\" points=\"17 14 22 18 27 14\" stroke-width=\"2\" vector-effect=\"non-scaling-stroke\")\n\t\t\tspan {{ _('Filter seats') }}\n\t\tspan.item-filter-item\n\t\t\tinput(ref=\"checkall\" type=\"checkbox\" @change=\"onItemFilterAllNone\" :checked=\"isItemFilterEmpty\" id=\"item-filter-all-none\")\n\t\t\tlabel(for=\"item-filter-all-none\") {{ _('Select all') }}\n\n\tfieldset#items-filter-fieldset\n\t\tlegend {{ _('Filter seats') }}\n\t\tul.items-filter-items(ref=\"itemlist\")\n\t\t\titems-filter-item(v-for=\"i in items\" :item=\"i\" :key=\"i.id\")\n</template>\n<script>\nimport {mapGetters} from 'vuex'\nimport ItemsFilterItem from './ItemsFilterItem'\n\nexport default {\n\tcomponents: { ItemsFilterItem },\n\tdata () {\n\t\treturn {\n\t\t\tisOpen: false,\n\t\t\tresizeTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters('ui', ['_']),\n\t\t...mapGetters('event', ['items']),\n\t\t...mapGetters('filter', {filteredItems: 'items'}),\n\t\tclassObject () {\n\t\t\treturn {\n\t\t\t\t'items-filter': true,\n\t\t\t\t'filter-empty': this.isItemFilterEmpty,\n\t\t\t\t'filter-full': this.isItemFilterFull,\n\t\t\t\topen: this.isOpen,\n\t\t\t}\n\t\t},\n\t\tisItemFilterEmpty () {\n\t\t\treturn this.filteredItems.length === 0\n\t\t},\n\t\tisItemFilterFull () {\n\t\t\treturn this.filteredItems.length === this.items.length\n\t\t}\n\t},\n\twatch: {\n\t\tfilteredItems (newValue, oldValue) {\n\t\t\tthis.$refs.checkall.indeterminate = newValue.length > 0 && newValue.length < this.items.length\n\t\t},\n\t},\n\tmounted () {\n\t\tthis.$el.addEventListener('click', this.onClick)\n\t},\n\tdestroyed () {\n\t\tthis.$el.removeEventListener('click', this.onClick)\n\t},\n\tmethods: {\n\t\ttoggleList (event) {\n\t\t\tthis.isOpen = !this.isOpen\n\t\t\tthis.$refs.toggle.setAttribute('aria-expanded', this.isOpen)\n\t\t\tif (this.isOpen) {\n\t\t\t\tthis.calcMaxHeight()\n\t\t\t\twindow.addEventListener('click', this.onBgClick, { once: true })\n\t\t\t} else {\n\t\t\t\twindow.removeEventListener('click', this.onBgClick)\n\t\t\t}\n\t\t},\n\t\tonClick (event) {\n\t\t\t// do not bubble events as bgClick on window.click would trigger an immediate close\n\t\t\tevent.stopImmediatePropagation()\n\t\t},\n\t\tonBgClick (event) {\n\t\t\tthis.toggleList(event)\n\t\t},\n\t\tonItemFilterAllNone (event) {\n\t\t\tthis.items.forEach(item => {\n\t\t\t\tthis.$store.commit(event.target.checked ? 'filter/remove' : 'filter/add', { item })\n\t\t\t})\n\t\t},\n\t\tcalcMaxHeight () {\n\t\t\tconst bbox = this.$el.parentNode.getBoundingClientRect()\n\t\t\tthis.$refs.itemlist.style.maxHeight = 'calc(' + bbox.height + 'px - 5em)'\n\t\t},\n\t},\n}\n</script>\n<style lang=\"stylus\">\n\t.items-filter\n\t\tposition: absolute\n\t\ttop: 1.15em\n\t\tright: 1.15em\n\n\t\tfieldset\n\t\t\tdisplay: none\n\t\t\tborder: none\n\t\t\tpadding: 0\n\t\t\tmargin: 0\n\t\tlegend\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t\theight: 1px;\n\t\t\tpadding: 0;\n\t\t\tmargin: -1px;\n\t\t\toverflow: hidden;\n\t\t\tclip: rect(0, 0, 0, 0);\n\t\t\tborder: 0;\n\n\t.items-filter-head\n\t\tmargin: .35em\n\t\tpadding: 0\n\t\tdisplay: flex\n\t\tgap: .5em\n\t\talign-items: center\n\t\tflex-direction: row-reverse;\n\n\t\t.item-filter-item\n\t\t\tdisplay: none\n\t\t\tpadding: 0\n\t\t\tflex: 1\n\n\t\t\tlabel\n\t\t\t\tflex: 1\n\t\t\t\tfont-weight: bold\n\n\t.open\n\t\tmax-width: calc(100% - 1.7em)\n\t\tpadding-bottom: .25em\n\t\tbackground-color: #fff\n\t\t--outer-border-radius: calc(var(--border-radius, 0) * 2)\n\t\tborder-radius: var(--outer-border-radius)\n\t\tbox-shadow: 2px 3px 6px rgba(0,0,0,0.25)\n\n\t\t.items-filter-head\n\t\t\tmargin: 0\n\t\t\tpadding: .35em .35em .35em .8em\n\t\t\tbackground-color: #e5e5e5\n\t\t\tborder-radius: var(--outer-border-radius) var(--outer-border-radius) 0 0\n\n\t\t\t.item-filter-item\n\t\t\t\tdisplay: flex\n\n\t\tfieldset\n\t\t\tdisplay: block\n\n\t.items-filter-items\n\t\tmargin: 0\n\t\tpadding: 0 .8em 0 .8em\n\t\tlist-style: none\n\t\toverflow-y: auto\n\n\t.toggle\n\t\tpadding: 0 .5em 0 0\n\t\twhite-space: nowrap\n\t\tborder: 1px solid rgba(0,0,0,0.25)\n\t\tborder-radius: var(--border-radius, 0)\n\t\tcursor: pointer\n\t\tbackground-color: rgba(236,236,236,0.8)\n\t\tfont-weight: bold\n\t\tdisplay: flex\n\t\talign-items: center\n\n\t.toggle:hover\n\t\tbackground-color: #f9f9f9\n\n\t.open .toggle\n\t\tbackground-color: #f9f9f9\n\n\t#filter-icon\n\t\twidth: 32px\n\t\theight: 32px\n\t\tstroke: #555\n\t\tstroke-linecap: butt\n\t\tstroke-linejoin: miter\n\t\tfill:none\n\n\t#filter-icon-check-2\n\t\tdisplay: none\n\t.filter-full #filter-icon-check\n\t\tdisplay: none\n\t.filter-empty #filter-icon-check-2\n\t\tdisplay: block\n\n\t#filter-icon-pointer\n\t\ttransform-origin: 22px 15px\n\t\ttransform: rotate(-90deg)\n\t\ttransition: transform .5s\n\t.open #filter-icon-pointer\n\t\ttransform: rotate(0deg)\n\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ItemsFilter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ItemsFilter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ItemsFilter.vue?vue&type=template&id=5050de1b&lang=pug\"\nimport script from \"./ItemsFilter.vue?vue&type=script&lang=js\"\nexport * from \"./ItemsFilter.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemsFilter.vue?vue&type=style&index=0&id=5050de1b&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.cursor)?_c('div',{class:_vm.cssClasses}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\ndiv(v-if=\"cursor\", :class=\"cssClasses\")\n</template>\n<script>\n\nexport default {\n\tprops: {\n\t\tcursor: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\tcssClasses () {\n\t\t\treturn 'cursor-addon ' + this.cursor\n\t\t},\n\t},\n\tmounted () {\n\t\twindow.addEventListener('mousemove', this.mousemove)\n\t},\n\tdestroyed () {\n\t\twindow.removeEventListener('mousemove', this.mousemove)\n\t},\n\tmethods: {\n\t\tmousemove (e) {\n\t\t\tconst bbox = this.$el.parentNode.getBoundingClientRect()\n\t\t\tthis.$el.style.left = (event.clientX - bbox.x) + 'px'\n\t\t\tthis.$el.style.top = (event.clientY - bbox.y) + 'px'\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t.cursor-addon\n\t\tmargin-top: -.6em\n\t\tmargin-left: -.8em\n\t\tcolor: black\n\t\tposition: absolute\n\t\ttop: 0\n\t\tleft: 0\n\t\tfont-weight: bold\n\n\t.cursor-addon.add\n\t\tdisplay: block\n\t\t&:before {\n\t\t\tcontent: \"+\"\n\t\t}\n\t.cursor-addon.remove\n\t\tdisplay: block\n\t\t&:before {\n\t\t\tfont-weight: bold\n\t\t\tcontent: \"–\"\n\t\t}\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CursorAddon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CursorAddon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CursorAddon.vue?vue&type=template&id=26687f41&lang=pug\"\nimport script from \"./CursorAddon.vue?vue&type=script&lang=js\"\nexport * from \"./CursorAddon.vue?vue&type=script&lang=js\"\nimport style0 from \"./CursorAddon.vue?vue&type=style&index=0&id=26687f41&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.instructions)?_c('div',{staticClass:\"instructions\"},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.instructions)}})]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\ntransition(name=\"fade\")\n\t.instructions(v-if=\"instructions\")\n\t\tp(v-html=\"instructions\")\n</template>\n<script>\nimport {mapGetters} from 'vuex'\n\nexport default {\n\tdata () {\n\t\treturn {\n\t\t\tfadeoutTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters(['instructions']),\n\t},\n\t/*\n\twatch: {\n\t\t'$store.state.instructions': function (newValue, oldValue) {\n\t\t\t// auto-hide instructions after 2.5s\n\t\t\tif (this.fadeoutTimeout) {\n\t\t\t\twindow.clearTimeout(this.fadeoutTimeout)\n\t\t\t}\n\t\t\tif (newValue) {\n\t\t\t\tthis.fadeoutTimeout = window.setTimeout(() => this.$store.commit('clearInstructions'), 2500)\n\t\t\t}\n\t\t}\n\t},\n\t*/\n}\n</script>\n<style lang=\"stylus\">\n\t.fade-enter-active, .fade-leave-active\n\t\ttransition: opacity .5s\n\n\t.fade-enter, .fade-leave-to\n\t\topacity: 0\n\n\t.instructions\n\t\tfont-size: 1em\n\t\tposition: absolute\n\t\ttop: 0\n\t\tleft: 0\n\t\twidth: 100%\n\t\theight: 100%\n\t\tbackground: rgba(0,0,0,.8)\n\t\tcolor: #fff\n\t\tfont-weight: bold\n\t\tdisplay: flex\n\t\talign-items: center\n\t\tjustify-content: center\n\t\tflex-direction: column\n\t\ttext-align: center\n\t\ttouch-action: pan-x, pan-y\n\t\tpointer-events: none\n\n\t\tkbd\n\t\t\tborder-width: 1px 2px 2px 1px\n\t\t\tborder-style: solid\n\t\t\tborder-radius: 2px\n\t\t\tdisplay: inline-block\n\t\t\tpadding: 0 0.25em\n\t\t\tmargin: 0 0.25em\n\t\t\tbackground-color: rgba(255,255,255,0.2)\n\t\t\tbox-shadow: 1px 1px 2px #fff\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InstructionsOverlay.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InstructionsOverlay.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./InstructionsOverlay.vue?vue&type=template&id=2499ec1a&lang=pug\"\nimport script from \"./InstructionsOverlay.vue?vue&type=script&lang=js\"\nexport * from \"./InstructionsOverlay.vue?vue&type=script&lang=js\"\nimport style0 from \"./InstructionsOverlay.vue?vue&type=style&index=0&id=2499ec1a&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('g',{staticClass:\"zone\",attrs:{\"transform\":_vm.transform}},[_vm._l((_vm.zone.areas),function(a){return _c('plan-area',{key:a.uuid,attrs:{\"area\":a,\"zone\":_vm.zone}})}),_c('g',{ref:\"toggle\",attrs:{\"role\":\"button\",\"tabindex\":_vm.isTabable ? 0 : -1,\"aria-label\":_vm.zone.name,\"aria-controls\":'zone-rows-' + _vm.zone.index,\"aria-expanded\":_vm.zone.active ? 'true' : 'false'},on:{\"click\":_vm.toggleActive,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggleActive.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.toggleActive.apply(null, arguments)}],\"~focus\":function($event){return _vm.setToggleSize.apply(null, arguments)}}},[_c('rect',{ref:\"outline\",attrs:{\"vector-effect\":\"non-scaling-stroke\"}}),_c('polyline',{attrs:{\"points\":\"-1.5,-3 1.5,0 -1.5,3\",\"vector-effect\":\"non-scaling-stroke\"}}),_c('text',[_vm._v(_vm._s(_vm.zone.name))])]),(_vm.hideWithPolygon)?[_c('polygon',{ref:\"container\",staticClass:\"convexhull\",attrs:{\"fill\":_vm.hullPolygonColor,\"points\":_vm.hullPointPolygon,\"cursor\":\"pointer\",\"vector-effect\":\"non-scaling-stroke\"},on:{\"click\":_vm.toggleActive}})]:_c('g',{ref:\"container\",attrs:{\"aria-hidden\":_vm.zone.active ? 'false' : 'true',\"id\":'zone-rows-' + _vm.zone.index}},_vm._l((_vm.zone.rows),function(r){return _c('plan-row',{key:r.index,ref:\"rows\",refInFor:true,attrs:{\"row\":r,\"zone\":_vm.zone}})}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('g',{staticClass:\"row\",attrs:{\"transform\":_vm.transform}},[(_vm.rowNumberStart)?_c('text',{attrs:{\"x\":_vm.rowNumberStart.x,\"y\":_vm.rowNumberStart.y,\"dy\":\".3em\",\"fontSize\":\"12px\",\"text-anchor\":_vm.rowNumberStart.textAnchor,\"transform\":_vm.rowNumberStart.transform,\"fill\":\"#888\",\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.row.row_number))]):_vm._e(),(_vm.rowNumberEnd)?_c('text',{attrs:{\"x\":_vm.rowNumberEnd.x,\"y\":_vm.rowNumberEnd.y,\"dy\":\".3em\",\"fontSize\":\"12px\",\"text-anchor\":_vm.rowNumberEnd.textAnchor,\"transform\":_vm.rowNumberEnd.transform,\"fill\":\"#888\",\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.row.row_number))]):_vm._e(),_c('g',{ref:\"toggle\",attrs:{\"role\":\"button\",\"tabindex\":_vm.isTabable ? 0 : -1,\"aria-label\":_vm.label,\"aria-controls\":'row-seats-' + _vm.zone.index + '-' + _vm.row.index,\"aria-expanded\":_vm.row.active ? 'true' : 'false'},on:{\"click\":_vm.toggleActive,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggleActive.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.toggleActive.apply(null, arguments)}],\"~focus\":function($event){return _vm.setToggleSize.apply(null, arguments)}}},[_c('rect',{ref:\"outline\",attrs:{\"vector-effect\":\"non-scaling-stroke\"}}),_c('polyline',{attrs:{\"points\":\"-1.5,-3 1.5,0 -1.5,3\",\"vector-effect\":\"non-scaling-stroke\"}}),_c('text',[_vm._v(_vm._s(_vm.label))])]),_c('g',{ref:\"container\",attrs:{\"aria-hidden\":_vm.row.active ? 'false' : 'true',\"id\":'row-seats-' + _vm.zone.index + '-' + _vm.row.index}},_vm._l((_vm.row.seats),function(s){return _c('plan-seat',{key:s.uuid,ref:\"seats\",refInFor:true,attrs:{\"seat\":s,\"zone\":_vm.zone,\"row\":_vm.row}})}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('g',{ref:\"seat\",class:_vm.classObject,attrs:{\"tabindex\":_vm.isTabable ? 0 : -1,\"aria-label\":_vm.ariaLabel,\"aria-describedby\":_vm.ariaDescriptionId,\"role\":_vm.ariaRole,\"aria-disabled\":_vm.ariaDisabled,\"aria-checked\":_vm.ariaChecked},on:{\"click\":_vm.toggleSelected,\"mouseenter\":_vm.mouseenter,\"mouseleave\":_vm.mouseleave,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.toggleSelected.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;$event.preventDefault();return _vm.toggleSelected.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.unfocus.apply(null, arguments)}],\"focus\":_vm.focus,\"blur\":_vm.unfocus}},[_c('circle',{staticClass:\"focusring\",attrs:{\"cx\":_vm.seat.position.x,\"cy\":_vm.seat.position.y,\"r\":_vm.radius+3,\"stroke\":_vm.categoryColor}}),_c('circle',{staticClass:\"area\",attrs:{\"cx\":_vm.seat.position.x,\"cy\":_vm.seat.position.y,\"r\":_vm.radius,\"fill\":_vm.categoryColor,\"stroke\":_vm.categoryColor}}),_c('text',{staticClass:\"label\",attrs:{\"x\":_vm.seat.position.x,\"y\":_vm.seat.position.y,\"dy\":\".35em\"}},[_vm._v(_vm._s(_vm.seatLabel))]),_c('text',{staticClass:\"description\",attrs:{\"x\":_vm.seat.position.x,\"y\":_vm.seat.position.y,\"dy\":\".35em\",\"id\":_vm.ariaDescriptionId}},[_vm._v(_vm._s(_vm.seatDescription))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\ng(ref=\"seat\", @click=\"toggleSelected\", @mouseenter=\"mouseenter\", @mouseleave=\"mouseleave\", @keydown.enter=\"toggleSelected\", @keydown.space.prevent=\"toggleSelected\", @keydown.esc=\"unfocus\", @focus=\"focus\", @blur=\"unfocus\", :class=\"classObject\", :tabindex=\"isTabable ? 0 : -1\" v-bind:aria-label=\"ariaLabel\" v-bind:aria-describedby=\"ariaDescriptionId\" :role=\"ariaRole\" v-bind:aria-disabled=\"ariaDisabled\" v-bind:aria-checked=\"ariaChecked\")\n\tcircle(class=\"focusring\", :cx=\"seat.position.x\", :cy=\"seat.position.y\", :r=\"radius+3\", :stroke=\"categoryColor\")\n\tcircle(class=\"area\", :cx=\"seat.position.x\", :cy=\"seat.position.y\", :r=\"radius\", :fill=\"categoryColor\", :stroke=\"categoryColor\")\n\ttext(:x=\"seat.position.x\" :y=\"seat.position.y\" dy=\".35em\" class=\"label\") {{ seatLabel }}\n\ttext(:x=\"seat.position.x\" :y=\"seat.position.y\" dy=\".35em\" class=\"description\" :id=\"ariaDescriptionId\") {{ seatDescription }}\n\n</template>\n<script>\nimport {contrast, hex2rgb} from '../../lib/colors'\nimport {mapGetters} from 'vuex'\n\nexport default {\n\tprops: {\n\t\tseat: Object,\n\t\trow: Object,\n\t\tzone: Object,\n\t},\n\tdata: function () {\n\t\treturn {\n\t\t\tmouseEntered: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t// eslint-disable-next-line no-undef\n\t\t...mapGetters('plan', ['categories', 'getCategoryByName']),\n\t\t...mapGetters('event', ['isSeatAvailable', 'getItem', 'getTooltip', 'getFlag']),\n\t\t...mapGetters('filter', {isItemFiltered: 'isFiltered'}),\n\t\t...mapGetters('ui', ['_']),\n\t\t...mapGetters(['seatInFocus', 'isDragging', 'isAreaSelecting']),\n\t\tclassObject () {\n\t\t\treturn {\n\t\t\t\tseat: true,\n\t\t\t\tselected: this.isSelected,\n\t\t\t\tavailable: this.isAvailable,\n\t\t\t\tfiltered: this.isFiltered,\n\t\t\t\thiddenLabel: !this.flag,\n\t\t\t\tdarkBg: contrast([0, 0, 0], hex2rgb(this.category.color)) < 5,\n\t\t\t\tuncategorized: !this.category,\n\t\t\t}\n\t\t},\n\t\tcategory () {\n\t\t\treturn this.getCategoryByName(this.seat.category)\n\t\t},\n\t\titem () {\n\t\t\treturn this.getItem(this.seat.category)\n\t\t},\n\t\tisSelected () {\n\t\t\treturn this.seat && this.seat.selected\n\t\t},\n\t\tisAvailable () {\n\t\t\t// seat has a buyable product and seat is not taken yet\n\t\t\treturn this.item && this.isSeatAvailable(this.seat)\n\t\t},\n\t\tisTabable () {\n\t\t\treturn this.$parent.isTabable && this.row.active && this.isAvailable && !this.isFiltered\n\t\t},\n\t\tisFiltered () {\n\t\t\treturn this.isItemFiltered(this.item)\n\t\t},\n\t\tariaLabel () {\n\t\t\tif (!this.isAvailable) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tconst label = this.seat.row.seat_label || this._('Seat %s')\n\t\t\treturn label.replace('%s', this.seat.seat_number).trim()\n\t\t},\n\t\tariaRole () {\n\t\t\treturn this.isAvailable ? 'checkbox' : null\n\t\t},\n\t\tariaDisabled () {\n\t\t\treturn this.isTabable ? 'false' : 'true'\n\t\t},\n\t\tariaChecked () {\n\t\t\tif (!this.isAvailable) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn this.isSelected ? 'true' : 'false'\n\t\t},\n\t\tariaDescriptionId () {\n\t\t\treturn 'seat-description-' + this.seat.seat_guid\n\t\t},\n\t\tpriceFormatted () {\n\t\t\tif (!this.item.variations || !this.item.variations.length) return this.item.price\n\t\t\tconst prices = this.item.variations.map(v => v.price)\n\t\t\treturn prices.join(' / ')\n\t\t},\n\t\tseatDescription () {\n\t\t\tlet description = this.getTooltip(this.seat) || ''\n\t\t\tif (description) description += '\\n'\n\t\t\tif (this.item && this.isAvailable) {\n\t\t\t\tdescription += this._('%(item)s\\n%(price)s')\n\t\t\t\t\t.replace('%(item)s', this.item.name)\n\t\t\t\t\t.replace('%(price)s', this.priceFormatted)\n\t\t\t} else {\n\t\t\t\tdescription += this._('This seat is currently not available.')\n\t\t\t}\n\t\t\treturn description\n\t\t},\n\t\tradius () {\n\t\t\tif (this.seat.radius !== undefined) {\n\t\t\t\treturn this.seat.radius * (this.mouseEntered ? 1.1 : 1)\n\t\t\t} else {\n\t\t\t\treturn 10 * (this.mouseEntered ? 1.1 : 1)\n\t\t\t}\n\t\t},\n\t\tflag () {\n\t\t\treturn this.getFlag(this.seat)\n\t\t},\n\t\tseatLabel () {\n\t\t\treturn this.flag || this.seat.seat_number\n\t\t},\n\t\tcategoryColor () {\n\t\t\tconst catIndex = this.categories.findIndex(c => c.name === this.seat.category)\n\t\t\treturn `var(--category-${catIndex}-color, #666666)`\n\t\t},\n\t},\n\tmethods: {\n\t\ttoggleSelected (event) {\n\t\t\tif (this.isAreaSelecting) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (this.isFiltered) {\n\t\t\t\t// a click on a filtered seat/item activates item again\n\t\t\t\tthis.$store.commit('filter/remove', { item: this.item })\n\t\t\t\tthis.$store.commit('focusSeat', {seat: this.seat, element: this.$refs.seat})\n\t\t\t} else if (this.isAvailable) {\n\t\t\t\tthis.$store.commit('activate', this.row)\n\t\t\t\tthis.$store.commit(this.seat.selected ? 'unselect' : 'select', {seats: [this.seat]})\n\t\t\t}\n\t\t},\n\t\tmouseenter (event) {\n\t\t\tthis.mouseEntered = true\n\t\t\tif (!this.isDragging && !this.isFiltered) {\n\t\t\t\tthis.$store.commit('focusSeat', {seat: this.seat, element: this.$refs.seat})\n\t\t\t}\n\t\t},\n\t\tmouseleave (event) {\n\t\t\tthis.mouseEntered = false\n\t\t\tthis.$store.commit('unfocusSeat', {seat: this.seat})\n\t\t},\n\t\tfocus (event) {\n\t\t\tif (this.isAvailable && !this.isFiltered) {\n\t\t\t\tthis.$store.commit('focusSeat', {seat: this.seat, element: this.$refs.seat})\n\t\t\t} else {\n\t\t\t\tthis.$refs.seat.blur()\n\t\t\t}\n\t\t},\n\t\tunfocus (event) {\n\t\t\tthis.$store.commit('unfocusSeat', {seat: this.seat})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"stylus\">\n\t.seat.available\n\t\tcursor: pointer\n\t.seat .area\n\t\tstroke-width: 1px\n\t.uncategorized .area\n\t\tfill: #fff\n\t\tstroke: #666\n\t.seat:not(.available):not(.filtered) .area\n\t\tfill: #d9d9d9\n\t\tstroke: #d9d9d9\n\t.selected .area\n\t\tfill: #fff\n\n\t.seat .label\n\t\tfont-size: 10px\n\t\ttext-anchor: middle\n\t\tfill: #000\n\t.darkBg .label\n\t\tfill: #fff\n\t.selected .label\n\t\tfill: #666\n\n\t.hiddenLabel .label\n\t\tdisplay: none\n\t.available:hover .label, .available:focus .label, .selected .label\n\t\tdisplay: block\n\t.filtered:not(.selected) .label\n\t\tdisplay: none !important\n\n\t.focusring\n\t\tvisibility: hidden\n\t\tfill: none\n\t\tstroke-width: 2px\n\t.seat:not(.available) .focusring,\n\t.uncategorized .focusring\n\t\tstroke: #d9d9d9\n\n\t.seat .description\n\t\tdisplay: none\n\n\t.seat:focus\n\t\toutline: none\n\n\t\t.focusring\n\t\t\tvisibility: visible\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanSeat.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanSeat.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlanSeat.vue?vue&type=template&id=eb07059c&lang=pug\"\nimport script from \"./PlanSeat.vue?vue&type=script&lang=js\"\nexport * from \"./PlanSeat.vue?vue&type=script&lang=js\"\nimport style0 from \"./PlanSeat.vue?vue&type=style&index=0&id=eb07059c&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template lang=\"pug\">\ng(:transform=\"transform\", class=\"row\")\n\ttext(v-if=\"rowNumberStart\", :x=\"rowNumberStart.x\", :y=\"rowNumberStart.y\", dy=\".3em\", fontSize=\"12px\", :text-anchor=\"rowNumberStart.textAnchor\", :transform=\"rowNumberStart.transform\", fill=\"#888\", aria-hidden=\"true\") {{row.row_number}}\n\ttext(v-if=\"rowNumberEnd\", :x=\"rowNumberEnd.x\", :y=\"rowNumberEnd.y\", dy=\".3em\", fontSize=\"12px\", :text-anchor=\"rowNumberEnd.textAnchor\", :transform=\"rowNumberEnd.transform\", fill=\"#888\", aria-hidden=\"true\") {{row.row_number}}\n\tg(\n\t\tref=\"toggle\"\n\t\trole=\"button\"\n\t\t:tabindex=\"isTabable ? 0 : -1\"\n\t\tv-bind:aria-label=\"label\"\n\t\tv-bind:aria-controls=\"'row-seats-' + zone.index + '-' + row.index\"\n\t\tv-bind:aria-expanded=\"row.active ? 'true' : 'false'\"\n\t\t@click=\"toggleActive\"\n\t\t@keydown.space.prevent=\"toggleActive\"\n\t\t@keydown.enter=\"toggleActive\"\n\t\t@focus.once=\"setToggleSize\"\n\t)\n\t\trect(ref=\"outline\" vector-effect=\"non-scaling-stroke\")\n\t\tpolyline(points=\"-1.5,-3 1.5,0 -1.5,3\" vector-effect=\"non-scaling-stroke\")\n\t\t//- <text> is needed for VoiceOver on iOS Safari to work at all\n\t\ttext {{ label }}\n\tg(\n\t\tv-bind:aria-hidden=\"row.active ? 'false' : 'true'\"\n\t\t:id=\"'row-seats-' + zone.index + '-' + row.index\"\n\t\tref=\"container\"\n\t)\n\t\tplan-seat(v-for=\"s in row.seats\", :seat=\"s\", :key=\"s.uuid\", :zone=\"zone\", :row=\"row\", ref=\"seats\")\n\n</template>\n<script>\nimport PlanSeat from './PlanSeat'\nimport {mapGetters} from 'vuex'\n\nconst round = (fl, places) => Number(fl.toFixed(places || 0))\n\nconst getRowNumber = (row, end) => {\n\tif (row.row_number_position !== 'both' && row.row_number_position !== (end ? 'end' : 'start')) return null\n\tif (row.seats.length < 2) return null\n\n\t// To determine the *position* of the row number, we calculate the vector from the second-outmost\n\t// seat to the outmost seat and extend it by distFactor times the radius of the outmost seat.\n\tconst distFactor = 2 // Determined by \"what looks good?\" with lots of real plans\n\tconst idxedge = end ? row.seats.length - 1 : 0\n\tconst idxcomp = end ? row.seats.length - 2 : 1\n\tconst linevec = [\n\t\trow.seats[idxedge].position.x - row.seats[idxcomp].position.x,\n\t\trow.seats[idxedge].position.y - row.seats[idxcomp].position.y,\n\t]\n\tconst linelen = Math.sqrt(linevec[0] * linevec[0] + linevec[1] * linevec[1])\n\tconst linevecNormed = [\n\t\tround(linevec[0] / linelen, 8), // prevent floating point issues\n\t\tround(linevec[1] / linelen, 8),\n\t]\n\n\tconst x = row.seats[idxedge].position.x + linevecNormed[0] * distFactor * (row.seats[idxedge].radius || 10)\n\tconst y = row.seats[idxedge].position.y + linevecNormed[1] * distFactor * (row.seats[idxedge].radius || 10)\n\n\t// To support upside-down rows properly, we base the text-anchor on the vector, not on the end flag\n\tlet flipped = linevecNormed[0] < 0\n\n\t// To determine the *rotation* of the row number, we compute the angle between the vector from the\n\t// second-outmost seat to the outmost seat and the vertical axis.\n\t// We then rotate the result 90° in the direction of the vertical axis, because we want our vector\n\t// to be the text's length axis, not it's size axis.\n\t// We use atan(), which only returns results between -90° and 90°. This is nice, because it mean\n\t// we'll never render text which is upside down, but alwas favor the direction most suitable to read.\n\t// The exception is if we have a perfectly vertical row, in which case it is unclear whether -90° or 90°\n\t// is easier to read. Visually, it looks nice if the text is rotated in the way that it is correct\n\t// \"looking from the stage\". We don't know where the stage is, so we're assuming the order of the seats\n\t// in the row is \"left to right\" (looking from the seat to the stage), because that's the most likely way\n\t// to create the row.\n\tlet transform = ''\n\tlet theta = -Math.atan(linevecNormed[0] / linevecNormed[1])\n\ttheta -= (Math.sign(theta) >= 0 ? 1 : -1) * Math.PI / 2 // Do not use Math.sign directly to multiply because Math.sign(0)==0\n\tif (Math.abs(Math.abs(theta) - Math.PI / 2) < 0.0001) { // 90°\n\t\tif ((linevecNormed[1] > 0) !== end) { // right of stage\n\t\t\ttheta += Math.PI\n\t\t}\n\t\tflipped = end\n\t}\n\tif (Math.abs(theta) > 0.0001) {\n\t\ttransform = `rotate(${theta / Math.PI * 180}, ${x}, ${y})`\n\t}\n\n\treturn {\n\t\tx,\n\t\ty,\n\t\ttextAnchor: flipped ? 'end' : 'start',\n\t\ttransform,\n\t}\n}\n\nexport default {\n\tcomponents: { PlanSeat },\n\tprops: {\n\t\trow: Object,\n\t\tzone: null,\n\t},\n\tcomputed: {\n\t\t...mapGetters('event', ['isSeatAvailable', 'getItem']),\n\t\t...mapGetters('filter', {isItemFiltered: 'isFiltered'}),\n\t\t...mapGetters('ui', ['_']),\n\t\t...mapGetters(['seatInFocus']),\n\t\ttransform () {\n\t\t\treturn `translate(${this.row.position.x}, ${this.row.position.y})`\n\t\t},\n\t\trowNumberStart () {\n\t\t\treturn getRowNumber(this.row, false)\n\t\t},\n\t\trowNumberEnd () {\n\t\t\treturn getRowNumber(this.row, true)\n\t\t},\n\t\tlabel () {\n\t\t\tconst label = this.row.row_label || this._('Row %s')\n\t\t\treturn label.replace('%s', this.row.row_number).trim() + (this.description ? ', ' + this.description : '')\n\t\t},\n\t\thtmlId () {\n\t\t\treturn 'row-' + this.zone.index + '-' + this.row.index\n\t\t},\n\t\tisTabable () {\n\t\t\treturn this.$parent.isTabable && this.zone.active\n\t\t},\n\t\tdescription () {\n\t\t\tconst availableSeats = this.row.seats.filter(seat => this.getItem(seat.category) && this.isSeatAvailable(seat) && !this.isItemFiltered(this.getItem(seat.category)))\n\t\t\treturn availableSeats.length\n\t\t\t\t? this._('%(available)s of %(total)s seats available for selection')\n\t\t\t\t\t.replace('%(available)s', availableSeats.length)\n\t\t\t\t\t.replace('%(total)s', this.row.seats.length)\n\t\t\t\t: this._('no seats available for selection')\n\t\t},\n\t},\n\twatch: {\n\t\t'row.active' (newValue) {\n\t\t\tif (newValue) this.$store.commit('activate', this.zone)\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleActive (event) {\n\t\t\tthis.$store.commit('toggleActive', this.row)\n\t\t},\n\t\tfocus () {\n\t\t\tthis.$refs.toggle.focus()\n\t\t},\n\t\tsetToggleSize () {\n\t\t\tconst bbox = this.$refs.container.getBBox()\n\t\t\tconst outline = this.$refs.outline\n\t\t\tthis.$refs.toggle.setAttribute('transform', `translate(${bbox.x},${bbox.y})`)\n\t\t\toutline.setAttribute('width', bbox.width)\n\t\t\toutline.setAttribute('height', bbox.height)\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanRow.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanRow.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlanRow.vue?vue&type=template&id=30b8d89c&lang=pug\"\nimport script from \"./PlanRow.vue?vue&type=script&lang=js\"\nexport * from \"./PlanRow.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('g',{staticClass:\"area\",attrs:{\"transform\":_vm.transform}},[(_vm.area.shape === 'circle')?_c('circle',{attrs:{\"fill\":_vm.area.color || '#888888',\"stroke\":_vm.area.border_color || '#888888',\"cx\":\"0\",\"cy\":\"0\",\"r\":_vm.area.circle.radius,\"stroke-width\":\"2px\"}}):_vm._e(),(_vm.area.shape === 'ellipse')?_c('ellipse',{attrs:{\"fill\":_vm.area.color || '#888888',\"stroke\":_vm.area.border_color || '#888888',\"cx\":\"0\",\"cy\":\"0\",\"rx\":_vm.area.ellipse.radius.x,\"ry\":_vm.area.ellipse.radius.y,\"stroke-width\":\"2px\"}}):_vm._e(),(_vm.area.shape === 'rectangle')?_c('rect',{attrs:{\"fill\":_vm.area.color || '#888888',\"stroke\":_vm.area.border_color || '#888888',\"x\":\"0\",\"y\":\"0\",\"width\":_vm.area.rectangle.width,\"height\":_vm.area.rectangle.height,\"stroke-width\":\"2px\"}}):_vm._e(),(_vm.area.shape === 'polygon')?_c('polygon',{attrs:{\"fill\":_vm.area.color || '#888888',\"stroke\":_vm.area.border_color || '#888888',\"x\":\"0\",\"y\":\"0\",\"points\":_vm.polygonPoints,\"stroke-width\":\"2px\"}}):_vm._e(),(_vm.area.text.text)?_c('text',{ref:\"text\",attrs:{\"x\":_vm.area.text.position.x,\"y\":_vm.area.text.position.y,\"font-size\":_vm.area.text.size ? _vm.area.text.size : 16,\"text-anchor\":\"middle\",\"font-family\":\"sans-serif\",\"dy\":\".3em\",\"fill\":_vm.area.text.color ? _vm.area.text.color : '#888888',\"aria-hidden\":\"true\"}},[_vm._v(_vm._s(_vm.area.text.text))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\ng.area(:transform=\"transform\")\n\tcircle(v-if=\"area.shape === 'circle'\", :fill=\"area.color || '#888888'\", :stroke=\"area.border_color || '#888888'\" cx=\"0\", cy=\"0\", :r=\"area.circle.radius\", stroke-width=\"2px\")\n\tellipse(v-if=\"area.shape === 'ellipse'\", :fill=\"area.color || '#888888'\", :stroke=\"area.border_color || '#888888'\" cx=\"0\", cy=\"0\", :rx=\"area.ellipse.radius.x\", :ry=\"area.ellipse.radius.y\", stroke-width=\"2px\")\n\trect(v-if=\"area.shape === 'rectangle'\", :fill=\"area.color || '#888888'\", :stroke=\"area.border_color || '#888888'\" x=\"0\", y=\"0\", :width=\"area.rectangle.width\", :height=\"area.rectangle.height\", stroke-width=\"2px\")\n\tpolygon(v-if=\"area.shape === 'polygon'\", :fill=\"area.color || '#888888'\", :stroke=\"area.border_color || '#888888'\" x=\"0\", y=\"0\", :points=\"polygonPoints\", stroke-width=\"2px\")\n\ttext(v-if=\"area.text.text\", :x=\"area.text.position.x\", :y=\"area.text.position.y\", :font-size=\"area.text.size ? area.text.size : 16\", text-anchor=\"middle\", font-family=\"sans-serif\", dy=\".3em\", :fill=\"area.text.color ? area.text.color : '#888888'\", ref=\"text\", aria-hidden=\"true\") {{ area.text.text }}\n</template>\n<script>\n\nexport default {\n\tprops: {\n\t\tarea: Object,\n\t\tzone: null,\n\t},\n\tcomputed: {\n\t\ttransform () {\n\t\t\tif (this.area.rotation) {\n\t\t\t\treturn `translate(${this.area.position.x}, ${this.area.position.y}) rotate(${this.area.rotation})`\n\t\t\t}\n\t\t\treturn `translate(${this.area.position.x}, ${this.area.position.y})`\n\t\t},\n\t\tpolygonPoints () {\n\t\t\treturn this.area.polygon.points.map(point => `${point.x},${point.y}`).join(' ')\n\t\t}\n\t},\n}\n</script>\n<style lang=\"stylus\">\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanArea.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanArea.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlanArea.vue?vue&type=template&id=37e385a1&lang=pug\"\nimport script from \"./PlanArea.vue?vue&type=script&lang=js\"\nexport * from \"./PlanArea.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","/**\n * Graham's Scan Convex Hull Algorithm\n * @desc An implementation of the Graham's Scan Convex Hull algorithm in JavaScript.\n * @author Brian Barnett, brian@3kb.co.uk, http://brianbar.net/ || http://3kb.co.uk/\n * @url https://brian3kb.github.io/graham_scan_js/\n * @version 1.0.5\n */\nfunction ConvexHullGrahamScan () {\n\tthis.anchorPoint = undefined\n\tthis.reverse = false\n\tthis.points = []\n}\n\nConvexHullGrahamScan.prototype = {\n\tconstructor: ConvexHullGrahamScan,\n\n\tPoint: function (x, y) {\n\t\tthis.x = x\n\t\tthis.y = y\n\t},\n\n\t_findPolarAngle: function (a, b) {\n\t\tconst ONE_RADIAN = 57.295779513082\n\t\tlet deltaX = 0\n\t\tlet deltaY = 0\n\n\t\t// if the points are undefined, return a zero difference angle.\n\t\tif (!a || !b) return 0\n\n\t\tdeltaX = (b.x - a.x)\n\t\tdeltaY = (b.y - a.y)\n\n\t\tif (deltaX === 0 && deltaY === 0) {\n\t\t\treturn 0\n\t\t}\n\n\t\tlet angle = Math.atan2(deltaY, deltaX) * ONE_RADIAN\n\n\t\tif (this.reverse) {\n\t\t\tif (angle <= 0) {\n\t\t\t\tangle += 360\n\t\t\t}\n\t\t} else {\n\t\t\tif (angle >= 0) {\n\t\t\t\tangle += 360\n\t\t\t}\n\t\t}\n\n\t\treturn angle\n\t},\n\n\taddPoint: function (x, y) {\n\t\t// Check for a new anchor\n\t\tconst newAnchor = (this.anchorPoint === undefined) || (this.anchorPoint.y > y) || (this.anchorPoint.y === y && this.anchorPoint.x > x)\n\n\t\tif (newAnchor) {\n\t\t\tif (this.anchorPoint !== undefined) {\n\t\t\t\tthis.points.push(new this.Point(this.anchorPoint.x, this.anchorPoint.y))\n\t\t\t}\n\t\t\tthis.anchorPoint = new this.Point(x, y)\n\t\t} else {\n\t\t\tthis.points.push(new this.Point(x, y))\n\t\t}\n\t},\n\n\t_sortPoints: function () {\n\t\tconst self = this\n\n\t\treturn this.points.sort(function (a, b) {\n\t\t\tconst polarA = self._findPolarAngle(self.anchorPoint, a)\n\t\t\tconst polarB = self._findPolarAngle(self.anchorPoint, b)\n\n\t\t\tif (polarA < polarB) {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\tif (polarA > polarB) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\t},\n\n\t_checkPoints: function (p0, p1, p2) {\n\t\tlet difAngle\n\t\tconst cwAngle = this._findPolarAngle(p0, p1)\n\t\tconst ccwAngle = this._findPolarAngle(p0, p2)\n\n\t\tif (cwAngle > ccwAngle) {\n\t\t\tdifAngle = cwAngle - ccwAngle\n\t\t\treturn !(difAngle > 180)\n\t\t} else if (cwAngle < ccwAngle) {\n\t\t\tdifAngle = ccwAngle - cwAngle\n\t\t\treturn (difAngle > 180)\n\t\t}\n\n\t\treturn true\n\t},\n\n\tgetHull: function () {\n\t\tlet hullPoints = []\n\t\tlet points\n\t\tlet pointsLength\n\n\t\tthis.reverse = this.points.every(function (point) {\n\t\t\treturn (point.x < 0 && point.y < 0)\n\t\t})\n\n\t\tpoints = this._sortPoints()\n\t\tpointsLength = points.length\n\n\t\t// If there are less than 3 points, joining these points creates a correct hull.\n\t\tif (pointsLength < 3) {\n\t\t\tpoints.unshift(this.anchorPoint)\n\t\t\treturn points\n\t\t}\n\n\t\t// move first two points to output array\n\t\thullPoints.push(points.shift(), points.shift())\n\n\t\t// scan is repeated until no concave points are present.\n\t\twhile (true) {\n\t\t\thullPoints.push(points.shift())\n\n\t\t\tconst p0 = hullPoints[hullPoints.length - 3]\n\t\t\tconst p1 = hullPoints[hullPoints.length - 2]\n\t\t\tconst p2 = hullPoints[hullPoints.length - 1]\n\n\t\t\tif (this._checkPoints(p0, p1, p2)) {\n\t\t\t\thullPoints.splice(hullPoints.length - 2, 1)\n\t\t\t}\n\n\t\t\tif (points.length === 0) {\n\t\t\t\tif (pointsLength === hullPoints.length) {\n\t\t\t\t\t// check for duplicate anchorPoint edge-case, if not found, add the anchorpoint as the first item.\n\t\t\t\t\tconst ap = this.anchorPoint\n\t\t\t\t\t// remove any udefined elements in the hullPoints array.\n\t\t\t\t\thullPoints = hullPoints.filter(function (p) {\n\t\t\t\t\t\treturn !!p\n\t\t\t\t\t})\n\t\t\t\t\tif (!hullPoints.some(function (p) {\n\t\t\t\t\t\treturn (p.x === ap.x && p.y === ap.y)\n\t\t\t\t\t})) {\n\t\t\t\t\t\thullPoints.unshift(this.anchorPoint)\n\t\t\t\t\t}\n\t\t\t\t\treturn hullPoints\n\t\t\t\t}\n\t\t\t\tpoints = hullPoints\n\t\t\t\tpointsLength = points.length\n\t\t\t\thullPoints = []\n\t\t\t\thullPoints.push(points.shift(), points.shift())\n\t\t\t}\n\t\t}\n\t}\n}\n\n// EXPORTS\nexport {ConvexHullGrahamScan}\n","<template lang=\"pug\">\ng.zone(:transform=\"transform\")\n\tplan-area(v-for=\"a in zone.areas\", :area=\"a\", :key=\"a.uuid\", :zone=\"zone\")\n\tg(\n\t\tref=\"toggle\"\n\t\trole=\"button\"\n\t\t:tabindex=\"isTabable ? 0 : -1\"\n\t\tv-bind:aria-label=\"zone.name\"\n\t\tv-bind:aria-controls=\"'zone-rows-' + zone.index\"\n\t\tv-bind:aria-expanded=\"zone.active ? 'true' : 'false'\"\n\t\t@click=\"toggleActive\"\n\t\t@keydown.space.prevent=\"toggleActive\"\n\t\t@keydown.enter=\"toggleActive\"\n\t\t@focus.once=\"setToggleSize\"\n\t)\n\t\trect(ref=\"outline\" vector-effect=\"non-scaling-stroke\")\n\t\tpolyline(points=\"-1.5,-3 1.5,0 -1.5,3\" vector-effect=\"non-scaling-stroke\")\n\t\t//- <text> is needed for VoiceOver on iOS Safari to work at all\n\t\ttext {{ zone.name }}\n\ttemplate(\n\t\tv-if=\"hideWithPolygon\"\n\t)\n\t\tpolygon(\n\t\t\tref=\"container\"\n\t\t\t:fill=\"hullPolygonColor\",\n\t\t\t:points=\"hullPointPolygon\",\n\t\t\tcursor=\"pointer\"\n\t\t\tvector-effect=\"non-scaling-stroke\"\n\t\t\t@click=\"toggleActive\"\n\t\t\tclass=\"convexhull\"\n\t\t)\n\tg(\n\t\tv-else\n\t\tv-bind:aria-hidden=\"zone.active ? 'false' : 'true'\"\n\t\t:id=\"'zone-rows-' + zone.index\"\n\t\tref=\"container\"\n\t)\n\t\tplan-row(v-for=\"r in zone.rows\", :row=\"r\", :key=\"r.index\", :zone=\"zone\", ref=\"rows\")\n</template>\n<script>\nimport PlanRow from './PlanRow'\nimport PlanArea from './PlanArea'\nimport {ConvexHullGrahamScan} from 'lib/convexhull'\nimport {mapGetters} from 'vuex'\n\nexport default {\n\tcomponents: { PlanRow, PlanArea },\n\tprops: {\n\t\tzone: Object,\n\t\tplan: Object,\n\t},\n\tcomputed: {\n\t\t...mapGetters(['seatInFocus']),\n\t\t...mapGetters('plan', ['isHuge', 'categories']),\n\t\t...mapGetters('event', ['isSeatAvailable', 'getItem']),\n\t\t...mapGetters('filter', {isItemFiltered: 'isFiltered'}),\n\t\ttransform () {\n\t\t\treturn `translate(${this.zone.position.x}, ${this.zone.position.y})`\n\t\t},\n\t\tisTabable () {\n\t\t\treturn this.plan.active\n\t\t},\n\t\thideWithPolygon () {\n\t\t\tif (!this.isHuge) return false // not a huge plan\n\t\t\tif (this.hullPoints.length < 3) return false // can't draw a polygon for less than 3 seats\n\t\t\treturn !this.zone.active\n\t\t},\n\t\thullPolygonColor () {\n\t\t\t// TODO: find nicer way to deal with multi-category zones\n\t\t\tlet firstAvailableCategory = null\n\t\t\tfor (const row of this.zone.rows) {\n\t\t\t\tif (firstAvailableCategory) break\n\t\t\t\tfor (const seat of row.seats) {\n\t\t\t\t\tconst item = this.getItem(seat.category)\n\t\t\t\t\tif (item && !this.isItemFiltered(item) && this.isSeatAvailable(seat)) {\n\t\t\t\t\t\tfirstAvailableCategory = seat.category\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!firstAvailableCategory) {\n\t\t\t\treturn '#d9d9d9'\n\t\t\t}\n\t\t\tconst catIndex = this.categories.findIndex(c => c.name === firstAvailableCategory) || 0\n\t\t\treturn `var(--category-${catIndex}-color, #666666)`\n\t\t},\n\t\thullPointPolygon () {\n\t\t\treturn this.hullPoints.map((p) => `${p.x},${p.y}`).join(' ')\n\t\t},\n\t\thullPoints () {\n\t\t\tconst convexHull = new ConvexHullGrahamScan()\n\t\t\tlet seats = 0\n\t\t\tthis.zone.rows.forEach(row => {\n\t\t\t\trow.seats.forEach(seat => {\n\t\t\t\t\tseats++\n\t\t\t\t\tconvexHull.addPoint(row.position.x + seat.position.x, row.position.y + seat.position.y)\n\t\t\t\t})\n\t\t\t})\n\t\t\tif (seats < 3) return [] // not enough to draw a polygon\n\t\t\treturn convexHull.getHull()\n\t\t}\n\t},\n\twatch: {\n\t\t'zone.active' (newValue) {\n\t\t\tif (newValue) this.$store.commit('activate', this.plan)\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleActive (event) {\n\t\t\tthis.$store.commit('toggleActive', this.zone)\n\t\t},\n\t\tsetToggleSize () {\n\t\t\tconst bbox = this.$refs.container.getBBox()\n\t\t\tconst outline = this.$refs.outline\n\t\t\tthis.$refs.toggle.setAttribute('transform', `translate(${bbox.x},${bbox.y})`)\n\t\t\toutline.setAttribute('width', bbox.width)\n\t\t\toutline.setAttribute('height', bbox.height)\n\t\t},\n\t\tfocus () {\n\t\t\tthis.$refs.toggle.focus()\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t.convexhull:hover\n\t\tstroke: black\n\t\tstroke-width: 2px\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanZone.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanZone.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlanZone.vue?vue&type=template&id=01cad702&lang=pug\"\nimport script from \"./PlanZone.vue?vue&type=script&lang=js\"\nexport * from \"./PlanZone.vue?vue&type=script&lang=js\"\nimport style0 from \"./PlanZone.vue?vue&type=style&index=0&id=01cad702&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.selecting)?_c('rect',{staticClass:\"selection-area\",attrs:{\"x\":Math.min(_vm.start.x, _vm.current.x) - 0.5,\"y\":Math.min(_vm.start.y, _vm.current.y) - 0.5,\"width\":Math.abs(_vm.start.x - _vm.current.x),\"height\":Math.abs(_vm.start.y - _vm.current.y)}}):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const positionInZone = (x, y, zoomTransform, zone) => {\n\tx = (x - zoomTransform.x) / zoomTransform.k - (zone ? zone.position.x : 0)\n\ty = (y - zoomTransform.y) / zoomTransform.k - (zone ? zone.position.y : 0)\n\treturn {x, y}\n}\n\nexport {\n\tpositionInZone,\n}\n","<template lang=\"pug\">\nrect.selection-area(v-if=\"selecting\", :x=\"Math.min(start.x, current.x) - 0.5\", :y=\"Math.min(start.y, current.y) - 0.5\", :width=\"Math.abs(start.x - current.x)\", :height=\"Math.abs(start.y - current.y)\")\n</template>\n<script>\nimport {\n\tpositionInZone,\n} from '../../lib/geometry'\n\nexport default {\n\tprops: {\n\t\toffsetParent: SVGSVGElement,\n\t\ttransform: Object,\n\t\tfrom: Object,\n\t},\n\tdata () {\n\t\treturn {\n\t\t\tselecting: false,\n\t\t\tstart: {x: 0, y: 0},\n\t\t\tcurrent: {x: 0, y: 0},\n\t\t}\n\t},\n\tmounted () {\n\t\twindow.addEventListener('mousemove', this.mousemove)\n\t\twindow.addEventListener('mouseup', this.mouseup, {once: true})\n\n\t\tconst bbox = this.offsetParent.getBoundingClientRect()\n\t\tthis.start = this.current = positionInZone(this.from.x - bbox.x, this.from.y - bbox.y, this.transform, null)\n\t\tthis.selecting = true\n\t},\n\tdestroyed () {\n\t\twindow.removeEventListener('mousemove', this.mousemove)\n\t\twindow.removeEventListener('mouseup', this.mouseup)\n\t},\n\tmethods: {\n\t\tmousemove (e) {\n\t\t\tconst bbox = this.offsetParent.getBoundingClientRect()\n\t\t\tthis.current = positionInZone(e.clientX - bbox.x, e.clientY - bbox.y, this.transform, null)\n\t\t},\n\t\tmouseup (e) {\n\t\t\twindow.removeEventListener('mousemove', this.mousemove)\n\t\t\tthis.selecting = false\n\t\t\tthis.$emit('select', {from: this.start, to: this.current, altKey: e.altKey})\n\t\t}\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t.selection-area\n\t\tvector-effect: non-scaling-stroke\n\t\tstroke-width: 1px\n\t\tfill: rgba(0, 0, 204, 0.15)\n\t\tstroke: rgba(0, 0, 204, 0.4)\n\t\tstroke-style: solid\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectionArea.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SelectionArea.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SelectionArea.vue?vue&type=template&id=2f4892ea&lang=pug\"\nimport script from \"./SelectionArea.vue?vue&type=script&lang=js\"\nexport * from \"./SelectionArea.vue?vue&type=script&lang=js\"\nimport style0 from \"./SelectionArea.vue?vue&type=style&index=0&id=2f4892ea&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, nonpassivecapture);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 < epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n","<template lang=\"pug\">\n.c-plan\n\titems-filter\n\tsvg(v-if=\"plan.size\", :viewport=\"viewport\", preserveAspectRatio=\"none\", ref=\"svg\", id=\"plan-svg\", @mousedown=\"mousedown\", @focusin=\"onFocusin\", @dblclick=\"onDblclick\", role=\"group\")\n\t\tg(\n\t\t\t:transform=\"$store.state.zoomTransform.toString()\"\n\t\t\t:class=\"mainclasses\"\n\t\t)\n\t\t\tg(\n\t\t\t\tref=\"toggle\"\n\t\t\t\trole=\"button\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t\tv-bind:aria-label=\"_('Select a zone')\"\n\t\t\t\taria-controls=\"plan-view\"\n\t\t\t\tv-bind:aria-expanded=\"plan.active ? 'true' : 'false'\"\n\t\t\t\t@click=\"toggleActive\"\n\t\t\t\t@keydown.space.prevent=\"toggleActive\"\n\t\t\t\t@keydown.enter=\"toggleActive\"\n\t\t\t\t@focus.once=\"setToggleSize\"\n\t\t\t)\n\t\t\t\trect(ref=\"outline\" vector-effect=\"non-scaling-stroke\")\n\t\t\t\tpolyline(points=\"-1.5,-3 1.5,0 -1.5,3\" vector-effect=\"non-scaling-stroke\")\n\t\t\t\t//- <text> is needed for VoiceOver on iOS Safari to work at all\n\t\t\t\ttext {{ _('Select a zone') }}\n\t\t\tg(\n\t\t\t\tv-bind:aria-hidden=\"plan.active ? 'false' : 'true'\"\n\t\t\t\tid=\"plan-view\"\n\t\t\t\tref=\"container\"\n\t\t\t)\n\t\t\t\tplan-zone(v-for=\"zone in plan.zones\", :zone=\"zone\", :key=\"zone.index\", :plan=\"plan\", ref=\"zones\")\n\t\t\tselection-area(v-if=\"selectFrom\", :offsetParent=\"$refs.svg\", :from=\"selectFrom\", :transform=\"$store.state.zoomTransform\", @select=\"onAreaSelect\")\n\tcursor-addon(v-if=\"cursorAddon\", :cursor=\"cursorAddon\")\n\t.button-group\n\t\tbutton(@click=\"zoomIn\" class=\"btn-zoom btn-zoom-in\") {{ _('Zoom in') }}\n\t\tbutton(@click=\"zoomOut\" class=\"btn-zoom btn-zoom-out\") {{ _('Zoom out') }}\n\tinstructions-overlay\n</template>\n<script>\nimport {lighten} from '../../lib/colors'\nimport {mapGetters, mapState} from 'vuex'\nimport ItemsFilter from './ItemsFilter'\nimport CursorAddon from './CursorAddon'\nimport InstructionsOverlay from './InstructionsOverlay'\nimport PlanZone from './PlanZone'\nimport SelectionArea from './SelectionArea'\nimport * as d3 from 'd3'\n\nexport default {\n\tcomponents: { ItemsFilter, CursorAddon, InstructionsOverlay, PlanZone, SelectionArea },\n\tprops: {\n\t\tscrollZoomWithModifier: Boolean,\n\t\tpanWithModifier: Boolean,\n\t\ttranslation: Object,\n\t},\n\tdata () {\n\t\treturn {\n\t\t\tzoom: null,\n\t\t\tviewportWidth: 0,\n\t\t\tviewportHeight: 0,\n\t\t\tfullScreen: true,\n\t\t\tlastMouseUp: 0,\n\n\t\t\tselectFrom: null,\n\t\t\tcursorAddon: null,\n\n\t\t\tunwatchDragSelectHint: null,\n\n\t\t\t// debounce resize (this.createZoom) as it is expensive\n\t\t\t// when scrolling on iOS the browser-chrome shrinks and triggers a resize-event\n\t\t\t// check on resize if a scroll-event happened in the last 500ms\n\t\t\tresizeTimeout: null,\n\t\t\trecentlyScrolled: false,\n\t\t\trecentlyScrolledTimeout: null,\n\t\t\tinstructionsTimeout: null,\n\n\t\t\tminHitArea: 16,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters('plan', ['categories', 'plan']),\n\t\t...mapGetters('event', ['isSeatAvailable', 'getItem', 'getItemById']),\n\t\t...mapGetters('filter', {filteredItems: 'items', isItemFiltered: 'isFiltered'}),\n\t\t...mapGetters('ui', ['_']),\n\t\t...mapState(['zoomTransform']),\n\t\tisMac () {\n\t\t\treturn window.navigator.platform.toLowerCase().startsWith('mac')\n\t\t},\n\t\tmainclasses () {\n\t\t\treturn {\n\t\t\t\t'zoom-transform': true\n\t\t\t}\n\t\t},\n\t\tviewport () {\n\t\t\tconst w = this.plan.size.width\n\t\t\tconst h = this.plan.size.height\n\t\t\treturn `0 0 ${w} ${h}`\n\t\t},\n\t},\n\twatch: {\n\t\tcategories: {\n\t\t\timmediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\t// provide category-colors as CSS Custom properties for e.g. seats\n\t\t\t\tconst setProperties = () => {\n\t\t\t\t\tnewValue.forEach((category, index) => {\n\t\t\t\t\t\tthis.$el.style.setProperty(`--category-${index}-color`, category.color)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (!this.$el) {\n\t\t\t\t\tthis.$once('hook:mounted', setProperties)\n\t\t\t\t} else {\n\t\t\t\t\tsetProperties()\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tfilteredItems (newValue, oldValue) {\n\t\t\toldValue.filter(id => !newValue.includes(id)).forEach(id => {\n\t\t\t\tconst item = this.getItemById(id)\n\t\t\t\tthis.categories.forEach((category, index) => {\n\t\t\t\t\tif (item.categories.includes(category.name)) {\n\t\t\t\t\t\tthis.$refs.svg.style.removeProperty(`--category-${index}-color`)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewValue.filter(id => !oldValue.includes(id)).forEach(id => {\n\t\t\t\tconst item = this.getItemById(id)\n\t\t\t\tthis.categories.forEach((category, index) => {\n\t\t\t\t\tif (item.categories.includes(category.name)) {\n\t\t\t\t\t\tthis.$refs.svg.style.setProperty(`--category-${index}-color`, lighten(category.color, 0.8))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n\tmounted () {\n\t\tthis.$nextTick(() => {\n\t\t\tthis.createZoom()\n\t\t})\n\t\twindow.addEventListener('scroll', () => {\n\t\t\tif (!this.recentlyScrolled) {\n\t\t\t\tthis.onScroll()\n\t\t\t}\n\t\t})\n\n\t\t// wait for user to use the mouse to enable multi-selection hint\n\t\tconst multiSelectInstructionsListener = () => {\n\t\t\tthis.unwatchDragSelectHint = this.$store.watch(\n\t\t\t\t(state, getters) => getters.selection,\n\t\t\t\t(newValue, oldValue) => {\n\t\t\t\t\tif (newValue.length < 8) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconst msg = this.panWithModifier\n\t\t\t\t\t\t? this._('You can click and drag to select multiple seats.')\n\t\t\t\t\t\t: this._('When you press <kbd>' + (this.isMac ? 'CMD' : 'CTRL') + '</kbd>, you can click and drag to select multiple seats.')\n\t\t\t\t\tthis.$store.commit('instructions', { msg })\n\t\t\t\t\twindow.clearTimeout(this.instructionsTimeout)\n\t\t\t\t\t// wait a bit before enabling removing instruction on mousedown\n\t\t\t\t\twindow.setTimeout(() => {\n\t\t\t\t\t\twindow.addEventListener('mousedown', () => {\n\t\t\t\t\t\t\tthis.$store.commit('clearInstructions')\n\t\t\t\t\t\t}, { once: true })\n\t\t\t\t\t}, 1000)\n\n\t\t\t\t\t// only show hint once\n\t\t\t\t\tthis.unwatchDragSelectHint()\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\twindow.addEventListener('mousemove', multiSelectInstructionsListener, { once: true })\n\n\t\twindow.addEventListener('touchstart', () => {\n\t\t\tthis.unwatchDragSelectHint?.()\n\t\t\twindow.removeEventListener('mousemove', multiSelectInstructionsListener)\n\t\t}, true) // capture:true as d3 will stopPropagation\n\t},\n\tcreated () {\n\t\twindow.addEventListener('touchstart', event => {\n\t\t\t// increase minHitArea for touch-devices - Apple’s recommendation is at least 44px\n\t\t\tthis.minHitArea = 44\n\t\t}, { once: true })\n\n\t\twindow.addEventListener('resize', this.onResize)\n\t\tthis.unwatch = this.$store.watch(\n\t\t\t(state, getters) => getters['plan/planSize'],\n\t\t\t(newValue, oldValue) => {\n\t\t\t\tif (!oldValue || newValue.width !== oldValue.width || newValue.height !== oldValue.height) {\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tthis.createZoom()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t},\n\tdestroyed () {\n\t\twindow.removeEventListener('resize', this.onResize)\n\t\tthis.unwatch()\n\t},\n\tmethods: {\n\t\ttoggleActive (event) {\n\t\t\tthis.$store.commit('toggleActive', this.plan)\n\t\t},\n\t\tsetToggleSize () {\n\t\t\tconst bbox = this.$refs.container.getBBox()\n\t\t\tconst outline = this.$refs.outline\n\t\t\tthis.$refs.toggle.setAttribute('transform', `translate(${bbox.x},${bbox.y})`)\n\t\t\toutline.setAttribute('width', bbox.width)\n\t\t\toutline.setAttribute('height', bbox.height)\n\t\t},\n\t\t// see doc regarding resizeTimeout, recentlyScrolled and recentlyScrolledTimeout\n\t\tonScroll () {\n\t\t\tif (this.recentlyScrolledTimeout) {\n\t\t\t\tclearTimeout(this.recentlyScrolledTimeout)\n\t\t\t}\n\t\t\tthis.recentlyScrolled = true\n\t\t\tthis.recentlyScrolledTimeout = window.setTimeout(() => {\n\t\t\t\tthis.recentlyScrolled = false\n\t\t\t}, 1000)\n\t\t},\n\t\t// see doc regarding resizeTimeout, recentlyScrolled and recentlyScrolledTimeout\n\t\tonResize () {\n\t\t\tif (this.resizeTimeout) {\n\t\t\t\tclearTimeout(this.resizeTimeout)\n\t\t\t}\n\t\t\t// only reposition on larger resizes, this e.g. also helps fix scroll-triggered\n\t\t\t// resize events due to browser-chrome being removed on mobile browsers onscroll\n\t\t\t// alternatively setting this.resizeTimeout could be moved inside an\n\t\t\t// if (!this.recentlyScrolled) to mitigate scroll-induced resize events\n\t\t\tthis.resizeTimeout = window.setTimeout(() => {\n\t\t\t\tconst dw = Math.abs(this.viewportWidth - this.$refs.svg.clientWidth)\n\t\t\t\tconst dh = Math.abs(this.viewportHeight - this.$refs.svg.clientHeight)\n\t\t\t\tthis.viewportWidth = this.$refs.svg.clientWidth\n\t\t\t\tthis.viewportHeight = this.$refs.svg.clientHeight\n\n\t\t\t\tconst defaultScale = this.plan.size.height ? Math.min(this.viewportWidth / this.plan.size.width, this.viewportHeight / this.plan.size.height) : 1\n\t\t\t\tthis.zoom.scaleExtent([defaultScale * 0.9, 2.5])\n\t\t\t\tif (dw / this.viewportWidth > 0.25 || dh / this.viewportHeight > 0.25) {\n\t\t\t\t\t// if either dimension changed more than 25%\n\t\t\t\t\tconst initTransform = d3.zoomIdentity\n\t\t\t\t\t\t.scale(defaultScale)\n\t\t\t\t\t\t.translate(\n\t\t\t\t\t\t\t(this.viewportWidth / defaultScale - this.plan.size.width) / 2,\n\t\t\t\t\t\t\t(this.viewportHeight / defaultScale - this.plan.size.height) / 2\n\t\t\t\t\t\t)\n\t\t\t\t\tthis.$store.commit('setZoomTransform', initTransform)\n\t\t\t\t\td3.select(this.$refs.svg).call(this.zoom.transform, initTransform)\n\t\t\t\t}\n\t\t\t}, 500)\n\t\t},\n\t\tonFocusin (event) {\n\t\t\tconst element = event.target\n\t\t\tif (element.classList.contains('seat')) {\n\t\t\t\t// a seat has received focus, check whether we need to zoom in and/or pan\n\t\t\t\tconst elementBBox = element.getBBox()\n\t\t\t\tconst centerPoint = element.viewportElement.createSVGPoint()\n\t\t\t\tcenterPoint.x = elementBBox.x + (elementBBox.width / 2)\n\t\t\t\tcenterPoint.y = elementBBox.y + (elementBBox.height / 2)\n\n\t\t\t\tconst centerPointRelToViewport = centerPoint.matrixTransform(element.viewportElement.getScreenCTM().inverse().multiply(element.getScreenCTM()))\n\t\t\t\t// check if hitArea is big enough, if not => zoom\n\t\t\t\t// TODO: elementBBox does not take transforms into account. As we currently only scale with d3 we can safely use that instead of a matrix-transform\n\t\t\t\tconst currentScale = d3.zoomTransform(this.$refs.svg).k\n\t\t\t\tconst hitArea = Math.min(elementBBox.width, elementBBox.height) * currentScale\n\t\t\t\t// make padding so that 2/3 of circle are visible (center = 0.5 + 0.16 = 0.66)\n\t\t\t\tconst padding = 0.16 * hitArea\n\t\t\t\tconst offsetBbox = element.viewportElement.getBoundingClientRect()\n\t\t\t\tconst xMax = offsetBbox.width - padding\n\t\t\t\tconst yMax = offsetBbox.height - padding\n\n\t\t\t\tif (hitArea < this.minHitArea) {\n\t\t\t\t\t// if we need to zoom, zoom at least double increment\n\t\t\t\t\tconst targetScale = Math.max(currentScale * this.minHitArea / hitArea, currentScale * 1.2 * 1.2)\n\t\t\t\t\td3.select(this.$refs.svg)\n\t\t\t\t\t\t.transition()\n\t\t\t\t\t\t.call(this.zoom.scaleTo, targetScale, [centerPointRelToViewport.x, centerPointRelToViewport.y])\n\t\t\t\t}\n\n\t\t\t\tif (centerPointRelToViewport.x < padding || centerPointRelToViewport.x > xMax ||\n\t\t\t\t\tcenterPointRelToViewport.y < padding || centerPointRelToViewport.y > yMax) {\n\t\t\t\t\t// less than 2/3 (0.50 (center) + 0.16) of seat are visible\n\t\t\t\t\tconst centerPointRelToBaseCoord = centerPoint.matrixTransform(this.$refs.svg.firstChild.getScreenCTM().inverse().multiply(element.getScreenCTM()))\n\t\t\t\t\td3.select(this.$refs.svg)\n\t\t\t\t\t\t.transition()\n\t\t\t\t\t\t.call(this.zoom.translateTo, centerPointRelToBaseCoord.x, centerPointRelToBaseCoord.y)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonDblclick (event) {\n\t\t\t// zoom on dblclick, zoom twice as fast\n\t\t\tconst offsetBbox = this.$refs.svg.getBoundingClientRect()\n\t\t\tconst cx = event.clientX - offsetBbox.x\n\t\t\tconst cy = event.clientY - offsetBbox.y\n\t\t\td3.select(this.$refs.svg)\n\t\t\t\t.transition()\n\t\t\t\t.call(this.zoom.scaleBy, event.altKey ? 0.8 * 0.8 : 1.25 * 1.25, [cx, cy])\n\t\t},\n\t\tzoomIn (e) {\n\t\t\td3.select(this.$refs.svg)\n\t\t\t\t.transition().call(this.zoom.scaleBy, 1.25 * 1.25)\n\t\t},\n\t\tzoomOut (e) {\n\t\t\td3.select(this.$refs.svg)\n\t\t\t\t.transition().call(this.zoom.scaleBy, 0.8 * 0.8)\n\t\t},\n\t\tsetZoomTransform (t) {\n\t\t\tthis.$store.commit('setZoomTransform', t)\n\t\t},\n\t\tmousedown (event) {\n\t\t\tlet isPanning = event.ctrlKey || event.metaKey\n\t\t\tif (!this.panWithModifier) {\n\t\t\t\tisPanning = !isPanning\n\t\t\t}\n\t\t\tif (!isPanning) {\n\t\t\t\tthis.$store.commit('startAreaSelect')\n\t\t\t\tthis.selectFrom = {x: event.clientX, y: event.clientY}\n\t\t\t\tthis.cursorAddon = event.altKey ? 'remove' : 'add'\n\n\t\t\t\tconst controller = new AbortController()\n\t\t\t\twindow.addEventListener('keydown', this.setCursorAddon, {signal: controller.signal})\n\t\t\t\twindow.addEventListener('keyup', this.setCursorAddon, {signal: controller.signal})\n\t\t\t\twindow.addEventListener('keydown', (event) => {\n\t\t\t\t\tif (event.keyCode === 27) {\n\t\t\t\t\t\t// ESC-key => abort drag-selection\n\t\t\t\t\t\tthis.selectFrom = false\n\t\t\t\t\t\tthis.cursorAddon = null\n\t\t\t\t\t\t// imediately endAreaSelect\n\t\t\t\t\t\tthis.$store.commit('endAreaSelect')\n\t\t\t\t\t\tcontroller.abort()\n\t\t\t\t\t}\n\t\t\t\t}, {signal: controller.signal})\n\t\t\t\twindow.addEventListener('mouseup', (event) => controller.abort(), { once: true })\n\t\t\t}\n\t\t},\n\t\tsetCursorAddon (event) {\n\t\t\tthis.cursorAddon = event.altKey ? 'remove' : 'add'\n\t\t},\n\t\tgetSeatsInArea (from, to) {\n\t\t\tconst seats = []\n\t\t\tconst xmin = Math.min(from.x, to.x)\n\t\t\tconst ymin = Math.min(from.y, to.y)\n\t\t\tconst xmax = Math.max(from.x, to.x)\n\t\t\tconst ymax = Math.max(from.y, to.y)\n\t\t\tfor (const z of this.plan.zones) {\n\t\t\t\t// TODO: improve performane by caching a containing rect for seats in a zone?\n\t\t\t\tfor (const r of z.rows) {\n\t\t\t\t\t// TODO: improve performance by caching a containing rect for seats in a row?\n\t\t\t\t\tfor (const s of r.seats) {\n\t\t\t\t\t\tconst item = this.getItem(s.category)\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(z.position.x + r.position.x + s.position.x + (s.radius || 10)) >= xmin &&\n\t\t\t\t\t\t\t(z.position.x + r.position.x + s.position.x - (s.radius || 10)) <= xmax &&\n\t\t\t\t\t\t\t(z.position.y + r.position.y + s.position.y + (s.radius || 10)) >= ymin &&\n\t\t\t\t\t\t\t(z.position.y + r.position.y + s.position.y - (s.radius || 10)) <= ymax &&\n\t\t\t\t\t\t\tthis.isSeatAvailable(s) && item && !this.isItemFiltered(item)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tseats.push(s)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn seats\n\t\t},\n\t\tonAreaSelect (e) {\n\t\t\tthis.selectFrom = false\n\t\t\tthis.cursorAddon = null\n\t\t\tthis.unwatchDragSelectHint?.()\n\n\t\t\tif (Math.abs(e.from.x - e.to.x) > 2 || Math.abs(e.from.y - e.to.y) > 2) {\n\t\t\t\tconst seats = this.getSeatsInArea(e.from, e.to)\n\t\t\t\tthis.$store.commit(e.altKey ? 'unselect' : 'select', {seats})\n\n\t\t\t\t// endAreaSelect after click-event is fired on seat, so seat.selected is not toggled twice => setTimeout\n\t\t\t\twindow.setTimeout(() => this.$store.commit('endAreaSelect'), 50)\n\t\t\t} else {\n\t\t\t\t// just a click, no movement => imediately endAreaSelect so click event on seat selects seat\n\t\t\t\tthis.$store.commit('endAreaSelect')\n\t\t\t}\n\t\t},\n\t\tcreateZoom () {\n\t\t\tif (!this.$refs.svg) return\n\n\t\t\tlet prevZoomTransform = null\n\t\t\tconst padding = 40\n\t\t\tthis.viewportWidth = this.$refs.svg.clientWidth\n\t\t\tthis.viewportHeight = this.$refs.svg.clientHeight\n\t\t\tconst defaultScale = this.plan.size.height ? Math.min(this.viewportWidth / this.plan.size.width, this.viewportHeight / this.plan.size.height) : 1\n\n\t\t\tthis.zoom = d3.zoom()\n\t\t\t\t// let users zoom a little less than default scale so when using scroll to zoom they know it works even if they scroll the wrong direction\n\t\t\t\t.scaleExtent([defaultScale * 0.9, 2.5])\n\t\t\t\t// translateExtent is calculated dynamically on.zoom\n\t\t\t\t// .translateExtent([[0, 0], [this.plan.size.width, this.plan.size.height]])\n\t\t\t\t.filter(event => {\n\t\t\t\t\tlet modifierFlag = !event.metaKey && !event.ctrlKey\n\t\t\t\t\tconst wheeled = event.type === 'wheel'\n\t\t\t\t\tconst mouseDrag =\n\t\t\t\t\t\tevent.type === 'mousedown' ||\n\t\t\t\t\t\tevent.type === 'mouseup' ||\n\t\t\t\t\t\tevent.type === 'mousemove'\n\t\t\t\t\tconst touch =\n\t\t\t\t\t\tevent.type === 'touchstart' ||\n\t\t\t\t\t\tevent.type === 'touchmove' ||\n\t\t\t\t\t\tevent.type === 'touchstop'\n\n\t\t\t\t\t// TODO: due to scroll inertia in e.g. Mac we need to debounce this\n\t\t\t\t\t// otherwise when zooming and letting CMD-key go to early we immediately get this message\n\t\t\t\t\tif (wheeled && this.scrollZoomWithModifier && !(event.metaKey || event.ctrlKey)) {\n\t\t\t\t\t\tif (!this.recentlyScrolled) {\n\t\t\t\t\t\t\tthis.onScroll()\n\t\t\t\t\t\t\tthis.$store.commit('instructions', {\n\t\t\t\t\t\t\t\tmsg: this.isMac\n\t\t\t\t\t\t\t\t\t? this._('Hold <kbd>CMD</kbd> and scroll to zoom.')\n\t\t\t\t\t\t\t\t\t: this._('Hold <kbd>CTRL</kbd> and scroll to zoom.')\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\twindow.clearTimeout(this.instructionsTimeout)\n\t\t\t\t\t\tthis.instructionsTimeout = window.setTimeout(() => this.$store.commit('clearInstructions'), 2500)\n\t\t\t\t\t\treturn false\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO: this should only be cleared if instructions are the scroll-zoom instructions\n\t\t\t\t\t\twindow.clearTimeout(this.instructionsTimeout)\n\t\t\t\t\t\tthis.$store.commit('clearInstructions')\n\t\t\t\t\t}\n\t\t\t\t\t// due to scroll inertia on Mac touchpads, block instructions from being set again\n\t\t\t\t\tif (wheeled) {\n\t\t\t\t\t\tthis.onScroll()\n\t\t\t\t\t}\n\t\t\t\t\tif ((wheeled && this.scrollZoomWithModifier) || (mouseDrag && this.panWithModifier)) {\n\t\t\t\t\t\tmodifierFlag = !modifierFlag\n\t\t\t\t\t}\n\t\t\t\t\treturn (wheeled || mouseDrag || touch) && modifierFlag\n\t\t\t\t})\n\t\t\t\t.on('start.drag', (event) => {\n\t\t\t\t\tthis.$store.commit('startDrag')\n\t\t\t\t\tprevZoomTransform = event.transform\n\t\t\t\t})\n\t\t\t\t.on('end.drag', (event) => {\n\t\t\t\t\tthis.$store.commit('endDrag')\n\t\t\t\t\t// on sloppy mouse clicks an unintended pan (< 3px) event can happen, which blocks\n\t\t\t\t\t// click-events and by that blocks seat selection\n\t\t\t\t\t// check if it is a short pan and try to select seat, if any is in sourceEvent\n\t\t\t\t\tconst e = event.sourceEvent\n\t\t\t\t\tconst dx = Math.abs(event.transform.x - prevZoomTransform.x)\n\t\t\t\t\tconst dy = Math.abs(event.transform.y - prevZoomTransform.y)\n\t\t\t\t\t// we need at least 1px movement on one axis, otherwise the normal click event on the seat will be fired as well\n\t\t\t\t\tconst tinypan = (dx > 0 || dy > 0) && (dx < 5 && dy < 5)\n\t\t\t\t\tif (e && tinypan) {\n\t\t\t\t\t\t// Firefox offers originalTarget, Chrome offers path\n\t\t\t\t\t\tconst seatNode = e.originalTarget?.closest('.seat') || e.path?.find(node => node.classList && node.classList.contains('seat'))\n\t\t\t\t\t\t// SVG-elements do not support .click()-method, so dispatchEvent\n\t\t\t\t\t\tseatNode?.dispatchEvent(new Event('click'))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('zoom', (event) => {\n\t\t\t\t\tconst scale = event.transform.k\n\t\t\t\t\tthis.zoom.translateExtent([\n\t\t\t\t\t\t[(-this.viewportWidth + padding) / scale, (-this.viewportHeight + padding) / scale],\n\t\t\t\t\t\t[(this.viewportWidth - padding) / scale + this.plan.size.width, (this.viewportHeight - padding) / scale + this.plan.size.height]\n\t\t\t\t\t])\n\t\t\t\t\tthis.$store.commit('setZoomTransform', event.transform)\n\t\t\t\t})\n\t\t\tconst initTransform = d3.zoomIdentity\n\t\t\t\t.scale(defaultScale)\n\t\t\t\t.translate(\n\t\t\t\t\t(this.viewportWidth / defaultScale - this.plan.size.width) / 2,\n\t\t\t\t\t(this.viewportHeight / defaultScale - this.plan.size.height) / 2\n\t\t\t\t)\n\t\t\tthis.$store.commit('setZoomTransform', initTransform)\n\n\t\t\t// This sets correct d3 internal state for the initial centering\n\t\t\tconst zoomElement = d3.select(this.$refs.svg)\n\t\t\t\t.call(this.zoom.transform, initTransform)\n\t\t\t\t.call(this.zoom)\n\t\t\t\t.on('wheel', function (event) {\n\t\t\t\t\tif (event.metaKey || event.ctrlKey) {\n\t\t\t\t\t\t// Prevent native-scroll-zooming when the min/max of the zoom extent is reached\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('click', event => {\n\t\t\t\t\t// If seats are too small to see, zoom and move upon click for better usability\n\t\t\t\t\tif (event.defaultPrevented || event.originalTarget?.closest('.seat') || event.path?.find(node => node.classList && node.classList.contains('seat'))) {\n\t\t\t\t\t\t// if a seat has focus, zoom will happen through onFocusIn\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconst currentScale = d3.zoomTransform(this.$refs.svg).k\n\t\t\t\t\t// get hitArea of first available seat (could have empty zones and/or rows)\n\t\t\t\t\tconst hitArea = (function (zones) {\n\t\t\t\t\t\tfor (const zone of zones) {\n\t\t\t\t\t\t\tfor (const row of (zone.rows || [])) {\n\t\t\t\t\t\t\t\tfor (const seat of (row.seats || [])) {\n\t\t\t\t\t\t\t\t\tif (seat.radius) {\n\t\t\t\t\t\t\t\t\t\treturn seat.radius * 2\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 25\n\t\t\t\t\t})(this.plan.zones) * currentScale\n\n\t\t\t\t\tif (hitArea < this.minHitArea) {\n\t\t\t\t\t\t// if we need to zoom, zoom at least double increment\n\t\t\t\t\t\tconst viewportElement = this.$refs.svg\n\t\t\t\t\t\tconst targetScale = Math.max(currentScale * this.minHitArea / hitArea, currentScale * 1.2 * 1.2)\n\n\t\t\t\t\t\tconst centerPoint = viewportElement.createSVGPoint()\n\t\t\t\t\t\tcenterPoint.x = event.clientX\n\t\t\t\t\t\tcenterPoint.y = event.clientY\n\t\t\t\t\t\tconst centerPointRelToViewport = centerPoint.matrixTransform(viewportElement.getScreenCTM().inverse())\n\t\t\t\t\t\tzoomElement.transition()\n\t\t\t\t\t\t\t.call(this.zoom.scaleTo, targetScale, [centerPointRelToViewport.x, centerPointRelToViewport.y])\n\t\t\t\t\t}\n\t\t\t\t}, { once: true })\n\n\t\t\t// to disable pan with one finger on touch-devices, we need to\n\t\t\t// save the original touchmove.zoom-handler and overwrite it\n\t\t\t// with our custom-handler that calls the original handler when\n\t\t\t// more than one touches are registered\n\t\t\tif (this.panWithModifier) {\n\t\t\t\tconst onTouchMoveZoom = zoomElement.on('touchmove.zoom')\n\t\t\t\tif (onTouchMoveZoom) {\n\t\t\t\t\tlet recentlyZoomed = false\n\t\t\t\t\tlet recentlyZoomedTimeout\n\t\t\t\t\tzoomElement.on('touchmove.zoom', (event) => {\n\t\t\t\t\t\tif (event.touches && event.touches.length > 1) {\n\t\t\t\t\t\t\tonTouchMoveZoom.bind(this.$refs.svg)(event)\n\t\t\t\t\t\t\trecentlyZoomed = true\n\t\t\t\t\t\t\tif (recentlyZoomedTimeout) window.clearTimeout(recentlyZoomedTimeout)\n\t\t\t\t\t\t\trecentlyZoomedTimeout = window.setTimeout((event) => recentlyZoomed = false, 500)\n\t\t\t\t\t\t} else if (!recentlyZoomed) {\n\t\t\t\t\t\t\t// TODO: this happens on a „sloppy“ touch/click. Wait for a certain scroll-distance to show hint?\n\t\t\t\t\t\t\t// Alternative: only show instruction once per session?\n\t\t\t\t\t\t\tthis.$store.commit('instructions', {msg: this._('Use two fingers to zoom or move around.')})\n\t\t\t\t\t\t\twindow.clearTimeout(this.instructionsTimeout)\n\t\t\t\t\t\t\tthis.instructionsTimeout = window.setTimeout(() => this.$store.commit('clearInstructions'), 2500)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t.c-plan\n\t\tposition: relative\n\t\theight: 100%\n\n\t\tg:not(.seat):focus\n\t\t\toutline: none\n\n\t\tg[role=button] text\n\t\t\tvisibility: hidden\n\t\t[aria-hidden=true] g[role=button] text\n\t\t\tdisplay: none\n\n\t\tg[role=button] rect, g[role=button] polyline\n\t\t\tfill: none\n\t\t\tstroke: var(--brand-primary, #7f5a91)\n\t\t\tstroke-width: 2\n\t\t\tdisplay: none\n\t\tg[role=button]:focus rect, g[role=button]:focus polyline\n\t\t\tdisplay: block\n\n\t\tg[role=button] polyline\n\t\t\ttransform: translate(-5px, 5px)\n\t\t\ttransition: transform .5s\n\t\tg[role=button][aria-expanded=true]:focus polyline\n\t\t\ttransform: translate(-5px, 5px) rotate(90deg)\n\n\t\t.button-group\n\t\t\tposition: absolute\n\t\t\tbottom: 1.5em\n\t\t\tright: 1.5em\n\t\t\tdisplay: flex\n\t\t\tflex-direction: column\n\t\t\tborder: 1px solid rgba(0,0,0,.25)\n\t\t\tborder-radius: var(--border-radius, 0)\n\n\t\t\t.btn-zoom\n\t\t\t\twidth: 32px\n\t\t\t\theight: 32px\n\t\t\t\ttext-indent: 100%\n\t\t\t\toverflow: hidden\n\t\t\t\twhite-space: nowrap\n\t\t\t\tpadding: 0\n\t\t\t\tmargin: 0\n\t\t\t\tcursor: pointer\n\t\t\t\tbackground-color: rgba(236,236,236,.8)\n\t\t\t\tbackground-repeat: no-repeat\n\t\t\t\tbackground-size: 16px 16px\n\t\t\t\tbackground-position: center\n\t\t\t\tborder: none\n\t\t\t.btn-zoom:hover\n\t\t\t\tbackground-color: #f9f9f9\n\t\t\t.btn-zoom + .btn-zoom\n\t\t\t\tborder-top: 1px solid #ddd\n\t\t\t.btn-zoom-in\n\t\t\t\tborder-top-left-radius: var(--border-radius, 0)\n\t\t\t\tborder-top-right-radius: var(--border-radius, 0)\n\t\t\t\tbackground-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23555' stroke-width='2' d='M0 8h16M8 0v16'/%3E%3C/svg%3E\");\n\t\t\t.btn-zoom-out\n\t\t\t\tborder-bottom-left-radius: var(--border-radius, 0)\n\t\t\t\tborder-bottom-right-radius: var(--border-radius, 0)\n\t\t\t\tbackground-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='%23555'  stroke-width='2' d='M0 8h16'/%3E%3C/svg%3E\");\n\n\t\t#plan-svg\n\t\t\twidth: 100%\n\t\t\theight: 100%\n\t\t\tmax-height: 100%\n\t\t\tdisplay: block\n\n\t\t\t&:focus\n\t\t\t\tborder: none\n\t\t\t\toutline: none\n\n\t\t\t&:focus-visible\n\t\t\t\toutline: 2px solid var(--brand-primary, #7f5a91)\n\n\t\t\t*\n\t\t\t\tuser-select: none\n\n\t\t\t.selection-area\n\t\t\t\tvector-effect: non-scaling-stroke\n\t\t\t\tstroke-width: 1px\n\t\t\t\tfill: rgba(0, 0, 204, 0.15)\n\t\t\t\tstroke: rgba(0, 0, 204, 0.4)\n\t\t\t\tstroke-style: solid\n</style>\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanView.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanView.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlanView.vue?vue&type=template&id=68e15be1&lang=pug\"\nimport script from \"./PlanView.vue?vue&type=script&lang=js\"\nexport * from \"./PlanView.vue?vue&type=script&lang=js\"\nimport style0 from \"./PlanView.vue?vue&type=style&index=0&id=68e15be1&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.tooltip.label || _vm.tooltip.description)?_c('div',{staticClass:\"tooltip\",on:{\"mouseenter\":_vm.mouseenter,\"mouseleave\":_vm.mouseleave}},[_c('div',{staticClass:\"tooltip-container\"},[(_vm.tooltip.label)?_c('b',[_vm._v(_vm._s(_vm.tooltip.label))]):_vm._e(),(_vm.tooltip.label && _vm.tooltip.description)?_c('br'):_vm._e(),_vm._v(_vm._s(_vm.tooltip.description))])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\n.tooltip(v-if=\"tooltip.label || tooltip.description\" @mouseenter=\"mouseenter\" @mouseleave=\"mouseleave\")\n\t.tooltip-container\n\t\tb(v-if=\"tooltip.label\") {{ tooltip.label }}\n\t\tbr(v-if=\"tooltip.label && tooltip.description\")\n\t\t| {{ tooltip.description }}\n\n</template>\n<script>\n\nimport {mapState} from 'vuex'\n\nexport default {\n\tdata: function () {\n\t\treturn {\n\t\t\tisMouseOver: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapState(['tooltip']),\n\t},\n\twatch: {\n\t\ttooltip: function (t) {\n\t\t\t// if no target-element is given, follow mouse (used for e.g. onhover vs. onfocus)\n\t\t\tif ((t.label || t.description) && !t.element) {\n\t\t\t\twindow.addEventListener('mousemove', this.move)\n\t\t\t\twindow.addEventListener('keydown', this.keydown)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// otherwise do not follow mouse anymore\n\t\t\twindow.removeEventListener('mousemove', this.move)\n\t\t\tif (!t.label && !t.description) {\n\t\t\t\twindow.removeEventListener('keydown', this.keydown)\n\t\t\t\treturn\n\t\t\t}\n\t\t\twindow.addEventListener('keydown', this.keydown)\n\n\t\t\t// this.$el is not available until nextTick\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// always hide tooltip until we have a position - either mouse or element\n\t\t\t\tthis.$el.style.display = 'block'\n\t\t\t\tif (!this.$el.offsetParent) return\n\n\t\t\t\tconst bb = t.element.getBoundingClientRect()\n\t\t\t\tconst offsetBbox = this.$el.offsetParent.getBoundingClientRect()\n\t\t\t\t// TODO: right-align tooltip if language is rtl?\n\t\t\t\tlet x = bb.right - offsetBbox.x - bb.width / 3\n\t\t\t\tconst y = Math.floor(bb.bottom - offsetBbox.y - bb.height / 4)\n\n\t\t\t\tif (x + this.$el.offsetWidth > window.innerWidth) {\n\t\t\t\t\tx = bb.left - offsetBbox.x - this.$el.offsetWidth + bb.width / 3\n\t\t\t\t\tthis.$el.classList.add('swapside')\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.classList.remove('swapside')\n\t\t\t\t}\n\t\t\t\tthis.$el.style.transform = `translate(${x}px, ${y}px)`\n\t\t\t})\n\t\t}\n\t},\n\tdestroyed () {\n\t\twindow.removeEventListener('mousemove', this.move)\n\t},\n\tmethods: {\n\t\tmove (event) {\n\t\t\t// always hide tooltip until we have a position - either mouse or element\n\t\t\t// due to mousemove being bound on demand, initially tooltip could have no position\n\t\t\t// when following the mouse\n\t\t\tthis.$el.style.display = 'block'\n\n\t\t\t// TODO: right-align tooltip if language is rtl?\n\t\t\tlet x = event.clientX + 12\n\t\t\tconst y = Math.floor(event.clientY - (this.$el.offsetHeight * 0.28))\n\t\t\tif (x + this.$el.offsetWidth > window.innerWidth) {\n\t\t\t\tx = x - this.$el.offsetWidth - 24\n\t\t\t\tthis.$el.classList.add('swapside')\n\t\t\t} else {\n\t\t\t\tthis.$el.classList.remove('swapside')\n\t\t\t}\n\n\t\t\tconst offsetBbox = this.$el.offsetParent.getBoundingClientRect()\n\t\t\tthis.$el.style.transform = `translate(${x - offsetBbox.x}px, ${y - offsetBbox.y}px)`\n\t\t},\n\t\tkeydown (event) {\n\t\t\tif (event.keyCode === 27) {\n\t\t\t\t// ESC-key => hide tooltip\n\t\t\t\tthis.$store.commit('clearTooltip')\n\t\t\t}\n\t\t},\n\t\tmouseenter (event) {\n\t\t\tthis.$store.commit('tooltipKeepOpen', true)\n\t\t},\n\t\tmouseleave (event) {\n\t\t\tthis.$store.commit('clearTooltip')\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t.tooltip\n\t\tdisplay: none /*always hide tooltip until we have a position - either mouse or element*/\n\t\tposition: absolute\n\t\ttop: 0\n\t\tleft: 0\n\t\tpadding: 12px 0 0\n\n\t\t.tooltip-container\n\t\t\tpointer-events: none\n\t\t\tbackground: rgba(0,0,0,0.7)\n\t\t\tcolor: #fff\n\t\t\tborder-radius: 3px\n\t\t\tborder-top-left-radius: 0\n\t\t\tpadding: 3px 8px\n\t\t\twhite-space: pre-line\n\t\t\tbox-sizing: border-box\n\n\t\t\t&:before\n\t\t\t\tcontent: \"\"\n\t\t\t\tdisplay: block\n\t\t\t\tposition: absolute\n\t\t\t\ttop: 0\n\t\t\t\tleft: 0\n\t\t\t\twidth: 12px\n\t\t\t\theight: 12px\n\t\t\t\tbackground: linear-gradient(45deg, rgba(0,0,0,0.7) 50%, rgba(0,0,0,0) 50%)\n\n\t\t&.swapside .tooltip-container\n\t\t\tborder-top-left-radius: 3px\n\t\t\tborder-top-right-radius: 0\n\n\t\t\t&:before\n\t\t\t\tleft: auto\n\t\t\t\tright: 0\n\t\t\t\tbackground: linear-gradient(135deg, rgba(0,0,0,0) 50%, rgba(0,0,0,0.7) 50%)\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloatingTooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloatingTooltip.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FloatingTooltip.vue?vue&type=template&id=647e2ac8&lang=pug\"\nimport script from \"./FloatingTooltip.vue?vue&type=script&lang=js\"\nexport * from \"./FloatingTooltip.vue?vue&type=script&lang=js\"\nimport style0 from \"./FloatingTooltip.vue?vue&type=style&index=0&id=647e2ac8&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(\"div\")\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template lang=\"pug\">\n</template>\n<script>\n/*\nThis decouples Plan from Tooltip, so one can show Custom Tooltips on Seat-hover in Plan\n*/\nimport {mapGetters, mapState} from 'vuex'\n\nexport default {\n\tcomputed: {\n\t\t...mapGetters('ui', ['_']),\n\t\t...mapState(['seatInFocus', 'tooltipKeepOpen', 'zoomTransform']),\n\t\t...mapGetters('event', ['getItem', 'getTooltip', 'isSeatAvailable']),\n\t},\n\twatch: {\n\t\tseatInFocus: function (newValue, oldValue) {\n\t\t\t// moving mouse over tooltip triggers a mouseleave for seat, which causes the seatInFocus to be cleared\n\t\t\t// => use timeout to wait if a mouseenter on tooltip happened, which causes tooltipKeepOpen to be true\n\t\t\twindow.setTimeout(() => {\n\t\t\t\tif (this.tooltipKeepOpen) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (!newValue) {\n\t\t\t\t\tthis.$store.commit('clearTooltip')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (oldValue && newValue.seat === oldValue.seat) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst element = newValue.element\n\t\t\t\tconst seat = newValue.seat\n\t\t\t\tconst item = this.getItem(seat.category)\n\t\t\t\tconst row = seat.row\n\t\t\t\tconst label = (\n\t\t\t\t\t// TODO: What if zone has no name or row should be empty labelled (empty string after trim())?\n\t\t\t\t\tthis._('%(zone)s - %(row)s - %(seat)s')\n\t\t\t\t\t\t.replace('%(zone)s', row.zone.name)\n\t\t\t\t\t\t.replace('%(row)s', (row.row_label || this._('Row %s')).replace('%s', row.row_number))\n\t\t\t\t\t\t.replace('%(seat)s', (row.seat_label || this._('Seat %s')).replace('%s', seat.seat_number))\n\t\t\t\t)\n\t\t\t\tlet description = this.getTooltip(seat) || ''\n\t\t\t\tif (description) description += '\\n'\n\t\t\t\tif (item && this.isSeatAvailable(seat)) {\n\t\t\t\t\tdescription += this._('%(item)s\\n%(price)s')\n\t\t\t\t\t\t.replace('%(item)s', item.name)\n\t\t\t\t\t\t.replace('%(price)s', this.formatPrice(item))\n\t\t\t\t} else {\n\t\t\t\t\tdescription += this._('This seat is currently not available.')\n\t\t\t\t}\n\n\t\t\t\tthis.$store.commit('tooltip', { label, description, element })\n\t\t\t}, 50)\n\t\t},\n\t\tzoomTransform: function (newValue, oldValue) {\n\t\t\tthis.$store.commit('clearTooltip')\n\t\t},\n\t},\n\tmounted () {\n\t\twindow.addEventListener('touchstart', (e) => {\n\t\t\tthis.$destroy()\n\t\t}, {\n\t\t\tonce: true,\n\t\t\tcapture: true, // capture:true as d3 will stopPropagation\n\t\t})\n\t},\n\tmethods: {\n\t\tformatPrice (item) {\n\t\t\tif (!item.variations || !item.variations.length) return item.price\n\t\t\tconst prices = item.variations.map(v => v.price)\n\t\t\treturn prices.join(' / ')\n\t\t}\n\t}\n}\n</script>\n<style lang=\"stylus\">\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TooltipSeat.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TooltipSeat.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TooltipSeat.vue?vue&type=template&id=f3241d7e&lang=pug\"\nimport script from \"./TooltipSeat.vue?vue&type=script&lang=js\"\nexport * from \"./TooltipSeat.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\nexport default {\n\tnamespaced: true,\n\tstate: {\n\t\t_plan: {},\n\t\t_seatsByGuid: {},\n\t\t_isHuge: false,\n\t},\n\tgetters: {\n\t\tplan (state) {\n\t\t\treturn state._plan\n\t\t},\n\t\tplanSize (state) {\n\t\t\treturn state._plan.size\n\t\t},\n\t\tcategories (state) {\n\t\t\treturn state._plan.categories\n\t\t},\n\t\tgetCategoryByName: (state) => (category) => {\n\t\t\treturn state._plan.categories.find(c => c.name === category) || {name: '', color: '#d9d9d9'}\n\t\t},\n\t\tgetSeatByGuid: (state) => (guid) => {\n\t\t\treturn state._seatsByGuid[guid]\n\t\t},\n\t\tisHuge (state) {\n\t\t\treturn state._isHuge\n\t\t}\n\t},\n\tmutations: {\n\t\tloadPlan (state, { plan }) {\n\t\t\t// plan = JSON.parse(plan) // Ensure there are no references left\n\t\t\tstate._seatsByGuid = {}\n\t\t\tplan.active = false\n\t\t\tlet seatCount = 0\n\t\t\tlet nrOfZones = 0\n\t\t\tfor (const z of plan.zones) {\n\t\t\t\tz.active = false\n\t\t\t\tz.index = nrOfZones++\n\t\t\t\tlet nrOfRows = 0\n\t\t\t\tfor (const r of z.rows) {\n\t\t\t\t\tr.active = false\n\t\t\t\t\tr.zone = z\n\t\t\t\t\tr.index = nrOfRows++\n\t\t\t\t\tfor (const s of r.seats) {\n\t\t\t\t\t\ts.row = r\n\t\t\t\t\t\ts.zone = z\n\t\t\t\t\t\ts.selected = false\n\t\t\t\t\t\tstate._seatsByGuid[s.seat_guid] = s\n\t\t\t\t\t\tseatCount++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (seatCount > 5000) {\n\t\t\t\t\tstate._isHuge = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstate._plan = plan\n\t\t},\n\t},\n\tactions: {\n\n\t}\n}\n","export default {\n\tnamespaced: true,\n\tstate: {\n\t\t_event: {},\n\t},\n\tgetters: {\n\t\titems (state) {\n\t\t\treturn state._event.items\n\t\t},\n\t\tisSeatAvailable: (state) => (seat) => {\n\t\t\t// TODO: cache availability of seat on seat? keep in mind to stale cache when refreshing\n\t\t\t// when the plan is drawn for the first time, its availability is checked for every seat\n\t\t\tif (!seat) return false\n\t\t\treturn state._event.available_seats.includes(seat.seat_guid)\n\t\t},\n\t\tgetItem: (state) => (category) => {\n\t\t\tif (!state._event.items) return null\n\t\t\treturn state._event.items.find(item => item.categories.includes(category))\n\t\t},\n\t\tgetItemById: (state) => (id) => {\n\t\t\tif (!state._event.items) return null\n\t\t\treturn state._event.items.find(item => item.id === id)\n\t\t},\n\t\t// TODO: make prop not method, see validation in Checkout\n\t\tvalidation: (state) => () => {\n\t\t\treturn state._event.validation\n\t\t},\n\t\tgetFlag: (state) => (seat) => {\n\t\t\treturn state._event.flags?.[seat.seat_guid]\n\t\t},\n\t\tgetTooltip: (state) => (seat) => {\n\t\t\treturn state._event.tooltips?.[seat.seat_guid]\n\t\t},\n\t\tisSoldOut (state) {\n\t\t\treturn state._event.items?.length === 0 || state._event.available_seats?.length === 0\n\t\t},\n\t},\n\tmutations: {\n\t\tloadEvent (state, { event }) {\n\t\t\tstate._event = event\n\t\t},\n\t},\n\tactions: {\n\n\t}\n}\n","export default {\n\tnamespaced: true,\n\tstate: {\n\t\titems: [],\n\t},\n\tgetters: {\n\t\titems (state) {\n\t\t\treturn state.items\n\t\t},\n\t\tisFiltered: (state) => (item) => {\n\t\t\treturn item ? state.items.includes(item.id) : false\n\t\t},\n\t},\n\tmutations: {\n\t\t// save item.id, as on event reload, it replaces items with new objects\n\t\tadd (state, { item }) {\n\t\t\tif (!state.items.includes(item.id)) {\n\t\t\t\t// force a replace instead of in-place .push as we need oldValue in ItemsFilter.watcher\n\t\t\t\tstate.items = state.items.concat([item.id])\n\t\t\t}\n\t\t},\n\t\tremove (state, { item }) {\n\t\t\tif (state.items.includes(item.id)) {\n\t\t\t\t// force a replace instead of in-place .splice as we need oldValue in ItemsFilter.watcher\n\t\t\t\tstate.items = state.items.filter(i => i !== item.id)\n\t\t\t}\n\t\t},\n\t}\n}\n","export default {\n\tnamespaced: true,\n\tstate: {\n\t\ttranslation: {},\n\t},\n\tgetters: {\n\t\t_: (state) => (s) => {\n\t\t\treturn state.translation[s] || s\n\t\t},\n\t},\n\tmutations: {\n\t\tsetTranslation (state, { translation }) {\n\t\t\tstate.translation = translation\n\t\t},\n\t}\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport plan from './plan'\nimport event from './event'\nimport filter from './filter'\nimport ui from './ui'\nimport * as d3 from 'd3'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n\tstate: {\n\t\t// View\n\t\tzoomTransform: d3.zoomTransform({k: 1, x: 0, y: 0}),\n\n\t\tisDragging: false,\n\t\tisAreaSelecting: false,\n\n\t\t// Selection\n\t\tignoreNextSelection: false,\n\t\tselection: [],\n\n\t\ttooltip: Object,\n\t\ttooltipKeepOpen: false,\n\t\tseatInFocus: Object,\n\n\t\tinstructions: '',\n\t},\n\tgetters: {\n\t\tselection (state) {\n\t\t\treturn state.selection\n\t\t},\n\t\tzoomTransform (state) {\n\t\t\treturn state.zoomTransform\n\t\t},\n\t\tseatInFocus (state) {\n\t\t\treturn state.seatInFocus ? state.seatInFocus.seat : null\n\t\t},\n\t\tisDragging (state) {\n\t\t\treturn state.isDragging\n\t\t},\n\t\tisAreaSelecting (state) {\n\t\t\treturn state.isAreaSelecting\n\t\t},\n\t\tinstructions (state) {\n\t\t\treturn state.instructions\n\t\t},\n\t},\n\tmutations: {\n\t\tinstructions (state, { msg }) {\n\t\t\tstate.instructions = msg\n\t\t},\n\t\tclearInstructions (state) {\n\t\t\tstate.instructions = ''\n\t\t},\n\t\tsetTranslation (state, { translation }) {\n\t\t\tthis.commit('ui/setTranslation', {translation})\n\t\t},\n\t\tloadPlan (state, { data }) {\n\t\t\tthis.commit('plan/loadPlan', {plan: data})\n\t\t\tstate.selection = []\n\t\t},\n\t\tloadEvent (state, { data }) {\n\t\t\tthis.commit('event/loadEvent', {event: data})\n\t\t\t// TODO: remove seats that are not available anymore from state.selection here?\n\t\t},\n\t\ttooltip (state, {label, description, element}) {\n\t\t\tstate.tooltip = {label, description, element}\n\t\t},\n\t\ttooltipKeepOpen (state, keepOpen) {\n\t\t\tstate.tooltipKeepOpen = keepOpen\n\t\t},\n\t\tclearTooltip (state) {\n\t\t\tstate.tooltip = {}\n\t\t\tstate.tooltipKeepOpen = false\n\t\t},\n\t\tfocusSeat (state, {seat, element}) {\n\t\t\tstate.seatInFocus = {seat, element}\n\t\t},\n\t\tunfocusSeat (state, {seat}) {\n\t\t\t// only unfocus seat if it is still the one who has focus\n\t\t\tif (state.seatInFocus && state.seatInFocus.seat === seat) {\n\t\t\t\tstate.seatInFocus = null\n\t\t\t}\n\t\t},\n\t\tselect (state, {seats}) {\n\t\t\tseats = seats.filter(seat => !seat.selected)\n\t\t\tseats.forEach(seat => Vue.set(seat, 'selected', true))\n\t\t\tstate.selection = state.selection.concat(seats)\n\t\t},\n\t\tunselect (state, {seats}) {\n\t\t\tseats = seats.filter(seat => seat.selected)\n\t\t\tseats.forEach(seat => Vue.set(seat, 'selected', false))\n\t\t\tstate.selection = state.selection.filter(s => !seats.includes(s))\n\t\t},\n\t\tclearSelection (state) {\n\t\t\tstate.selection = []\n\t\t},\n\t\tsetZoomTransform (state, t) {\n\t\t\tstate.zoomTransform = t\n\t\t},\n\t\tstartDrag (state) {\n\t\t\tstate.isDragging = true\n\t\t},\n\t\tendDrag (state) {\n\t\t\tstate.isDragging = false\n\t\t},\n\t\tstartAreaSelect (state) {\n\t\t\tstate.isAreaSelecting = true\n\t\t},\n\t\tendAreaSelect (state) {\n\t\t\tstate.isAreaSelecting = false\n\t\t},\n\t\ttoggleActive (state, obj) {\n\t\t\tVue.set(obj, 'active', !obj.active)\n\t\t\tif (obj.active && state.plan._isHuge && !!obj.rows) {\n\t\t\t\t// In huge plans: Only one active zone, except when there is a selection\n\t\t\t\tconst selectedZones = new Set(state.selection.map(seat => seat.zone))\n\t\t\t\tfor (const zone of state.plan._plan.zones) {\n\t\t\t\t\tif (zone.active && zone !== obj && !selectedZones.has(zone)) {\n\t\t\t\t\t\tVue.set(zone, 'active', false)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tactivate (state, obj) {\n\t\t\tVue.set(obj, 'active', true)\n\t\t}\n\t},\n\tmodules: {\n\t\tplan,\n\t\tevent,\n\t\tfilter,\n\t\tui,\n\t},\n})\n","<template lang=\"pug\">\n#app\n\tlink(rel=\"stylesheet\", type=\"text/css\", :href=\"styleSrc\")\n\tdiv(hidden)\n\t\tslot\n\tplan-view(v-if=\"!loading && !errored\", :scrollZoomWithModifier=\"scrollZoomWithModifier\", :panWithModifier=\"panWithModifier\")\n\tp#loading(v-if=\"loading\")\n\t\t<svg viewBox=\"0 0 16 16\" width=\"256\" height=\"256\" xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2\"><title>{{_(\"Loading …\")}}</title><path d=\"M11.95 2.547a2.29 2.29 0 0 1-2.286 2.286 2.29 2.29 0 0 1-2.285-2.286A2.289 2.289 0 0 1 9.664.262a2.29 2.29 0 0 1 2.286 2.285Zm4.571-.973a.325.325 0 0 0-.259-.321l-1.633-.25a4.927 4.927 0 0 0-.367-.875c.304-.42.634-.813.938-1.223a.336.336 0 0 0 .071-.206.3.3 0 0 0-.062-.196c-.375-.527-1-1.081-1.473-1.518a.351.351 0 0 0-.224-.089c-.08 0-.16.026-.214.08l-1.268.955a5.193 5.193 0 0 0-.803-.33l-.25-1.643c-.018-.152-.161-.268-.322-.268H8.673a.326.326 0 0 0-.321.25c-.143.536-.197 1.116-.259 1.661a5.346 5.346 0 0 0-.813.339l-1.232-.955a.393.393 0 0 0-.232-.089c-.304 0-1.509 1.303-1.723 1.598a.343.343 0 0 0-.081.205c0 .081.036.152.09.214.33.402.652.804.955 1.233a4.65 4.65 0 0 0-.348.821l-1.661.25c-.134.027-.241.188-.241.321v1.983c0 .151.107.294.259.321l1.634.241a4.7 4.7 0 0 0 .366.884c-.304.42-.634.813-.937 1.223a.346.346 0 0 0-.009.411c.375.518 1 1.071 1.473 1.5a.32.32 0 0 0 .223.098c.08 0 .161-.027.223-.08l1.259-.956c.259.134.527.242.804.331l.25 1.643c.018.151.16.268.321.268h1.982a.329.329 0 0 0 .322-.25c.143-.536.196-1.117.259-1.661.276-.089.553-.206.812-.339l1.232.964c.072.044.152.08.232.08.304 0 1.509-1.312 1.724-1.598a.3.3 0 0 0 .08-.205.357.357 0 0 0-.089-.224 18.424 18.424 0 0 1-.956-1.232c.143-.259.25-.527.349-.812l1.651-.25c.143-.027.25-.188.25-.322V1.574Z\" style=\"fill-rule:nonzero\" transform=\"translate(-1.664 5.453)\" fill=\"#fff\"/></svg>\n\tp#error(v-if=\"errored\")\n\t\t<svg viewBox=\"0 0 16 16\" width=\"256\" height=\"256\" xmlns=\"http://www.w3.org/2000/svg\" xml:space=\"preserve\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\">\n\t\t\t<title>Error:</title>\n\t\t\t<g transform=\"matrix(1,0,0,1,1.14285,13.7143)\">\n\t\t\t\t<path d=\"M10.259,-3.696C10.259,-3.545 10.196,-3.393 10.089,-3.286L9.286,-2.482C9.179,-2.375 9.027,-2.313 8.875,-2.313C8.723,-2.313 8.58,-2.375 8.473,-2.482L6.857,-4.098L5.241,-2.482C5.134,-2.375 4.991,-2.313 4.839,-2.313C4.688,-2.313 4.536,-2.375 4.429,-2.482L3.625,-3.286C3.518,-3.393 3.455,-3.545 3.455,-3.696C3.455,-3.848 3.518,-3.991 3.625,-4.098L5.241,-5.714L3.625,-7.33C3.518,-7.438 3.455,-7.58 3.455,-7.732C3.455,-7.884 3.518,-8.036 3.625,-8.143L4.429,-8.946C4.536,-9.054 4.688,-9.116 4.839,-9.116C4.991,-9.116 5.134,-9.054 5.241,-8.946L6.857,-7.33L8.473,-8.946C8.58,-9.054 8.723,-9.116 8.875,-9.116C9.027,-9.116 9.179,-9.054 9.286,-8.946L10.089,-8.143C10.196,-8.036 10.259,-7.884 10.259,-7.732C10.259,-7.58 10.196,-7.438 10.089,-7.33L8.473,-5.714L10.089,-4.098C10.196,-3.991 10.259,-3.848 10.259,-3.696ZM13.714,-5.714C13.714,-9.5 10.643,-12.571 6.857,-12.571C3.071,-12.571 0,-9.5 0,-5.714C0,-1.929 3.071,1.143 6.857,1.143C10.643,1.143 13.714,-1.929 13.714,-5.714Z\" style=\"fill-rule:nonzero;\"/>\n\t\t\t</g>\n\t\t</svg>\n\t\t| {{errorMessage}}\n\tp#status(vi-if=\"statusMessage\", v-html=\"statusMessage\")\n\tfloating-tooltip\n\ttooltip-seat\n</template>\n<script>\nimport PlanView from 'components/plan/PlanView'\nimport FloatingTooltip from 'components/FloatingTooltip'\nimport TooltipSeat from 'components/TooltipSeat'\nimport store from './store'\nimport {mapGetters, mapState} from 'vuex'\n\n// TODO: store ggf. deaktivieren und in App auf child-component events umstellen\n// Plan braucht da nicht viele: select-seat, hover-seat (für tooltip)\n// event und plan könnte man als props übergeben\n\nexport default {\n\tstore,\n\tcomponents: {PlanView, FloatingTooltip, TooltipSeat},\n\tprops: {\n\t\tevent: String,\n\t\tplan: String,\n\t\tpanWithModifier: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: false,\n\t\t},\n\t\tscrollZoomWithModifier: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t\tdefault: true,\n\t\t},\n\t\tstyleSrc: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: 'css/pretixSeatingPlan.css',\n\t\t}\n\t},\n\tdata () {\n\t\treturn {\n\t\t\tloading: true,\n\t\t\terrored: false,\n\t\t\teventLoadingController: null,\n\t\t\tstatusMessage: '',\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters('ui', ['_']),\n\t\t// rename due to name-collision with isSeatAvailable from methods (for API)\n\t\t...mapGetters('event', {getItem: 'getItem', _isSeatAvailable: 'isSeatAvailable', isSoldOut: 'isSoldOut', validation: 'validation'}),\n\t\t...mapGetters('plan', ['getSeatByGuid']),\n\t\t...mapState(['selection', 'zoomTransform']),\n\t},\n\twatch: {\n\t\tevent (newValue) {\n\t\t\tconsole.warn('setting pretix-seating.event through JavaScript is currently not supported')\n\t\t},\n\t\tplan (newValue) {\n\t\t\tconsole.warn('setting pretix-seating.plan through JavaScript is currently not supported')\n\t\t},\n\t\tselection: {\n\t\t\t// immediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\tif (!newValue.length && !oldValue.length) return\n\t\t\t\tconst seats = []\n\t\t\t\t// TODO: reactive seat object passed to outside - is that a good idea?\n\t\t\t\tnewValue.forEach(s => {\n\t\t\t\t\tseats.push({seat: s, item: this.getItem(s.category)})\n\t\t\t\t})\n\t\t\t\tthis.$nextTick(() => this.$emit('select', seats))\n\t\t\t}\n\t\t},\n\t\tzoomTransform: {\n\t\t\t// immediate: true,\n\t\t\thandler (newValue, oldValue) {\n\t\t\t\tthis.$emit('transform', {\n\t\t\t\t\tk: newValue.k,\n\t\t\t\t\tx: newValue.x,\n\t\t\t\t\ty: newValue.y\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tisSoldOut (newValue, oldValue) {\n\t\t\tthis.$emit(newValue ? 'soldout' : 'reopen')\n\t\t},\n\t},\n\tmounted () {\n\t\tif (document.readyState === 'loading') {\n\t\t\tdocument.addEventListener('DOMContentLoaded', this.onSlotsUpdate)\n\t\t} else {\n\t\t\tthis.onSlotsUpdate()\n\t\t}\n\n\t\t// load event- and plan-data in parallel\n\t\tthis.eventLoadingController?.abort()\n\t\tthis.eventLoadingController = new AbortController()\n\t\tPromise\n\t\t\t.all([\n\t\t\t\tfetch(this.event, {signal: this.eventLoadingController.signal}),\n\t\t\t\tfetch(this.plan)\n\t\t\t])\n\t\t\t.then((responses) => {\n\t\t\t\tresponses.forEach(response => {\n\t\t\t\t\tif (!response.ok) throw Error(`${response.status}: ${response.statusText}`)\n\t\t\t\t})\n\t\t\t\tconst json = responses.map((response) => response.json())\n\t\t\t\treturn Promise.all(json)\n\t\t\t})\n\t\t\t.then(data => {\n\t\t\t\t// map responses to store-mutations\n\t\t\t\t['loadEvent', 'loadPlan'].forEach((mutation, index) => {\n\t\t\t\t\tthis.$store.commit(mutation, {\n\t\t\t\t\t\tdata: data[index]\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.loading = this.errored = false\n\t\t\t\tthis.statusMessage = this.errorMessage = ''\n\t\t\t\tthis.$emit('load')\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\t// could be network-errors, HTTP-errors or JSON-errors\n\t\t\t\tthis.errored = true\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.statusMessage = error.message\n\t\t\t\tthis.errorMessage = this._('Could not load seating plan/event data')\n\t\t\t\tthis.$emit('error', error)\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.eventLoadingController = null\n\t\t\t})\n\t},\n\tmethods: {\n\t\t// these methods are exposed as API on the CustomElement, so choose wisely\n\t\trefresh () {\n\t\t\t// reload event-data in background, fail silently?\n\t\t\t// abort existing requests loading event-data\n\t\t\tthis.eventLoadingController?.abort()\n\t\t\tthis.eventLoadingController = new AbortController()\n\t\t\tfetch(this.event, { signal: this.eventLoadingController.signal })\n\t\t\t\t.then(response => {\n\t\t\t\t\tif (!response.ok) throw Error(response.statusText)\n\t\t\t\t\treturn response.json()\n\t\t\t\t})\n\t\t\t\t.then(data => {\n\t\t\t\t\tthis.eventLoadingController = null\n\t\t\t\t\tthis.$store.commit('loadEvent', {data})\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.error(error)\n\t\t\t\t})\n\t\t},\n\t\tselectSeat (guid) {\n\t\t\tif (this.loading) {\n\t\t\t\treturn this.$once('load', () => this.selectSeat(guid))\n\t\t\t}\n\t\t\tconst seat = this.getSeatByGuid(guid)\n\t\t\tif (seat && this._isSeatAvailable(seat)) this.$store.commit('select', {seats: [seat]})\n\t\t},\n\t\tunselectSeat (guid) {\n\t\t\tconst seat = this.getSeatByGuid(guid)\n\t\t\tif (seat) this.$store.commit('unselect', {seats: [seat]})\n\t\t},\n\t\tisSeatAvailable (guid) {\n\t\t\tconst seat = this.getSeatByGuid(guid)\n\t\t\treturn this._isSeatAvailable(seat)\n\t\t},\n\t\tsetTransform (t) {\n\t\t\tthis.$store.commit('setZoomTransform', t)\n\t\t},\n\t\tgetSelectedSeats () {\n\t\t\tconst seats = []\n\t\t\tthis.selection.forEach(s => {\n\t\t\t\tseats.push({seat: s.seat_guid, item: this.getItem(s.category)?.id || null})\n\t\t\t})\n\t\t\treturn seats\n\t\t},\n\t\tgetValidationRules () {\n\t\t\treturn this.validation()\n\t\t},\n\t\tonSlotsUpdate () {\n\t\t\tthis.$slots?.default?.forEach(vNode => {\n\t\t\t\tif (vNode.tag !== 'SCRIPT') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst settings = JSON.parse(vNode.elm.textContent)\n\t\t\t\t\tif (settings.translation) {\n\t\t\t\t\t\tthis.$store.commit('setTranslation', {translation: settings.translation})\n\t\t\t\t\t}\n\n\t\t\t\t\tconst thisObj = this\n\t\t\t\t\tfunction setSelectedSeats () {\n\t\t\t\t\t\tconst seats = (settings.selected_seats || []).map(s => thisObj.getSeatByGuid(s)).filter(e => e)\n\t\t\t\t\t\tthis.$store.commit('select', {seats})\n\t\t\t\t\t}\n\t\t\t\t\tif (this.loading) {\n\t\t\t\t\t\tthis.$once('load', setSelectedSeats)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetSelectedSeats()\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.error(e)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t}\n}\n</script>\n<style lang=\"stylus\">\n\t@keyframes spin {\n\t\tfrom {\n\t\t\ttransform:rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform:rotate(360deg);\n\t\t}\n\t}\n\t:host\n\t\tdisplay: block\n\t\tposition: relative\n\t\t--border-radius: 0\n\n\t#app\n\t\theight: 100%\n\t\tposition: relative\n\n\t#loading, #error\n\t\tposition: absolute\n\t\ttop: 0\n\t\tleft: 0\n\t\tmargin: 0\n\t\twidth: 100%\n\t\theight: 100%\n\t\tdisplay: flex\n\t\talign-items: center\n\t\tjustify-content: center\n\t\tcolor: var(--text-muted, #747474)\n\n\t#loading svg\n\t\tposition: absolute\n\t\ttop: 50%\n\t\tleft: 50%\n\t\tmargin-top: -128px\n\t\tmargin-left: -128px\n\t\twidth: 256px\n\t\theight: 256px\n\t\t-webkit-animation: spin 8s infinite linear\n\t\tanimation: spin 8s infinite linear\n\t#loading path\n\t\tfill: #eee\n\n\t#error\n\t\tcolor: var(--brand-danger, #c30)\n\t\tfont-weight: bold\n\n\t#error svg\n\t\twidth: 24px\n\t\theight: 24px\n\t\tfill: var(--brand-danger, #c30)\n\t\tmargin-right: .25em\n\n\t#status\n\t\tposition: absolute\n\t\tleft: 0\n\t\tbottom: 0\n\t\tcolor: #999\n\t\tpadding: .5em\n\t\tmargin: 0\n\n\t.text-muted\n\t\tcolor: var(--text-muted, #767676)\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingPlan.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SeatingPlan.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SeatingPlan.vue?vue&type=template&id=63e45792&lang=pug\"\nimport script from \"./SeatingPlan.vue?vue&type=script&lang=js\"\nexport * from \"./SeatingPlan.vue?vue&type=script&lang=js\"\nimport style0 from \"./SeatingPlan.vue?vue&type=style&index=0&id=63e45792&prod&lang=stylus\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport wrap from '@vue/web-component-wrapper'\nimport SeatingPlan from './SeatingPlan.vue'\n\nwindow.customElements.define('pretix-seat', class extends HTMLElement {})\nwindow.customElements.define('pretix-seating-plan', wrap(Vue, SeatingPlan))\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n  return fn && uncurryThis(fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es-x/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (String(name).slice(0, 7) === 'Symbol(') {\n    name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.24.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n  var INDICES_SUPPORT = true;\n  try {\n    RegExp('.', 'd');\n  } catch (error) {\n    INDICES_SUPPORT = false;\n  }\n\n  var O = {};\n  // modern V8 bug\n  var calls = '';\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n  var addGetter = function (key, chr) {\n    // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n    Object.defineProperty(O, key, { get: function () {\n      calls += chr;\n      return true;\n    } });\n  };\n\n  var pairs = {\n    dotAll: 's',\n    global: 'g',\n    ignoreCase: 'i',\n    multiline: 'm',\n    sticky: 'y'\n  };\n\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n  for (var key in pairs) addGetter(key, pairs[key]);\n\n  // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n  return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n  configurable: true,\n  get: regExpFlags\n});\n","module.exports = Vue;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","require('./plan.js')\nrequire('./cart.js')\nrequire('./checkout-button.js')\n"],"names":["normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","exports","_vm","_c","_self","staticClass","selection","length","_l","s","index","key","seat","seat_guid","ref","refInFor","attrs","item","isValid","gettext","on","onSeatRemove","loading","_e","_v","_s","valid","inputName","id","domProps","name","removeButtonLabel","remove","seatLabelZoneFirst","description","variations","selectName","selectVariationLabel","change","v","variation","price","originalPrice","labelOriginalPrice","labelNewPrice","props","data","computed","zoneLabel","rowLabel","seatLabel","replace","seatLabelSeatFirst","watch","immediate","handler","methods","component","components","CartItem","seatingPlan","type","required","default","checkoutButton","translation","planElement","planComponent","window","document","setPlan","console","getSelectedSeats","seats","onValidate","customElements","define","HTMLElement","connectedCallback","isConnected","getAttribute","settings","querySelector","textContent","JSON","parse","e","error","el","createElement","appendChild","Vue","SeatingCart","errorMessage","checkoutLabel","isFixable","onOptimize","hasSingles","isSeatAvailable","selectedGuids","map","selectedRows","Set","row","category","gap","gapStartedBySelected","seati","Array","from","entries","includes","allowed","lookahead","lookbehind","selectionCanBeOptimized","groups","splitSelectionIntoGroups","group","better","proposeBetterGroup","offset","optimizeSelection","maxruns","newSeats","Object","values","filter","undefined","improved","newSelected","forEach","push","currentGroup","penaltyForGroup","groupSelectedGuids","penaltyLeft","penaltyRight","leftDone","rightDone","leftFound","rightFound","penalty","fillsGap","start_direction","slice","reverse","Math","min","singleKept","countPerCategory","argmin","isValidGroup","proposal","pCountPerCategory","cat","shifted","shiftedIds","max","optimize","allowSingles","fixable","validate","droppedSeats","addSeats","app","SeatingCheckoutButton","$on","dispatchEvent","CustomEvent","detail","camelizeRE","camelize","str","_","c","toUpperCase","hyphenateRE","hyphenate","toLowerCase","getInitialProps","propsList","res","injectHook","unshift","callHooks","vm","hooks","createCustomEvent","args","bubbles","cancelable","isBoolean","val","test","String","isNumber","convertAttributeValue","value","parsed","parseFloat","isNaN","toVNodes","children","i","l","toVNode","node","nodeType","trim","getAttributes","innerHTML","slot","tagName","attributes","attr","nodeName","nodeValue","wrap","Component","isAsync","cid","hyphenatedPropsList","camelizedPropsList","camelizedPropsMap","isInitialized","initialize","isArray","keys","originalPropsAsObject","reduce","emit","$emit","customElement","defineProperty","CustomElement","prototype","get","_wrapper","set","newVal","enumerable","configurable","syncAttribute","camelized","hasAttribute","constructor","self","super","attachShadow","mode","wrapper","slotChildren","observer","MutationObserver","mutations","hasChildrenChange","m","target","attributeName","freeze","$createElement","childNodes","observe","childList","subtree","characterData","vueComponent","$refs","inner","_isMounted","syncInitialAttributes","then","resolved","__esModule","Symbol","toStringTag","$mount","$el","disconnectedCallback","styleSrc","_t","errored","scrollZoomWithModifier","panWithModifier","staticStyle","statusMessage","plan","size","viewport","mousedown","onFocusin","onDblclick","class","mainclasses","$store","state","zoomTransform","toString","active","toggleActive","$event","indexOf","_k","keyCode","preventDefault","apply","arguments","setToggleSize","zones","zone","selectFrom","svg","onAreaSelect","cursorAddon","zoomIn","zoomOut","luminanace","r","g","b","a","pow","contrast","rgb1","rgb2","l1","l2","ratio","hex2rgb","hex","shorthandRegex","result","exec","parseInt","lighten","color","amount","channels","startsWith","substring","split","x","round","join","applyMixin","version","Number","mixin","vuexInit","_init","init","store","global","devtoolHook","__VUE_DEVTOOLS_GLOBAL_HOOK__","devtoolPlugin","_devtoolHook","targetState","replaceState","subscribe","mutation","prepend","subscribeAction","action","find","list","f","deepCopy","obj","cache","hit","original","copy","forEachValue","fn","isObject","isPromise","partial","arg","Module","rawModule","runtime","_children","create","_rawModule","rawState","prototypeAccessors","namespaced","addChild","module","removeChild","getChild","hasChild","update","actions","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","defineProperties","ModuleCollection","rawRootModule","register","path","targetModule","newModule","modules","root","getNamespace","namespace","this$1","rawChildModule","unregister","child","isRegistered","Store","install","plugins","strict","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","commit","payload","installModule","resetStoreVM","plugin","useDevtools","devtools","config","prototypeAccessors$1","genericSubscribe","subs","splice","resetStore","hot","oldVm","wrappedGetters","silent","$$state","enableStrictMode","_withCommit","_data","nextTick","$destroy","rootState","isRoot","parentState","getNestedState","moduleName","local","makeLocalContext","namespacedType","registerMutation","registerAction","getter","registerGetter","noNamespace","_type","_payload","_options","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","entry","rootGetters","Promise","resolve","catch","err","rawGetter","$watch","process","deep","sync","_Vue","sub","before","all","reject","after","cb","registerModule","preserveState","unregisterModule","delete","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","len","mapGetters","mapActions","createNamespacedHelpers","bind","isValidMap","charAt","helper","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","logger","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","message","startMessage","log","endMessage","formattedAction","groupCollapsed","groupEnd","time","Date","pad","getHours","getMinutes","getSeconds","getMilliseconds","repeat","times","num","maxLength","classObject","toggleList","isItemFilterEmpty","onItemFilterAllNone","items","isChecked","onChange","priceLabel","categoryIndexes","idx","style","categoryDotStyle","ItemsFilterItem","isOpen","resizeTimeout","filteredItems","open","isItemFilterFull","mounted","destroyed","once","onClick","event","onBgClick","calcMaxHeight","cursor","cssClasses","mousemove","instructions","fadeoutTimeout","transform","areas","uuid","isTabable","hideWithPolygon","hullPolygonColor","hullPointPolygon","rows","rowNumberStart","y","textAnchor","row_number","rowNumberEnd","label","ariaLabel","ariaDescriptionId","ariaRole","ariaDisabled","ariaChecked","toggleSelected","mouseenter","mouseleave","unfocus","focus","position","radius","categoryColor","seatDescription","mouseEntered","isItemFiltered","selected","available","filtered","hiddenLabel","darkBg","uncategorized","isSelected","isAvailable","isFiltered","priceFormatted","flag","element","fl","places","toFixed","getRowNumber","end","theta","flipped","PlanSeat","htmlId","outline","area","shape","border_color","circle","ellipse","rectangle","width","height","polygonPoints","text","ConvexHullGrahamScan","anchorPoint","points","Point","_findPolarAngle","ONE_RADIAN","deltaX","deltaY","angle","atan2","addPoint","newAnchor","_sortPoints","sort","polarA","polarB","_checkPoints","p0","p1","p2","difAngle","cwAngle","ccwAngle","getHull","pointsLength","hullPoints","every","point","shift","ap","p","some","PlanRow","PlanArea","firstAvailableCategory","convexHull","selecting","start","current","abs","positionInZone","k","offsetParent","mouseup","to","altKey","none","selector","select","_groups","subgroups","j","subnode","n","subgroup","__data__","Selection","_parents","array","empty","querySelectorAll","arrayAll","selectorAll","parents","matches","childMatcher","childFind","match","childFirst","firstElementChild","childrenFilter","selectAll","matcher","_enter","sparse","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","has","constant","arraylike","enterGroup","updateGroup","exitGroup","previous","next","i0","i1","_exit","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","parentNode","insertBefore","compare","compareNode","ascending","sortgroups","sortgroup","NaN","callback","xhtml","xlink","xml","xmlns","prefix","namespaces","hasOwnProperty","space","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","getAttributeNS","each","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","classedRemove","classedTrue","classedFalse","classedFunction","contains","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElementNS","creatorFixed","creator","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","property","contextListener","listener","parseTypenames","typenames","t","onRemove","typename","__on","o","removeEventListener","onAdd","addEventListener","params","createEvent","initEvent","dispatchConstant","dispatchFunction","selection_selection","selection_select","selection_selectAll","selectChild","selection_selectChild","selectChildren","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","nodes","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","classed","selection_classed","selection_text","html","selection_html","selection_raise","selection_lower","selection_append","insert","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","iterator","selection_iterator","noop","Error","Dispatch","types","T","that","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","restart","timerFlush","wake","nap","poke","t0","t2","t1","Infinity","sleep","clearTimeout","clearInterval","setInterval","elapsed","stop","TypeError","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","duration","ease","schedule","tick","interrupt","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","d","sqrt","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","q","number","scale","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","transition","factory","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatHex8","formatHex8","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","format","rgbn","Rgb","rgba","hsla","rgbConvert","opacity","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","clampa","clampi","Hsl","hsl","clamph","clampt","hsl2rgb","m2","basis","v0","v1","v2","v3","t3","floor","assign","displayable","clamp","linear","exponential","gamma","nogamma","rgbGamma","colorRgb","rgbSpline","spline","colors","basisClosed","reA","reB","source","zero","one","am","bm","bs","bi","lastIndex","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","defaultTiming","easeCubicInOut","selection_interrupt","selection_transition","number1","number2","nonpassivecapture","capture","passive","stopImmediatePropagation","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","epsilon2","cosh","exp","sinh","tanh","zoomRho","rho","rho2","rho4","zoom","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","d1","b0","b1","r0","r1","coshr0","u","SQRT2","_1","_2","_4","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","left","clientLeft","top","clientTop","pageX","pageY","ZoomEvent","Transform","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY","__zoom","nopropagation","defaultFilter","ctrlKey","button","defaultExtent","SVGElement","viewBox","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaMode","defaultTouchable","navigator","maxTouchPoints","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","touchstarting","touchfirst","touchending","constrain","wheelDelta","touchable","scaleExtent","interpolateZoom","listeners","touchDelay","wheelDelay","clickDistance2","tapDistance","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","centroid","gesture","w","clean","__zooming","Gesture","taps","pointer","wheel","mouse","wheelidled","mousemoved","mouseupped","x0","y0","dragDisable","moved","dragEnable","changedTouches","k1","shiftKey","started","touches","identifier","touch0","touch1","l0","dp","dl","hypot","collection","scaleBy","scaleTo","k0","translateBy","translateTo","clickDistance","ItemsFilter","CursorAddon","InstructionsOverlay","PlanZone","SelectionArea","viewportWidth","viewportHeight","fullScreen","lastMouseUp","unwatchDragSelectHint","recentlyScrolled","recentlyScrolledTimeout","instructionsTimeout","minHitArea","isMac","categories","newValue","setProperties","oldValue","msg","created","onScroll","onResize","d3","centerPoint","centerPointRelToViewport","setZoomTransform","isPanning","signal","controller","setCursorAddon","getSeatsInArea","z","createZoom","modifierFlag","prevZoomTransform","seatNode","zoomElement","onTouchMoveZoom","recentlyZoomed","recentlyZoomedTimeout","tooltip","isMouseOver","move","keydown","seatInFocus","formatPrice","_plan","_seatsByGuid","_isHuge","planSize","getCategoryByName","getSeatByGuid","guid","isHuge","loadPlan","seatCount","nrOfZones","nrOfRows","_event","available_seats","getItem","getItemById","validation","getFlag","flags","getTooltip","tooltips","isSoldOut","loadEvent","setTranslation","Vuex","isDragging","isAreaSelecting","ignoreNextSelection","tooltipKeepOpen","clearInstructions","keepOpen","clearTooltip","focusSeat","unfocusSeat","unselect","clearSelection","startDrag","endDrag","startAreaSelect","endAreaSelect","selectedZones","activate","ui","PlanView","FloatingTooltip","TooltipSeat","eventLoadingController","_isSeatAvailable","fetch","responses","finally","refresh","selectSeat","unselectSeat","setTransform","getValidationRules","onSlotsUpdate","setSelectedSeats","SeatingPlan","isCallable","tryToString","$TypeError","argument","$String","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","object","bitmap","writable","makeBuiltIn","descriptor","setter","fails","EXISTS","it","getBuiltIn","userAgent","Deno","versions","v8","NATIVE_BIND","Function","hasOwn","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","PROPER","CONFIGURABLE","uncurryThis","aFunction","method","aCallable","V","P","func","check","globalThis","toObject","functionToString","inspectSource","NATIVE_WEAK_MAP","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","wmget","wmhas","wmset","metadata","facade","STATE","isPrototypeOf","USE_SYMBOL_AS_UID","$Object","$Symbol","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","V8_VERSION","getOwnPropertySymbols","symbol","sham","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","O","Attributes","input","pref","valueOf","hasIndices","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","uid","defineGlobalProperty","SHARED","IS_PURE","copyright","license","requireObjectCoercible","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","defineBuiltInAccessor","regExpFlags","RegExpPrototype","FORCED","INDICES_SUPPORT","calls","expected","addGetter","chr","pairs","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","prop","require"],"sourceRoot":""}