{"version":3,"file":"main.0f8b91f56eed6b0e.js","sources":["webpack:///../node_modules/@anttikissa/fisher-yates-shuffle/index.js","webpack:///../node_modules/classnames/index.js","webpack:///../node_modules/preact/compat/dist/compat.module.js","webpack:///../node_modules/preact/dist/preact.module.js","webpack:///../node_modules/preact/hooks/dist/hooks.module.js","webpack:///../node_modules/react-sortablejs/dist/index.js","webpack:///../node_modules/sortablejs/modular/sortable.esm.js","webpack:///../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///../node_modules/@vimeo/player/dist/player.es.js","webpack:///./utils.js","webpack:///../node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack:///../node_modules/@swc/helpers/esm/_async_to_generator.js","webpack:///../node_modules/@swc/helpers/esm/_define_property.js","webpack:///../node_modules/@swc/helpers/esm/_object_spread.js","webpack:///../node_modules/@swc/helpers/esm/_array_like_to_array.js","webpack:///../node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","webpack:///../node_modules/@swc/helpers/esm/_sliced_to_array.js","webpack:///../node_modules/@swc/helpers/esm/_array_with_holes.js","webpack:///../node_modules/@swc/helpers/esm/_iterable_to_array_limit.js","webpack:///../node_modules/@swc/helpers/esm/_non_iterable_rest.js","webpack:///../node_modules/tslib/tslib.es6.mjs","webpack:///./config.js","webpack:///./storage.js","webpack:///../node_modules/@swc/helpers/esm/_to_consumable_array.js","webpack:///../node_modules/@swc/helpers/esm/_array_without_holes.js","webpack:///../node_modules/@swc/helpers/esm/_iterable_to_array.js","webpack:///../node_modules/@swc/helpers/esm/_non_iterable_spread.js","webpack:///./data.js","webpack:///../node_modules/@swc/helpers/esm/_object_spread_props.js","webpack:///../node_modules/wouter-preact/esm/preact-deps-dec5c677.js","webpack:///../node_modules/wouter-preact/esm/use-browser-location.js","webpack:///../node_modules/wouter-preact/esm/index.js","webpack:///../node_modules/regexparam/dist/index.mjs","webpack:///../node_modules/@swc/helpers/esm/_object_without_properties.js","webpack:///../node_modules/@swc/helpers/esm/_object_without_properties_loose.js","webpack:///./screen.js","webpack:///./tracking.js","webpack:///./intro/intro.js","webpack:///./player/player.js","webpack:///./people/person-button.js","webpack:///./people/person.js","webpack:///./dialog/dialog.js","webpack:///./code.js","webpack:///./forms.js","webpack:///./resources/content.js","webpack:///./dialog/dialogComponents.js","webpack:///./resources/resource-preview.js","webpack:///./resources/timeline.js","webpack:///./resources/resources.js","webpack:///./resources/resource.js","webpack:///./resources/selection.js","webpack:///./resources/judgement.js","webpack:///./urls.js","webpack:///./intro/teaser.js","webpack:///./people/people.js","webpack:///./aspects/aspects.js","webpack:///./reflexion/reflexion.js","webpack:///./portfolio/portfolio.js","webpack:///./main.js"],"sourcesContent":["function swap(a, i, j) {\n\tlet tmp = a[i]\n\ta[i] = a[j]\n\ta[j] = tmp\n}\n\n// Math.random, or a drop-in replacement\nlet mathRandom = Math.random\n\nfunction setRandom(random) {\n\tmathRandom = random\n}\n\n// Returns an integer in [0, n[\nfunction random(n) {\n\treturn (mathRandom() * n) | 0\n}\n\nfunction shuffle(a, options = { inPlace: false }) {\n\tlet result = options.inPlace ? a : [...a]\n\n\t// Fisher-Yates-Knuth-etc in-place sorting algorithm\n\tfor (let i = a.length - 1; i >= 0; i--) {\n\t\tlet randomIndex = random(i + 1)\n\t\tswap(result, i, randomIndex)\n\t}\n\n\t// This does it in the opposite order.\n\t// You see why the original algorithm chose to do it from end to beginning,\n\t// since the computation of randomIndex seems complicated in this version.\n\t// for (let i = 0; i < a.length; i++) {\n\t// \tlet randomIndex = a.length - 1 - random(a.length - i)\n\t// \tswap(result, i, randomIndex)\n\t// }\n\n\treturn result\n}\n\n/* globals module */\nmodule.exports = shuffle\nmodule.exports.setRandom = setRandom\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as c,createRef as l,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useState as a,useLayoutEffect as s,useEffect as h,useCallback as v,useContext as d,useDebugValue as p,useId as m,useImperativeHandle as y,useMemo as _,useReducer as b,useRef as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){var e=t(),r=a({t:{__:e,u:t}}),u=r[0].t,o=r[1];return s(function(){u.__=e,u.u=t,x(u)&&o({t:u})},[n,e,t]),h(function(){return x(u)&&o({t:u}),n(function(){x(u)&&o({t:u})})},[n]),e}function x(n){var t,e,r=n.u,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}function R(n){n()}function w(n){return n}function k(){return[!1,R]}var I=s;function N(n,t){this.props=n,this.context=t}function M(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(N.prototype=new n).isPureReactComponent=!0,N.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var T=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),T&&T(n)};var A=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function D(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=A,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var L=function(n,t){return null==n?null:r(r(n).map(t))},O={map:L,forEach:L,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},F=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);F(n,t,e,r)};var U=e.unmount;function V(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return V(n,t,e)})),n}function W(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return W(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function P(){this.__u=0,this.o=null,this.__b=null}function j(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function z(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function B(){this.i=null,this.l=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),U&&U(n)},(P.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.o&&(r.o=[]),r.o.push(e);var u=j(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(c):c())};e.__R=i;var c=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=W(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.o.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},P.prototype.componentWillUnmount=function(){this.o=[]},P.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=V(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var H=function(n,t,e){if(++e[1]===e[0]&&n.l.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.l.size))for(e=n.i;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.i=e=e[2]}};function Z(n){return this.getChildContext=function(){return n.context},n.children}function Y(n){var e=this,r=n.h;e.componentWillUnmount=function(){o(null,e.v),e.v=null,e.h=null},e.h&&e.h!==r&&e.componentWillUnmount(),e.v||(e.h=r,e.v={nodeType:1,parentNode:r,childNodes:[],contains:function(){return!0},appendChild:function(n){this.childNodes.push(n),e.h.appendChild(n)},insertBefore:function(n,t){this.childNodes.push(n),e.h.insertBefore(n,t)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.h.removeChild(n)}}),o(t(Z,{context:e.context},n.__v),e.v)}function $(n,e){var r=t(Y,{__v:n,h:e});return r.containerInfo=e,r}(B.prototype=new n).__a=function(n){var t=this,e=j(t.__v),r=t.l.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),H(t,n,r)):u()};e?e(o):o()}},B.prototype.render=function(n){this.i=null,this.l=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.l.set(t[e],this.i=[1,0,this.i]);return n.children},B.prototype.componentDidUpdate=B.prototype.componentDidMount=function(){var n=this;this.l.forEach(function(t,e){H(n,e,t)})};var q=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,G=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,J=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,K=/[A-Z0-9]/g,Q=\"undefined\"!=typeof document,X=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function nn(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function tn(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var en=e.event;function rn(){}function un(){return this.cancelBubble}function on(){return this.defaultPrevented}e.event=function(n){return en&&(n=en(n)),n.persist=rn,n.isPropagationStopped=un,n.isDefaultPrevented=on,n.nativeEvent=n};var cn,ln={enumerable:!1,configurable:!0,get:function(){return this.class}},fn=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={},o=-1===e.indexOf(\"-\");for(var i in t){var c=t[i];if(!(\"value\"===i&&\"defaultValue\"in t&&null==c||Q&&\"children\"===i&&\"noscript\"===e||\"class\"===i||\"className\"===i)){var l=i.toLowerCase();\"defaultValue\"===i&&\"value\"in t&&null==t.value?i=\"value\":\"download\"===i&&!0===c?c=\"\":\"translate\"===l&&\"no\"===c?c=!1:\"o\"===l[0]&&\"n\"===l[1]?\"ondoubleclick\"===l?i=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||X(t.type)?\"onfocus\"===l?i=\"onfocusin\":\"onblur\"===l?i=\"onfocusout\":J.test(i)&&(i=l):l=i=\"oninput\":o&&G.test(i)?i=i.replace(K,\"-$&\").toLowerCase():null===c&&(c=void 0),\"oninput\"===l&&u[i=l]&&(i=\"oninputCapture\"),u[i]=c}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",ln)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=q,fn&&fn(n)};var an=e.__r;e.__r=function(n){an&&an(n),cn=n.__c};var sn=e.diffed;e.diffed=function(n){sn&&sn(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),cn=null};var hn={ReactCurrentDispatcher:{current:{readContext:function(n){return cn.__n[n.__c].props.value},useCallback:v,useContext:d,useDebugValue:p,useDeferredValue:w,useEffect:h,useId:m,useImperativeHandle:y,useInsertionEffect:I,useLayoutEffect:s,useMemo:_,useReducer:b,useRef:S,useState:a,useSyncExternalStore:C,useTransition:k}}},vn=\"18.3.1\";function dn(n){return t.bind(null,n)}function pn(n){return!!n&&n.$$typeof===q}function mn(n){return pn(n)&&n.type===u}function yn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function _n(n){return pn(n)?f.apply(null,arguments):n}function bn(n){return!!n.__k&&(o(null,n),!0)}function Sn(n){return n&&(n.base||1===n.nodeType&&n)||null}var gn=function(n,t){return n(t)},En=function(n,t){return n(t)},Cn=u,xn=pn,Rn={useState:a,useId:m,useReducer:b,useEffect:h,useLayoutEffect:s,useInsertionEffect:I,useTransition:k,useDeferredValue:w,useSyncExternalStore:C,startTransition:R,useRef:S,useImperativeHandle:y,useMemo:_,useCallback:v,useContext:d,useDebugValue:p,version:\"18.3.1\",Children:O,render:nn,hydrate:tn,unmountComponentAtNode:bn,createPortal:$,createElement:t,createContext:c,createFactory:dn,cloneElement:_n,createRef:l,Fragment:u,isValidElement:pn,isElement:xn,isFragment:mn,isMemo:yn,findDOMNode:Sn,Component:n,PureComponent:N,memo:M,forwardRef:D,flushSync:En,unstable_batchedUpdates:gn,StrictMode:Cn,Suspense:P,SuspenseList:B,lazy:z,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:hn};export{O as Children,N as PureComponent,Cn as StrictMode,P as Suspense,B as SuspenseList,hn as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,_n as cloneElement,dn as createFactory,$ as createPortal,Rn as default,Sn as findDOMNode,En as flushSync,D as forwardRef,tn as hydrate,xn as isElement,mn as isFragment,yn as isMemo,pn as isValidElement,z as lazy,M as memo,nn as render,R as startTransition,bn as unmountComponentAtNode,gn as unstable_batchedUpdates,w as useDeferredValue,I as useInsertionEffect,C as useSyncExternalStore,k as useTransition,vn as version};\n//# sourceMappingURL=compat.module.js.map\n","var n,l,u,t,i,r,o,e,f,c,s,a,h,p={},v=[],y=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,d=Array.isArray;function w(n,l){for(var u in l)n[u]=l[u];return n}function _(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function g(l,u,t){var i,r,o,e={};for(o in u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:e[o]=u[o];if(arguments.length>2&&(e.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===e[o]&&(e[o]=l.defaultProps[o]);return m(l,e,i,r,null)}function m(n,t,i,r,o){var e={type:n,props:t,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:null==o?++u:o,__i:-1,__u:0};return null==o&&null!=l.vnode&&l.vnode(e),e}function b(){return{current:null}}function k(n){return n.children}function x(n,l){this.props=n,this.context=l}function C(n,l){if(null==l)return n.__?C(n.__,n.__i+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?C(n):null}function S(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return S(n)}}function M(n){(!n.__d&&(n.__d=!0)&&i.push(n)&&!P.__r++||r!==l.debounceRendering)&&((r=l.debounceRendering)||o)(P)}function P(){var n,u,t,r,o,f,c,s;for(i.sort(e);n=i.shift();)n.__d&&(u=i.length,r=void 0,f=(o=(t=n).__v).__e,c=[],s=[],t.__P&&((r=w({},o)).__v=o.__v+1,l.vnode&&l.vnode(r),j(t.__P,r,o,t.__n,t.__P.namespaceURI,32&o.__u?[f]:null,c,null==f?C(o):f,!!(32&o.__u),s),r.__v=o.__v,r.__.__k[r.__i]=r,z(c,r,s),r.__e!=f&&S(r)),i.length>u&&i.sort(e));P.__r=0}function $(n,l,u,t,i,r,o,e,f,c,s){var a,h,y,d,w,_,g=t&&t.__k||v,m=l.length;for(f=I(u,l,g,f,m),a=0;a<m;a++)null!=(y=u.__k[a])&&(h=-1===y.__i?p:g[y.__i]||p,y.__i=a,_=j(n,y,h,i,r,o,e,f,c,s),d=y.__e,y.ref&&h.ref!=y.ref&&(h.ref&&V(h.ref,null,y),s.push(y.ref,y.__c||d,y)),null==w&&null!=d&&(w=d),4&y.__u||h.__k===y.__k?f=A(y,f,n):\"function\"==typeof y.type&&void 0!==_?f=_:d&&(f=d.nextSibling),y.__u&=-7);return u.__e=w,f}function I(n,l,u,t,i){var r,o,e,f,c,s=u.length,a=s,h=0;for(n.__k=new Array(i),r=0;r<i;r++)null!=(o=l[r])&&\"boolean\"!=typeof o&&\"function\"!=typeof o?(f=r+h,(o=n.__k[r]=\"string\"==typeof o||\"number\"==typeof o||\"bigint\"==typeof o||o.constructor==String?m(null,o,null,null,null):d(o)?m(k,{children:o},null,null,null):void 0===o.constructor&&o.__b>0?m(o.type,o.props,o.key,o.ref?o.ref:null,o.__v):o).__=n,o.__b=n.__b+1,e=null,-1!==(c=o.__i=L(o,u,f,a))&&(a--,(e=u[c])&&(e.__u|=2)),null==e||null===e.__v?(-1==c&&h--,\"function\"!=typeof o.type&&(o.__u|=4)):c!=f&&(c==f-1?h--:c==f+1?h++:(c>f?h--:h++,o.__u|=4))):n.__k[r]=null;if(a)for(r=0;r<s;r++)null!=(e=u[r])&&0==(2&e.__u)&&(e.__e==t&&(t=C(e)),q(e,e));return t}function A(n,l,u){var t,i;if(\"function\"==typeof n.type){for(t=n.__k,i=0;t&&i<t.length;i++)t[i]&&(t[i].__=n,l=A(t[i],l,u));return l}n.__e!=l&&(l&&n.type&&!u.contains(l)&&(l=C(n)),u.insertBefore(n.__e,l||null),l=n.__e);do{l=l&&l.nextSibling}while(null!=l&&8==l.nodeType);return l}function H(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(d(n)?n.some(function(n){H(n,l)}):l.push(n)),l}function L(n,l,u,t){var i,r,o=n.key,e=n.type,f=l[u];if(null===f||f&&o==f.key&&e===f.type&&0==(2&f.__u))return u;if(t>(null!=f&&0==(2&f.__u)?1:0))for(i=u-1,r=u+1;i>=0||r<l.length;){if(i>=0){if((f=l[i])&&0==(2&f.__u)&&o==f.key&&e===f.type)return i;i--}if(r<l.length){if((f=l[r])&&0==(2&f.__u)&&o==f.key&&e===f.type)return r;r++}}return-1}function T(n,l,u){\"-\"==l[0]?n.setProperty(l,null==u?\"\":u):n[l]=null==u?\"\":\"number\"!=typeof u||y.test(l)?u:u+\"px\"}function F(n,l,u,t,i){var r;n:if(\"style\"==l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof t&&(n.style.cssText=t=\"\"),t)for(l in t)u&&l in u||T(n.style,l,\"\");if(u)for(l in u)t&&u[l]===t[l]||T(n.style,l,u[l])}else if(\"o\"==l[0]&&\"n\"==l[1])r=l!=(l=l.replace(f,\"$1\")),l=l.toLowerCase()in n||\"onFocusOut\"==l||\"onFocusIn\"==l?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?t?u.u=t.u:(u.u=c,n.addEventListener(l,r?a:s,r)):n.removeEventListener(l,r?a:s,r);else{if(\"http://www.w3.org/2000/svg\"==i)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"width\"!=l&&\"height\"!=l&&\"href\"!=l&&\"list\"!=l&&\"form\"!=l&&\"tabIndex\"!=l&&\"download\"!=l&&\"rowSpan\"!=l&&\"colSpan\"!=l&&\"role\"!=l&&\"popover\"!=l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null==u||!1===u&&\"-\"!=l[4]?n.removeAttribute(l):n.setAttribute(l,\"popover\"==l&&1==u?\"\":u))}}function O(n){return function(u){if(this.l){var t=this.l[u.type+n];if(null==u.t)u.t=c++;else if(u.t<t.u)return;return t(l.event?l.event(u):u)}}}function j(n,u,t,i,r,o,e,f,c,s){var a,h,p,v,y,g,m,b,C,S,M,P,I,A,H,L,T,F=u.type;if(void 0!==u.constructor)return null;128&t.__u&&(c=!!(32&t.__u),o=[f=u.__e=t.__e]),(a=l.__b)&&a(u);n:if(\"function\"==typeof F)try{if(b=u.props,C=\"prototype\"in F&&F.prototype.render,S=(a=F.contextType)&&i[a.__c],M=a?S?S.props.value:a.__:i,t.__c?m=(h=u.__c=t.__c).__=h.__E:(C?u.__c=h=new F(b,M):(u.__c=h=new x(b,M),h.constructor=F,h.render=B),S&&S.sub(h),h.props=b,h.state||(h.state={}),h.context=M,h.__n=i,p=h.__d=!0,h.__h=[],h._sb=[]),C&&null==h.__s&&(h.__s=h.state),C&&null!=F.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=w({},h.__s)),w(h.__s,F.getDerivedStateFromProps(b,h.__s))),v=h.props,y=h.state,h.__v=u,p)C&&null==F.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),C&&null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(C&&null==F.getDerivedStateFromProps&&b!==v&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(b,M),!h.__e&&(null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(b,h.__s,M)||u.__v==t.__v)){for(u.__v!=t.__v&&(h.props=b,h.state=h.__s,h.__d=!1),u.__e=t.__e,u.__k=t.__k,u.__k.some(function(n){n&&(n.__=u)}),P=0;P<h._sb.length;P++)h.__h.push(h._sb[P]);h._sb=[],h.__h.length&&e.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(b,h.__s,M),C&&null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(v,y,g)})}if(h.context=M,h.props=b,h.__P=n,h.__e=!1,I=l.__r,A=0,C){for(h.state=h.__s,h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),H=0;H<h._sb.length;H++)h.__h.push(h._sb[H]);h._sb=[]}else do{h.__d=!1,I&&I(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++A<25);h.state=h.__s,null!=h.getChildContext&&(i=w(w({},i),h.getChildContext())),C&&!p&&null!=h.getSnapshotBeforeUpdate&&(g=h.getSnapshotBeforeUpdate(v,y)),f=$(n,d(L=null!=a&&a.type===k&&null==a.key?a.props.children:a)?L:[L],u,t,i,r,o,e,f,c,s),h.base=u.__e,u.__u&=-161,h.__h.length&&e.push(h),m&&(h.__E=h.__=null)}catch(n){if(u.__v=null,c||null!=o)if(n.then){for(u.__u|=c?160:128;f&&8==f.nodeType&&f.nextSibling;)f=f.nextSibling;o[o.indexOf(f)]=null,u.__e=f}else for(T=o.length;T--;)_(o[T]);else u.__e=t.__e,u.__k=t.__k;l.__e(n,u,t)}else null==o&&u.__v==t.__v?(u.__k=t.__k,u.__e=t.__e):f=u.__e=N(t.__e,u,t,i,r,o,e,c,s);return(a=l.diffed)&&a(u),128&u.__u?void 0:f}function z(n,u,t){for(var i=0;i<t.length;i++)V(t[i],t[++i],t[++i]);l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function N(u,t,i,r,o,e,f,c,s){var a,h,v,y,w,g,m,b=i.props,k=t.props,x=t.type;if(\"svg\"==x?o=\"http://www.w3.org/2000/svg\":\"math\"==x?o=\"http://www.w3.org/1998/Math/MathML\":o||(o=\"http://www.w3.org/1999/xhtml\"),null!=e)for(a=0;a<e.length;a++)if((w=e[a])&&\"setAttribute\"in w==!!x&&(x?w.localName==x:3==w.nodeType)){u=w,e[a]=null;break}if(null==u){if(null==x)return document.createTextNode(k);u=document.createElementNS(o,x,k.is&&k),c&&(l.__m&&l.__m(t,e),c=!1),e=null}if(null===x)b===k||c&&u.data===k||(u.data=k);else{if(e=e&&n.call(u.childNodes),b=i.props||p,!c&&null!=e)for(b={},a=0;a<u.attributes.length;a++)b[(w=u.attributes[a]).name]=w.value;for(a in b)if(w=b[a],\"children\"==a);else if(\"dangerouslySetInnerHTML\"==a)v=w;else if(!(a in k)){if(\"value\"==a&&\"defaultValue\"in k||\"checked\"==a&&\"defaultChecked\"in k)continue;F(u,a,null,w,o)}for(a in k)w=k[a],\"children\"==a?y=w:\"dangerouslySetInnerHTML\"==a?h=w:\"value\"==a?g=w:\"checked\"==a?m=w:c&&\"function\"!=typeof w||b[a]===w||F(u,a,w,b[a],o);if(h)c||v&&(h.__html===v.__html||h.__html===u.innerHTML)||(u.innerHTML=h.__html),t.__k=[];else if(v&&(u.innerHTML=\"\"),$(u,d(y)?y:[y],t,i,r,\"foreignObject\"==x?\"http://www.w3.org/1999/xhtml\":o,e,f,e?e[0]:i.__k&&C(i,0),c,s),null!=e)for(a=e.length;a--;)_(e[a]);c||(a=\"value\",\"progress\"==x&&null==g?u.removeAttribute(\"value\"):void 0!==g&&(g!==u[a]||\"progress\"==x&&!g||\"option\"==x&&g!==b[a])&&F(u,a,g,b[a],o),a=\"checked\",void 0!==m&&m!==u[a]&&F(u,a,m,b[a],o))}return u}function V(n,u,t){try{if(\"function\"==typeof n){var i=\"function\"==typeof n.__u;i&&n.__u(),i&&null==u||(n.__u=n(u))}else n.current=u}catch(n){l.__e(n,t)}}function q(n,u,t){var i,r;if(l.unmount&&l.unmount(n),(i=n.ref)&&(i.current&&i.current!==n.__e||V(i,null,u)),null!=(i=n.__c)){if(i.componentWillUnmount)try{i.componentWillUnmount()}catch(n){l.__e(n,u)}i.base=i.__P=null}if(i=n.__k)for(r=0;r<i.length;r++)i[r]&&q(i[r],u,t||\"function\"!=typeof n.type);t||_(n.__e),n.__c=n.__=n.__e=void 0}function B(n,l,u){return this.constructor(n,u)}function D(u,t,i){var r,o,e,f;t==document&&(t=document.documentElement),l.__&&l.__(u,t),o=(r=\"function\"==typeof i)?null:i&&i.__k||t.__k,e=[],f=[],j(t,u=(!r&&i||t).__k=g(k,null,[u]),o||p,p,t.namespaceURI,!r&&i?[i]:o?null:t.firstChild?n.call(t.childNodes):null,e,!r&&i?i:o?o.__e:t.firstChild,r,f),z(e,u,f)}function E(n,l){D(n,l,E)}function G(l,u,t){var i,r,o,e,f=w({},l.props);for(o in l.type&&l.type.defaultProps&&(e=l.type.defaultProps),u)\"key\"==o?i=u[o]:\"ref\"==o?r=u[o]:f[o]=void 0===u[o]&&void 0!==e?e[o]:u[o];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),m(l.type,f,i||l.key,r||l.ref,null)}function J(n,l){var u={__c:l=\"__cC\"+h++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=new Set,(t={})[l]=this,this.getChildContext=function(){return t},this.componentWillUnmount=function(){u=null},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.forEach(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.add(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u&&u.delete(n),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=v.slice,l={__e:function(n,l,u,t){for(var i,r,o;l=l.__;)if((i=l.__c)&&!i.__)try{if((r=i.constructor)&&null!=r.getDerivedStateFromError&&(i.setState(r.getDerivedStateFromError(n)),o=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),o=i.__d),o)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},x.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=w({},this.state),\"function\"==typeof n&&(n=n(w({},u),this.props)),n&&w(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},x.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},x.prototype.render=k,i=[],o=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,e=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,f=/(PointerCapture)$|Capture$/i,c=0,s=O(!1),a=O(!0),h=0;export{x as Component,k as Fragment,G as cloneElement,J as createContext,g as createElement,b as createRef,g as h,E as hydrate,t as isValidElement,l as options,D as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=n,e=c.__b,a=c.__r,v=c.diffed,l=c.__c,m=c.unmount,s=c.__;function d(n,t){c.__h&&c.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({}),u.__[n]}function h(n){return o=1,p(D,n)}function p(n,u,i){var o=d(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=o.__c.props!==n;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),c&&c.call(this,n,t,r)||i};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function y(n,u){var i=d(t++,3);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function _(n,u){var i=d(t++,4);!c.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function A(n){return o=5,T(function(){return{current:n}},[])}function F(n,t,r){o=6,_(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function T(n,r){var u=d(t++,7);return C(u.__H,r)&&(u.__=n(),u.__H=r,u.__h=n),u.__}function q(n,t){return o=8,T(function(){return n},t)}function x(n){var u=r.context[n.__c],i=d(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function P(n,t){c.useDebugValue&&c.useDebugValue(t?t(n):n)}function b(n){var u=d(t++,10),i=h();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=d(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],c.__e(t,n.__v)}}c.__b=function(n){r=null,e&&e(n)},c.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),s&&s(n,t)},c.__r=function(n){a&&a(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.i=n.__N=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},c.diffed=function(n){v&&v(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===c.requestAnimationFrame||((i=c.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.i=void 0})),u=r=null},c.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],c.__e(r,n.__v)}}),l&&l(n,t)},c.unmount=function(n){m&&m(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&c.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{q as useCallback,x as useContext,P as useDebugValue,y as useEffect,b as useErrorBoundary,g as useId,F as useImperativeHandle,_ as useLayoutEffect,T as useMemo,p as useReducer,A as useRef,h as useState};\n//# sourceMappingURL=hooks.module.js.map\n","var $8zHUo$sortablejs = require(\"sortablejs\");\nvar $8zHUo$classnames = require(\"classnames\");\nvar $8zHUo$react = require(\"react\");\nvar $8zHUo$tinyinvariant = require(\"tiny-invariant\");\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\n\n$parcel$export(module.exports, \"Sortable\", () => $882b6d93070905b3$re_export$Sortable);\n$parcel$export(module.exports, \"Direction\", () => $882b6d93070905b3$re_export$Direction);\n$parcel$export(module.exports, \"DOMRect\", () => $882b6d93070905b3$re_export$DOMRect);\n$parcel$export(module.exports, \"GroupOptions\", () => $882b6d93070905b3$re_export$GroupOptions);\n$parcel$export(module.exports, \"MoveEvent\", () => $882b6d93070905b3$re_export$MoveEvent);\n$parcel$export(module.exports, \"Options\", () => $882b6d93070905b3$re_export$Options);\n$parcel$export(module.exports, \"PullResult\", () => $882b6d93070905b3$re_export$PullResult);\n$parcel$export(module.exports, \"PutResult\", () => $882b6d93070905b3$re_export$PutResult);\n$parcel$export(module.exports, \"SortableEvent\", () => $882b6d93070905b3$re_export$SortableEvent);\n$parcel$export(module.exports, \"SortableOptions\", () => $882b6d93070905b3$re_export$SortableOptions);\n$parcel$export(module.exports, \"Utils\", () => $882b6d93070905b3$re_export$Utils);\n$parcel$export(module.exports, \"ReactSortable\", () => $7fe8e3ea572bda7a$export$11bbed9ee0012c13);\n\n\n\n\n\nfunction $eb03e74f8f7db1f3$export$1d0aa160432dfea5(node) {\n if (node.parentElement !== null) node.parentElement.removeChild(node);\n}\nfunction $eb03e74f8f7db1f3$export$6d240faa51aa562f(parent, newChild, index) {\n const refChild = parent.children[index] || null;\n parent.insertBefore(newChild, refChild);\n}\nfunction $eb03e74f8f7db1f3$export$d7d742816c28cf91(customs) {\n $eb03e74f8f7db1f3$export$77f49a256021c8de(customs);\n $eb03e74f8f7db1f3$export$a6177d5829f70ebc(customs);\n}\nfunction $eb03e74f8f7db1f3$export$77f49a256021c8de(customs) {\n customs.forEach((curr)=>$eb03e74f8f7db1f3$export$1d0aa160432dfea5(curr.element));\n}\nfunction $eb03e74f8f7db1f3$export$a6177d5829f70ebc(customs) {\n customs.forEach((curr)=>{\n $eb03e74f8f7db1f3$export$6d240faa51aa562f(curr.parentElement, curr.element, curr.oldIndex);\n });\n}\nfunction $eb03e74f8f7db1f3$export$4655efe700f887a(evt, list) {\n const mode = $eb03e74f8f7db1f3$export$1fc0f6205829e19c(evt);\n const parentElement = {\n parentElement: evt.from\n };\n let custom = [];\n switch(mode){\n case \"normal\":\n /* eslint-disable */ const item = {\n element: evt.item,\n newIndex: evt.newIndex,\n oldIndex: evt.oldIndex,\n parentElement: evt.from\n };\n custom = [\n item\n ];\n break;\n case \"swap\":\n const drag = {\n element: evt.item,\n oldIndex: evt.oldIndex,\n newIndex: evt.newIndex,\n ...parentElement\n };\n const swap = {\n element: evt.swapItem,\n oldIndex: evt.newIndex,\n newIndex: evt.oldIndex,\n ...parentElement\n };\n custom = [\n drag,\n swap\n ];\n break;\n case \"multidrag\":\n custom = evt.oldIndicies.map((curr, index)=>({\n element: curr.multiDragElement,\n oldIndex: curr.index,\n newIndex: evt.newIndicies[index].index,\n ...parentElement\n }));\n break;\n }\n /* eslint-enable */ const customs = $eb03e74f8f7db1f3$export$bc06a3af7dc65f53(custom, list);\n return customs;\n}\nfunction $eb03e74f8f7db1f3$export$c25cf8080bd305ec(normalized, list) {\n const a = $eb03e74f8f7db1f3$export$be2da95e6167b0bd(normalized, list);\n const b = $eb03e74f8f7db1f3$export$eca851ee65ae17e4(normalized, a);\n return b;\n}\nfunction $eb03e74f8f7db1f3$export$be2da95e6167b0bd(normalized, list) {\n const newList = [\n ...list\n ];\n normalized.concat().reverse().forEach((curr)=>newList.splice(curr.oldIndex, 1));\n return newList;\n}\nfunction $eb03e74f8f7db1f3$export$eca851ee65ae17e4(normalized, list, evt, clone) {\n const newList = [\n ...list\n ];\n normalized.forEach((curr)=>{\n const newItem = clone && evt && clone(curr.item, evt);\n newList.splice(curr.newIndex, 0, newItem || curr.item);\n });\n return newList;\n}\nfunction $eb03e74f8f7db1f3$export$1fc0f6205829e19c(evt) {\n if (evt.oldIndicies && evt.oldIndicies.length > 0) return \"multidrag\";\n if (evt.swapItem) return \"swap\";\n return \"normal\";\n}\nfunction $eb03e74f8f7db1f3$export$bc06a3af7dc65f53(inputs, list) {\n const normalized = inputs.map((curr)=>({\n ...curr,\n item: list[curr.oldIndex]\n })).sort((a, b)=>a.oldIndex - b.oldIndex);\n return normalized;\n}\nfunction $eb03e74f8f7db1f3$export$7553c81e62e31b7e(props) {\n /* eslint-disable */ const { list: // react sortable props\n list , setList: setList , children: children , tag: tag , style: style , className: className , clone: clone , onAdd: // sortable options that have methods we want to overwrite\n onAdd , onChange: onChange , onChoose: onChoose , onClone: onClone , onEnd: onEnd , onFilter: onFilter , onRemove: onRemove , onSort: onSort , onStart: onStart , onUnchoose: onUnchoose , onUpdate: onUpdate , onMove: onMove , onSpill: onSpill , onSelect: onSelect , onDeselect: onDeselect , ...options } = props;\n /* eslint-enable */ return options;\n}\n\n\n/** Holds a global reference for which react element is being dragged */ // @todo - use context to manage this. How does one use 2 different providers?\nconst $7fe8e3ea572bda7a$var$store = {\n dragging: null\n};\nclass $7fe8e3ea572bda7a$export$11bbed9ee0012c13 extends (0, $8zHUo$react.Component) {\n /* eslint-disable-next-line */ static defaultProps = {\n clone: (item)=>item\n };\n constructor(props){\n super(props);\n // @todo forward ref this component\n this.ref = /*#__PURE__*/ (0, $8zHUo$react.createRef)();\n // make all state false because we can't change sortable unless a mouse gesture is made.\n const newList = [\n ...props.list\n ].map((item)=>Object.assign(item, {\n chosen: false,\n selected: false\n }));\n props.setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n (0, ($parcel$interopDefault($8zHUo$tinyinvariant)))(//@ts-expect-error: Doesn't exist. Will deprecate soon.\n !props.plugins, `\nPlugins prop is no longer supported.\nInstead, mount it with \"Sortable.mount(new MultiDrag())\"\nPlease read the updated README.md at https://github.com/SortableJS/react-sortablejs.\n `);\n }\n componentDidMount() {\n if (this.ref.current === null) return;\n const newOptions = this.makeOptions();\n (0, ($parcel$interopDefault($8zHUo$sortablejs))).create(this.ref.current, newOptions);\n }\n componentDidUpdate(prevProps) {\n if (prevProps.disabled !== this.props.disabled && this.sortable) this.sortable.option(\"disabled\", this.props.disabled);\n }\n render() {\n const { tag: tag , style: style , className: className , id: id } = this.props;\n const classicProps = {\n style: style,\n className: className,\n id: id\n };\n // if no tag, default to a `div` element.\n const newTag = !tag || tag === null ? \"div\" : tag;\n return /*#__PURE__*/ (0, $8zHUo$react.createElement)(newTag, {\n // @todo - find a way (perhaps with the callback) to allow AntD components to work\n ref: this.ref,\n ...classicProps\n }, this.getChildren());\n }\n getChildren() {\n const { children: children , dataIdAttr: dataIdAttr , selectedClass: selectedClass = \"sortable-selected\" , chosenClass: chosenClass = \"sortable-chosen\" , dragClass: /* eslint-disable */ dragClass = \"sortable-drag\" , fallbackClass: fallbackClass = \"sortable-falback\" , ghostClass: ghostClass = \"sortable-ghost\" , swapClass: swapClass = \"sortable-swap-highlight\" , filter: /* eslint-enable */ filter = \"sortable-filter\" , list: list , } = this.props;\n // if no children, don't do anything.\n if (!children || children == null) return null;\n const dataid = dataIdAttr || \"data-id\";\n /* eslint-disable-next-line */ return (0, $8zHUo$react.Children).map(children, (child, index)=>{\n if (child === undefined) return undefined;\n const item = list[index] || {};\n const { className: prevClassName } = child.props;\n // @todo - handle the function if avalable. I don't think anyone will be doing this soon.\n const filtered = typeof filter === \"string\" && {\n [filter.replace(\".\", \"\")]: !!item.filtered\n };\n const className = (0, ($parcel$interopDefault($8zHUo$classnames)))(prevClassName, {\n [selectedClass]: item.selected,\n [chosenClass]: item.chosen,\n ...filtered\n });\n return /*#__PURE__*/ (0, $8zHUo$react.cloneElement)(child, {\n [dataid]: child.key,\n className: className\n });\n });\n }\n /** Appends the `sortable` property to this component */ get sortable() {\n const el = this.ref.current;\n if (el === null) return null;\n const key = Object.keys(el).find((k)=>k.includes(\"Sortable\"));\n if (!key) return null;\n //@ts-expect-error: fix me.\n return el[key];\n }\n /** Converts all the props from `ReactSortable` into the `options` object that `Sortable.create(el, [options])` can use. */ makeOptions() {\n const DOMHandlers = [\n \"onAdd\",\n \"onChoose\",\n \"onDeselect\",\n \"onEnd\",\n \"onRemove\",\n \"onSelect\",\n \"onSpill\",\n \"onStart\",\n \"onUnchoose\",\n \"onUpdate\", \n ];\n const NonDOMHandlers = [\n \"onChange\",\n \"onClone\",\n \"onFilter\",\n \"onSort\", \n ];\n const newOptions = (0, $eb03e74f8f7db1f3$export$7553c81e62e31b7e)(this.props);\n DOMHandlers.forEach((name)=>newOptions[name] = this.prepareOnHandlerPropAndDOM(name));\n NonDOMHandlers.forEach((name)=>newOptions[name] = this.prepareOnHandlerProp(name));\n /** onMove has 2 arguments and needs to be handled seperately. */ const onMove1 = (evt, originalEvt)=>{\n const { onMove: onMove } = this.props;\n const defaultValue = evt.willInsertAfter || -1;\n if (!onMove) return defaultValue;\n const result = onMove(evt, originalEvt, this.sortable, $7fe8e3ea572bda7a$var$store);\n if (typeof result === \"undefined\") return false;\n return result;\n };\n return {\n ...newOptions,\n onMove: onMove1\n };\n }\n /** Prepares a method that will be used in the sortable options to call an `on[Handler]` prop & an `on[Handler]` ReactSortable method. */ prepareOnHandlerPropAndDOM(evtName) {\n return (evt)=>{\n // call the component prop\n this.callOnHandlerProp(evt, evtName);\n // calls state change\n //@ts-expect-error: until @types multidrag item is in\n this[evtName](evt);\n };\n }\n /** Prepares a method that will be used in the sortable options to call an `on[Handler]` prop */ prepareOnHandlerProp(evtName) {\n return (evt)=>{\n // call the component prop\n this.callOnHandlerProp(evt, evtName);\n };\n }\n /** Calls the `props.on[Handler]` function */ callOnHandlerProp(evt, evtName) {\n const propEvent = this.props[evtName];\n if (propEvent) propEvent(evt, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n // SORTABLE DOM HANDLING\n onAdd(evt) {\n const { list: list , setList: setList , clone: clone } = this.props;\n /* eslint-disable-next-line */ const otherList = [\n ...$7fe8e3ea572bda7a$var$store.dragging.props.list\n ];\n const customs = (0, $eb03e74f8f7db1f3$export$4655efe700f887a)(evt, otherList);\n (0, $eb03e74f8f7db1f3$export$77f49a256021c8de)(customs);\n const newList = (0, $eb03e74f8f7db1f3$export$eca851ee65ae17e4)(customs, list, evt, clone).map((item)=>Object.assign(item, {\n selected: false\n }));\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onRemove(evt) {\n const { list: list , setList: setList } = this.props;\n const mode = (0, $eb03e74f8f7db1f3$export$1fc0f6205829e19c)(evt);\n const customs = (0, $eb03e74f8f7db1f3$export$4655efe700f887a)(evt, list);\n (0, $eb03e74f8f7db1f3$export$a6177d5829f70ebc)(customs);\n let newList = [\n ...list\n ];\n // remove state if not in clone mode. otherwise, keep.\n if (evt.pullMode !== \"clone\") newList = (0, $eb03e74f8f7db1f3$export$be2da95e6167b0bd)(customs, newList);\n else {\n // switch used to get the clone\n let customClones = customs;\n switch(mode){\n case \"multidrag\":\n customClones = customs.map((item, index)=>({\n ...item,\n element: evt.clones[index]\n }));\n break;\n case \"normal\":\n customClones = customs.map((item)=>({\n ...item,\n element: evt.clone\n }));\n break;\n case \"swap\":\n default:\n (0, ($parcel$interopDefault($8zHUo$tinyinvariant)))(true, `mode \"${mode}\" cannot clone. Please remove \"props.clone\" from <ReactSortable/> when using the \"${mode}\" plugin`);\n }\n (0, $eb03e74f8f7db1f3$export$77f49a256021c8de)(customClones);\n // replace selected items with cloned items\n customs.forEach((curr)=>{\n const index = curr.oldIndex;\n /* eslint-disable-next-line */ const newItem = this.props.clone(curr.item, evt);\n newList.splice(index, 1, newItem);\n });\n }\n // remove item.selected from list\n newList = newList.map((item)=>Object.assign(item, {\n selected: false\n }));\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onUpdate(evt) {\n const { list: list , setList: setList } = this.props;\n const customs = (0, $eb03e74f8f7db1f3$export$4655efe700f887a)(evt, list);\n (0, $eb03e74f8f7db1f3$export$77f49a256021c8de)(customs);\n (0, $eb03e74f8f7db1f3$export$a6177d5829f70ebc)(customs);\n const newList = (0, $eb03e74f8f7db1f3$export$c25cf8080bd305ec)(customs, list);\n return setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onStart() {\n $7fe8e3ea572bda7a$var$store.dragging = this;\n }\n onEnd() {\n $7fe8e3ea572bda7a$var$store.dragging = null;\n }\n onChoose(evt) {\n const { list: list , setList: setList } = this.props;\n const newList = list.map((item, index)=>{\n let newItem = item;\n if (index === evt.oldIndex) newItem = Object.assign(item, {\n chosen: true\n });\n return newItem;\n });\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onUnchoose(evt) {\n const { list: list , setList: setList } = this.props;\n const newList = list.map((item, index)=>{\n let newItem = item;\n if (index === evt.oldIndex) newItem = Object.assign(newItem, {\n chosen: false\n });\n return newItem;\n });\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onSpill(evt) {\n const { removeOnSpill: removeOnSpill , revertOnSpill: revertOnSpill } = this.props;\n if (removeOnSpill && !revertOnSpill) (0, $eb03e74f8f7db1f3$export$1d0aa160432dfea5)(evt.item);\n }\n onSelect(evt) {\n const { list: list , setList: setList } = this.props;\n const newList = list.map((item)=>Object.assign(item, {\n selected: false\n }));\n evt.newIndicies.forEach((curr)=>{\n const index = curr.index;\n if (index === -1) {\n console.log(`\"${evt.type}\" had indice of \"${curr.index}\", which is probably -1 and doesn't usually happen here.`);\n console.log(evt);\n return;\n }\n newList[index].selected = true;\n });\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n onDeselect(evt) {\n const { list: list , setList: setList } = this.props;\n const newList = list.map((item)=>Object.assign(item, {\n selected: false\n }));\n evt.newIndicies.forEach((curr)=>{\n const index = curr.index;\n if (index === -1) return;\n newList[index].selected = true;\n });\n setList(newList, this.sortable, $7fe8e3ea572bda7a$var$store);\n }\n}\n\n\nvar $faefaad95e5fcca0$exports = {};\n\n\n$parcel$exportWildcard(module.exports, $faefaad95e5fcca0$exports);\n\n\n//# sourceMappingURL=index.js.map\n","/**!\n * Sortable 1.15.6\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.6\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\nfunction matches( /**HTMLElement*/el, /**String*/selector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n return false;\n}\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\nfunction closest( /**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n return null;\n}\nvar R_SPACE = /\\s+/g;\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\nfunction css(el, prop, val) {\n var style = el && el.style;\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n } while (!selfOnly && (el = el.parentNode));\n }\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n return matrixFn && new matrixFn(appliedTransforms);\n}\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n return list;\n }\n return [];\n}\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode;\n\n // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect();\n\n // Set relative to edges of padding box of container\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n } while (container = container.parentNode);\n }\n }\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n\n /* jshint boss:true */\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n return false;\n}\n\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n currentChild++;\n }\n i++;\n }\n return null;\n}\n\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n return last || null;\n}\n\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\nfunction index(el, selector) {\n var index = 0;\n if (!el || !el.parentNode) {\n return -1;\n }\n\n /* jshint boss:true */\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n return index;\n}\n\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n return [offsetLeft, offsetTop];\n}\n\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n return -1;\n}\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n } while (elem = elem.parentNode);\n return getWindowScrollingElement();\n}\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n return dst;\n}\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\nvar _throttleTimeout;\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\nfunction getChildContainingRectFromElement(container, options, ghostEl) {\n var rect = {};\n Array.from(container.children).forEach(function (child) {\n var _rect$left, _rect$top, _rect$right, _rect$bottom;\n if (!closest(child, options.draggable, container, false) || child.animated || child === ghostEl) return;\n var childRect = getRect(child);\n rect.left = Math.min((_rect$left = rect.left) !== null && _rect$left !== void 0 ? _rect$left : Infinity, childRect.left);\n rect.top = Math.min((_rect$top = rect.top) !== null && _rect$top !== void 0 ? _rect$top : Infinity, childRect.top);\n rect.right = Math.max((_rect$right = rect.right) !== null && _rect$right !== void 0 ? _rect$right : -Infinity, childRect.right);\n rect.bottom = Math.max((_rect$bottom = rect.bottom) !== null && _rect$bottom !== void 0 ? _rect$bottom : -Infinity, childRect.bottom);\n });\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect);\n\n // If animating: compensate for current animation\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n target.toRect = toRect;\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) &&\n // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n }\n\n // if fromRect != toRect: animate\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n if (!time) {\n time = _this.options.animation;\n }\n _this.animate(target, animatingRect, toRect, time);\n }\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\nfunction repaint(target) {\n return target.offsetWidth;\n}\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n this.eventCanceled = false;\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return;\n // Fire global events if it exists in this sortable\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n\n // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized;\n\n // Add default options from plugin\n _extends(defaults, initialized.defaults);\n });\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return;\n\n // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\n ghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n\n _silent = false,\n savedInputChecked = [];\n\n/** @const */\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\n supportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return;\n // false when <= IE11\n if (IE11OrLess) {\n return false;\n }\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n }(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n },\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n },\n /**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n _detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n },\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n var group = {};\n var originalGroup = options.group;\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n },\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n },\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n };\n\n// #1184 fix - Prevent click event on fallback if dragged but item not changed position\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n if (nearest) {\n // Create imitation event\n var event = {};\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n nearest[expando]._onDragOver(event);\n }\n }\n};\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n this.el = el; // root element\n this.options = options = _extends({}, options);\n\n // Export instance\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n // Disabled on Safari: #1571; Enabled on Safari IOS: #2244\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && (!Safari || IOS),\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults);\n\n // Set default options\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n _prepareGroup(options);\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n // Setup drag mode\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n }\n\n // Bind events\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n sortables.push(this.el);\n\n // Restore sorting\n options.store && options.store.get && this.sort(options.store.get(this) || []);\n\n // Add animation state manager\n _extends(this, AnimationStateManager());\n}\nSortable.prototype = /** @lends Sortable.prototype */{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart( /** Event|TouchEvent */evt) {\n if (!evt.cancelable) return;\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n _saveInputCheckedState(el);\n\n // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n if (dragEl) {\n return;\n }\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n }\n\n // cancel dnd if original target is content editable\n if (originalTarget.isContentEditable) {\n return;\n }\n\n // Safari ignores further event handling after mousedown\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n target = closest(target, options.draggable, el, false);\n if (target && target.animated) {\n return;\n }\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n }\n\n // Get the index of the dragged element within its parent\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable);\n\n // Check filter\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n if (filter) {\n preventOnFilter && evt.preventDefault();\n return; // cancel dnd\n }\n }\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n }\n\n // Prepare `dragstart`\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart( /** Event */evt, /** Touch */touch, /** HTMLElement */target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n _this._onDrop();\n return;\n }\n // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n _this._disableDelayedDragEvents();\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n }\n\n // Bind the events: dragstart/dragend\n _this._triggerDragStart(evt, touch);\n\n // Drag start event\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n });\n\n // Chosen item\n toggleClass(dragEl, options.chosenClass, true);\n };\n\n // Disable \"draggable\"\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._onDrop);\n // Native D&D triggers pointercancel\n !this.nativeDraggable && on(ownerDocument, 'pointercancel', _this._onDrop);\n } else {\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop);\n }\n\n // Make dragEl draggable (must be before delay for FireFox)\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n pluginEvent('delayStart', this, {\n evt: evt\n });\n\n // Delay is impossible for native DnD in Edge or IE\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n if (options.supportPointer) {\n on(ownerDocument, 'pointerup', _this._disableDelayedDrag);\n on(ownerDocument, 'pointercancel', _this._disableDelayedDrag);\n } else {\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n }\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler( /** TouchEvent|PointerEvent **/e) {\n var touch = e.touches ? e.touches[0] : e;\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'pointerup', this._disableDelayedDrag);\n off(ownerDocument, 'pointercancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart( /** Event */evt, /** Touch */touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n try {\n if (document.selection) {\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n var options = this.options;\n\n // Apply effect\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost();\n\n // Drag start event\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n _hideGhostForTarget();\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n target = parent; // store last element\n }\n /* jshint boss:true */ while (parent = getParentOrHost(parent));\n }\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove( /**TouchEvent*/evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1);\n\n // only set the status to dragging, when we are actually dragging\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n this._onDragStart(evt, true);\n }\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options;\n\n // Position absolutely\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl);\n\n // Set transform-origin\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart( /**Event*/evt, /**boolean*/fallback) {\n var _this = this;\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n if (Sortable.eventCanceled) {\n this._onDrop();\n return;\n }\n pluginEvent('setupClone', this);\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n this._hideClone();\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n }\n\n // #1143: IFrame support workaround\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n _this._hideClone();\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true);\n\n // Set proper drop events\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n on(document, 'drop', _this);\n\n // #1276 fix:\n css(dragEl, 'transform', 'translateZ(0)');\n }\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n window.getSelection().removeAllRanges();\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver( /**Event*/evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n if (_silent) return;\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n }\n\n // Capture animation state\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n _this.captureAnimationState();\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n }\n\n // Return invocation when dragEl is inserted (or completed)\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n }\n\n // Animation\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n }\n\n // Null lastTarget if it is not inside a previously swapped element\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n }\n\n // no bubbling and not fallback\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n\n // Do not detect for empty insert if already inserted\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n }\n\n // Call when dragEl has been inserted\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n ignoreNextClick = false;\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n if (revert) {\n parentEl = rootEl; // actualization\n capture();\n this._hideClone();\n dragOverEvent('revert');\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n return completed(true);\n }\n var elLastChild = lastChild(el, options.draggable);\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n }\n\n // if there is a last element, it is the target\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n if (target) {\n targetRect = getRect(target);\n }\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n if (firstChild === dragEl) {\n return completed(false);\n }\n target = firstChild;\n targetRect = getRect(target);\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n }\n // If dragEl is already beside target: Do not insert\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n }\n\n // Undo chrome's scroll adjustment (has no effect on other browsers)\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n parentEl = dragEl.parentNode; // actualization\n\n // must be done before animation\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n changed();\n return completed(true);\n }\n }\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'pointercancel', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop( /**Event*/evt) {\n var el = this.el,\n options = this.options;\n\n // Get the index of the dragged element within its parent\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode;\n\n // Get again after plugin event\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n if (Sortable.eventCanceled) {\n this._nulling();\n return;\n }\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n _cancelNextTick(this.cloneId);\n _cancelNextTick(this._dragStartId);\n\n // Unbind events\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n this._offMoveEvents();\n this._offUpEvents();\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n css(dragEl, 'transform', '');\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n _disableDraggable(dragEl);\n dragEl.style['will-change'] = '';\n\n // Remove classes\n // ghostClass is added in dragStarted\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n toggleClass(dragEl, this.options.chosenClass, false);\n\n // Drag stop event\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n // Remove event\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // drag from one list and drop into another\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n });\n\n // Save sorting\n this.save();\n }\n }\n }\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent( /**Event*/evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n break;\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n _globalDragOver(evt);\n }\n break;\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n for (; i < n; i++) {\n el = children[i];\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n return order;\n },\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n }\n // Remove draggable attributes\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n this._onDrop();\n this._disableDelayedDragEvents();\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n return;\n }\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return;\n\n // show clone at dragEl or original position\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\nfunction _globalDragOver( /**Event*/evt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n evt.cancelable && evt.preventDefault();\n}\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal;\n // Support for new CustomEvent feature\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n return retVal;\n}\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\nfunction _unsilent() {\n _silent = false;\n}\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var firstElRect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX < childContainingRect.left - spacer || evt.clientY < firstElRect.top && evt.clientX < firstElRect.right : evt.clientY < childContainingRect.top - spacer || evt.clientY < firstElRect.bottom && evt.clientX < firstElRect.left;\n}\nfunction _ghostIsLast(evt, vertical, sortable) {\n var lastElRect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var childContainingRect = getChildContainingRectFromElement(sortable.el, sortable.options, ghostEl);\n var spacer = 10;\n return vertical ? evt.clientX > childContainingRect.right + spacer || evt.clientY > lastElRect.bottom && evt.clientX > lastElRect.left : evt.clientY > childContainingRect.bottom + spacer || evt.clientX > lastElRect.right && evt.clientY > lastElRect.top;\n}\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n invert = invert || invertSwap;\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n return 0;\n}\n\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n while (i--) {\n sum += str.charCodeAt(i);\n }\n return sum.toString(36);\n}\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n}\n\n// Fixed #973:\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n}\n\n// Export utils\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild,\n expando: expando\n};\n\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\nSortable.get = function (element) {\n return element[expando];\n};\n\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n};\n\n// Export\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n };\n\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt;\n\n // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback);\n\n // Listener for pointer element change\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval();\n // Detect for pointer elem change, emulating native DnD behaviour\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn;\n\n // New scroll root, set scrollEl\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n var layersOut = 0;\n var currentParent = scrollEl;\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n }\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\nfunction Revert() {}\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n this.sortable.animateAll();\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\nfunction Remove() {}\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\n multiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\n folding = false,\n // Folding any other time\n dragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n dataTransfer.setData('Text', data);\n }\n };\n }\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n sortable._hideClone();\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n });\n\n // Sort multi-drag elements\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n\n sortable.captureAnimationState();\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n }\n\n // Remove all auxiliary multidrag items from el, if sorting enabled\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n initialFolding = false;\n // If leaving sort:false root, or already folding - Fold to new location\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute);\n\n // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n }\n\n // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n activeSortable._showClone(sortable);\n\n // Unfold animation for clones if showing from hidden\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children;\n\n // Multi-drag selection\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n\n // Modifier activated, select from last to dragEl\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n (function () {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n var filter = options.filter;\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n // Check if element is draggable\n if (!closest(children[i], options.draggable, parentEl, false)) continue;\n // Check if element is filtered\n var filtered = filter && (typeof filter === 'function' ? filter.call(sortable, evt, children[i], sortable) : filter.split(',').some(function (criteria) {\n return closest(children[i], criteria.trim(), parentEl, false);\n }));\n if (filtered) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n })();\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n }\n\n // Multi-drag drop\n if (dragStarted && this.isMultiDrag) {\n folding = false;\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect;\n\n // Prepare unfold animation\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n }\n\n // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n multiDragIndex++;\n });\n\n // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n if (update) {\n dispatchSortableEvent('update');\n dispatchSortableEvent('sort');\n }\n }\n }\n\n // Must be done after capturing individual rects (scroll bar)\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n multiDragSortable = toSortable;\n }\n\n // Remove clones if necessary\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return;\n\n // Only deselect if selection is in this sortable\n if (multiDragSortable !== this.sortable) return;\n\n // Only deselect if target is not item in this sortable\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return;\n\n // Only deselect if left click\n if (evt && evt.button !== 0) return;\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n multiDragSortable = sortable;\n }\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n });\n\n // multiDragElements will already be sorted if folding\n var newIndex;\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n return key;\n }\n }\n });\n}\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","/*! @vimeo/player v2.25.0 | (c) 2024 Vimeo | MIT License | https://github.com/vimeo/player.js */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\n/**\n * @module lib/functions\n */\n\n/**\n * Check to see this is a node environment.\n * @type {Boolean}\n */\n/* global global */\nvar isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';\n\n/**\n * Get the name of the method for a given getter or setter.\n *\n * @param {string} prop The name of the property.\n * @param {string} type Either “get” or “set”.\n * @return {string}\n */\nfunction getMethodName(prop, type) {\n if (prop.indexOf(type.toLowerCase()) === 0) {\n return prop;\n }\n return \"\".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));\n}\n\n/**\n * Check to see if the object is a DOM Element.\n *\n * @param {*} element The object to check.\n * @return {boolean}\n */\nfunction isDomElement(element) {\n return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);\n}\n\n/**\n * Check to see whether the value is a number.\n *\n * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html\n * @param {*} value The value to check.\n * @param {boolean} integer Check if the value is an integer.\n * @return {boolean}\n */\nfunction isInteger(value) {\n // eslint-disable-next-line eqeqeq\n return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;\n}\n\n/**\n * Check to see if the URL is a Vimeo url.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoUrl(url) {\n return /^(https?:)?\\/\\/((((player|www)\\.)?vimeo\\.com)|((player\\.)?[a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))(?=$|\\/)/.test(url);\n}\n\n/**\n * Check to see if the URL is for a Vimeo embed.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoEmbed(url) {\n var expr = /^https:\\/\\/player\\.((vimeo\\.com)|([a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))\\/video\\/\\d+/;\n return expr.test(url);\n}\nfunction getOembedDomain(url) {\n var match = (url || '').match(/^(?:https?:)?(?:\\/\\/)?([^/?]+)/);\n var domain = (match && match[1] || '').replace('player.', '');\n var customDomains = ['.videoji.hk', '.vimeo.work', '.videoji.cn'];\n for (var _i = 0, _customDomains = customDomains; _i < _customDomains.length; _i++) {\n var customDomain = _customDomains[_i];\n if (domain.endsWith(customDomain)) {\n return domain;\n }\n }\n return 'vimeo.com';\n}\n\n/**\n * Get the Vimeo URL from an element.\n * The element must have either a data-vimeo-id or data-vimeo-url attribute.\n *\n * @param {object} oEmbedParameters The oEmbed parameters.\n * @return {string}\n */\nfunction getVimeoUrl() {\n var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var id = oEmbedParameters.id;\n var url = oEmbedParameters.url;\n var idOrUrl = id || url;\n if (!idOrUrl) {\n throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');\n }\n if (isInteger(idOrUrl)) {\n return \"https://vimeo.com/\".concat(idOrUrl);\n }\n if (isVimeoUrl(idOrUrl)) {\n return idOrUrl.replace('http:', 'https:');\n }\n if (id) {\n throw new TypeError(\"\\u201C\".concat(id, \"\\u201D is not a valid video id.\"));\n }\n throw new TypeError(\"\\u201C\".concat(idOrUrl, \"\\u201D is not a vimeo.com url.\"));\n}\n\n/* eslint-disable max-params */\n/**\n * A utility method for attaching and detaching event handlers\n *\n * @param {EventTarget} target\n * @param {string | string[]} eventName\n * @param {function} callback\n * @param {'addEventListener' | 'on'} onName\n * @param {'removeEventListener' | 'off'} offName\n * @return {{cancel: (function(): void)}}\n */\nvar subscribe = function subscribe(target, eventName, callback) {\n var onName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'addEventListener';\n var offName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'removeEventListener';\n var eventNames = typeof eventName === 'string' ? [eventName] : eventName;\n eventNames.forEach(function (evName) {\n target[onName](evName, callback);\n });\n return {\n cancel: function cancel() {\n return eventNames.forEach(function (evName) {\n return target[offName](evName, callback);\n });\n }\n };\n};\n\nvar arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';\nvar postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';\nif (!isNode && (!arrayIndexOfSupport || !postMessageSupport)) {\n throw new Error('Sorry, the Vimeo Player API is not available in this browser.');\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*!\n * weakmap-polyfill v2.0.4 - ECMAScript6 WeakMap polyfill\n * https://github.com/polygonplanet/weakmap-polyfill\n * Copyright (c) 2015-2021 polygonplanet <polygon.planet.aqua@gmail.com>\n * @license MIT\n */\n\n(function (self) {\n\n if (self.WeakMap) {\n return;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var hasDefine = Object.defineProperty && function () {\n try {\n // Avoid IE8's broken Object.defineProperty\n return Object.defineProperty({}, 'x', {\n value: 1\n }).x === 1;\n } catch (e) {}\n }();\n var defineProperty = function (object, name, value) {\n if (hasDefine) {\n Object.defineProperty(object, name, {\n configurable: true,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n self.WeakMap = function () {\n // ECMA-262 23.3 WeakMap Objects\n function WeakMap() {\n if (this === void 0) {\n throw new TypeError(\"Constructor WeakMap requires 'new'\");\n }\n defineProperty(this, '_id', genId('_WeakMap'));\n\n // ECMA-262 23.3.1.1 WeakMap([iterable])\n if (arguments.length > 0) {\n // Currently, WeakMap `iterable` argument is not supported\n throw new TypeError('WeakMap iterable is not supported');\n }\n }\n\n // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)\n defineProperty(WeakMap.prototype, 'delete', function (key) {\n checkInstance(this, 'delete');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n delete key[this._id];\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)\n defineProperty(WeakMap.prototype, 'get', function (key) {\n checkInstance(this, 'get');\n if (!isObject(key)) {\n return void 0;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return entry[1];\n }\n return void 0;\n });\n\n // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)\n defineProperty(WeakMap.prototype, 'has', function (key) {\n checkInstance(this, 'has');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)\n defineProperty(WeakMap.prototype, 'set', function (key, value) {\n checkInstance(this, 'set');\n if (!isObject(key)) {\n throw new TypeError('Invalid value used as weak map key');\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n entry[1] = value;\n return this;\n }\n defineProperty(key, this._id, [key, value]);\n return this;\n });\n function checkInstance(x, methodName) {\n if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n }\n }\n function genId(prefix) {\n return prefix + '_' + rand() + '.' + rand();\n }\n function rand() {\n return Math.random().toString().substring(2);\n }\n defineProperty(WeakMap, '_polyfill', true);\n return WeakMap;\n }();\n function isObject(x) {\n return Object(x) === x;\n }\n})(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name, context, definition) {\n // special form of UMD for polyfilling across evironments\n context[name] = context[name] || definition();\n if ( module.exports) {\n module.exports = context[name];\n }\n})(\"Promise\", typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal, function DEF() {\n\n var builtInProp,\n cycle,\n scheduling_queue,\n ToString = Object.prototype.toString,\n timer = typeof setImmediate != \"undefined\" ? function timer(fn) {\n return setImmediate(fn);\n } : setTimeout;\n\n // dammit, IE8.\n try {\n Object.defineProperty({}, \"x\", {});\n builtInProp = function builtInProp(obj, name, val, config) {\n return Object.defineProperty(obj, name, {\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n } catch (err) {\n builtInProp = function builtInProp(obj, name, val) {\n obj[name] = val;\n return obj;\n };\n }\n\n // Note: using a queue instead of array for efficiency\n scheduling_queue = function Queue() {\n var first, last, item;\n function Item(fn, self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n return {\n add: function add(fn, self) {\n item = new Item(fn, self);\n if (last) {\n last.next = item;\n } else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n }();\n function schedule(fn, self) {\n scheduling_queue.add(fn, self);\n if (!cycle) {\n cycle = timer(scheduling_queue.drain);\n }\n }\n\n // promise duck typing\n function isThenable(o) {\n var _then,\n o_type = typeof o;\n if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n _then = o.then;\n }\n return typeof _then == \"function\" ? _then : false;\n }\n function notify() {\n for (var i = 0; i < this.chain.length; i++) {\n notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);\n }\n this.chain.length = 0;\n }\n\n // NOTE: This is a separate function to isolate\n // the `try..catch` so that other code can be\n // optimized better\n function notifyIsolated(self, cb, chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self.msg);\n } else {\n if (cb === true) {\n ret = self.msg;\n } else {\n ret = cb.call(void 0, self.msg);\n }\n if (ret === chain.promise) {\n chain.reject(TypeError(\"Promise-chain cycle\"));\n } else if (_then = isThenable(ret)) {\n _then.call(ret, chain.resolve, chain.reject);\n } else {\n chain.resolve(ret);\n }\n }\n } catch (err) {\n chain.reject(err);\n }\n }\n function resolve(msg) {\n var _then,\n self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n try {\n if (_then = isThenable(msg)) {\n schedule(function () {\n var def_wrapper = new MakeDefWrapper(self);\n try {\n _then.call(msg, function $resolve$() {\n resolve.apply(def_wrapper, arguments);\n }, function $reject$() {\n reject.apply(def_wrapper, arguments);\n });\n } catch (err) {\n reject.call(def_wrapper, err);\n }\n });\n } else {\n self.msg = msg;\n self.state = 1;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n } catch (err) {\n reject.call(new MakeDefWrapper(self), err);\n }\n }\n function reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n function iteratePromises(Constructor, arr, resolver, rejecter) {\n for (var idx = 0; idx < arr.length; idx++) {\n (function IIFE(idx) {\n Constructor.resolve(arr[idx]).then(function $resolver$(msg) {\n resolver(idx, msg);\n }, rejecter);\n })(idx);\n }\n }\n function MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n }\n function MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n }\n function Promise(executor) {\n if (typeof executor != \"function\") {\n throw TypeError(\"Not a function\");\n }\n if (this.__NPO__ !== 0) {\n throw TypeError(\"Not a promise\");\n }\n\n // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n this.__NPO__ = 1;\n var def = new MakeDef(this);\n this[\"then\"] = function then(success, failure) {\n var o = {\n success: typeof success == \"function\" ? success : true,\n failure: typeof failure == \"function\" ? failure : false\n };\n // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n o.promise = new this.constructor(function extractChain(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n if (def.state !== 0) {\n schedule(notify, def);\n }\n return o.promise;\n };\n this[\"catch\"] = function $catch$(failure) {\n return this.then(void 0, failure);\n };\n try {\n executor.call(void 0, function publicResolve(msg) {\n resolve.call(def, msg);\n }, function publicReject(msg) {\n reject.call(def, msg);\n });\n } catch (err) {\n reject.call(def, err);\n }\n }\n var PromisePrototype = builtInProp({}, \"constructor\", Promise, /*configurable=*/false);\n\n // Note: Android 4 cannot use `Object.defineProperty(..)` here\n Promise.prototype = PromisePrototype;\n\n // built-in \"brand\" to signal an \"uninitialized\" promise\n builtInProp(PromisePrototype, \"__NPO__\", 0, /*configurable=*/false);\n builtInProp(Promise, \"resolve\", function Promise$resolve(msg) {\n var Constructor = this;\n\n // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n return msg;\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n resolve(msg);\n });\n });\n builtInProp(Promise, \"reject\", function Promise$reject(msg) {\n return new this(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n reject(msg);\n });\n });\n builtInProp(Promise, \"all\", function Promise$all(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n var len = arr.length,\n msgs = Array(len),\n count = 0;\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve(msgs);\n }\n }, reject);\n });\n });\n builtInProp(Promise, \"race\", function Promise$race(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n resolve(msg);\n }, reject);\n });\n });\n return Promise;\n});\n});\n\n/**\n * @module lib/callbacks\n */\n\nvar callbackMap = new WeakMap();\n\n/**\n * Store a callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback\n * The callback to call or an object with resolve and reject functions for a promise.\n * @return {void}\n */\nfunction storeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!(name in playerCallbacks)) {\n playerCallbacks[name] = [];\n }\n playerCallbacks[name].push(callback);\n callbackMap.set(player.element, playerCallbacks);\n}\n\n/**\n * Get the callbacks for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @return {function[]}\n */\nfunction getCallbacks(player, name) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n return playerCallbacks[name] || [];\n}\n\n/**\n * Remove a stored callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @param {function} [callback] The specific callback to remove.\n * @return {boolean} Was this the last callback?\n */\nfunction removeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!playerCallbacks[name]) {\n return true;\n }\n\n // If no callback is passed, remove all callbacks for the event\n if (!callback) {\n playerCallbacks[name] = [];\n callbackMap.set(player.element, playerCallbacks);\n return true;\n }\n var index = playerCallbacks[name].indexOf(callback);\n if (index !== -1) {\n playerCallbacks[name].splice(index, 1);\n }\n callbackMap.set(player.element, playerCallbacks);\n return playerCallbacks[name] && playerCallbacks[name].length === 0;\n}\n\n/**\n * Return the first stored callback for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @return {function} The callback, or false if there were none\n */\nfunction shiftCallbacks(player, name) {\n var playerCallbacks = getCallbacks(player, name);\n if (playerCallbacks.length < 1) {\n return false;\n }\n var callback = playerCallbacks.shift();\n removeCallback(player, name, callback);\n return callback;\n}\n\n/**\n * Move callbacks associated with an element to another element.\n *\n * @param {HTMLElement} oldElement The old element.\n * @param {HTMLElement} newElement The new element.\n * @return {void}\n */\nfunction swapCallbacks(oldElement, newElement) {\n var playerCallbacks = callbackMap.get(oldElement);\n callbackMap.set(newElement, playerCallbacks);\n callbackMap.delete(oldElement);\n}\n\n/**\n * @module lib/postmessage\n */\n\n/**\n * Parse a message received from postMessage.\n *\n * @param {*} data The data received from postMessage.\n * @return {object}\n */\nfunction parseMessageData(data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n // If the message cannot be parsed, throw the error as a warning\n console.warn(error);\n return {};\n }\n }\n return data;\n}\n\n/**\n * Post a message to the specified target.\n *\n * @param {Player} player The player object to use.\n * @param {string} method The API method to call.\n * @param {object} params The parameters to send to the player.\n * @return {void}\n */\nfunction postMessage(player, method, params) {\n if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {\n return;\n }\n var message = {\n method: method\n };\n if (params !== undefined) {\n message.value = params;\n }\n\n // IE 8 and 9 do not support passing messages, so stringify them\n var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));\n if (ieVersion >= 8 && ieVersion < 10) {\n message = JSON.stringify(message);\n }\n player.element.contentWindow.postMessage(message, player.origin);\n}\n\n/**\n * Parse the data received from a message event.\n *\n * @param {Player} player The player that received the message.\n * @param {(Object|string)} data The message data. Strings will be parsed into JSON.\n * @return {void}\n */\nfunction processData(player, data) {\n data = parseMessageData(data);\n var callbacks = [];\n var param;\n if (data.event) {\n if (data.event === 'error') {\n var promises = getCallbacks(player, data.data.method);\n promises.forEach(function (promise) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n promise.reject(error);\n removeCallback(player, data.data.method, promise);\n });\n }\n callbacks = getCallbacks(player, \"event:\".concat(data.event));\n param = data.data;\n } else if (data.method) {\n var callback = shiftCallbacks(player, data.method);\n if (callback) {\n callbacks.push(callback);\n param = data.value;\n }\n }\n callbacks.forEach(function (callback) {\n try {\n if (typeof callback === 'function') {\n callback.call(player, param);\n return;\n }\n callback.resolve(param);\n } catch (e) {\n // empty\n }\n });\n}\n\n/**\n * @module lib/embed\n */\nvar oEmbedParameters = ['airplay', 'audio_tracks', 'audiotrack', 'autopause', 'autoplay', 'background', 'byline', 'cc', 'chapter_id', 'chapters', 'chromecast', 'color', 'colors', 'controls', 'dnt', 'end_time', 'fullscreen', 'height', 'id', 'interactive_params', 'keyboard', 'loop', 'maxheight', 'maxwidth', 'muted', 'play_button_position', 'playsinline', 'portrait', 'progress_bar', 'quality_selector', 'responsive', 'speed', 'start_time', 'texttrack', 'title', 'transcript', 'transparent', 'unmute_button', 'url', 'vimeo_logo', 'volume', 'watch_full_video', 'width'];\n\n/**\n * Get the 'data-vimeo'-prefixed attributes from an element as an object.\n *\n * @param {HTMLElement} element The element.\n * @param {Object} [defaults={}] The default values to use.\n * @return {Object<string, string>}\n */\nfunction getOEmbedParameters(element) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return oEmbedParameters.reduce(function (params, param) {\n var value = element.getAttribute(\"data-vimeo-\".concat(param));\n if (value || value === '') {\n params[param] = value === '' ? 1 : value;\n }\n return params;\n }, defaults);\n}\n\n/**\n * Create an embed from oEmbed data inside an element.\n *\n * @param {object} data The oEmbed data.\n * @param {HTMLElement} element The element to put the iframe in.\n * @return {HTMLIFrameElement} The iframe embed.\n */\nfunction createEmbed(_ref, element) {\n var html = _ref.html;\n if (!element) {\n throw new TypeError('An element must be provided');\n }\n if (element.getAttribute('data-vimeo-initialized') !== null) {\n return element.querySelector('iframe');\n }\n var div = document.createElement('div');\n div.innerHTML = html;\n element.appendChild(div.firstChild);\n element.setAttribute('data-vimeo-initialized', 'true');\n return element.querySelector('iframe');\n}\n\n/**\n * Make an oEmbed call for the specified URL.\n *\n * @param {string} videoUrl The vimeo.com url for the video.\n * @param {Object} [params] Parameters to pass to oEmbed.\n * @param {HTMLElement} element The element.\n * @return {Promise}\n */\nfunction getOEmbedData(videoUrl) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var element = arguments.length > 2 ? arguments[2] : undefined;\n return new Promise(function (resolve, reject) {\n if (!isVimeoUrl(videoUrl)) {\n throw new TypeError(\"\\u201C\".concat(videoUrl, \"\\u201D is not a vimeo.com url.\"));\n }\n var domain = getOembedDomain(videoUrl);\n var url = \"https://\".concat(domain, \"/api/oembed.json?url=\").concat(encodeURIComponent(videoUrl));\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n url += \"&\".concat(param, \"=\").concat(encodeURIComponent(params[param]));\n }\n }\n var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onload = function () {\n if (xhr.status === 404) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D was not found.\")));\n return;\n }\n if (xhr.status === 403) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n try {\n var json = JSON.parse(xhr.responseText);\n // Check api response for 403 on oembed\n if (json.domain_status_code === 403) {\n // We still want to create the embed to give users visual feedback\n createEmbed(json, element);\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n xhr.onerror = function () {\n var status = xhr.status ? \" (\".concat(xhr.status, \")\") : '';\n reject(new Error(\"There was an error fetching the embed code from Vimeo\".concat(status, \".\")));\n };\n xhr.send();\n });\n}\n\n/**\n * Initialize all embeds within a specific element\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initializeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error creating an embed: \".concat(error));\n }\n };\n elements.forEach(function (element) {\n try {\n // Skip any that have data-vimeo-defer\n if (element.getAttribute('data-vimeo-defer') !== null) {\n return;\n }\n var params = getOEmbedParameters(element);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n return createEmbed(data, element);\n }).catch(handleError);\n } catch (error) {\n handleError(error);\n }\n });\n}\n\n/**\n * Resize embeds when messaged by the player.\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction resizeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoPlayerResizeEmbeds_) {\n return;\n }\n window.VimeoPlayerResizeEmbeds_ = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n\n // 'spacechange' is fired only on embeds with cards\n if (!event.data || event.data.event !== 'spacechange') {\n return;\n }\n var iframes = parent.querySelectorAll('iframe');\n for (var i = 0; i < iframes.length; i++) {\n if (iframes[i].contentWindow !== event.source) {\n continue;\n }\n\n // Change padding-bottom of the enclosing div to accommodate\n // card carousel without distorting aspect ratio\n var space = iframes[i].parentElement;\n space.style.paddingBottom = \"\".concat(event.data.data[0].bottom, \"px\");\n break;\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Add chapters to existing metadata for Google SEO\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initAppendVideoMetadata() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoSeoMetadataAppended) {\n return;\n }\n window.VimeoSeoMetadataAppended = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var iframes = parent.querySelectorAll('iframe');\n for (var i = 0; i < iframes.length; i++) {\n var iframe = iframes[i];\n\n // Initiate appendVideoMetadata if iframe is a Vimeo embed\n var isValidMessageSource = iframe.contentWindow === event.source;\n if (isVimeoEmbed(iframe.src) && isValidMessageSource) {\n var player = new Player(iframe);\n player.callMethod('appendVideoMetadata', window.location.href);\n }\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Seek to time indicated by vimeo_t query parameter if present in URL\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction checkUrlTimeParam() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoCheckedUrlTimeParam) {\n return;\n }\n window.VimeoCheckedUrlTimeParam = true;\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error getting video Id: \".concat(error));\n }\n };\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var iframes = parent.querySelectorAll('iframe');\n var _loop = function _loop() {\n var iframe = iframes[i];\n var isValidMessageSource = iframe.contentWindow === event.source;\n if (isVimeoEmbed(iframe.src) && isValidMessageSource) {\n var player = new Player(iframe);\n player.getVideoId().then(function (videoId) {\n var matches = new RegExp(\"[?&]vimeo_t_\".concat(videoId, \"=([^&#]*)\")).exec(window.location.href);\n if (matches && matches[1]) {\n var sec = decodeURI(matches[1]);\n player.setCurrentTime(sec);\n }\n return;\n }).catch(handleError);\n }\n };\n for (var i = 0; i < iframes.length; i++) {\n _loop();\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/* MIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nTerms */\n\nfunction initializeScreenfull() {\n var fn = function () {\n var val;\n var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // New WebKit\n ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n // Old WebKit\n ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n var i = 0;\n var l = fnMap.length;\n var ret = {};\n for (; i < l; i++) {\n val = fnMap[i];\n if (val && val[1] in document) {\n for (i = 0; i < val.length; i++) {\n ret[fnMap[0][i]] = val[i];\n }\n return ret;\n }\n }\n return false;\n }();\n var eventNameMap = {\n fullscreenchange: fn.fullscreenchange,\n fullscreenerror: fn.fullscreenerror\n };\n var screenfull = {\n request: function request(element) {\n return new Promise(function (resolve, reject) {\n var onFullScreenEntered = function onFullScreenEntered() {\n screenfull.off('fullscreenchange', onFullScreenEntered);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenEntered);\n element = element || document.documentElement;\n var returnPromise = element[fn.requestFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject);\n }\n });\n },\n exit: function exit() {\n return new Promise(function (resolve, reject) {\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n var onFullScreenExit = function onFullScreenExit() {\n screenfull.off('fullscreenchange', onFullScreenExit);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenExit);\n var returnPromise = document[fn.exitFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject);\n }\n });\n },\n on: function on(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.addEventListener(eventName, callback);\n }\n },\n off: function off(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.removeEventListener(eventName, callback);\n }\n }\n };\n Object.defineProperties(screenfull, {\n isFullscreen: {\n get: function get() {\n return Boolean(document[fn.fullscreenElement]);\n }\n },\n element: {\n enumerable: true,\n get: function get() {\n return document[fn.fullscreenElement];\n }\n },\n isEnabled: {\n enumerable: true,\n get: function get() {\n // Coerce to boolean in case of old WebKit\n return Boolean(document[fn.fullscreenEnabled]);\n }\n }\n });\n return screenfull;\n}\n\n/** @typedef {import('./timing-src-connector.types').PlayerControls} PlayerControls */\n/** @typedef {import('./timing-object.types').TimingObject} TimingObject */\n/** @typedef {import('./timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n/** @typedef {(msg: string) => any} Logger */\n/** @typedef {import('timing-object.types').TConnectionState} TConnectionState */\n\n/**\n * @type {TimingSrcConnectorOptions}\n *\n * For details on these properties and their effects, see the typescript definition referenced above.\n */\nvar defaultOptions = {\n role: 'viewer',\n autoPlayMuted: true,\n allowedDrift: 0.3,\n maxAllowedDrift: 1,\n minCheckInterval: 0.1,\n maxRateAdjustment: 0.2,\n maxTimeToCatchUp: 1\n};\n\n/**\n * There's a proposed W3C spec for the Timing Object which would introduce a new set of APIs that would simplify time-synchronization tasks for browser applications.\n *\n * Proposed spec: https://webtiming.github.io/timingobject/\n * V3 Spec: https://timingsrc.readthedocs.io/en/latest/\n * Demuxed talk: https://www.youtube.com/watch?v=cZSjDaGDmX8\n *\n * This class makes it easy to connect Vimeo.Player to a provided TimingObject via Vimeo.Player.setTimingSrc(myTimingObject, options) and the synchronization will be handled automatically.\n *\n * There are 5 general responsibilities in TimingSrcConnector:\n *\n * 1. `updatePlayer()` which sets the player's currentTime, playbackRate and pause/play state based on current state of the TimingObject.\n * 2. `updateTimingObject()` which sets the TimingObject's position and velocity from the player's state.\n * 3. `playerUpdater` which listens for change events on the TimingObject and will respond by calling updatePlayer.\n * 4. `timingObjectUpdater` which listens to the player events of seeked, play and pause and will respond by calling `updateTimingObject()`.\n * 5. `maintainPlaybackPosition` this is code that constantly monitors the player to make sure it's always in sync with the TimingObject. This is needed because videos will generally not play with precise time accuracy and there will be some drift which becomes more noticeable over longer periods (as noted in the timing-object spec). More details on this method below.\n */\nvar TimingSrcConnector = /*#__PURE__*/function (_EventTarget) {\n _inherits(TimingSrcConnector, _EventTarget);\n var _super = _createSuper(TimingSrcConnector);\n /**\n * @param {PlayerControls} player\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n * @param {Logger} logger\n */\n function TimingSrcConnector(_player, timingObject) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var logger = arguments.length > 3 ? arguments[3] : undefined;\n _classCallCheck(this, TimingSrcConnector);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"logger\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"speedAdjustment\", 0);\n /**\n * @param {PlayerControls} player\n * @param {number} newAdjustment\n * @return {Promise<void>}\n */\n _defineProperty(_assertThisInitialized(_this), \"adjustSpeed\", /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(player, newAdjustment) {\n var newPlaybackRate;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(_this.speedAdjustment === newAdjustment)) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n _context.next = 4;\n return player.getPlaybackRate();\n case 4:\n _context.t0 = _context.sent;\n _context.t1 = _this.speedAdjustment;\n _context.t2 = _context.t0 - _context.t1;\n _context.t3 = newAdjustment;\n newPlaybackRate = _context.t2 + _context.t3;\n _this.log(\"New playbackRate: \".concat(newPlaybackRate));\n _context.next = 12;\n return player.setPlaybackRate(newPlaybackRate);\n case 12:\n _this.speedAdjustment = newAdjustment;\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n _this.logger = logger;\n _this.init(timingObject, _player, _objectSpread2(_objectSpread2({}, defaultOptions), options));\n return _this;\n }\n _createClass(TimingSrcConnector, [{\n key: \"disconnect\",\n value: function disconnect() {\n this.dispatchEvent(new Event('disconnect'));\n }\n\n /**\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"init\",\n value: function () {\n var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(timingObject, player, options) {\n var _this2 = this;\n var playerUpdater, positionSync, timingObjectUpdater;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.waitForTOReadyState(timingObject, 'open');\n case 2:\n if (!(options.role === 'viewer')) {\n _context2.next = 10;\n break;\n }\n _context2.next = 5;\n return this.updatePlayer(timingObject, player, options);\n case 5:\n playerUpdater = subscribe(timingObject, 'change', function () {\n return _this2.updatePlayer(timingObject, player, options);\n });\n positionSync = this.maintainPlaybackPosition(timingObject, player, options);\n this.addEventListener('disconnect', function () {\n positionSync.cancel();\n playerUpdater.cancel();\n });\n _context2.next = 14;\n break;\n case 10:\n _context2.next = 12;\n return this.updateTimingObject(timingObject, player);\n case 12:\n timingObjectUpdater = subscribe(player, ['seeked', 'play', 'pause', 'ratechange'], function () {\n return _this2.updateTimingObject(timingObject, player);\n }, 'on', 'off');\n this.addEventListener('disconnect', function () {\n return timingObjectUpdater.cancel();\n });\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function init(_x3, _x4, _x5) {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n /**\n * Sets the TimingObject's state to reflect that of the player\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @return {Promise<void>}\n */\n }, {\n key: \"updateTimingObject\",\n value: function () {\n var _updateTimingObject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(timingObject, player) {\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = timingObject;\n _context3.next = 3;\n return player.getCurrentTime();\n case 3:\n _context3.t1 = _context3.sent;\n _context3.next = 6;\n return player.getPaused();\n case 6:\n if (!_context3.sent) {\n _context3.next = 10;\n break;\n }\n _context3.t2 = 0;\n _context3.next = 13;\n break;\n case 10:\n _context3.next = 12;\n return player.getPlaybackRate();\n case 12:\n _context3.t2 = _context3.sent;\n case 13:\n _context3.t3 = _context3.t2;\n _context3.t4 = {\n position: _context3.t1,\n velocity: _context3.t3\n };\n _context3.t0.update.call(_context3.t0, _context3.t4);\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function updateTimingObject(_x6, _x7) {\n return _updateTimingObject.apply(this, arguments);\n }\n return updateTimingObject;\n }()\n /**\n * Sets the player's timing state to reflect that of the TimingObject\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"updatePlayer\",\n value: function () {\n var _updatePlayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(timingObject, player, options) {\n var _timingObject$query, position, velocity;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _timingObject$query = timingObject.query(), position = _timingObject$query.position, velocity = _timingObject$query.velocity;\n if (typeof position === 'number') {\n player.setCurrentTime(position);\n }\n if (!(typeof velocity === 'number')) {\n _context5.next = 25;\n break;\n }\n if (!(velocity === 0)) {\n _context5.next = 11;\n break;\n }\n _context5.next = 6;\n return player.getPaused();\n case 6:\n _context5.t0 = _context5.sent;\n if (!(_context5.t0 === false)) {\n _context5.next = 9;\n break;\n }\n player.pause();\n case 9:\n _context5.next = 25;\n break;\n case 11:\n if (!(velocity > 0)) {\n _context5.next = 25;\n break;\n }\n _context5.next = 14;\n return player.getPaused();\n case 14:\n _context5.t1 = _context5.sent;\n if (!(_context5.t1 === true)) {\n _context5.next = 19;\n break;\n }\n _context5.next = 18;\n return player.play().catch( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(err) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(err.name === 'NotAllowedError' && options.autoPlayMuted)) {\n _context4.next = 5;\n break;\n }\n _context4.next = 3;\n return player.setMuted(true);\n case 3:\n _context4.next = 5;\n return player.play().catch(function (err2) {\n return console.error('Couldn\\'t play the video from TimingSrcConnector. Error:', err2);\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x11) {\n return _ref2.apply(this, arguments);\n };\n }());\n case 18:\n this.updatePlayer(timingObject, player, options);\n case 19:\n _context5.next = 21;\n return player.getPlaybackRate();\n case 21:\n _context5.t2 = _context5.sent;\n _context5.t3 = velocity;\n if (!(_context5.t2 !== _context5.t3)) {\n _context5.next = 25;\n break;\n }\n player.setPlaybackRate(velocity);\n case 25:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function updatePlayer(_x8, _x9, _x10) {\n return _updatePlayer.apply(this, arguments);\n }\n return updatePlayer;\n }()\n /**\n * Since video players do not play with 100% time precision, we need to closely monitor\n * our player to be sure it remains in sync with the TimingObject.\n *\n * If out of sync, we use the current conditions and the options provided to determine\n * whether to re-sync via setting currentTime or adjusting the playbackRate\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {{cancel: (function(): void)}}\n */\n }, {\n key: \"maintainPlaybackPosition\",\n value: function maintainPlaybackPosition(timingObject, player, options) {\n var _this3 = this;\n var allowedDrift = options.allowedDrift,\n maxAllowedDrift = options.maxAllowedDrift,\n minCheckInterval = options.minCheckInterval,\n maxRateAdjustment = options.maxRateAdjustment,\n maxTimeToCatchUp = options.maxTimeToCatchUp;\n var syncInterval = Math.min(maxTimeToCatchUp, Math.max(minCheckInterval, maxAllowedDrift)) * 1000;\n var check = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var diff, diffAbs, min, max, adjustment;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.t0 = timingObject.query().velocity === 0;\n if (_context6.t0) {\n _context6.next = 6;\n break;\n }\n _context6.next = 4;\n return player.getPaused();\n case 4:\n _context6.t1 = _context6.sent;\n _context6.t0 = _context6.t1 === true;\n case 6:\n if (!_context6.t0) {\n _context6.next = 8;\n break;\n }\n return _context6.abrupt(\"return\");\n case 8:\n _context6.t2 = timingObject.query().position;\n _context6.next = 11;\n return player.getCurrentTime();\n case 11:\n _context6.t3 = _context6.sent;\n diff = _context6.t2 - _context6.t3;\n diffAbs = Math.abs(diff);\n _this3.log(\"Drift: \".concat(diff));\n if (!(diffAbs > maxAllowedDrift)) {\n _context6.next = 22;\n break;\n }\n _context6.next = 18;\n return _this3.adjustSpeed(player, 0);\n case 18:\n player.setCurrentTime(timingObject.query().position);\n _this3.log('Resync by currentTime');\n _context6.next = 29;\n break;\n case 22:\n if (!(diffAbs > allowedDrift)) {\n _context6.next = 29;\n break;\n }\n min = diffAbs / maxTimeToCatchUp;\n max = maxRateAdjustment;\n adjustment = min < max ? (max - min) / 2 : max;\n _context6.next = 28;\n return _this3.adjustSpeed(player, adjustment * Math.sign(diff));\n case 28:\n _this3.log('Resync by playbackRate');\n case 29:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function check() {\n return _ref3.apply(this, arguments);\n };\n }();\n var interval = setInterval(function () {\n return check();\n }, syncInterval);\n return {\n cancel: function cancel() {\n return clearInterval(interval);\n }\n };\n }\n\n /**\n * @param {string} msg\n */\n }, {\n key: \"log\",\n value: function log(msg) {\n var _this$logger;\n (_this$logger = this.logger) === null || _this$logger === void 0 ? void 0 : _this$logger.call(this, \"TimingSrcConnector: \".concat(msg));\n }\n }, {\n key: \"waitForTOReadyState\",\n value:\n /**\n * @param {TimingObject} timingObject\n * @param {TConnectionState} state\n * @return {Promise<void>}\n */\n function waitForTOReadyState(timingObject, state) {\n return new Promise(function (resolve) {\n var check = function check() {\n if (timingObject.readyState === state) {\n resolve();\n } else {\n timingObject.addEventListener('readystatechange', check, {\n once: true\n });\n }\n };\n check();\n });\n }\n }]);\n return TimingSrcConnector;\n}( /*#__PURE__*/_wrapNativeSuper(EventTarget));\n\nvar playerMap = new WeakMap();\nvar readyMap = new WeakMap();\nvar screenfull = {};\nvar Player = /*#__PURE__*/function () {\n /**\n * Create a Player.\n *\n * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo\n * player iframe, and id, or a jQuery object.\n * @param {object} [options] oEmbed parameters to use when creating an embed in the element.\n * @return {Player}\n */\n function Player(element) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Player);\n /* global jQuery */\n if (window.jQuery && element instanceof jQuery) {\n if (element.length > 1 && window.console && console.warn) {\n console.warn('A jQuery object with multiple elements was passed, using the first element.');\n }\n element = element[0];\n }\n\n // Find an element by ID\n if (typeof document !== 'undefined' && typeof element === 'string') {\n element = document.getElementById(element);\n }\n\n // Not an element!\n if (!isDomElement(element)) {\n throw new TypeError('You must pass either a valid element or a valid id.');\n }\n\n // Already initialized an embed in this div, so grab the iframe\n if (element.nodeName !== 'IFRAME') {\n var iframe = element.querySelector('iframe');\n if (iframe) {\n element = iframe;\n }\n }\n\n // iframe url is not a Vimeo url\n if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {\n throw new Error('The player element passed isn’t a Vimeo embed.');\n }\n\n // If there is already a player object in the map, return that\n if (playerMap.has(element)) {\n return playerMap.get(element);\n }\n this._window = element.ownerDocument.defaultView;\n this.element = element;\n this.origin = '*';\n var readyPromise = new npo_src(function (resolve, reject) {\n _this._onMessage = function (event) {\n if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {\n return;\n }\n if (_this.origin === '*') {\n _this.origin = event.origin;\n }\n var data = parseMessageData(event.data);\n var isError = data && data.event === 'error';\n var isReadyError = isError && data.data && data.data.method === 'ready';\n if (isReadyError) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n reject(error);\n return;\n }\n var isReadyEvent = data && data.event === 'ready';\n var isPingResponse = data && data.method === 'ping';\n if (isReadyEvent || isPingResponse) {\n _this.element.setAttribute('data-ready', 'true');\n resolve();\n return;\n }\n processData(_this, data);\n };\n _this._window.addEventListener('message', _this._onMessage);\n if (_this.element.nodeName !== 'IFRAME') {\n var params = getOEmbedParameters(element, options);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n var iframe = createEmbed(data, element);\n // Overwrite element with the new iframe,\n // but store reference to the original element\n _this.element = iframe;\n _this._originalElement = element;\n swapCallbacks(element, iframe);\n playerMap.set(_this.element, _this);\n return data;\n }).catch(reject);\n }\n });\n\n // Store a copy of this Player in the map\n readyMap.set(this, readyPromise);\n playerMap.set(this.element, this);\n\n // Send a ping to the iframe so the ready promise will be resolved if\n // the player is already ready.\n if (this.element.nodeName === 'IFRAME') {\n postMessage(this, 'ping');\n }\n if (screenfull.isEnabled) {\n var exitFullscreen = function exitFullscreen() {\n return screenfull.exit();\n };\n this.fullscreenchangeHandler = function () {\n if (screenfull.isFullscreen) {\n storeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n } else {\n removeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n }\n // eslint-disable-next-line\n _this.ready().then(function () {\n postMessage(_this, 'fullscreenchange', screenfull.isFullscreen);\n });\n };\n screenfull.on('fullscreenchange', this.fullscreenchangeHandler);\n }\n return this;\n }\n\n /**\n * Get a promise for a method.\n *\n * @param {string} name The API method to call.\n * @param {Object} [args={}] Arguments to send via postMessage.\n * @return {Promise}\n */\n _createClass(Player, [{\n key: \"callMethod\",\n value: function callMethod(name) {\n var _this2 = this;\n var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new npo_src(function (resolve, reject) {\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n return _this2.ready().then(function () {\n storeCallback(_this2, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this2, name, args);\n }).catch(reject);\n });\n }\n\n /**\n * Get a promise for the value of a player property.\n *\n * @param {string} name The property name\n * @return {Promise}\n */\n }, {\n key: \"get\",\n value: function get(name) {\n var _this3 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'get');\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n return _this3.ready().then(function () {\n storeCallback(_this3, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this3, name);\n }).catch(reject);\n });\n }\n\n /**\n * Get a promise for setting the value of a player property.\n *\n * @param {string} name The API method to call.\n * @param {mixed} value The value to set.\n * @return {Promise}\n */\n }, {\n key: \"set\",\n value: function set(name, value) {\n var _this4 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'set');\n if (value === undefined || value === null) {\n throw new TypeError('There must be a value to set.');\n }\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n // eslint-disable-next-line promise/always-return\n return _this4.ready().then(function () {\n storeCallback(_this4, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this4, name, value);\n }).catch(reject);\n });\n }\n\n /**\n * Add an event listener for the specified event. Will call the\n * callback with a single parameter, `data`, that contains the data for\n * that event.\n *\n * @param {string} eventName The name of the event.\n * @param {function(*)} callback The function to call when the event fires.\n * @return {void}\n */\n }, {\n key: \"on\",\n value: function on(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (!callback) {\n throw new TypeError('You must pass a callback function.');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var callbacks = getCallbacks(this, \"event:\".concat(eventName));\n if (callbacks.length === 0) {\n this.callMethod('addEventListener', eventName).catch(function () {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n storeCallback(this, \"event:\".concat(eventName), callback);\n }\n\n /**\n * Remove an event listener for the specified event. Will remove all\n * listeners for that event if a `callback` isn’t passed, or only that\n * specific callback if it is passed.\n *\n * @param {string} eventName The name of the event.\n * @param {function} [callback] The specific callback to remove.\n * @return {void}\n */\n }, {\n key: \"off\",\n value: function off(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (callback && typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var lastCallback = removeCallback(this, \"event:\".concat(eventName), callback);\n\n // If there are no callbacks left, remove the listener\n if (lastCallback) {\n this.callMethod('removeEventListener', eventName).catch(function (e) {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n }\n\n /**\n * A promise to load a new video.\n *\n * @promise LoadVideoPromise\n * @fulfill {number} The video with this id or url successfully loaded.\n * @reject {TypeError} The id was not a number.\n */\n /**\n * Load a new video into this embed. The promise will be resolved if\n * the video is successfully loaded, or it will be rejected if it could\n * not be loaded.\n *\n * @param {number|string|object} options The id of the video, the url of the video, or an object with embed options.\n * @return {LoadVideoPromise}\n */\n }, {\n key: \"loadVideo\",\n value: function loadVideo(options) {\n return this.callMethod('loadVideo', options);\n }\n\n /**\n * A promise to perform an action when the Player is ready.\n *\n * @todo document errors\n * @promise LoadVideoPromise\n * @fulfill {void}\n */\n /**\n * Trigger a function when the player iframe has initialized. You do not\n * need to wait for `ready` to trigger to begin adding event listeners\n * or calling other methods.\n *\n * @return {ReadyPromise}\n */\n }, {\n key: \"ready\",\n value: function ready() {\n var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {\n reject(new Error('Unknown player. Probably unloaded.'));\n });\n return npo_src.resolve(readyPromise);\n }\n\n /**\n * A promise to add a cue point to the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point to use for removeCuePoint.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Add a cue point to the player.\n *\n * @param {number} time The time for the cue point.\n * @param {object} [data] Arbitrary data to be returned with the cue point.\n * @return {AddCuePointPromise}\n */\n }, {\n key: \"addCuePoint\",\n value: function addCuePoint(time) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.callMethod('addCuePoint', {\n time: time,\n data: data\n });\n }\n\n /**\n * A promise to remove a cue point from the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point that was removed.\n * @reject {InvalidCuePoint} The cue point with the specified id was not\n * found.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Remove a cue point from the video.\n *\n * @param {string} id The id of the cue point to remove.\n * @return {RemoveCuePointPromise}\n */\n }, {\n key: \"removeCuePoint\",\n value: function removeCuePoint(id) {\n return this.callMethod('removeCuePoint', id);\n }\n\n /**\n * A representation of a text track on a video.\n *\n * @typedef {Object} VimeoTextTrack\n * @property {string} language The ISO language code.\n * @property {string} kind The kind of track it is (captions or subtitles).\n * @property {string} label The human‐readable label for the track.\n */\n /**\n * A promise to enable a text track.\n *\n * @promise EnableTextTrackPromise\n * @fulfill {VimeoTextTrack} The text track that was enabled.\n * @reject {InvalidTrackLanguageError} No track was available with the\n * specified language.\n * @reject {InvalidTrackError} No track was available with the specified\n * language and kind.\n */\n /**\n * Enable the text track with the specified language, and optionally the\n * specified kind (captions or subtitles).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {string} language The two‐letter language code.\n * @param {string} [kind] The kind of track to enable (captions or subtitles).\n * @return {EnableTextTrackPromise}\n */\n }, {\n key: \"enableTextTrack\",\n value: function enableTextTrack(language, kind) {\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n return this.callMethod('enableTextTrack', {\n language: language,\n kind: kind\n });\n }\n\n /**\n * A promise to disable the active text track.\n *\n * @promise DisableTextTrackPromise\n * @fulfill {void} The track was disabled.\n */\n /**\n * Disable the currently-active text track.\n *\n * @return {DisableTextTrackPromise}\n */\n }, {\n key: \"disableTextTrack\",\n value: function disableTextTrack() {\n return this.callMethod('disableTextTrack');\n }\n\n /**\n * A promise to pause the video.\n *\n * @promise PausePromise\n * @fulfill {void} The video was paused.\n */\n /**\n * Pause the video if it’s playing.\n *\n * @return {PausePromise}\n */\n }, {\n key: \"pause\",\n value: function pause() {\n return this.callMethod('pause');\n }\n\n /**\n * A promise to play the video.\n *\n * @promise PlayPromise\n * @fulfill {void} The video was played.\n */\n /**\n * Play the video if it’s paused. **Note:** on iOS and some other\n * mobile devices, you cannot programmatically trigger play. Once the\n * viewer has tapped on the play button in the player, however, you\n * will be able to use this function.\n *\n * @return {PlayPromise}\n */\n }, {\n key: \"play\",\n value: function play() {\n return this.callMethod('play');\n }\n\n /**\n * Request that the player enters fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"requestFullscreen\",\n value: function requestFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.request(this.element);\n }\n return this.callMethod('requestFullscreen');\n }\n\n /**\n * Request that the player exits fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.exit();\n }\n return this.callMethod('exitFullscreen');\n }\n\n /**\n * Returns true if the player is currently fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"getFullscreen\",\n value: function getFullscreen() {\n if (screenfull.isEnabled) {\n return npo_src.resolve(screenfull.isFullscreen);\n }\n return this.get('fullscreen');\n }\n\n /**\n * Request that the player enters picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"requestPictureInPicture\",\n value: function requestPictureInPicture() {\n return this.callMethod('requestPictureInPicture');\n }\n\n /**\n * Request that the player exits picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"exitPictureInPicture\",\n value: function exitPictureInPicture() {\n return this.callMethod('exitPictureInPicture');\n }\n\n /**\n * Returns true if the player is currently picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"getPictureInPicture\",\n value: function getPictureInPicture() {\n return this.get('pictureInPicture');\n }\n\n /**\n * A promise to prompt the viewer to initiate remote playback.\n *\n * @promise RemotePlaybackPromptPromise\n * @fulfill {void}\n * @reject {NotFoundError} No remote playback device is available.\n */\n /**\n * Request to prompt the user to initiate remote playback.\n *\n * @return {RemotePlaybackPromptPromise}\n */\n }, {\n key: \"remotePlaybackPrompt\",\n value: function remotePlaybackPrompt() {\n return this.callMethod('remotePlaybackPrompt');\n }\n\n /**\n * A promise to unload the video.\n *\n * @promise UnloadPromise\n * @fulfill {void} The video was unloaded.\n */\n /**\n * Return the player to its initial state.\n *\n * @return {UnloadPromise}\n */\n }, {\n key: \"unload\",\n value: function unload() {\n return this.callMethod('unload');\n }\n\n /**\n * Cleanup the player and remove it from the DOM\n *\n * It won't be usable and a new one should be constructed\n * in order to do any operations.\n *\n * @return {Promise}\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n return new npo_src(function (resolve) {\n readyMap.delete(_this5);\n playerMap.delete(_this5.element);\n if (_this5._originalElement) {\n playerMap.delete(_this5._originalElement);\n _this5._originalElement.removeAttribute('data-vimeo-initialized');\n }\n if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) {\n _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode);\n } else {\n _this5.element.parentNode.removeChild(_this5.element);\n }\n }\n\n // If the clip is private there is a case where the element stays the\n // div element. Destroy should reset the div and remove the iframe child.\n if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) {\n _this5.element.removeAttribute('data-vimeo-initialized');\n var iframe = _this5.element.querySelector('iframe');\n if (iframe && iframe.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) {\n iframe.parentNode.parentNode.removeChild(iframe.parentNode);\n } else {\n iframe.parentNode.removeChild(iframe);\n }\n }\n }\n _this5._window.removeEventListener('message', _this5._onMessage);\n if (screenfull.isEnabled) {\n screenfull.off('fullscreenchange', _this5.fullscreenchangeHandler);\n }\n resolve();\n });\n }\n\n /**\n * A promise to get the autopause behavior of the video.\n *\n * @promise GetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Get the autopause behavior for this player.\n *\n * @return {GetAutopausePromise}\n */\n }, {\n key: \"getAutopause\",\n value: function getAutopause() {\n return this.get('autopause');\n }\n\n /**\n * A promise to set the autopause behavior of the video.\n *\n * @promise SetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Enable or disable the autopause behavior of this player.\n *\n * By default, when another video is played in the same browser, this\n * player will automatically pause. Unless you have a specific reason\n * for doing so, we recommend that you leave autopause set to the\n * default (`true`).\n *\n * @param {boolean} autopause\n * @return {SetAutopausePromise}\n */\n }, {\n key: \"setAutopause\",\n value: function setAutopause(autopause) {\n return this.set('autopause', autopause);\n }\n\n /**\n * A promise to get the buffered property of the video.\n *\n * @promise GetBufferedPromise\n * @fulfill {Array} Buffered Timeranges converted to an Array.\n */\n /**\n * Get the buffered property of the video.\n *\n * @return {GetBufferedPromise}\n */\n }, {\n key: \"getBuffered\",\n value: function getBuffered() {\n return this.get('buffered');\n }\n\n /**\n * @typedef {Object} CameraProperties\n * @prop {number} props.yaw - Number between 0 and 360.\n * @prop {number} props.pitch - Number between -90 and 90.\n * @prop {number} props.roll - Number between -180 and 180.\n * @prop {number} props.fov - The field of view in degrees.\n */\n /**\n * A promise to get the camera properties of the player.\n *\n * @promise GetCameraPromise\n * @fulfill {CameraProperties} The camera properties.\n */\n /**\n * For 360° videos get the camera properties for this player.\n *\n * @return {GetCameraPromise}\n */\n }, {\n key: \"getCameraProps\",\n value: function getCameraProps() {\n return this.get('cameraProps');\n }\n\n /**\n * A promise to set the camera properties of the player.\n *\n * @promise SetCameraPromise\n * @fulfill {Object} The camera was successfully set.\n * @reject {RangeError} The range was out of bounds.\n */\n /**\n * For 360° videos set the camera properties for this player.\n *\n * @param {CameraProperties} camera The camera properties\n * @return {SetCameraPromise}\n */\n }, {\n key: \"setCameraProps\",\n value: function setCameraProps(camera) {\n return this.set('cameraProps', camera);\n }\n\n /**\n * A representation of a chapter.\n *\n * @typedef {Object} VimeoChapter\n * @property {number} startTime The start time of the chapter.\n * @property {object} title The title of the chapter.\n * @property {number} index The place in the order of Chapters. Starts at 1.\n */\n /**\n * A promise to get chapters for the video.\n *\n * @promise GetChaptersPromise\n * @fulfill {VimeoChapter[]} The chapters for the video.\n */\n /**\n * Get an array of all the chapters for the video.\n *\n * @return {GetChaptersPromise}\n */\n }, {\n key: \"getChapters\",\n value: function getChapters() {\n return this.get('chapters');\n }\n\n /**\n * A promise to get the currently active chapter.\n *\n * @promise GetCurrentChaptersPromise\n * @fulfill {VimeoChapter|undefined} The current chapter for the video.\n */\n /**\n * Get the currently active chapter for the video.\n *\n * @return {GetCurrentChaptersPromise}\n */\n }, {\n key: \"getCurrentChapter\",\n value: function getCurrentChapter() {\n return this.get('currentChapter');\n }\n\n /**\n * A promise to get the accent color of the player.\n *\n * @promise GetColorPromise\n * @fulfill {string} The hex color of the player.\n */\n /**\n * Get the accent color for this player. Note this is deprecated in place of `getColorTwo`.\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColor\",\n value: function getColor() {\n return this.get('color');\n }\n\n /**\n * A promise to get all colors for the player in an array.\n *\n * @promise GetColorsPromise\n * @fulfill {string[]} The hex colors of the player.\n */\n /**\n * Get all the colors for this player in an array: [colorOne, colorTwo, colorThree, colorFour]\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColors\",\n value: function getColors() {\n return npo_src.all([this.get('colorOne'), this.get('colorTwo'), this.get('colorThree'), this.get('colorFour')]);\n }\n\n /**\n * A promise to set the accent color of the player.\n *\n * @promise SetColorPromise\n * @fulfill {string} The color was successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the accent color of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * Note this is deprecated in place of `setColorTwo`.\n *\n * @param {string} color The hex or rgb color string to set.\n * @return {SetColorPromise}\n */\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n return this.set('color', color);\n }\n\n /**\n * A promise to set all colors for the player.\n *\n * @promise SetColorsPromise\n * @fulfill {string[]} The colors were successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the colors of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * The colors should be passed in as an array: [colorOne, colorTwo, colorThree, colorFour].\n * If a color should not be set, the index in the array can be left as null.\n *\n * @param {string[]} colors Array of the hex or rgb color strings to set.\n * @return {SetColorsPromise}\n */\n }, {\n key: \"setColors\",\n value: function setColors(colors) {\n if (!Array.isArray(colors)) {\n return new npo_src(function (resolve, reject) {\n return reject(new TypeError('Argument must be an array.'));\n });\n }\n var nullPromise = new npo_src(function (resolve) {\n return resolve(null);\n });\n var colorPromises = [colors[0] ? this.set('colorOne', colors[0]) : nullPromise, colors[1] ? this.set('colorTwo', colors[1]) : nullPromise, colors[2] ? this.set('colorThree', colors[2]) : nullPromise, colors[3] ? this.set('colorFour', colors[3]) : nullPromise];\n return npo_src.all(colorPromises);\n }\n\n /**\n * A representation of a cue point.\n *\n * @typedef {Object} VimeoCuePoint\n * @property {number} time The time of the cue point.\n * @property {object} data The data passed when adding the cue point.\n * @property {string} id The unique id for use with removeCuePoint.\n */\n /**\n * A promise to get the cue points of a video.\n *\n * @promise GetCuePointsPromise\n * @fulfill {VimeoCuePoint[]} The cue points added to the video.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Get an array of the cue points added to the video.\n *\n * @return {GetCuePointsPromise}\n */\n }, {\n key: \"getCuePoints\",\n value: function getCuePoints() {\n return this.get('cuePoints');\n }\n\n /**\n * A promise to get the current time of the video.\n *\n * @promise GetCurrentTimePromise\n * @fulfill {number} The current time in seconds.\n */\n /**\n * Get the current playback position in seconds.\n *\n * @return {GetCurrentTimePromise}\n */\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.get('currentTime');\n }\n\n /**\n * A promise to set the current time of the video.\n *\n * @promise SetCurrentTimePromise\n * @fulfill {number} The actual current time that was set.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n */\n /**\n * Set the current playback position in seconds. If the player was\n * paused, it will remain paused. Likewise, if the player was playing,\n * it will resume playing once the video has buffered.\n *\n * You can provide an accurate time and the player will attempt to seek\n * to as close to that time as possible. The exact time will be the\n * fulfilled value of the promise.\n *\n * @param {number} currentTime\n * @return {SetCurrentTimePromise}\n */\n }, {\n key: \"setCurrentTime\",\n value: function setCurrentTime(currentTime) {\n return this.set('currentTime', currentTime);\n }\n\n /**\n * A promise to get the duration of the video.\n *\n * @promise GetDurationPromise\n * @fulfill {number} The duration in seconds.\n */\n /**\n * Get the duration of the video in seconds. It will be rounded to the\n * nearest second before playback begins, and to the nearest thousandth\n * of a second after playback begins.\n *\n * @return {GetDurationPromise}\n */\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.get('duration');\n }\n\n /**\n * A promise to get the ended state of the video.\n *\n * @promise GetEndedPromise\n * @fulfill {boolean} Whether or not the video has ended.\n */\n /**\n * Get the ended state of the video. The video has ended if\n * `currentTime === duration`.\n *\n * @return {GetEndedPromise}\n */\n }, {\n key: \"getEnded\",\n value: function getEnded() {\n return this.get('ended');\n }\n\n /**\n * A promise to get the loop state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the player is set to loop.\n */\n /**\n * Get the loop state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getLoop\",\n value: function getLoop() {\n return this.get('loop');\n }\n\n /**\n * A promise to set the loop state of the player.\n *\n * @promise SetLoopPromise\n * @fulfill {boolean} The loop state that was set.\n */\n /**\n * Set the loop state of the player. When set to `true`, the player\n * will start over immediately once playback ends.\n *\n * @param {boolean} loop\n * @return {SetLoopPromise}\n */\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n return this.set('loop', loop);\n }\n\n /**\n * A promise to set the muted state of the player.\n *\n * @promise SetMutedPromise\n * @fulfill {boolean} The muted state that was set.\n */\n /**\n * Set the muted state of the player. When set to `true`, the player\n * volume will be muted.\n *\n * @param {boolean} muted\n * @return {SetMutedPromise}\n */\n }, {\n key: \"setMuted\",\n value: function setMuted(muted) {\n return this.set('muted', muted);\n }\n\n /**\n * A promise to get the muted state of the player.\n *\n * @promise GetMutedPromise\n * @fulfill {boolean} Whether or not the player is muted.\n */\n /**\n * Get the muted state of the player.\n *\n * @return {GetMutedPromise}\n */\n }, {\n key: \"getMuted\",\n value: function getMuted() {\n return this.get('muted');\n }\n\n /**\n * A promise to get the paused state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the video is paused.\n */\n /**\n * Get the paused state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getPaused\",\n value: function getPaused() {\n return this.get('paused');\n }\n\n /**\n * A promise to get the playback rate of the player.\n *\n * @promise GetPlaybackRatePromise\n * @fulfill {number} The playback rate of the player on a scale from 0 to 2.\n */\n /**\n * Get the playback rate of the player on a scale from `0` to `2`.\n *\n * @return {GetPlaybackRatePromise}\n */\n }, {\n key: \"getPlaybackRate\",\n value: function getPlaybackRate() {\n return this.get('playbackRate');\n }\n\n /**\n * A promise to set the playbackrate of the player.\n *\n * @promise SetPlaybackRatePromise\n * @fulfill {number} The playback rate was set.\n * @reject {RangeError} The playback rate was less than 0 or greater than 2.\n */\n /**\n * Set the playback rate of the player on a scale from `0` to `2`. When set\n * via the API, the playback rate will not be synchronized to other\n * players or stored as the viewer's preference.\n *\n * @param {number} playbackRate\n * @return {SetPlaybackRatePromise}\n */\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(playbackRate) {\n return this.set('playbackRate', playbackRate);\n }\n\n /**\n * A promise to get the played property of the video.\n *\n * @promise GetPlayedPromise\n * @fulfill {Array} Played Timeranges converted to an Array.\n */\n /**\n * Get the played property of the video.\n *\n * @return {GetPlayedPromise}\n */\n }, {\n key: \"getPlayed\",\n value: function getPlayed() {\n return this.get('played');\n }\n\n /**\n * A promise to get the qualities available of the current video.\n *\n * @promise GetQualitiesPromise\n * @fulfill {Array} The qualities of the video.\n */\n /**\n * Get the qualities of the current video.\n *\n * @return {GetQualitiesPromise}\n */\n }, {\n key: \"getQualities\",\n value: function getQualities() {\n return this.get('qualities');\n }\n\n /**\n * A promise to get the current set quality of the video.\n *\n * @promise GetQualityPromise\n * @fulfill {string} The current set quality.\n */\n /**\n * Get the current set quality of the video.\n *\n * @return {GetQualityPromise}\n */\n }, {\n key: \"getQuality\",\n value: function getQuality() {\n return this.get('quality');\n }\n\n /**\n * A promise to set the video quality.\n *\n * @promise SetQualityPromise\n * @fulfill {number} The quality was set.\n * @reject {RangeError} The quality is not available.\n */\n /**\n * Set a video quality.\n *\n * @param {string} quality\n * @return {SetQualityPromise}\n */\n }, {\n key: \"setQuality\",\n value: function setQuality(quality) {\n return this.set('quality', quality);\n }\n\n /**\n * A promise to get the remote playback availability.\n *\n * @promise RemotePlaybackAvailabilityPromise\n * @fulfill {boolean} Whether remote playback is available.\n */\n /**\n * Get the availability of remote playback.\n *\n * @return {RemotePlaybackAvailabilityPromise}\n */\n }, {\n key: \"getRemotePlaybackAvailability\",\n value: function getRemotePlaybackAvailability() {\n return this.get('remotePlaybackAvailability');\n }\n\n /**\n * A promise to get the current remote playback state.\n *\n * @promise RemotePlaybackStatePromise\n * @fulfill {string} The state of the remote playback: connecting, connected, or disconnected.\n */\n /**\n * Get the current remote playback state.\n *\n * @return {RemotePlaybackStatePromise}\n */\n }, {\n key: \"getRemotePlaybackState\",\n value: function getRemotePlaybackState() {\n return this.get('remotePlaybackState');\n }\n\n /**\n * A promise to get the seekable property of the video.\n *\n * @promise GetSeekablePromise\n * @fulfill {Array} Seekable Timeranges converted to an Array.\n */\n /**\n * Get the seekable property of the video.\n *\n * @return {GetSeekablePromise}\n */\n }, {\n key: \"getSeekable\",\n value: function getSeekable() {\n return this.get('seekable');\n }\n\n /**\n * A promise to get the seeking property of the player.\n *\n * @promise GetSeekingPromise\n * @fulfill {boolean} Whether or not the player is currently seeking.\n */\n /**\n * Get if the player is currently seeking.\n *\n * @return {GetSeekingPromise}\n */\n }, {\n key: \"getSeeking\",\n value: function getSeeking() {\n return this.get('seeking');\n }\n\n /**\n * A promise to get the text tracks of a video.\n *\n * @promise GetTextTracksPromise\n * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.\n */\n /**\n * Get an array of the text tracks that exist for the video.\n *\n * @return {GetTextTracksPromise}\n */\n }, {\n key: \"getTextTracks\",\n value: function getTextTracks() {\n return this.get('textTracks');\n }\n\n /**\n * A promise to get the embed code for the video.\n *\n * @promise GetVideoEmbedCodePromise\n * @fulfill {string} The `<iframe>` embed code for the video.\n */\n /**\n * Get the `<iframe>` embed code for the video.\n *\n * @return {GetVideoEmbedCodePromise}\n */\n }, {\n key: \"getVideoEmbedCode\",\n value: function getVideoEmbedCode() {\n return this.get('videoEmbedCode');\n }\n\n /**\n * A promise to get the id of the video.\n *\n * @promise GetVideoIdPromise\n * @fulfill {number} The id of the video.\n */\n /**\n * Get the id of the video.\n *\n * @return {GetVideoIdPromise}\n */\n }, {\n key: \"getVideoId\",\n value: function getVideoId() {\n return this.get('videoId');\n }\n\n /**\n * A promise to get the title of the video.\n *\n * @promise GetVideoTitlePromise\n * @fulfill {number} The title of the video.\n */\n /**\n * Get the title of the video.\n *\n * @return {GetVideoTitlePromise}\n */\n }, {\n key: \"getVideoTitle\",\n value: function getVideoTitle() {\n return this.get('videoTitle');\n }\n\n /**\n * A promise to get the native width of the video.\n *\n * @promise GetVideoWidthPromise\n * @fulfill {number} The native width of the video.\n */\n /**\n * Get the native width of the currently‐playing video. The width of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoWidthPromise}\n */\n }, {\n key: \"getVideoWidth\",\n value: function getVideoWidth() {\n return this.get('videoWidth');\n }\n\n /**\n * A promise to get the native height of the video.\n *\n * @promise GetVideoHeightPromise\n * @fulfill {number} The native height of the video.\n */\n /**\n * Get the native height of the currently‐playing video. The height of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoHeightPromise}\n */\n }, {\n key: \"getVideoHeight\",\n value: function getVideoHeight() {\n return this.get('videoHeight');\n }\n\n /**\n * A promise to get the vimeo.com url for the video.\n *\n * @promise GetVideoUrlPromise\n * @fulfill {number} The vimeo.com url for the video.\n * @reject {PrivacyError} The url isn’t available because of the video’s privacy setting.\n */\n /**\n * Get the vimeo.com url for the video.\n *\n * @return {GetVideoUrlPromise}\n */\n }, {\n key: \"getVideoUrl\",\n value: function getVideoUrl() {\n return this.get('videoUrl');\n }\n\n /**\n * A promise to get the volume level of the player.\n *\n * @promise GetVolumePromise\n * @fulfill {number} The volume level of the player on a scale from 0 to 1.\n */\n /**\n * Get the current volume level of the player on a scale from `0` to `1`.\n *\n * Most mobile devices do not support an independent volume from the\n * system volume. In those cases, this method will always return `1`.\n *\n * @return {GetVolumePromise}\n */\n }, {\n key: \"getVolume\",\n value: function getVolume() {\n return this.get('volume');\n }\n\n /**\n * A promise to set the volume level of the player.\n *\n * @promise SetVolumePromise\n * @fulfill {number} The volume was set.\n * @reject {RangeError} The volume was less than 0 or greater than 1.\n */\n /**\n * Set the volume of the player on a scale from `0` to `1`. When set\n * via the API, the volume level will not be synchronized to other\n * players or stored as the viewer’s preference.\n *\n * Most mobile devices do not support setting the volume. An error will\n * *not* be triggered in that situation.\n *\n * @param {number} volume\n * @return {SetVolumePromise}\n */\n }, {\n key: \"setVolume\",\n value: function setVolume(volume) {\n return this.set('volume', volume);\n }\n\n /** @typedef {import('./lib/timing-object.types').TimingObject} TimingObject */\n /** @typedef {import('./lib/timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n /** @typedef {import('./lib/timing-src-connector').TimingSrcConnector} TimingSrcConnector */\n\n /**\n * Connects a TimingObject to the video player (https://webtiming.github.io/timingobject/)\n *\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n *\n * @return {Promise<TimingSrcConnector>}\n */\n }, {\n key: \"setTimingSrc\",\n value: function () {\n var _setTimingSrc = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(timingObject, options) {\n var _this6 = this;\n var connector;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (timingObject) {\n _context.next = 2;\n break;\n }\n throw new TypeError('A Timing Object must be provided.');\n case 2:\n _context.next = 4;\n return this.ready();\n case 4:\n connector = new TimingSrcConnector(this, timingObject, options);\n postMessage(this, 'notifyTimingObjectConnect');\n connector.addEventListener('disconnect', function () {\n return postMessage(_this6, 'notifyTimingObjectDisconnect');\n });\n return _context.abrupt(\"return\", connector);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function setTimingSrc(_x, _x2) {\n return _setTimingSrc.apply(this, arguments);\n }\n return setTimingSrc;\n }()\n }]);\n return Player;\n}(); // Setup embed only if this is not a node environment\nif (!isNode) {\n screenfull = initializeScreenfull();\n initializeEmbeds();\n resizeEmbeds();\n initAppendVideoMetadata();\n checkUrlTimeParam();\n}\n\nexport default Player;\n","// Change the point inclusif character to one which is correctly shown by our\n// font.\nexport const pointInclusifFix = (txt) => txt.replace(/·/g, \"•\")\n\nconst w = window\nexport const gettext = (...args) => pointInclusifFix(w.gettext(...args))\nexport const pgettext = (...args) => pointInclusifFix(w.pgettext(...args))\nexport const ngettext = (...args) => pointInclusifFix(w.ngettext(...args))\n\n// Make interpolate() always use named placeholders\nconst vowelRegex = /^[aieou]/i\nexport const interpolate = (s, p) => {\n //not soo nice but works, first check for vowel beginning than for de + name\n if (vowelRegex.test(p.name)) {\n s = s.replace(\" de %(name)s\", \" d'%(name)s\")\n }\n return w.interpolate(s, p, true)\n}\n\nexport function onReady(fn) {\n if (\n document.readyState === \"complete\" ||\n document.readyState === \"interactive\"\n ) {\n // call on next available tick\n setTimeout(fn, 1)\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn)\n }\n}\n\nexport const qs = (sel, base = document) => base.querySelector(sel)\nexport const qsa = (sel, base = document) => base.querySelectorAll(sel)\n\nexport function csrfTokenHeader() {\n return {\n \"X-CSRFToken\": document.cookie.match(/\\bcsrftoken=(.+?)\\b/)[1],\n }\n}\n\nexport const containsJSON = (response) => {\n const contentType = response.headers.get(\"content-type\")\n return contentType ? contentType.includes(\"application/json\") : false\n}\n\nexport function getCookie(cookieName) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : []\n const prefix = `${cookieName}=`\n for (const cookie of cookies) {\n if (cookie.startsWith(prefix))\n return decodeURIComponent(cookie.substring(prefix.length))\n }\n}\n\nexport const fetchAPI = async (url, opts = {}) => {\n opts.credentials = \"same-origin\"\n opts.headers = opts.headers || {}\n opts.headers[\"X-CSRFToken\"] = getCookie(\"csrftoken\")\n const response = await fetch(url, opts)\n /*\n if (response.status == 401) {\n window.location.href = `/world/login/?next=${encodeURIComponent(\n window.location.pathname,\n )}`\n }\n */\n return response\n}\n\nexport const fetchJSON = async (url, opts) => {\n const response = await fetchAPI(url, opts)\n if (!response.ok || !containsJSON(response))\n throw new Error(response.statusText)\n return response.json()\n}\n\nexport const changeListPresence = (list, item, presence) => {\n // Add or remove items from list while ensuring that we return the object\n // unchanged if no change is necessary.\n return presence\n ? list.includes(item)\n ? list\n : [...list, item]\n : list.includes(item)\n ? list.filter((i) => i !== item)\n : list\n}\n\nexport const isTouch = window.matchMedia(\"(pointer: coarse)\").matches\n\nexport const calculateTransformOrigin = (element) => {\n if (!element) return null\n\n const elementRect = element.getBoundingClientRect()\n const parentRect = element.parentNode.getBoundingClientRect()\n\n const elementCenterX = Number(\n (elementRect.left + elementRect.width / 2).toFixed(1),\n )\n const parentCenterX = Number(\n (parentRect.left + parentRect.width / 2).toFixed(1),\n )\n const elementCenterY = Number(\n (elementRect.top + elementRect.height / 2).toFixed(1),\n )\n const parentCenterY = Number(\n (parentRect.top + parentRect.height / 2).toFixed(1),\n )\n\n const toleranceX = parentRect.width * 0.01\n const toleranceY = parentRect.height * 0.01\n\n let transformOrigin = \"\"\n\n // Vertikale Position\n if (Math.abs(elementCenterY - parentCenterY) <= toleranceY) {\n transformOrigin += \"center \"\n } else if (elementCenterY < parentCenterY) {\n transformOrigin += \"top \"\n } else {\n transformOrigin += \"bottom \"\n }\n\n // Horizontale Position\n if (Math.abs(elementCenterX - parentCenterX) <= toleranceX) {\n transformOrigin += \"center\"\n } else if (elementCenterX < parentCenterX) {\n transformOrigin += \"left\"\n } else {\n transformOrigin += \"right\"\n }\n return transformOrigin\n}\n","import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\""\";break;case 38:f=\"&\";break;case 60:f=\"<\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\nexport { _async_to_generator as _ };\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n } else obj[key] = value;\n\n return obj;\n}\nexport { _define_property as _ };\n","import { _ as _define_property } from \"./_define_property.js\";\n\nfunction _object_spread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n\n return target;\n}\nexport { _object_spread as _ };\n","function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\nexport { _array_like_to_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n\n var n = Object.prototype.toString.call(o).slice(8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\nexport { _unsupported_iterable_to_array as _ };\n","import { _ as _array_with_holes } from \"./_array_with_holes.js\";\nimport { _ as _iterable_to_array_limit } from \"./_iterable_to_array_limit.js\";\nimport { _ as _non_iterable_rest } from \"./_non_iterable_rest.js\";\nimport { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nexport { _sliced_to_array as _ };\n","function _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nexport { _array_with_holes as _ };\n","function _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\nexport { _iterable_to_array_limit as _ };\n","function _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _non_iterable_rest as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export const LONGTOUCHDURATION = 800\n\nexport const VIMEOOPTIONS = {\n airplay: false,\n audio_tracks: false,\n byline: false,\n cc: false,\n chromecast: false,\n dnt: true,\n fullscreen: false,\n pip: false,\n portrait: false,\n title: false,\n transcript: false,\n vimeo_logo: false,\n transparent: false,\n watch_full_video: false,\n}\n\nexport const MININPUTCHARACTERS = 20\n\nexport const SHOWSUBTITLEDEFAULT = false\n","/* Inspired by: https://michalzalecki.com/why-using-localStorage-directly-is-a-bad-idea/ */\n\nexport const safeStorage = (storage) => {\n let fallback = {}\n return {\n get(key) {\n try {\n return storage.getItem(key)\n } catch (_e) {\n return fallback[key] || null\n }\n },\n set(key, value) {\n try {\n storage.setItem(key, value)\n } catch (_e) {\n fallback[key] = value\n }\n },\n remove(key) {\n try {\n storage.removeItem(key)\n } catch (_e) {\n delete fallback[key]\n }\n },\n clear() {\n try {\n storage.clear()\n } catch (_e) {\n fallback = {}\n }\n },\n }\n}\n","import { _ as _array_without_holes } from \"./_array_without_holes.js\";\nimport { _ as _iterable_to_array } from \"./_iterable_to_array.js\";\nimport { _ as _non_iterable_spread } from \"./_non_iterable_spread.js\";\nimport { _ as _unsupported_iterable_to_array } from \"./_unsupported_iterable_to_array.js\";\n\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nexport { _to_consumable_array as _ };\n","import { _ as _array_like_to_array } from \"./_array_like_to_array.js\";\n\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nexport { _array_without_holes as _ };\n","function _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) {\n return Array.from(iter);\n }\n}\nexport { _iterable_to_array as _ };\n","function _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _non_iterable_spread as _ };\n","import { useEffect, useState } from \"preact/hooks\"\n\nimport { SHOWSUBTITLEDEFAULT } from \"./config.js\"\nimport { safeStorage } from \"./storage.js\"\nimport { fetchJSON, qs } from \"./utils.js\"\n\nlet _appData = null\nexport const setAppData = (data) => {\n _appData = data\n}\nexport const endpoint = (key) => _appData.endpoints[key]\nexport const people = () => _appData.people\nexport const resourceById = (id) => _appData.resources[id]\nexport const resourcesOf = (aspect) =>\n Object.values(_appData.resources).filter(\n (resource) => resource.aspectId === aspect?.id,\n )\nexport const getPages = () => {\n try {\n return JSON.parse(qs(\"#main-menu\").textContent)\n } catch (_e) {}\n return []\n}\n\nconst portfolioStorage = safeStorage(localStorage)\nconst subtitleStorage = safeStorage(localStorage)\n\n/* Functions and variables forever */\nlet _portfolioState = {\n code: \"\",\n lastPath: \"\",\n selectedComplexity: 2,\n selectedPerson: null,\n selectedAspects: [],\n finishedResources: [],\n finishedExercises: [],\n exerciseComplexities: [],\n suppliedReflexion: \"\",\n suppliedJudgement: {},\n resourceParts: [[\"timeline\", {}]],\n}\n\nconst _pEvent = \"portfolio\"\nconst _pEventEmitter = document.body\nconst _pStorageKey = \"portfolio\"\nconst _subtitleStorageKey = \"subtitle\"\nconst _broadcastUpdate = () => {\n _pEventEmitter.dispatchEvent(new CustomEvent(_pEvent))\n}\nconst _updatePortfolio = (newState, broadcast = true) => {\n _portfolioState = newState(_portfolioState)\n portfolioStorage.set(_pStorageKey, JSON.stringify(_portfolioState))\n if (broadcast) _broadcastUpdate()\n}\nconst _loadPortfolio = () => {\n try {\n const state = JSON.parse(portfolioStorage.get(_pStorageKey))\n _portfolioState = { ..._portfolioState, ...state }\n _broadcastUpdate()\n } catch (_e) {\n /* Nothing */\n }\n}\n_loadPortfolio()\n\nconst clobberStorage = () => {\n portfolioStorage.remove(_pStorageKey)\n}\n\nexport const usePortfolio = () => {\n const [state, setState] = useState(_portfolioState)\n useEffect(() => {\n const listener = () => {\n setState(_portfolioState)\n }\n _pEventEmitter.addEventListener(_pEvent, listener)\n return () => {\n _pEventEmitter.removeEventListener(_pEvent, listener)\n }\n }, [])\n return [state, _updatePortfolio]\n}\n\nexport const resetPortfolio = () => {\n clobberStorage()\n window.location.href = \"/app/\"\n}\n\nexport const savePortfolio = async () => {\n const body = new FormData()\n body.append(\"portfolio\", JSON.stringify(_portfolioState))\n const code = _portfolioState.code\n if (code) {\n body.append(\"code\", code)\n }\n await fetchJSON(endpoint(\"savepoint\"), { method: \"POST\", body }).then(\n (data) => {\n _updatePortfolio((portfolio) => ({\n ...portfolio,\n ...data,\n }))\n },\n )\n}\n\nexport const useSubtitle = () => {\n const currentLanguage = document.documentElement.lang\n\n const [subtitle, setSubtitle] = useState(\n subtitleStorage.get(_subtitleStorageKey)\n ? JSON.parse(subtitleStorage.get(_subtitleStorageKey))\n : SHOWSUBTITLEDEFAULT,\n )\n\n useEffect(() => {\n subtitleStorage.set(_subtitleStorageKey, subtitle)\n }, [subtitle])\n\n useEffect(() => {\n if (currentLanguage === \"it\") {\n setSubtitle(false)\n subtitleStorage.remove(_subtitleStorageKey)\n }\n }, [currentLanguage])\n\n return [subtitle, setSubtitle]\n}\n","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n\n if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\nexport { _object_spread_props as _ };\n","import { useState, useLayoutEffect, useEffect, useRef } from 'preact/hooks';\nimport 'preact';\n\n// Copied from:\n// https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js\nconst canUseDOM = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\n\n// TODO: switch to `export { useSyncExternalStore } from \"preact/compat\"` once we update Preact to >= 10.11.3\nfunction is(x, y) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getSSRSnapshot) {\n if (getSSRSnapshot && !canUseDOM) getSnapshot = getSSRSnapshot;\n const value = getSnapshot();\n\n const [{ _instance }, forceUpdate] = useState({\n _instance: { _value: value, _getSnapshot: getSnapshot },\n });\n\n useLayoutEffect(() => {\n _instance._value = value;\n _instance._getSnapshot = getSnapshot;\n\n if (!is(_instance._value, getSnapshot())) {\n forceUpdate({ _instance });\n }\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n if (!is(_instance._value, _instance._getSnapshot())) {\n forceUpdate({ _instance });\n }\n\n return subscribe(() => {\n if (!is(_instance._value, _instance._getSnapshot())) {\n forceUpdate({ _instance });\n }\n });\n }, [subscribe]);\n\n return value;\n}\n\n// provide forwardRef stub for preact\nfunction forwardRef(component) {\n return component;\n}\n\n// Userland polyfill while we wait for the forthcoming\n// https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md\n// Note: \"A high-fidelty polyfill for useEvent is not possible because\n// there is no lifecycle or Hook in React that we can use to switch\n// .current at the right timing.\"\n// So we will have to make do with this \"close enough\" approach for now.\nconst useEvent = (fn) => {\n const ref = useRef([fn, (...args) => ref[0](...args)]).current;\n useLayoutEffect(() => {\n ref[0] = fn;\n });\n return ref[1];\n};\n\nexport { useSyncExternalStore as a, forwardRef as f, useEvent as u };\n","import { a as useSyncExternalStore } from './preact-deps-dec5c677.js';\nimport 'preact/hooks';\nimport 'preact';\n\n/**\n * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History\n */\nconst eventPopstate = \"popstate\";\nconst eventPushState = \"pushState\";\nconst eventReplaceState = \"replaceState\";\nconst eventHashchange = \"hashchange\";\nconst events = [\n eventPopstate,\n eventPushState,\n eventReplaceState,\n eventHashchange,\n];\n\nconst subscribeToLocationUpdates = (callback) => {\n for (const event of events) {\n addEventListener(event, callback);\n }\n return () => {\n for (const event of events) {\n removeEventListener(event, callback);\n }\n };\n};\n\nconst useLocationProperty = (fn, ssrFn) =>\n useSyncExternalStore(subscribeToLocationUpdates, fn, ssrFn);\n\nconst currentSearch = () => location.search;\n\nconst useSearch = ({ ssrSearch = \"\" } = {}) =>\n useLocationProperty(currentSearch, () => ssrSearch);\n\nconst currentPathname = () => location.pathname;\n\nconst usePathname = ({ ssrPath } = {}) =>\n useLocationProperty(\n currentPathname,\n ssrPath ? () => ssrPath : currentPathname\n );\n\nconst currentHistoryState = () => history.state;\nconst useHistoryState = () =>\n useLocationProperty(currentHistoryState, () => null);\n\nconst navigate = (to, { replace = false, state = null } = {}) =>\n history[replace ? eventReplaceState : eventPushState](state, \"\", to);\n\n// the 2nd argument of the `useBrowserLocation` return value is a function\n// that allows to perform a navigation.\nconst useBrowserLocation = (opts = {}) => [usePathname(opts), navigate];\n\nconst patchKey = Symbol.for(\"wouter_v3\");\n\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\nif (typeof history !== \"undefined\" && typeof window[patchKey] === \"undefined\") {\n for (const type of [eventPushState, eventReplaceState]) {\n const original = history[type];\n // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,\n // however that will require an additional peer dependency on react-dom.\n // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149\n history[type] = function () {\n const result = original.apply(this, arguments);\n const event = new Event(type);\n event.arguments = arguments;\n\n dispatchEvent(event);\n return result;\n };\n }\n\n // patch history object only once\n // See: https://github.com/molefrog/wouter/issues/167\n Object.defineProperty(window, patchKey, { value: true });\n}\n\nexport { navigate, useBrowserLocation, useHistoryState, useLocationProperty, usePathname, useSearch };\n","import { parse } from 'regexparam';\nimport { useBrowserLocation, useSearch as useSearch$1 } from './use-browser-location.js';\nimport { f as forwardRef, u as useEvent } from './preact-deps-dec5c677.js';\nimport { createContext, createElement, isValidElement, cloneElement, Fragment } from 'preact';\nimport { useContext, useRef, useLayoutEffect } from 'preact/hooks';\n\n/*\n * Transforms `path` into its relative `base` version\n * If base isn't part of the path provided returns absolute path e.g. `~/app`\n */\nconst _relativePath = (base, path) =>\n !path.toLowerCase().indexOf(base.toLowerCase())\n ? path.slice(base.length) || \"/\"\n : \"~\" + path;\n\n/**\n * When basepath is `undefined` or '/' it is ignored (we assume it's empty string)\n */\nconst baseDefaults = (base = \"\") => (base === \"/\" ? \"\" : base);\n\nconst absolutePath = (to, base) =>\n to[0] === \"~\" ? to.slice(1) : baseDefaults(base) + to;\n\nconst relativePath = (base = \"\", path) =>\n _relativePath(unescape(baseDefaults(base)), unescape(path));\n\n/*\n * Removes leading question mark\n */\nconst stripQm = (str) => (str[0] === \"?\" ? str.slice(1) : str);\n\n/*\n * decodes escape sequences such as %20\n */\nconst unescape = (str) => {\n try {\n return decodeURI(str);\n } catch (_e) {\n // fail-safe mode: if string can't be decoded do nothing\n return str;\n }\n};\n\nconst sanitizeSearch = (search) => unescape(stripQm(search));\n\n/*\n * Router and router context. Router is a lightweight object that represents the current\n * routing options: how location is managed, base path etc.\n *\n * There is a default router present for most of the use cases, however it can be overridden\n * via the <Router /> component.\n */\n\nconst defaultRouter = {\n hook: useBrowserLocation,\n searchHook: useSearch$1,\n parser: parse,\n base: \"\",\n // this option is used to override the current location during SSR\n ssrPath: undefined,\n ssrSearch: undefined,\n // customizes how `href` props are transformed for <Link />\n hrefs: (x) => x,\n};\n\nconst RouterCtx = createContext(defaultRouter);\n\n// gets the closest parent router from the context\nconst useRouter = () => useContext(RouterCtx);\n\n/**\n * Parameters context. Used by `useParams()` to get the\n * matched params from the innermost `Route` component.\n */\n\nconst Params0 = {},\n ParamsCtx = createContext(Params0);\n\nconst useParams = () => useContext(ParamsCtx);\n\n/*\n * Part 1, Hooks API: useRoute and useLocation\n */\n\n// Internal version of useLocation to avoid redundant useRouter calls\n\nconst useLocationFromRouter = (router) => {\n const [location, navigate] = router.hook(router);\n\n // the function reference should stay the same between re-renders, so that\n // it can be passed down as an element prop without any performance concerns.\n // (This is achieved via `useEvent`.)\n return [\n relativePath(router.base, location),\n useEvent((to, navOpts) => navigate(absolutePath(to, router.base), navOpts)),\n ];\n};\n\nconst useLocation = () => useLocationFromRouter(useRouter());\n\nconst useSearch = () => {\n const router = useRouter();\n return sanitizeSearch(router.searchHook(router));\n};\n\nconst matchRoute = (parser, route, path, loose) => {\n // if the input is a regexp, skip parsing\n const { pattern, keys } =\n route instanceof RegExp\n ? { keys: false, pattern: route }\n : parser(route || \"*\", loose);\n\n // array destructuring loses keys, so this is done in two steps\n const result = pattern.exec(path) || [];\n\n // when parser is in \"loose\" mode, `$base` is equal to the\n // first part of the route that matches the pattern\n // (e.g. for pattern `/a/:b` and path `/a/1/2/3` the `$base` is `a/1`)\n // we use this for route nesting\n const [$base, ...matches] = result;\n\n return $base !== undefined\n ? [\n true,\n\n (() => {\n // for regex paths, `keys` will always be false\n\n // an object with parameters matched, e.g. { foo: \"bar\" } for \"/:foo\"\n // we \"zip\" two arrays here to construct the object\n // [\"foo\"], [\"bar\"] → { foo: \"bar\" }\n const groups =\n keys !== false\n ? Object.fromEntries(keys.map((key, i) => [key, matches[i]]))\n : result.groups;\n\n // convert the array to an instance of object\n // this makes it easier to integrate with the existing param implementation\n let obj = { ...matches };\n\n // merge named capture groups with matches array\n groups && Object.assign(obj, groups);\n\n return obj;\n })(),\n\n // the third value if only present when parser is in \"loose\" mode,\n // so that we can extract the base path for nested routes\n ...(loose ? [$base] : []),\n ]\n : [false, null];\n};\n\nconst useRoute = (pattern) =>\n matchRoute(useRouter().parser, pattern, useLocation()[0]);\n\n/*\n * Part 2, Low Carb Router API: Router, Route, Link, Switch\n */\n\nconst Router = ({ children, ...props }) => {\n // the router we will inherit from - it is the closest router in the tree,\n // unless the custom `hook` is provided (in that case it's the default one)\n const parent_ = useRouter();\n const parent = props.hook ? defaultRouter : parent_;\n\n // holds to the context value: the router object\n let value = parent;\n\n // when `ssrPath` contains a `?` character, we can extract the search from it\n const [path, search] = props.ssrPath?.split(\"?\") ?? [];\n if (search) (props.ssrSearch = search), (props.ssrPath = path);\n\n // hooks can define their own `href` formatter (e.g. for hash location)\n props.hrefs = props.hrefs ?? props.hook?.hrefs;\n\n // what is happening below: to avoid unnecessary rerenders in child components,\n // we ensure that the router object reference is stable, unless there are any\n // changes that require reload (e.g. `base` prop changes -> all components that\n // get the router from the context should rerender, even if the component is memoized).\n // the expected behaviour is:\n //\n // 1) when the resulted router is no different from the parent, use parent\n // 2) if the custom `hook` prop is provided, we always inherit from the\n // default router instead. this resets all previously overridden options.\n // 3) when the router is customized here, it should stay stable between renders\n let ref = useRef({}),\n prev = ref.current,\n next = prev;\n\n for (let k in parent) {\n const option =\n k === \"base\"\n ? /* base is special case, it is appended to the parent's base */\n parent[k] + (props[k] || \"\")\n : props[k] || parent[k];\n\n if (prev === next && option !== next[k]) {\n ref.current = next = { ...next };\n }\n\n next[k] = option;\n\n // the new router is no different from the parent, use parent\n if (option !== parent[k]) value = next;\n }\n\n return createElement(RouterCtx.Provider, { value, children });\n};\n\nconst h_route = ({ children, component }, params) => {\n // React-Router style `component` prop\n if (component) return createElement(component, { params });\n\n // support render prop or plain children\n return typeof children === \"function\" ? children(params) : children;\n};\n\n// a hook to cache the params object between renders (if they are shallow equal)\nconst useCachedParams = (value) => {\n let prev = useRef(Params0),\n curr = prev.current;\n\n for (const k in value) if (value[k] !== curr[k]) curr = value;\n if (Object.keys(value).length === 0) curr = value;\n return (prev.current = curr);\n};\n\nconst Route = ({ path, nest, match, ...renderProps }) => {\n const router = useRouter();\n const [location] = useLocationFromRouter(router);\n\n const [matches, routeParams, base] =\n // `match` is a special prop to give up control to the parent,\n // it is used by the `Switch` to avoid double matching\n match ?? matchRoute(router.parser, path, location, nest);\n\n // when `routeParams` is `null` (there was no match), the argument\n // below becomes {...null} = {}, see the Object Spread specs\n // https://tc39.es/proposal-object-rest-spread/#AbstractOperations-CopyDataProperties\n const params = useCachedParams({ ...useParams(), ...routeParams });\n\n if (!matches) return null;\n\n const children = base\n ? createElement(Router, { base }, h_route(renderProps, params))\n : h_route(renderProps, params);\n\n return createElement(ParamsCtx.Provider, { value: params, children });\n};\n\nconst Link = forwardRef((props, ref) => {\n const router = useRouter();\n const [currentPath, navigate] = useLocationFromRouter(router);\n\n const {\n to = \"\",\n href: targetPath = to,\n onClick: _onClick,\n asChild,\n children,\n className: cls,\n /* eslint-disable no-unused-vars */\n replace /* ignore nav props */,\n state /* ignore nav props */,\n /* eslint-enable no-unused-vars */\n\n ...restProps\n } = props;\n\n const onClick = useEvent((event) => {\n // ignores the navigation when clicked using right mouse button or\n // by holding a special modifier key: ctrl, command, win, alt, shift\n if (\n event.ctrlKey ||\n event.metaKey ||\n event.altKey ||\n event.shiftKey ||\n event.button !== 0\n )\n return;\n\n _onClick?.(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n navigate(targetPath, props);\n }\n });\n\n // handle nested routers and absolute paths\n const href = router.hrefs(\n targetPath[0] === \"~\" ? targetPath.slice(1) : router.base + targetPath,\n router // pass router as a second argument for convinience\n );\n\n return asChild && isValidElement(children)\n ? cloneElement(children, { onClick, href })\n : createElement(\"a\", {\n ...restProps,\n onClick,\n href,\n // `className` can be a function to apply the class if this link is active\n className: cls?.call ? cls(currentPath === targetPath) : cls,\n children,\n ref,\n });\n});\n\nconst flattenChildren = (children) =>\n Array.isArray(children)\n ? children.flatMap((c) =>\n flattenChildren(c && c.type === Fragment ? c.props.children : c)\n )\n : [children];\n\nconst Switch = ({ children, location }) => {\n const router = useRouter();\n const [originalLocation] = useLocationFromRouter(router);\n\n for (const element of flattenChildren(children)) {\n let match = 0;\n\n if (\n isValidElement(element) &&\n // we don't require an element to be of type Route,\n // but we do require it to contain a truthy `path` prop.\n // this allows to use different components that wrap Route\n // inside of a switch, for example <AnimatedRoute />.\n (match = matchRoute(\n router.parser,\n element.props.path,\n location || originalLocation,\n element.props.nest\n ))[0]\n )\n return cloneElement(element, { match });\n }\n\n return null;\n};\n\nconst Redirect = (props) => {\n const { to, href = to } = props;\n const [, navigate] = useLocation();\n const redirect = useEvent(() => navigate(to || href, props));\n\n // redirect is guaranteed to be stable since it is returned from useEvent\n useLayoutEffect(() => {\n redirect();\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return null;\n};\n\nexport { Link, Redirect, Route, Router, Switch, matchRoute, useLocation, useParams, useRoute, useRouter, useSearch };\n","/**\n * @param {string|RegExp} input The route pattern\n * @param {boolean} [loose] Allow open-ended matching. Ignored with `RegExp` input.\n */\nexport function parse(input, loose) {\n\tif (input instanceof RegExp) return { keys:false, pattern:input };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = input.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push(c);\n\t\t\tpattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n\nvar RGX = /(\\/|^)([:*][^/]*?)(\\?)?(?=[/.]|$)/g;\n\n// error if key missing?\nexport function inject(route, values) {\n\treturn route.replace(RGX, (x, lead, key, optional) => {\n\t\tx = values[key=='*' ? key : key.substring(1)];\n\t\treturn x ? '/'+x : (optional || key=='*') ? '' : '/' + key;\n\t});\n}\n","import { _ as _object_without_properties_loose } from \"./_object_without_properties_loose.js\";\n\nfunction _object_without_properties(source, excluded) {\n if (source == null) return {};\n\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\nexport { _object_without_properties as _ };\n","function _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\nexport { _object_without_properties_loose as _ };\n","import { useCallback } from \"preact/hooks\"\n\nexport const Screen = ({ children, wrap = true, ...props }) => {\n props.class = props.class || \"screen\"\n return (\n <div {...props}>\n {wrap ? <div class=\"flow prose\">{children}</div> : children}\n </div>\n )\n}\n\nexport const Sheet = ({ children, wrap = true, ...props }) => {\n props.class = props.class || \"sheet\"\n\n const handleNode = useCallback((node) => {\n if (node) {\n node.scrollIntoView({ behavior: \"smooth\" })\n }\n }, [])\n\n return (\n <div {...props} ref={handleNode}>\n {wrap ? <div class=\"flow prose\">{children}</div> : children}\n </div>\n )\n}\n","import { endpoint } from \"./data.js\"\nimport { fetchAPI } from \"./utils.js\"\n\nexport const trackStep = (step, params = {}) => {\n fetchAPI(endpoint(\"trackingStep\"), {\n method: \"POST\",\n body: new URLSearchParams({ step, ...params }),\n })\n}\n","import { useState } from \"preact/hooks\"\nimport { useLocation } from \"wouter-preact\"\n\nimport { endpoint, usePortfolio } from \"../data.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { fetchJSON, gettext } from \"../utils.js\"\n\nexport function Intro() {\n const [, setLocation] = useLocation()\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1 class=\"title-serif-xl\">{gettext(\"Welfare and coercition\")}</h1>\n <p class=\"lead\">{gettext(\"Educational medium on Swiss history\")}</p>\n <p class=\"body-text-serif\">{gettext(\"Instructions\")}</p>\n <button\n class=\"button\"\n type=\"button\"\n onClick={() => {\n trackStep(\"050:intro\", { start: true })\n setLocation(\"/people\")\n }}\n >\n {gettext(\"Start\")}\n </button>\n\n <Restore />\n </Sheet>\n </Screen>\n )\n}\n\nconst Restore = () => {\n const [code, setCode] = useState(\"\")\n const [error, setError] = useState(\"\")\n const [, setPortfolio] = usePortfolio()\n const [, setLocation] = useLocation()\n\n const loadPortfolio = (code) => {\n const body = new FormData()\n body.append(\"code\", code)\n fetchJSON(endpoint(\"loadSavepoint\"), { method: \"POST\", body })\n .then((data) => {\n setPortfolio(() => data)\n setLocation(data.lastPath)\n })\n .catch(() => {\n setError(gettext(\"This code is invalid. Try again?\"))\n })\n }\n\n return (\n <div class=\"restore\">\n <form class=\"form flow\">\n <h2>{gettext(\"I have been here before:\")}</h2>\n <label htmlFor=\"code\">{gettext(\"Enter the code\")}</label>\n <input\n type=\"text\"\n id=\"code\"\n value={code}\n onInput={(e) => {\n setCode(e.target.value)\n setError(\"\")\n }}\n maxlength=\"8\"\n />\n {error ? (\n <p class=\"message error\">\n {error}\n <svg\n class=\"icon icon--error\"\n aria-label={gettext(\"error\")}\n role=\"img\"\n >\n <use href=\"#icon-error\" />\n </svg>\n </p>\n ) : null}\n <button\n type=\"button\"\n class=\"button\"\n onClick={!(code.length < 8) ? () => loadPortfolio(code) : undefined}\n disabled={code.length < 8}\n >\n {gettext(\"Continue\")}\n </button>\n </form>\n </div>\n )\n}\n","import Player from \"@vimeo/player\"\n\nexport const initializePlayer = (\n person,\n videoRef,\n options,\n subtitle = true,\n) => {\n const videoUrl = new URL(subtitle ? person.vimeoURL : person.vimeoURLNoSub)\n const videoId = subtitle ? person.vimeoID : person.vimeoIDNoSub\n const hasHParam = videoUrl.searchParams.has(\"h\")\n\n if (!videoRef.current) {\n videoRef.current = new Player(`video-${person.id}`, {\n ...(hasHParam ? { url: videoUrl } : { id: videoId }),\n ...options,\n })\n } else {\n // Überprüfung, ob das Video bereits geladen ist\n videoRef.current.getVideoId().then((currentVideoId) => {\n if (currentVideoId !== videoId) {\n videoRef.current.loadVideo(hasHParam ? videoUrl : videoId)\n }\n })\n }\n\n return videoRef.current\n}\n","import { useEffect, useRef, useState } from \"preact/hooks\"\nimport { LONGTOUCHDURATION, VIMEOOPTIONS } from \"../config\"\nimport { useSubtitle } from \"../data.js\"\nimport { initializePlayer } from \"../player/player.js\"\nimport { calculateTransformOrigin, gettext } from \"../utils\"\n\nconst options = {\n ...VIMEOOPTIONS,\n loop: false, // Looping wird manuell gesteuert\n controls: false,\n keyboard: false,\n playsinline: true,\n muted: true,\n fullscreen: false,\n}\n\nexport const PersonButton = ({ person, onClick }) => {\n const videoRef = useRef(null)\n const timerStart = useRef(null)\n const buttonRef = useRef(null)\n const [playing, setPlaying] = useState(false)\n const [transformOrigin, setTransformOrigin] = useState(null)\n const [maxPlayTime, setMaxPlaytime] = useState(null)\n const [subtitle] = useSubtitle()\n\n const videoIsPlayable =\n maxPlayTime !== null &&\n maxPlayTime > person.previewStartsAtSecond &&\n maxPlayTime >= person.previewEndsAtSecond &&\n person.previewStartsAtSecond < person.previewEndsAtSecond\n\n useEffect(() => {\n const videoRefCurrent = videoRef.current\n if (person.vimeoURL && person.vimeoURLNoSub) {\n const player = initializePlayer(person, videoRef, options, subtitle)\n\n player.on(\"loaded\", async () => {\n setMaxPlaytime(await player.getDuration())\n if (person.previewStartsAtSecond > 0) {\n player.setCurrentTime(person.previewStartsAtSecond)\n }\n })\n\n // Event-Listener für das Looping des Videoausschnitts\n player.on(\"timeupdate\", ({ seconds }) => {\n if (seconds < person.previewStartsAtSecond) {\n player.setCurrentTime(person.previewStartsAtSecond).then(() => {\n player.play()\n })\n }\n if (seconds >= person.previewEndsAtSecond) {\n player.setCurrentTime(person.previewStartsAtSecond).then(() => {\n player.play()\n })\n }\n })\n }\n\n return () => {\n if (videoRefCurrent) {\n videoRefCurrent.off(\"loaded\")\n videoRefCurrent.off(\"timeupdate\")\n videoRefCurrent.destroy()\n videoRef.current = null\n }\n }\n }, [person, subtitle])\n\n useEffect(() => {\n if (buttonRef.current && videoRef.current) {\n setTransformOrigin(calculateTransformOrigin(buttonRef.current))\n }\n }, [])\n\n const playVideo = () => {\n if (videoRef.current && videoIsPlayable) {\n videoRef.current.play()\n videoRef.current.setMuted(false)\n setPlaying(true)\n }\n }\n\n const stopVideo = () => {\n if (videoRef.current && videoIsPlayable) {\n videoRef.current.pause()\n videoRef.current.setMuted(true)\n setPlaying(false)\n }\n }\n\n const onMouseEnter = () => {\n playVideo()\n }\n\n const onMouseLeave = () => {\n stopVideo()\n }\n\n const onTouchStart = (e) => {\n e.stopPropagation()\n if (!timerStart.current) {\n timerStart.current = setTimeout(onlongtouch, LONGTOUCHDURATION)\n }\n }\n\n const onTouchEnd = (e) => {\n e.stopPropagation()\n stopVideo()\n if (timerStart.current) {\n clearTimeout(timerStart.current)\n timerStart.current = null\n }\n }\n\n const onlongtouch = () => {\n playVideo()\n if (timerStart.current) {\n clearTimeout(timerStart.current)\n timerStart.current = null\n }\n }\n\n return (\n <button\n type=\"button\"\n ref={buttonRef}\n class=\"people__person\"\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onTouchStart={onTouchStart}\n onTouchCancel={onTouchEnd}\n onTouchEnd={onTouchEnd}\n >\n {person.vimeoID ? (\n <div\n id={`video-${person.id}`}\n class={`people__person-video ${\n playing ? \"people__person-video--playing\" : \"\"\n }`}\n style={transformOrigin ? { transformOrigin: transformOrigin } : null}\n />\n ) : person.photo ? (\n <img\n class=\"people__person-image\"\n src={person.photo}\n alt={person.name}\n />\n ) : null}\n <p class=\"people__person-name\">{person.name}</p>\n {person.vimeoID && videoIsPlayable ? (\n <svg class=\"icon icon--play\" aria-label={gettext(\"play\")} role=\"img\">\n <use href=\"#icon-play\" />\n </svg>\n ) : null}\n </button>\n )\n}\n","import { useEffect, useRef, useState } from \"preact/hooks\"\nimport { Link, useLocation } from \"wouter-preact\"\nimport { VIMEOOPTIONS } from \"../config.js\"\nimport { usePortfolio, useSubtitle } from \"../data.js\"\nimport { initializePlayer } from \"../player/player.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { changeListPresence, gettext, pointInclusifFix } from \"../utils.js\"\nimport \"./style.css\"\n\nconst options = {\n ...VIMEOOPTIONS,\n loop: false,\n}\n\nconst getCurrentAspect = (person, currentTime) => {\n let currentAspect = person.aspects[0]\n for (const aspect of person.aspects) {\n if (aspect.startsAtSecond > currentTime) break\n currentAspect = aspect\n }\n return currentAspect\n}\n\nexport const Person = ({ person }) => {\n const videoRef = useRef(null)\n const [portfolio, setPortfolio] = usePortfolio()\n const currentLanguage = document.documentElement.lang\n const [subtitle, setSubtitle] = useSubtitle()\n const [, setLocation] = useLocation()\n const [currentTime, setCurrentTime] = useState(0)\n const currentAspect = getCurrentAspect(person, currentTime)\n const currentAspectSelected = portfolio.selectedAspects.includes(\n currentAspect.id,\n )\n const [showTriggerWarning, setShowTriggerWarning] = useState(\n !!person.triggerWarning,\n )\n\n useEffect(() => {\n if (!showTriggerWarning) {\n document.body.classList.add(\"body--person\")\n }\n\n return () => {\n if (!showTriggerWarning) {\n document.body.classList.remove(\"body--person\")\n }\n }\n }, [showTriggerWarning])\n\n useEffect(() => {\n const videoRefCurrent = videoRef.current\n if (!showTriggerWarning && person.vimeoURL && person.vimeoURLNoSub) {\n const player = initializePlayer(person, videoRef, options, subtitle)\n\n player.ready().then(() => {\n player.on(\"timeupdate\", (data) => {\n setCurrentTime(data.seconds)\n })\n })\n }\n\n return () => {\n if (videoRefCurrent) {\n videoRefCurrent.off(\"timeupdate\")\n videoRefCurrent.unload()\n // videoRefCurrent.destroy()\n // videoRef.current = null\n }\n }\n }, [showTriggerWarning, person, subtitle])\n\n const handleRemember = () => {\n if (currentAspect) {\n setPortfolio((portfolio) => ({\n ...portfolio,\n selectedAspects: changeListPresence(\n portfolio.selectedAspects,\n currentAspect.id,\n true,\n ).slice(-2),\n }))\n }\n }\n\n const removeSelectedAspect = (id) => {\n setPortfolio((portfolio) => ({\n ...portfolio,\n selectedAspects: changeListPresence(\n portfolio.selectedAspects,\n id,\n false,\n ).slice(-2),\n }))\n }\n\n if (showTriggerWarning) {\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1>{person.name}</h1>\n <div class=\"triggerwarning flow\">\n <h3>{gettext(\"Trigger warning\")}</h3>\n <div\n dangerouslySetInnerHTML={{\n __html: pointInclusifFix(person.triggerWarning),\n }}\n />\n </div>\n <div class=\"buttons\">\n <Link class=\"button\" to={reverse(\"people\")}>\n {gettext(\"Back\")}\n </Link>\n <button\n type=\"button\"\n class=\"button\"\n onClick={() => setShowTriggerWarning(false)}\n >\n {gettext(\"Continue\")}\n </button>\n </div>\n </Sheet>\n </Screen>\n )\n }\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1>{person.name}</h1>\n\n <div className=\"video-wrapper flow\">\n {person.vimeoID ? (\n <div id={`video-${person.id}`} class=\"video\" />\n ) : (\n <div\n class=\"responsive-embed\"\n style=\"aspect-ratio:16/9;border:1px solid;display:grid;place-items:center\"\n >\n Person video not available yet ⛵\n </div>\n )}\n <div class=\"remember\">\n <AspectButton\n aspect={currentAspect}\n hasDeleteButton={currentAspectSelected}\n onDelete={() => removeSelectedAspect(currentAspect.id)}\n />\n\n <button\n type=\"button\"\n class=\"button button--icon button--minwidth button--right\"\n onClick={!currentAspectSelected ? handleRemember : undefined}\n disabled={currentAspectSelected}\n >\n {gettext(\"Remember\")}\n <svg\n class=\"icon icon--button \"\n aria-label={gettext(\"Remember\")}\n role=\"img\"\n >\n <use href=\"#icon-bookmark\" />\n </svg>\n </button>\n </div>\n </div>\n {portfolio.selectedAspects.map((id) => {\n const aspect = person.aspects.find(\n (aspect) => aspect.id === id && aspect.id !== currentAspect.id,\n )\n if (!aspect) return null\n return (\n <AspectButton\n key={aspect.id}\n aspect={aspect}\n onDelete={() => removeSelectedAspect(aspect.id)}\n />\n )\n })}\n <p>\n {gettext(\n \"Watch the video and mark the parts that particularly concern you. are of particular interest to you.\",\n )}\n </p>\n {currentLanguage !== \"it\" ? (\n <div class=\"toggle\">\n <p class=\"small-text-sans\">{gettext(\"subtitle\")}</p>\n <input\n type=\"checkbox\"\n name=\"toggle-subtitle-person\"\n class=\"toggle__input\"\n id=\"toggle-subtitle-person\"\n checked={subtitle}\n onChange={(e) => {\n setSubtitle(e.target.checked)\n }}\n />\n <label class=\"toggle__label\" for=\"toggle-subtitle-person\">\n {gettext(\"toggle video subtitles\")}\n </label>\n </div>\n ) : null}\n <div class=\"buttons\">\n <Link class=\"button\" to={reverse(\"people\")}>\n {gettext(\"Back\")}\n </Link>\n <button\n type=\"button\"\n class=\"button\"\n onClick={() => {\n trackStep(\"200:person\")\n setLocation(reverse(\"aspects\"))\n }}\n >\n {gettext(\"Continue\")}\n </button>\n </div>\n </Sheet>\n </Screen>\n )\n}\n\nconst AspectButton = ({ aspect, hasDeleteButton = true, onDelete }) => {\n return (\n <div class={`remember__aspect aspect aspect--${aspect.number}`}>\n {aspect.title}\n {hasDeleteButton ? (\n <button class=\"button-icon\" type=\"button\" onClick={onDelete}>\n <svg\n class=\"icon icon--button\"\n aria-label={gettext(\"remove selected\")}\n role=\"img\"\n >\n <use href=\"#icon-close\" />\n </svg>\n </button>\n ) : null}\n </div>\n )\n}\n","import { render } from \"preact\"\n\nimport \"./style.css\"\n\nexport const showDialog = (\n Component,\n props = {},\n bodyClass = \"with-dialog\",\n) => {\n const el = document.createElement(\"div\")\n const body = document.body\n\n const escapeListener = (e) => {\n if (e.key === \"Escape\") {\n handleRemove()\n }\n }\n\n const handleRemove = (props.handleRemove = () => {\n el.remove()\n if (Array.isArray(bodyClass)) {\n body.classList.remove(...bodyClass)\n } else {\n body.classList.remove(bodyClass)\n }\n body.removeEventListener(\"keydown\", escapeListener)\n if (props.onCloseDialog) props.onCloseDialog()\n })\n\n body.append(el)\n if (Array.isArray(bodyClass)) {\n body.classList.add(...bodyClass)\n } else {\n body.classList.add(bodyClass)\n }\n\n body.addEventListener(\"keydown\", escapeListener)\n\n render(<Component {...props} />, el)\n}\n","import { usePortfolio } from \"./data.js\"\nimport { gettext } from \"./utils.js\"\n\nimport \"./styles/code.css\"\n\nexport const Code = () => {\n const [portfolio] = usePortfolio()\n\n const handleClick = (e) => {\n const target = e.currentTarget\n try {\n navigator.clipboard.writeText(portfolio.code).then(() => {\n target.classList.add(\"showtooltip\")\n setTimeout(() => {\n target.classList.remove(\"showtooltip\")\n }, 1500)\n })\n } catch (err) {\n console.error(\"Failed to copy: \", err)\n }\n }\n\n return portfolio?.code ? (\n <div class=\"code\">\n <button\n type=\"button\"\n onClick={handleClick}\n class=\"code__button\"\n popovertarget=\"poppinoff\"\n >\n <div className=\"code__letters\">\n {portfolio.code.split(\"\").map((letter, index) => (\n <div\n key={index + letter}\n class={`code__letter ${\n !Number.isNaN(Number(letter)) ? \"code__letter--number\" : \"\"\n }`}\n >\n {letter}\n </div>\n ))}\n </div>\n <svg\n class=\"icon icon--copy\"\n aria-label={gettext(\"copy code\")}\n role=\"img\"\n >\n <use href=\"#icon-copy\" />\n </svg>\n <span class=\"tooltip\">{gettext(\"Copied code!\")}</span>\n </button>\n </div>\n ) : (\n <>\n <div class=\"code__letter\">X</div>\n <div class=\"code__letter code__letter--number\">X</div>\n <div class=\"code__letter\">X</div>\n <div class=\"code__letter code__letter--number\">X</div>\n <div class=\"code__letter\">X</div>\n <div class=\"code__letter code__letter--number\">X</div>\n <div class=\"code__letter\">X</div>\n <div class=\"code__letter code__letter--number\">X</div>\n </>\n )\n}\n","export const Textarea = ({ id, value, setValue, ...props }) => (\n <div class=\"grow-wrap\" data-replicated-value={value}>\n <textarea\n id={id}\n maxlength=\"5000\"\n value={value}\n onInput={(e) => {\n setValue(e.target.value)\n }}\n {...props}\n />\n </div>\n)\n","import { useState } from \"preact/hooks\"\n\nimport { MININPUTCHARACTERS } from \"../config.js\"\nimport { usePortfolio } from \"../data.js\"\nimport { Textarea } from \"../forms.js\"\nimport {\n changeListPresence,\n gettext,\n interpolate,\n pointInclusifFix,\n} from \"../utils.js\"\n\nexport const Content = ({ plugins, handleExerciseAnswer }) =>\n plugins.map((plugin) => {\n switch (plugin.type) {\n case \"image\":\n return (\n <figure class=\"figure flow\">\n <picture>\n <source srcSet={plugin.urlMobile} media=\"(max-width: 500px)\" />\n <img\n className=\"content content--image\"\n alt={plugin.alternativeText}\n src={plugin.url}\n />\n </picture>\n {plugin.caption ? <figcaption>{plugin.caption}</figcaption> : null}\n </figure>\n )\n case \"text\":\n return (\n <div\n class=\"text flow\"\n dangerouslySetInnerHTML={{ __html: pointInclusifFix(plugin.text) }}\n />\n )\n case \"textExercise\":\n return (\n <TextExercise\n plugin={plugin}\n handleExerciseAnswer={handleExerciseAnswer}\n />\n )\n case \"multipleChoiceExercise\":\n return (\n <MultipleChoiceExercise\n plugin={plugin}\n handleExerciseAnswer={handleExerciseAnswer}\n />\n )\n case \"singleChoiceExercise\":\n return (\n <SingleChoiceExercise\n plugin={plugin}\n handleExerciseAnswer={handleExerciseAnswer}\n />\n )\n default:\n return (\n <div>\n Unknown plugin type <em>{plugin.type}</em>\n </div>\n )\n }\n })\n\nconst TextExercise = ({ plugin, handleExerciseAnswer }) => {\n const [portfolio] = usePortfolio()\n const [answer, setAnswer] = useState(portfolio[plugin.identifier] || \"\")\n\n return (\n <form class=\"form flow\">\n {/* biome-ignore lint/a11y/noLabelWithoutControl: biome doesn't recognize the control */}\n <label\n for={plugin.identifier}\n class=\"flow\"\n dangerouslySetInnerHTML={{ __html: pointInclusifFix(plugin.task) }}\n />\n <Textarea id={plugin.identifier} value={answer} setValue={setAnswer} />\n <p class=\"field__help\">\n {interpolate(gettext(\"At least %(chars)s characters.\"), {\n chars: MININPUTCHARACTERS,\n })}\n </p>\n <div class=\"buttons\">\n <button\n class=\"button\"\n type=\"button\"\n disabled={answer.length < MININPUTCHARACTERS}\n onClick={\n !(answer.length < MININPUTCHARACTERS)\n ? () => handleExerciseAnswer(plugin.identifier, answer)\n : undefined\n }\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </form>\n )\n}\n\nconst MultipleChoiceExercise = ({ plugin, handleExerciseAnswer }) => {\n const [portfolio] = usePortfolio()\n const [selected, setSelected] = useState(portfolio[plugin.identifier] || [])\n\n return (\n <form class=\"form flow\">\n <div\n class=\"text flow\"\n dangerouslySetInnerHTML={{ __html: pointInclusifFix(plugin.task) }}\n />\n <div class=\"form__list\">\n {plugin.choices.map((choice, idx) => (\n <label class=\"form__check\" key={idx}>\n <input\n type=\"checkbox\"\n checked={selected.includes(idx)}\n onClick={(e) => {\n setSelected(changeListPresence(selected, idx, e.target.checked))\n }}\n />\n {selected.includes(idx) ? (\n <svg\n class=\"icon icon--checkbox icon--checked\"\n aria-label={gettext(\"checked\")}\n role=\"img\"\n >\n <use href=\"#icon-checked\" />\n </svg>\n ) : (\n <svg\n class=\"icon icon--checkbox icon--unchecked\"\n aria-label={gettext(\"unchecked\")}\n role=\"img\"\n >\n <use href=\"#icon-unchecked\" />\n </svg>\n )}\n {choice.choice}\n </label>\n ))}\n </div>\n <div class=\"buttons\">\n <button\n class=\"button\"\n type=\"button\"\n disabled={!selected.length}\n onClick={\n selected.length\n ? () => handleExerciseAnswer(plugin.identifier, selected)\n : undefined\n }\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </form>\n )\n}\n\nconst SingleChoiceExercise = ({ plugin, handleExerciseAnswer }) => {\n const [portfolio] = usePortfolio()\n const [selected, setSelected] = useState(() => {\n try {\n return portfolio[plugin.identifier][0]\n } catch (_e) {\n return -1\n }\n })\n\n return (\n <form class=\"form flow\">\n <div\n class=\"text flow\"\n dangerouslySetInnerHTML={{ __html: pointInclusifFix(plugin.task) }}\n />\n <div class=\"form__list\">\n {plugin.choices.map((choice, idx) => (\n <label class=\"form__check\" key={idx}>\n <input\n name={plugin.identifier}\n type=\"radio\"\n checked={selected === idx}\n onClick={() => {\n setSelected(idx)\n }}\n />\n {selected === idx ? (\n <svg\n class=\"icon icon--checkbox icon--checked\"\n aria-label={gettext(\"checked\")}\n role=\"img\"\n >\n <use href=\"#icon-checked\" />\n </svg>\n ) : (\n <svg\n class=\"icon icon--checkbox icon--unchecked\"\n aria-label={gettext(\"unchecked\")}\n role=\"img\"\n >\n <use href=\"#icon-unchecked\" />\n </svg>\n )}\n {choice.choice}\n </label>\n ))}\n </div>\n <div class=\"buttons\">\n <button\n class=\"button\"\n type=\"button\"\n disabled={selected < 0}\n onClick={\n !(selected < 0)\n ? () => handleExerciseAnswer(plugin.identifier, [selected])\n : undefined\n }\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </form>\n )\n}\n","import { useEffect, useRef } from \"preact/hooks\"\nimport { Code } from \"../code.js\"\nimport { VIMEOOPTIONS } from \"../config\"\nimport { resetPortfolio, useSubtitle } from \"../data.js\"\nimport { initializePlayer } from \"../player/player.js\"\nimport { Content } from \"../resources/content.js\"\nimport { gettext } from \"../utils.js\"\nimport { showDialog } from \"./dialog.js\"\n\nconst SaveDialog = ({ handleRemove }) => {\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog flow\">\n <h3>{gettext(\"pause\")}</h3>\n <p>{gettext(\"Do you want to interrupt the task?\")}</p>\n <p>{gettext(\"You can continue later with this code.\")}</p>\n <Code />\n <br />\n <button\n type=\"button\"\n class=\"button button--danger\"\n onClick={() => {\n resetPortfolio()\n handleRemove()\n }}\n >\n {gettext(\"I want to take a break and have written down the code.\")}\n </button>\n <button type=\"button\" class=\"button\" onClick={handleRemove}>\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n )\n}\n\nexport const DeleteDialog = ({ handleRemove }) => {\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog flow\">\n <h3>{gettext(\"delete\")}</h3>\n <p>{gettext(\"Would you like to delete your progress?\")}</p>\n <button\n type=\"button\"\n class=\"button button--danger button--icon\"\n onClick={() => {\n resetPortfolio()\n handleRemove()\n }}\n >\n {gettext(\n \"I am sure that I want to delete my progress and not continue later.\",\n )}\n <svg\n class=\"icon icon--delete\"\n aria-label={gettext(\"delete\")}\n role=\"img\"\n >\n <use href=\"#icon-delete\" />\n </svg>\n </button>\n <button type=\"button\" class=\"button\" onClick={handleRemove}>\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n )\n}\n\nexport const PauseDialog = ({ handleRemove, savePortfolio }) => {\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog flow\">\n <h3>{gettext(\"pause\")}</h3>\n <p>{gettext(\"Would you like to continue later?\")}</p>\n <p>{gettext(\"You will receive a code to continue at any time.\")}</p>\n\n <button\n type=\"button\"\n class=\"button\"\n onClick={async () => {\n await savePortfolio()\n handleRemove()\n showDialog(SaveDialog)\n }}\n >\n {gettext(\"Save current state\")}\n </button>\n <button type=\"button\" class=\"button\" onClick={handleRemove}>\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n )\n}\n\nexport const HomeDialog = ({ handleRemove, savePortfolio }) => {\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog flow\">\n <h3>{gettext(\"home\")}</h3>\n <p>{gettext(\"Would you like to continue later?\")}</p>\n <p>{gettext(\"You will receive a code to continue at any time.\")}</p>\n\n <button\n type=\"button\"\n class=\"button\"\n onClick={async () => {\n await savePortfolio()\n handleRemove()\n showDialog(SaveDialog)\n }}\n >\n {gettext(\"Save current state\")}\n </button>\n\n <button\n type=\"button\"\n class=\"button button--danger button--icon\"\n onClick={() => {\n handleRemove()\n showDialog(DeleteDialog)\n }}\n >\n {gettext(\"delete your progress\")}\n <svg\n class=\"icon icon--delete\"\n aria-label={gettext(\"delete\")}\n role=\"img\"\n >\n <use href=\"#icon-delete\" />\n </svg>\n </button>\n\n <button type=\"button\" class=\"button\" onClick={handleRemove}>\n {gettext(\"Cancel\")}\n </button>\n </div>\n </div>\n )\n}\n\nexport const PreviewDialog = ({ handleRemove, content, title }) => {\n const images = content.filter((item) => item.type === \"image\")\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog dialog--preview\">\n <button class=\"dialog__close\" type=\"button\" onClick={handleRemove}>\n <svg\n class=\"icon icon--close\"\n aria-label={gettext(\"close preview\")}\n role=\"img\"\n >\n <use href=\"#icon-close\" />\n </svg>\n </button>\n <div class=\"dialog__body flow\">\n <h2 class=\"dialog__title\">{title}</h2>\n <Content plugins={images} />\n </div>\n </div>\n </div>\n )\n}\n\nexport const VideoDialog = ({ handleRemove, person, resource }) => {\n const videoRef = useRef(null)\n const noVideoError = resource.startsAtSecond < resource.endsAtSecond\n const [subtitle] = useSubtitle()\n\n useEffect(() => {\n const videoRefCurrent = videoRef.current\n if (person.vimeoURL && person.vimeoURLNoSub && noVideoError) {\n initializePlayer(\n person,\n videoRef,\n {\n ...VIMEOOPTIONS,\n loop: false,\n controls: true,\n keyboard: true,\n playsinline: false,\n start_time: resource.startsAtSecond,\n end_time: resource.endsAtSecond,\n },\n subtitle,\n )\n }\n\n return () => {\n if (videoRefCurrent) {\n videoRefCurrent.unload()\n // videoRefCurrent.destroy()\n // videoRef.current = null\n }\n }\n }, [\n noVideoError,\n person,\n resource.endsAtSecond,\n resource.startsAtSecond,\n subtitle,\n ])\n\n return (\n <div class=\"dialog-wrapper container\">\n <div class=\"dialog dialog--preview\">\n <button class=\"dialog__close\" type=\"button\" onClick={handleRemove}>\n <svg\n class=\"icon icon--close\"\n aria-label={gettext(\"close preview\")}\n role=\"img\"\n >\n <use href=\"#icon-close\" />\n </svg>\n </button>\n <div class=\"dialog__body flow\">\n <h2 class=\"dialog__title\">{person.name}</h2>\n {person.vimeoID && noVideoError ? (\n <div id={`video-${person.id}`} class=\"video\" />\n ) : null}\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useRef, useState } from \"preact/hooks\"\nimport { showDialog } from \"../dialog/dialog.js\"\nimport { PreviewDialog } from \"../dialog/dialogComponents.js\"\nimport { gettext, isTouch } from \"../utils.js\"\n\nimport { LONGTOUCHDURATION } from \"../config\"\n\nexport const ResourcePreview = ({\n portfolio,\n aspectNumber,\n resource,\n handleProceed,\n isActive,\n}) => {\n const isDone = portfolio.finishedResources.includes(resource.id)\n const [open, setOpen] = useState(false)\n const timerStart = useRef(null)\n\n useEffect(() => {\n if (open) {\n showDialog(\n PreviewDialog,\n {\n onCloseDialog: () => setOpen(false),\n content: resource.content,\n title: resource.title,\n },\n [\n \"with-dialog\",\n \"with-dialog--preview\",\n \"aspect\",\n `aspect--${aspectNumber}`,\n ],\n )\n }\n }, [open, resource, aspectNumber])\n\n const onClick = (e) => {\n e.preventDefault()\n e.stopPropagation()\n handleProceed()\n }\n\n const onPreview = (e) => {\n e.preventDefault()\n e.stopPropagation()\n setOpen(true)\n }\n\n const onTouchStart = (e) => {\n e.stopPropagation()\n if (!timerStart.current) {\n timerStart.current = setTimeout(onlongtouch, LONGTOUCHDURATION)\n }\n }\n\n const onTouchEnd = (e) => {\n e.stopPropagation()\n\n if (timerStart.current) {\n clearTimeout(timerStart.current)\n timerStart.current = null\n }\n }\n\n const onlongtouch = () => {\n setOpen(true)\n\n if (timerStart.current) {\n clearTimeout(timerStart.current)\n timerStart.current = null\n }\n }\n\n return (\n <button\n class={`resources__resource ${\n isDone ? \"resources__resource--done\" : \"\"\n } aspect aspect--${aspectNumber}`}\n type=\"button\"\n disabled={isDone || !isActive}\n onClick={!isDone && isActive ? onClick : undefined}\n onTouchStart={!isDone && isActive ? onTouchStart : undefined}\n onTouchCancel={!isDone && isActive ? onTouchEnd : undefined}\n onTouchEnd={!isDone && isActive ? onTouchEnd : undefined}\n >\n {resource.title}\n {isDone ? (\n <svg class=\"icon icon--done\" aria-label={gettext(\"done\")} role=\"img\">\n <use href=\"#icon-checked\" />\n </svg>\n ) : !isTouch && !isDone && isActive ? (\n <button\n class=\"resources__resource-preview\"\n type=\"button\"\n onClick={!isDone && isActive ? onPreview : undefined}\n >\n <svg\n class=\"icon icon--preview\"\n aria-label={gettext(\"preview\")}\n role=\"img\"\n >\n <use href=\"#icon-preview\" />\n </svg>\n </button>\n ) : null}\n </button>\n )\n}\n","import shuffle from \"@anttikissa/fisher-yates-shuffle\"\nimport { useEffect, useRef, useState } from \"preact/hooks\"\nimport { ReactSortable } from \"react-sortablejs\"\nimport Sortable, { Swap } from \"sortablejs\"\nimport { Link } from \"wouter-preact\"\nimport { usePortfolio } from \"../data.js\"\nimport { Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { gettext, pointInclusifFix } from \"../utils.js\"\n\nSortable.mount(new Swap())\n\nimport \"./style.css\"\n\nconst areEventsOrdered = (events) => {\n for (let i = 0; i < events.length - 1; ++i) {\n if (events[i].year > events[i + 1].year) return false\n }\n return true\n}\n\nexport const Timeline = ({ person, handleProceed }) => {\n const [portfolio, setPortfolio] = usePortfolio()\n const timelineOrdered = !!portfolio.timelineOrdered\n const [readOnly, setreadOnly] = useState(!!portfolio.timelineOrdered)\n const eventsRef = useRef([])\n const [heights, setHeights] = useState([])\n const [events, setEvents] = useState(() => {\n if (person) {\n let newEvents = [...person.events]\n if (newEvents.length > 1 && !readOnly) {\n while (areEventsOrdered(newEvents)) {\n newEvents = shuffle(newEvents)\n }\n }\n for (const worldEvent of person.worldEvents) {\n newEvents.splice(worldEvent.position, 0, worldEvent)\n }\n\n return newEvents\n }\n return []\n })\n\n const [isOrderedCorrectly, setIsOrderedCorrectly] = useState(\n areEventsOrdered(events),\n )\n const [overlayCanOpen, setOverlayCanOpen] = useState(!readOnly)\n\n const swapElements = (array, index1, index2) => {\n const newArray = [...array]\n // Speichert den Wert des ersten Elements in einer temporären Variablen\n const temp = newArray[index1]\n // Weist den Wert des zweiten Elements dem ersten Element zu\n newArray[index1] = newArray[index2]\n // Weist den Wert der temporären Variablen (ursprüngliches erstes Element) dem zweiten Element zu\n newArray[index2] = temp\n\n return newArray\n }\n\n useEffect(() => {\n // Funktion, um die Höhe der Events zu bestimmen\n const updateMaxHeights = () => {\n const newHeights = []\n\n events.forEach((_event, index) => {\n const eventHeight = eventsRef.current[index]?.offsetHeight || 0\n newHeights[index] = eventHeight\n })\n\n setHeights(newHeights)\n }\n\n updateMaxHeights()\n\n // Event-Listener für Fenstergrößenänderungen\n addEventListener(\"resize\", updateMaxHeights)\n return () => removeEventListener(\"resize\", updateMaxHeights)\n }, [events])\n\n useEffect(() => {\n const eventsOrdered = areEventsOrdered(events)\n setIsOrderedCorrectly(eventsOrdered)\n if (eventsOrdered) {\n setreadOnly(eventsOrdered)\n }\n }, [events])\n\n const submit = (e) => {\n e.preventDefault()\n if (isOrderedCorrectly && !timelineOrdered) {\n handleProceed(\"selection\", {\n aspectIndex: 0,\n exerciseIndex: 0,\n })\n setPortfolio((portfolio) => ({\n ...portfolio,\n timelineOrdered: true,\n }))\n trackStep(\"600:timeline\")\n setOverlayCanOpen(false)\n }\n }\n\n return (\n <Sheet>\n <div class=\"timeline-person flow\">\n <img\n class=\"timeline-person__photo\"\n src={person.photoPortfolio}\n alt={person.name}\n />\n <h1 class=\"timeline-person__title\">{person.name}</h1>\n\n {person.biographyChapters.map((chapter, index) => (\n <details class=\"timeline-person__details\" open key={index}>\n <summary\n class={`timeline-person__summary aspect aspect--${index + 1}`}\n >\n {index + 1}\n </summary>\n <div\n class=\"timeline-person__details-body\"\n dangerouslySetInnerHTML={{\n __html: pointInclusifFix(chapter.chapter),\n }}\n />\n </details>\n ))}\n </div>\n\n <p>\n {isOrderedCorrectly\n ? gettext(\"The events are ordered correctly.\")\n : gettext(\"Please order the following events.\")}\n </p>\n\n <div className=\"timeline\">\n <div class=\"timeline__years\">\n {person.eventsYears.map((event, index) => (\n <div\n class={`timeline__year ${\n event.type !== \"person\" ? \"timeline__year--world\" : \"\"\n }`}\n key={event.year}\n style={{\n height: heights[index] ? `${heights[index]}px` : \"auto\",\n }}\n >\n <div\n class={`timeline__year-pill ${\n event.type !== \"person\" ? \"timeline__year-pill--world\" : \"\"\n }`}\n >\n {event.year}\n </div>\n </div>\n ))}\n </div>\n <ReactSortable\n list={events}\n setList={() => {}}\n scrollSensitivity={50}\n scrollSpeed={30}\n className={`timeline__events ${\n readOnly ? \"timeline__events--disabled\" : \"\"\n }`}\n animation={150}\n filter=\".timeline__event--world\"\n preventOnFilter={true}\n swap={true}\n onMove={(evt) => {\n return (\n evt.related.className.indexOf(\n \"timeline__event timeline__event--world\",\n ) === -1\n )\n }}\n onUpdate={(e) => {\n setEvents((array) => swapElements(array, e.oldIndex, e.newIndex))\n }}\n disabled={readOnly}\n >\n {events.map((event, index) => (\n <div\n class={\n event.type === \"person\"\n ? \"timeline__event timeline__event--person\"\n : \"timeline__event timeline__event--world\"\n }\n key={event.id}\n ref={(el) => (eventsRef.current[index] = el)}\n >\n {event.title}\n {event.type === \"person\" && !readOnly ? (\n <svg\n class=\"icon icon--grab\"\n aria-label={gettext(\"grab\")}\n role=\"img\"\n >\n <use href=\"#icon-grab\" />\n </svg>\n ) : null}\n </div>\n ))}\n </ReactSortable>\n {isOrderedCorrectly && overlayCanOpen ? (\n <div className=\"timeline__ordered-overlay\">\n <div className=\"timeline__ordered-overlay-content flow\">\n <h3>{gettext(\"Congratulations done!\")}</h3>\n <br />\n <button\n class=\"button\"\n type=\"button\"\n onClick={submit}\n disabled={!isOrderedCorrectly || timelineOrdered}\n >\n {gettext(\"Submit\")}\n </button>\n <button\n onClick={() => setOverlayCanOpen(false)}\n class=\"button\"\n type=\"button\"\n >\n {gettext(\"View timeline again\")}\n </button>\n </div>\n </div>\n ) : null}\n </div>\n {person.timelineCaption ? (\n <div\n class=\"text flow timeline__caption\"\n dangerouslySetInnerHTML={{\n __html: pointInclusifFix(person.timelineCaption),\n }}\n />\n ) : null}\n <div className=\"buttons\">\n <Link class=\"button\" to={reverse(\"reflexion\")}>\n {gettext(\"Back\")}\n </Link>\n <button\n class=\"button\"\n type=\"button\"\n onClick={submit}\n disabled={!isOrderedCorrectly || timelineOrdered}\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </Sheet>\n )\n}\n","import { usePortfolio } from \"../data.js\"\nimport { Screen } from \"../screen.js\"\n\nimport { Judgement } from \"./judgement.js\"\nimport { Resource } from \"./resource.js\"\nimport { Selection } from \"./selection.js\"\nimport { Timeline } from \"./timeline.js\"\n\nconst PARTS = {\n resource: Resource,\n selection: Selection,\n timeline: Timeline,\n judgement: Judgement,\n}\n\nconst appendComponent = (parts, index, type, props) => [\n ...parts.slice(0, index),\n [type, { ...props, index }],\n]\n\nexport const Resources = ({ person }) => {\n const [portfolio, setPortfolio] = usePortfolio()\n const lastResourceParts =\n portfolio.resourceParts[portfolio.resourceParts.length - 1][1]\n const currentExerciseIndex = lastResourceParts.exerciseIndex\n const currentAspectIndex = lastResourceParts.aspectIndex\n\n return (\n <Screen wrap={false}>\n {portfolio.resourceParts.map(([part, props], index) => {\n const isActive =\n currentAspectIndex === props.aspectIndex &&\n currentExerciseIndex === props.exerciseIndex\n\n const Component = PARTS[part]\n const handleProceed = (nextPart, nextProps) => {\n setPortfolio((portfolio) => ({\n ...portfolio,\n resourceParts: appendComponent(\n portfolio.resourceParts,\n index + 1,\n nextPart,\n nextProps,\n ),\n }))\n }\n\n return (\n <Component\n person={person}\n handleProceed={handleProceed}\n {...props}\n key={index}\n isActive={isActive}\n />\n )\n })}\n </Screen>\n )\n}\n","import { useEffect, useRef } from \"preact/hooks\"\nimport { resourceById, usePortfolio } from \"../data.js\"\nimport { showDialog } from \"../dialog/dialog.js\"\nimport { VideoDialog } from \"../dialog/dialogComponents.js\"\nimport { Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { changeListPresence, gettext } from \"../utils.js\"\n\nimport { Content } from \"./content.js\"\n\nexport const Resource = ({\n resourceId,\n aspectIndex,\n exerciseIndex,\n handleProceed,\n aspectNumber,\n isActive,\n person,\n}) => {\n const [portfolio, setPortfolio] = usePortfolio()\n const ref = useRef(null)\n const resource = resourceById(resourceId)\n const setComplexity = (selectedComplexity) =>\n setPortfolio((portfolio) => ({\n ...portfolio,\n selectedComplexity,\n }))\n\n const complexityKey = `complexity${portfolio.selectedComplexity}`\n const levels = [1, 2, 3]\n\n const handleExerciseAnswer = (identifier, answer) => {\n setPortfolio((portfolio) => {\n const finishedExercises = [...portfolio.finishedExercises]\n finishedExercises[exerciseIndex] = identifier\n const exerciseComplexities = [...portfolio.exerciseComplexities]\n exerciseComplexities[exerciseIndex] = portfolio.selectedComplexity\n return {\n ...portfolio,\n finishedResources: changeListPresence(\n portfolio.finishedResources,\n resource.id,\n true,\n ),\n finishedExercises,\n exerciseComplexities,\n [identifier]: answer,\n }\n })\n\n trackStep(`${700 + 50 * exerciseIndex}:resource`)\n\n if (exerciseIndex === 0 || exerciseIndex === 2) {\n handleProceed(\"selection\", {\n aspectIndex,\n exerciseIndex: exerciseIndex + 1,\n })\n } else if (exerciseIndex === 1) {\n handleProceed(\"selection\", {\n aspectIndex: aspectIndex + 1,\n exerciseIndex: 2,\n })\n } else {\n handleProceed(\"judgement\", {})\n }\n }\n\n useEffect(() => {\n if (resource && isActive && ref.current?.base) {\n ref.current.base.scrollIntoView({ behavior: \"smooth\" })\n }\n }, [resource, isActive])\n\n const openDialog = () => {\n showDialog(VideoDialog, { person, resource }, [\n \"with-dialog\",\n \"with-dialog--preview\",\n \"aspect\",\n `aspect--${aspectNumber}`,\n ])\n }\n\n return (\n <Sheet\n ref={ref}\n wrap={false}\n class={`sheet sheet--no-padding aspect aspect--${aspectNumber}`}\n >\n <div class=\"resource\">\n <div class=\"flow prose\">\n <h2>{resource.title}</h2>\n <Content plugins={resource.content} />\n </div>\n </div>\n <div class=\"flow prose\">\n <p>{gettext(\"Choose your level of complexity\")}</p>\n <div class=\"buttons\">\n {levels.map((level) => (\n <button\n type=\"button\"\n class={`button button--toggle ${\n portfolio.selectedComplexity === level ? \"active\" : \"\"\n }`}\n onClick={() => setComplexity(level)}\n key={level}\n >\n {level}\n </button>\n ))}\n </div>\n {resource.startsAtSecond && resource.endsAtSecond ? (\n <button\n class=\"button button--icon\"\n onClick={openDialog}\n type=\"button\"\n >\n {gettext(\"view again\")}\n <svg\n class=\"icon icon--play\"\n aria-label={gettext(\"play\")}\n role=\"img\"\n >\n <use href=\"#icon-play\" />\n </svg>\n </button>\n ) : null}\n\n <Content\n plugins={resource[complexityKey]}\n handleExerciseAnswer={handleExerciseAnswer}\n key={complexityKey}\n />\n </div>\n </Sheet>\n )\n}\n","import { resourcesOf, usePortfolio } from \"../data.js\"\nimport { Sheet } from \"../screen.js\"\nimport { gettext } from \"../utils.js\"\nimport { ResourcePreview } from \"./resource-preview.js\"\n\nexport const Selection = ({\n person,\n aspectIndex,\n exerciseIndex,\n handleProceed,\n isActive,\n}) => {\n const [portfolio] = usePortfolio()\n const selectedAspects = person.aspects.filter((aspect) =>\n portfolio.selectedAspects.includes(aspect.id),\n )\n const aspect = selectedAspects[aspectIndex]\n\n return (\n <Sheet>\n {exerciseIndex === 0 || exerciseIndex === 2 ? (\n <>\n <h1>{aspect.title}</h1>\n <p>{gettext(\"Select one of the following sources\")}</p>\n </>\n ) : null}\n {exerciseIndex === 1 || exerciseIndex === 3 ? (\n <p>{gettext(\"Select a second source\")}</p>\n ) : null}\n\n <div class=\"resources\">\n {resourcesOf(aspect).map((resource) => (\n <ResourcePreview\n key={resource.id}\n portfolio={portfolio}\n aspectNumber={aspect.number}\n resource={resource}\n isActive={isActive}\n handleProceed={() => {\n handleProceed(\"resource\", {\n resourceId: resource.id,\n aspectIndex,\n exerciseIndex,\n aspectNumber: aspect.number,\n })\n }}\n />\n ))}\n </div>\n </Sheet>\n )\n}\n","import { Fragment } from \"preact\"\nimport { useState } from \"preact/hooks\"\nimport { useLocation } from \"wouter-preact\"\n\nimport { MININPUTCHARACTERS } from \"../config.js\"\nimport { usePortfolio } from \"../data.js\"\nimport { Textarea } from \"../forms.js\"\nimport { Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { gettext, interpolate } from \"../utils.js\"\n\n// import \"./style.css\"\n\nconst judgementQuestions = (portfolio, person) => {\n return [\n [\n \"interestingEvent\",\n <div class=\"flow\" key={1}>\n {portfolio.suppliedReflexion ? (\n <>\n <p>\n {gettext(\n \"After the video you wrote down what concerns you. Here are your original thoughts again:\",\n )}\n </p>\n <blockquote>{portfolio.suppliedReflexion}</blockquote>\n </>\n ) : null}\n <p>\n {interpolate(\n gettext(\n \"Which event from the life of %(name)s would you like to tell others? Describe it and briefly mention what happened before and after.\",\n ),\n person,\n )}\n </p>\n </div>,\n ],\n [\n \"letterAboutMeasures\",\n <p key={2}>\n {interpolate(\n gettext(\n \"What do you think about the coercive measures against %(name)s? Briefly explain your opinion.\",\n ),\n person,\n )}\n </p>,\n ],\n ]\n}\n\nexport const Judgement = ({ person }) => {\n const [portfolio, setPortfolio] = usePortfolio()\n\n const [suppliedJudgement, setSuppliedJudgement] = useState(\n portfolio.suppliedJudgement,\n )\n const [, setLocation] = useLocation()\n\n const handleContinue = () => {\n setPortfolio((portfolio) => {\n const newPortfolio = {\n ...portfolio,\n suppliedJudgement,\n }\n trackStep(\"900:judgement\", { portfolio: JSON.stringify(newPortfolio) })\n return newPortfolio\n })\n setLocation(reverse(\"portfolio\"))\n }\n\n const questions = judgementQuestions(portfolio, person)\n\n const disabled = !questions.every(\n ([key]) => (suppliedJudgement[key] || \"\").length > MININPUTCHARACTERS,\n )\n\n return (\n <Sheet>\n <h1>{gettext(\"Conclusion\")}</h1>\n <form class=\"form flow\">\n {questions.map(([key, question]) => (\n <Fragment key={key}>\n {question}\n <Textarea\n value={suppliedJudgement[key]}\n setValue={(value) => {\n setSuppliedJudgement({ ...suppliedJudgement, [key]: value })\n }}\n />\n <p class=\"field__help\">\n {interpolate(gettext(\"At least %(chars)s characters.\"), {\n chars: MININPUTCHARACTERS,\n })}\n </p>\n </Fragment>\n ))}\n <div class=\"buttons\">\n <button\n type=\"button\"\n class=\"button\"\n onClick={!disabled ? handleContinue : undefined}\n disabled={disabled}\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </form>\n </Sheet>\n )\n}\n","import { useEffect } from \"preact/hooks\"\nimport { Route, Router, Switch, useLocation } from \"wouter-preact\"\n\nimport { people, savePortfolio, usePortfolio } from \"./data.js\"\nimport { qs } from \"./utils.js\"\n\nimport { Aspects } from \"./aspects/aspects.js\"\nimport { Intro } from \"./intro/intro.js\"\nimport { Teaser } from \"./intro/teaser.js\"\nimport { People } from \"./people/people.js\"\nimport { Person } from \"./people/person.js\"\nimport { Portfolio } from \"./portfolio/portfolio.js\"\nimport { Reflexion } from \"./reflexion/reflexion.js\"\nimport { Resources } from \"./resources/resources.js\"\n\nimport { showDialog } from \"./dialog/dialog.js\"\nimport {\n DeleteDialog,\n HomeDialog,\n PauseDialog,\n} from \"./dialog/dialogComponents.js\"\n\n// https://github.com/molefrog/wouter/blob/main/paths.js#relativePath but only what we need\nconst relativePath = (path = location.pathname) => {\n return path.indexOf(\"/app\") ? path : path.slice(4)\n}\n\n// eslint-disable-next-line react/display-name\nconst withProgress = (Component, progress) => (props) => {\n const gameStarted = progress >= 20\n const isHome = progress === 5\n const [, setLocation] = useLocation()\n\n // every render\n useEffect(() => {\n let el\n if ((el = qs(\"#progress\"))) {\n el.style.setProperty(\"--value\", progress)\n el.closest(\".header__progress\").classList.toggle(\"hide\", !gameStarted)\n }\n if ((el = qs(\"body\"))) {\n el.classList.toggle(\"show-progressbar\", gameStarted)\n }\n if ((el = qs(\"#pause\"))) {\n el.classList.toggle(\"hide\", !gameStarted)\n }\n if ((el = qs(\".menu-toggle\"))) {\n el.classList.toggle(\"hide\", gameStarted)\n }\n if ((el = qs(\"#home\"))) {\n qs(\".icon--home\", el).classList.toggle(\"hide\", isHome)\n qs(\".icon--home-active\", el).classList.toggle(\"hide\", !isHome)\n }\n if ((el = qs(\"#reset\"))) {\n el.classList.remove(\"hide\") // Button is hidden when not in /app/\n }\n })\n\n useEffect(() => {\n const body = document.body\n const handler = (e) => {\n if (e.target.closest(\"#pause\")) {\n e.preventDefault()\n showDialog(PauseDialog, { savePortfolio })\n }\n if (e.target.closest(\"#home\") && gameStarted) {\n e.preventDefault()\n showDialog(HomeDialog, { savePortfolio })\n }\n if (e.target.closest(\"#home\") && !gameStarted) {\n e.preventDefault()\n setLocation(reverse(\"intro\"))\n }\n if (e.target.closest(\"#reset\")) {\n e.preventDefault()\n showDialog(DeleteDialog)\n }\n }\n\n body.addEventListener(\"click\", handler)\n return () => {\n body.removeEventListener(\"click\", handler)\n }\n }, [gameStarted, setLocation])\n\n return <Component {...props} />\n}\n\n// eslint-disable-next-line react/display-name\nconst withSelectedPerson = (Component) => (props) => {\n const [portfolio, setPortfolio] = usePortfolio()\n const [, setLocation] = useLocation()\n const person = people()[portfolio.selectedPerson]\n\n useEffect(() => {\n setPortfolio(\n (portfolio) => ({ ...portfolio, lastPath: relativePath() }),\n false,\n )\n })\n\n if (!person) {\n setLocation(reverse(\"people\"))\n return null\n }\n return <Component person={person} {...props} />\n}\n\nconst routes = [\n [\"/\", withProgress(Teaser, 0), \"teaser\"],\n [\"/intro\", withProgress(Intro, 5), \"intro\"],\n [\"/people\", withProgress(People, 10), \"people\"],\n [\"/person\", withSelectedPerson(withProgress(Person, 20)), \"person\"],\n [\"/aspects\", withSelectedPerson(withProgress(Aspects, 50)), \"aspects\"],\n [\"/reflexion\", withSelectedPerson(withProgress(Reflexion, 55)), \"reflexion\"],\n [\"/resources\", withSelectedPerson(withProgress(Resources, 60)), \"resources\"],\n [\"/portfolio\", withSelectedPerson(withProgress(Portfolio, 100)), \"portfolio\"],\n]\n\nconst RestoreInitially = () => {\n const [portfolio] = usePortfolio()\n const [, setLocation] = useLocation()\n // The point is that this method should only run after the app loaded, exactly once.\n // biome-ignore lint/correctness/useExhaustiveDependencies: Run exactly once, it's fine.\n useEffect(() => {\n const path = portfolio.lastPath\n if (path) setLocation(path)\n }, [])\n return null\n}\n\nexport const Routes = () => {\n return (\n <Router base=\"/app\">\n <RestoreInitially />\n <Switch>\n {routes.map((r, idx) => {\n const Component = r[1]\n return <Route path={r[0]} component={Component} key={idx} />\n })}\n <Route>Oops, you reached a dead end.</Route>\n </Switch>\n </Router>\n )\n}\n\nexport const reverse = (name, params = {}) => {\n const route = routes.find((r) => r[2] === name)[0]\n const parts = route\n .split(/\\/+/)\n .map((part) => (part[0] === \":\" ? params[part.substring(1)] : part))\n return parts.join(\"/\")\n}\n","import Player from \"@vimeo/player\"\nimport { useEffect, useRef, useState } from \"preact/hooks\"\nimport { Link } from \"wouter-preact\"\nimport { navigate } from \"wouter-preact/use-browser-location\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { gettext, qsa } from \"../utils.js\"\n\nimport \"./style.css\"\n\nexport function Teaser() {\n const iframeRef = useRef(null)\n const currentLanguage = document.documentElement.lang\n const vimeoTrailerIds = {\n de: \"1038505169\",\n fr: \"1024649004\",\n it: \"1040678024\",\n }\n\n useEffect(() => {\n if (!iframeRef.current) return\n\n const player = new Player(iframeRef.current)\n\n player.on(\"ended\", () => {\n navigate(\"./intro/\")\n })\n\n return () => {\n player.destroy()\n }\n }, [])\n\n const [languages] = useState(() => {\n return [...qsa(\"nav.languages a\")].map((el) => ({\n link: `${el.href}app/`, // XXX that's a bit ugly\n isActive: el.classList.contains(\"active\"),\n code: el.textContent,\n }))\n })\n\n useEffect\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1 class=\"title-serif-xl\">{gettext(\"Welfare and coercition\")}</h1>\n <p class=\"lead\">{gettext(\"Educational medium on Swiss history\")}</p>\n <div id=\"video\" class=\"video\">\n <iframe\n ref={iframeRef}\n src={`https://player.vimeo.com/video/${vimeoTrailerIds[currentLanguage]}?h=e2ee06e636&badge=0&autopause=0&player_id=0&app_id=58479`}\n title=\"Trailer\"\n />\n </div>\n <div className=\"buttons-desktop buttons-desktop--reverse\">\n <Link class=\"button button--icon\" href=\"/intro/\">\n {gettext(\"Skip\")}\n <svg class=\"icon icon--button\" aria-hidden=\"true\" role=\"img\">\n <use href=\"#icon-skip\" />\n </svg>\n </Link>\n\n <nav class=\"languages\">\n {languages.map((t) => (\n <a\n class={`button button--lang${t.isActive ? \" active\" : \"\"}`}\n href={t.link}\n key={t.code}\n >\n {t.code}\n </a>\n ))}\n </nav>\n </div>\n </Sheet>\n </Screen>\n )\n}\n","import shuffle from \"@anttikissa/fisher-yates-shuffle\"\nimport { useLocation } from \"wouter-preact\"\n\nimport { people, usePortfolio } from \"../data.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { gettext } from \"../utils.js\"\nimport { PersonButton } from \"./person-button.js\"\n\nimport \"./style.css\"\n\nexport const People = () => {\n const [, setLocation] = useLocation()\n const [, setPortfolio] = usePortfolio()\n\n const handleSelect = (person) => {\n setPortfolio((portfolio) => ({\n ...portfolio,\n selectedPerson: person.id,\n }))\n trackStep(\"100:people\", { person: person.id })\n setLocation(reverse(\"person\"))\n }\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1>{gettext(\"Selection of people\")}</h1>\n <div class=\"people\">\n {shuffle(Object.values(people())).map((person) => (\n <PersonButton\n person={person}\n onClick={() => handleSelect(person)}\n key={person.id}\n />\n ))}\n </div>\n <p>{gettext(\"Which person do you want to deal with?\")}</p>\n </Sheet>\n </Screen>\n )\n}\n","import { Link, useLocation } from \"wouter-preact\"\n\nimport { usePortfolio } from \"../data.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { changeListPresence, gettext } from \"../utils.js\"\n\nexport const Aspects = ({ person }) => {\n const [, setLocation] = useLocation()\n const [portfolio, setPortfolio] = usePortfolio()\n\n if (!person.aspects.length) {\n return (\n <Screen wrap={false}>\n <Sheet>\n <p>Oops, you reached a dead end.</p>\n <div class=\"buttons\">\n <Link class=\"button\" to={reverse(\"people\")}>\n {gettext(\"Select a different person\")}\n </Link>\n </div>\n </Sheet>\n </Screen>\n )\n }\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <div class=\"person flow\">\n <h1>{gettext(\"You have selected the following aspects\")}</h1>\n <form class=\"person__list\">\n {person.aspects.map((aspect) => {\n const id = `aspect${aspect.id}`\n\n return (\n <label\n key={aspect.id}\n class={`person__aspect aspect aspect--${aspect.number}`}\n >\n <input\n type=\"checkbox\"\n name=\"aspect\"\n id={id}\n checked={portfolio.selectedAspects.includes(aspect.id)}\n onClick={(e) => {\n setPortfolio((portfolio) => ({\n ...portfolio,\n selectedAspects: changeListPresence(\n portfolio.selectedAspects,\n aspect.id,\n e.target.checked,\n ).slice(-2),\n }))\n }}\n />\n {portfolio.selectedAspects.includes(aspect.id) ? (\n <svg\n class=\"icon icon--checkbox icon--checked\"\n aria-label={gettext(\"checked\")}\n role=\"img\"\n >\n <use href=\"#icon-checked\" />\n </svg>\n ) : (\n <svg\n class=\"icon icon--checkbox icon--unchecked\"\n aria-label={gettext(\"unchecked\")}\n role=\"img\"\n >\n <use href=\"#icon-unchecked\" />\n </svg>\n )}\n\n {aspect.title}\n </label>\n )\n })}\n </form>\n </div>\n {/* <h2>{gettext(\"Your portfolio begins\")}</h2> */}\n <div class=\"buttons\">\n <Link class=\"button\" to={reverse(\"person\")}>\n {gettext(\"Back\")}\n </Link>\n <button\n class=\"button\"\n type=\"button\"\n onClick={\n !(portfolio.selectedAspects.length !== 2)\n ? () => {\n trackStep(\"500:aspects\")\n setLocation(reverse(\"reflexion\"))\n }\n : undefined\n }\n disabled={portfolio.selectedAspects.length !== 2}\n >\n {gettext(\"Continue\")}\n </button>\n </div>\n </Sheet>\n </Screen>\n )\n}\n","import { useState } from \"preact/hooks\"\nimport { Link, useLocation } from \"wouter-preact\"\n\nimport { MININPUTCHARACTERS } from \"../config.js\"\nimport { usePortfolio } from \"../data.js\"\nimport { Textarea } from \"../forms.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { trackStep } from \"../tracking.js\"\nimport { reverse } from \"../urls.js\"\nimport { gettext, interpolate } from \"../utils.js\"\n\nexport const Reflexion = ({ person }) => {\n const [portfolio, setPortfolio] = usePortfolio()\n\n const [suppliedReflexion, setSuppliedReflexion] = useState(\n portfolio.suppliedReflexion,\n )\n const [, setLocation] = useLocation()\n\n const handleContinue = () => {\n setPortfolio((portfolio) => ({\n ...portfolio,\n suppliedReflexion,\n }))\n trackStep(\"550:reflexion\")\n setLocation(reverse(\"resources\"))\n }\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <h1>{person.name}</h1>\n <form class=\"form flow\">\n <label for=\"reflexion\">\n {interpolate(\n gettext(\"You have now experienced the memories of %(name)s.\"),\n person,\n )}\n <br />\n <br />\n {gettext(\"What two questions concern you?\")}\n </label>\n <Textarea\n id=\"reflexion\"\n value={suppliedReflexion}\n setValue={setSuppliedReflexion}\n />\n <p class=\"field__help\">\n {interpolate(gettext(\"At least %(chars)s characters.\"), {\n chars: MININPUTCHARACTERS,\n })}\n </p>\n </form>\n\n <div class=\"buttons\">\n <Link class=\"button\" to={reverse(\"aspects\")}>\n {gettext(\"Back\")}\n </Link>\n <button\n type=\"button\"\n class=\"button\"\n onClick={\n !(suppliedReflexion.length < MININPUTCHARACTERS)\n ? handleContinue\n : undefined\n }\n disabled={suppliedReflexion.length < MININPUTCHARACTERS}\n >\n {gettext(\"Submit\")}\n </button>\n </div>\n </Sheet>\n </Screen>\n )\n}\n","import { endpoint, getPages, usePortfolio } from \"../data.js\"\nimport { showDialog } from \"../dialog/dialog.js\"\nimport { DeleteDialog } from \"../dialog/dialogComponents.js\"\nimport { Screen, Sheet } from \"../screen.js\"\nimport { gettext } from \"../utils.js\"\n\nimport \"./style.css\"\n\nexport const Portfolio = () => {\n const [portfolio, _setPortfolio] = usePortfolio()\n\n const portfolioEndpoint = endpoint(\"portfolio\")\n\n const handleDiscard = (e) => {\n e.preventDefault()\n showDialog(DeleteDialog)\n }\n\n const pages = getPages()\n\n return (\n <Screen wrap={false}>\n <Sheet>\n <div class=\"portfolio flow\">\n <h1 class=\"space-l\">\n {gettext(\"What do you want to do with your portfolio?\")}\n </h1>\n <form class=\"flow\" method=\"post\" action={portfolioEndpoint}>\n <input\n type=\"hidden\"\n name=\"portfolio\"\n value={JSON.stringify(portfolio)}\n />\n\n <div className=\"buttons-desktop buttons-desktop--left\">\n <button type=\"submit\" class=\"button\">\n {gettext(\"Download as PDF\")}\n </button>\n <button\n type=\"button\"\n class=\"button button--icon button--danger\"\n onClick={handleDiscard}\n >\n {gettext(\"Discard my inputs\")}\n <svg\n class=\"icon icon--delete\"\n aria-label={gettext(\"Discard my inputs\")}\n role=\"img\"\n >\n <use href=\"#icon-delete\" />\n </svg>\n </button>\n </div>\n {/* XXX: Hack, only temporarily */}\n <div className=\"buttons\">\n <a\n key=\"feedback\"\n class=\"button\"\n href=\"/feedback\"\n target=\"_self\"\n rel=\"noreferrer\"\n >\n Feedback\n </a>\n </div>\n </form>\n <div class=\"space-xxl\" />\n {pages?.length ? (\n <>\n <h2 class=\"title-serif-l-black\">{gettext(\"Further links\")}</h2>\n <nav className=\"menu-links\">\n {pages.map((page) => (\n <a\n key={page.url}\n class=\"menu-link\"\n href={page.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {page.title}\n </a>\n ))}\n </nav>\n </>\n ) : null}\n </div>\n </Sheet>\n </Screen>\n )\n}\n","import \"./styles/font-family.css\"\n\nimport \"./styles/reset.css\"\nimport \"./styles/functional.css\"\nimport \"./styles/fonts.css\"\n\nimport \"./styles/vars.css\"\nimport \"./styles/body.css\"\nimport \"./styles/menu.css\"\nimport \"./styles/progress.css\"\nimport \"./styles/icons.css\"\nimport \"./styles/buttons.css\"\nimport \"./styles/embeds.css\"\nimport \"./styles/forms.css\"\nimport \"./styles/prose.css\"\nimport \"./styles/screen.css\"\nimport \"./styles/plugins.css\"\nimport \"./styles/feedback.css\"\n\nimport { render } from \"preact\"\n\nimport { setAppData } from \"./data.js\"\nimport { Routes } from \"./urls.js\"\nimport { onReady, qs, qsa } from \"./utils.js\"\n\nonReady(() => {\n for (const el of qsa(\"[data-app]\")) {\n setAppData(JSON.parse(qs(\"script\", el).textContent))\n render(<Routes />, el)\n }\n})\n\nonReady(() => {\n document.body.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Escape\") {\n window[\"menu-toggle\"].checked = false\n }\n })\n})\n\nconst initScrolledNav = () => {\n let lastScroll = 0\n const handleScroll = () => {\n document.body.classList.toggle(\n \"scrolled-up\",\n window.scrollY > 16 && window.scrollY <= lastScroll,\n )\n document.body.classList.toggle(\"scrolled\", window.scrollY > 16)\n lastScroll = window.scrollY\n }\n handleScroll()\n window.addEventListener(\"scroll\", handleScroll, { passive: true })\n}\n\nonReady(initScrolledNav)\n\nconst initDokumentRedirect = () => {\n try {\n const queryString = location.search\n const searchParams = new URLSearchParams(queryString)\n const dl = searchParams.get(\"dl\")\n\n if (!dl) {\n return\n }\n\n const dlParts = dl.split(\"-\")\n\n const prefix = dlParts[0]\n const number = dlParts[1] ? Number.parseInt(dlParts[1], 10) : 1\n\n const linkElements = qsa(`a[data-extension=\"${prefix}\"]`)\n\n if (linkElements.length >= number) {\n const linkElement = linkElements[number - 1]\n\n if (linkElement) {\n // linkElement.click()\n window.location.href = linkElement.href\n } else {\n console.log(`No element found at position ${number}.`)\n }\n } else {\n console.log(\n `Less than ${number} 'a' elements with data-extension=\"${prefix}\".`,\n )\n }\n } catch (error) {\n console.log(\"Error occurred:\", error)\n }\n}\n\ninitDokumentRedirect()\n"],"names":["mathRandom","Math","module","a","options","result","i","n","randomIndex","swap","j","tmp","random","hasOwn","classNames","classes","arguments","arg","argType","Array","inner","Object","key","define","window","g","t","e","E","r","C","u","o","x","R","w","k","I","N","M","T","A","Symbol","D","L","O","F","U","P","z","B","c","W","document","V","H","Z","Y","$","Map","q","G","J","K","Q","nn","tn","en","rn","un","on","cn","ln","fn","l","an","sn","hn","vn","dn","pn","mn","yn","String","_n","bn","Sn","gn","En","Cn","xn","Rn","d","f","s","h","p","v","y","_","m","b","S","Set","Promise","setTimeout","clearTimeout","cancelAnimationFrame","requestAnimationFrame","dest","source","$8zHUo$sortablejs","$8zHUo$classnames","$8zHUo$react","$8zHUo$tinyinvariant","$parcel$interopDefault","$parcel$export","$eb03e74f8f7db1f3$export$1d0aa160432dfea5","node","$882b6d93070905b3$re_export$Sortable","$882b6d93070905b3$re_export$Direction","$882b6d93070905b3$re_export$DOMRect","$882b6d93070905b3$re_export$GroupOptions","$882b6d93070905b3$re_export$MoveEvent","$882b6d93070905b3$re_export$Options","$882b6d93070905b3$re_export$PullResult","$882b6d93070905b3$re_export$PutResult","$882b6d93070905b3$re_export$SortableEvent","$882b6d93070905b3$re_export$SortableOptions","$882b6d93070905b3$re_export$Utils","$7fe8e3ea572bda7a$export$11bbed9ee0012c13","$eb03e74f8f7db1f3$export$77f49a256021c8de","customs","curr","$eb03e74f8f7db1f3$export$a6177d5829f70ebc","$eb03e74f8f7db1f3$export$6d240faa51aa562f","parent","newChild","index","refChild","$eb03e74f8f7db1f3$export$4655efe700f887a","evt","list","mode","$eb03e74f8f7db1f3$export$1fc0f6205829e19c","parentElement","custom","drag","$eb03e74f8f7db1f3$export$bc06a3af7dc65f53","inputs","$eb03e74f8f7db1f3$export$be2da95e6167b0bd","normalized","newList","$eb03e74f8f7db1f3$export$eca851ee65ae17e4","clone","newItem","$7fe8e3ea572bda7a$var$store","item","props","newOptions","prevProps","tag","style","className","id","children","dataIdAttr","selectedClass","chosenClass","dragClass","fallbackClass","ghostClass","swapClass","filter","dataid","child","undefined","prevClassName","filtered","el","setList","onAdd","onChange","onChoose","onClone","onEnd","onFilter","onRemove","onSort","onStart","onUnchoose","onUpdate","onMove","onSpill","onSelect","onDeselect","DOMHandlers","name","NonDOMHandlers","originalEvt","defaultValue","evtName","propEvent","customClones","removeOnSpill","revertOnSpill","console","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","target","_defineProperty","obj","value","_typeof","_extends","_arrayLikeToArray","arr","len","arr2","userAgent","pattern","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","event","off","matches","selector","getParentOrHost","closest","ctx","includeCTX","R_SPACE","toggleClass","state","css","prop","val","matrix","selfOnly","appliedTransforms","transform","matrixFn","find","tagName","iterator","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","top","elRect","left","bottom","right","height","width","containerRect","parseInt","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","visible","getChild","childNum","includeDragEl","currentChild","Sortable","lastChild","last","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","includeSelf","elem","gotSelf","elemCSS","isRectEqual","rect1","rect2","throttle","callback","ms","_throttleTimeout","args","scrollBy","Polymer","setRect","rect","unsetRect","getChildContainingRectFromElement","ghostEl","_rect$left","_rect$top","_rect$right","_rect$bottom","childRect","Infinity","expando","Date","plugins","defaults","PluginManager","plugin","option","eventName","sortable","_this","eventNameGlobal","pluginName","initialized","modified","eventProperties","modifiedValue","dispatchEvent","_ref","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","CustomEvent","allEventProperties","_excluded","pluginEvent","data","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceKeys","sourceSymbolKeys","dragEl","parentEl","nextEl","lastDownEl","cloneHidden","moved","_hideGhostForTarget","_unhideGhostForTarget","_dispatchEvent","info","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","CSSFloatProperty","supportDraggable","supportCssPointerEvents","_detectDirection","elCSS","elWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","secondChildWidth","touchingSideChild2","_dragElInRowColumn","dragRect","targetRect","vertical","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_detectNearestEmptySortable","ret","threshold","insideHorizontally","insideVertically","_prepareGroup","toFn","pull","to","from","sameGroup","otherGroup","group","originalGroup","nearestEmptyInsertDetectEvent","nearest","_checkOutsideTargetEl","animationCallbackId","animationStates","dataTransfer","Number","fromRect","childMatrix","indexOfObject","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","currentRect","duration","translateX","translateY","repaint","preventOnFilter","type","touch","originalTarget","_saveInputCheckedState","root","idx","criteria","dragStartFn","ownerDocument","_disableDraggable","_nextTick","err","fallback","inserted","fallbackTolerance","fallbackOffset","ghostMatrix","relativeScrollOffset","PositionGhostAbsolutely","dx","dy","cssMatrix","setInterval","revert","activeSortable","isOwner","canSort","fromSortable","completedFired","dragOverEvent","completed","capture","elLastChild","_ghostIsLast","lastElRect","childContainingRect","_onMove","changed","_ghostIsFirst","firstElRect","firstChild","sibling","targetBeforeFirstSwap","direction","differentLevel","differentRowCol","side1","scrolledPastTop","scrollBefore","_getSwapDirection","swapThreshold","invertedSwapThreshold","invertSwap","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","dragIndex","nextSibling","after","moveVector","_unsilent","extra","insertion","clearInterval","_cancelNextTick","_globalDragOver","order","_generateId","str","sum","useAnimation","items","store","willInsertAfter","retVal","onMoveFn","dst","src","element","_len","_key","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","clearPointerElemChangedInterval","isFallback","scrollCustomFn","sens","speed","scrollThisInstance","layersOut","currentParent","canScrollX","canScrollY","scrollWidth","scrollHeight","scrollPosX","scrollPosY","vx","vy","scrollOffsetY","scrollOffsetX","drop","dispatchSortableEvent","hideGhostForTarget","unhideGhostForTarget","toSortable","Revert","Remove","SwapPlugin","Swap","lastSwapEl","_ref2","cancel","prevSwapEl","_ref3","swapNodes","n1","n2","i1","i2","p1","p2","_ref4","parentSortable","lastMultiDragSelect","multiDragSortable","dragEl$1","clonesFromRect","clonesHidden","multiDragElements","multiDragClones","initialFolding","folding","dragStarted","MultiDragPlugin","MultiDrag","multiDragElement","insertMultiDragClones","cloneNowShown","_ref5","cloneNowHidden","_ref6","_ref7","_this2","removeMultiDragElements","_ref8","_ref9","insertMultiDragElements","clonesInserted","_ref10","dragRectAbsolute","clonesHiddenBefore","_ref11","dragMatrix","_ref12","lastIndex","currentIndex","multiDragIndex","update","_this3","oldIndicies","newIndicies","_arrayWithoutHoles","_iterableToArray","iter","_unsupportedIterableToArray","minLen","_nonIterableSpread","TypeError","elementsInserted","AutoScroll","ogElemScroller","newElem","prefix","invariant","condition","message","provided","Error","eventNameMap","screenfull","_w","asyncGeneratorStep","gen","resolve","reject","_next","_throw","error","_async_to_generator","self","_define_property","_object_spread","_array_like_to_array","_unsupported_iterable_to_array","_sliced_to_array","_array_with_holes","_iterable_to_array_limit","_s","_e","_i","_arr","_d","_non_iterable_rest","__generator","thisArg","body","Iterator","verb","step","op","VIMEOOPTIONS","safeStorage","storage","get","set","remove","clear","_array_without_holes","_iterable_to_array","_non_iterable_spread","pointInclusifFix","txt","gettext","vowelRegex","interpolate","onReady","qs","sel","base","qsa","containsJSON","response","contentType","fetchAPI","url","opts","getCookie","cookieName","cookies","_iteratorError","cookie","decodeURIComponent","fetch","fetchJSON","changeListPresence","presence","isTouch","calculateTransformOrigin","elementRect","parentRect","elementCenterX","parentCenterX","elementCenterY","parentCenterY","toleranceX","toleranceY","transformOrigin","_appData","setAppData","endpoint","people","getPages","JSON","portfolioStorage","localStorage","subtitleStorage","_portfolioState","_pEvent","_pEventEmitter","_pStorageKey","_subtitleStorageKey","_broadcastUpdate","_updatePortfolio","newState","broadcast","_loadPortfolio","clobberStorage","usePortfolio","_useState","setState","useEffect","listener","resetPortfolio","savePortfolio","code","FormData","portfolio","useSubtitle","currentLanguage","SHOWSUBTITLEDEFAULT","subtitle","setSubtitle","_object_spread_props","canUseDOM","is","ref","eventPushState","eventReplaceState","subscribeToLocationUpdates","addEventListener","removeEventListener","useLocationProperty","ssrFn","useSyncExternalStore","subscribe","getSnapshot","getSSRSnapshot","_instance","forceUpdate","currentSearch","location","currentPathname","usePathname","ssrPath","replace","history","patchKey","original","Event","_relativePath","path","baseDefaults","absolutePath","relativePath","decodeURI","defaultRouter","ssrSearch","input","loose","RegExp","ext","RouterCtx","useRouter","Params0","ParamsCtx","useParams","useLocationFromRouter","router","navigate","navOpts","useLocation","matchRoute","parser","route","$base","groups","Router","parent_","search","prev","next","h_route","component","params","useCachedParams","Route","nest","match","renderProps","routeParams","Link","currentPath","targetPath","_onClick","asChild","cls","restProps","onClick","href","flattenChildren","Switch","originalLocation","_object_without_properties","_object_without_properties_loose","Screen","wrap","Sheet","handleNode","useCallback","trackStep","URLSearchParams","Restore","setCode","_useState1","setError","setPortfolio","_usePortfolio","setLocation","_useLocation","loadPortfolio","_regeneratorRuntime","exports","Op","defineProperty","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","generator","protoGenerator","Generator","makeInvokeMethod","context","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","methodName","ContinueSentinel","record","tryCatch","Context","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","prototype","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","unwrapped","pushTryEntry","locs","entry","resetTryEntry","iterable","iteratorMethod","isNaN","genFun","ctor","skipTempReset","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","_asyncToGenerator","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_isNativeReflectConstruct","Reflect","Proxy","Boolean","Parent","Class","Function","_cache","Wrapper","_assertThisInitialized","ReferenceError","_toPrimitive","hint","prim","res","isNode","getMethodName","isVimeoUrl","isVimeoEmbed","expr","getVimeoUrl","oEmbedParameters","idOrUrl","parseFloat","isFinite","offName","eventNames","evName","arrayIndexOfSupport","postMessageSupport","commonjsGlobal","globalThis","hasOwnProperty","hasDefine","WeakMap","genId","rand","checkInstance","isObject","npo_src","definition","builtInProp","cycle","scheduling_queue","ToString","timer","setImmediate","config","schedule","isThenable","_then","o_type","notify","notifyIsolated","cb","chain","first","Item","msg","def_wrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","MakeDef","executor","def","success","failure","PromisePrototype","msgs","count","callbackMap","storeCallback","player","playerCallbacks","getCallbacks","removeCallback","parseMessageData","postMessage","ieVersion","getOEmbedParameters","param","createEmbed","html","div","getOEmbedData","videoUrl","domain","getOembedDomain","_customDomains","customDomain","encodeURIComponent","xhr","XDomainRequest","XMLHttpRequest","json","status","defaultOptions","_EventTarget","_inherits","subClass","superClass","TimingSrcConnector","Derived","hasNativeReflectConstruct","_init","_updateTimingObject","_updatePlayer","_super","Super","_possibleConstructorReturn","call","_player","timingObject","logger","_callee","newAdjustment","newPlaybackRate","_context","_x","_x2","_callee2","playerUpdater","positionSync","timingObjectUpdater","_context2","_x3","_x4","_x5","_callee3","_context3","_x6","_x7","_callee5","_timingObject$query","position","velocity","_context5","_callee4","_context4","err2","_x11","_x8","_x9","_x10","allowedDrift","maxAllowedDrift","minCheckInterval","maxRateAdjustment","maxTimeToCatchUp","syncInterval","check","_callee6","diff","diffAbs","min","max","adjustment","_context6","interval","_this$logger","EventTarget","playerMap","readyMap","_setTimingSrc","Player","jQuery","iframe","readyPromise","isError","isReadyEvent","isPingResponse","processData","callbacks","promises","promise","shiftCallbacks","oldElement","newElement","exitFullscreen","_this4","language","kind","_this5","autopause","camera","color","colors","nullPromise","colorPromises","currentTime","loop","muted","playbackRate","quality","volume","connector","_this6","fnMap","onFullScreenEntered","returnPromise","onFullScreenExit","initializeEmbeds","elements","handleError","resizeEmbeds","iframes","space","initAppendVideoMetadata","isValidMessageSource","checkUrlTimeParam","_loop","videoId","sec","initializePlayer","person","videoRef","URL","hasHParam","currentVideoId","PersonButton","useRef","timerStart","buttonRef","playing","setPlaying","setTransformOrigin","_useState2","maxPlayTime","setMaxPlaytime","_useSubtitle","videoIsPlayable","videoRefCurrent","seconds","playVideo","stopVideo","onTouchEnd","onlongtouch","LONGTOUCHDURATION","getCurrentAspect","currentAspect","aspect","AspectButton","hasDeleteButton","onDelete","showDialog","Component","_body_classList","bodyClass","escapeListener","handleRemove","render","Code","letter","Textarea","setValue","Content","handleExerciseAnswer","TextExercise","MultipleChoiceExercise","SingleChoiceExercise","answer","setAnswer","selected","setSelected","choice","SaveDialog","DeleteDialog","PauseDialog","HomeDialog","PreviewDialog","content","title","images","VideoDialog","resource","noVideoError","ResourcePreview","aspectNumber","handleProceed","isActive","isDone","open","setOpen","areEventsOrdered","events","PARTS","resourceId","aspectIndex","exerciseIndex","complexityKey","_ref_current","levels","level","selectedComplexity","identifier","finishedExercises","exerciseComplexities","selectedAspects","resourcesOf","timelineOrdered","readOnly","setreadOnly","eventsRef","heights","setHeights","newEvents","shuffle","worldEvent","setEvents","_useState3","isOrderedCorrectly","setIsOrderedCorrectly","_useState4","overlayCanOpen","setOverlayCanOpen","swapElements","array","index1","index2","newArray","temp","updateMaxHeights","newHeights","_event","_eventsRef_current_index","eventHeight","eventsOrdered","submit","chapter","ReactSortable","reverse","suppliedJudgement","setSuppliedJudgement","questions","disabled","question","Fragment","newPortfolio","withProgress","progress","gameStarted","isHome","handler","withSelectedPerson","routes","iframeRef","languages","vimeoTrailerIds","handleSelect","setCurrentTime","currentAspectSelected","showTriggerWarning","setShowTriggerWarning","removeSelectedAspect","suppliedReflexion","setSuppliedReflexion","lastResourceParts","currentExerciseIndex","currentAspectIndex","part","nextPart","nextProps","parts","portfolioEndpoint","pages","page","RestoreInitially","Routes","lastScroll","handleScroll","initDokumentRedirect","queryString","dl","searchParams","dlParts","number","linkElements","linkElement"],"mappings":"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"}