From 4af2e2a7b1cf4187749ba036bdb71921207aef5f Mon Sep 17 00:00:00 2001 From: blmage Date: Wed, 19 Oct 2022 12:48:11 +0200 Subject: [PATCH] Update production build and bump extension version --- dist/manifest.json | 2 +- dist/src/background.js | 2 +- dist/src/content.js | 2 +- dist/src/observer.js | 2 +- dist/src/popup.js | 2 +- dist/src/ui.js | 2 +- package.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/manifest.json b/dist/manifest.json index 3b7fc58..64c882e 100644 --- a/dist/manifest.json +++ b/dist/manifest.json @@ -1,6 +1,6 @@ { "name": "Duolingo Word Bank Dnd", - "version": "2.1.1", + "version": "2.2.0", "description": "Enables the drag'n'drop of words in the word-bank answers on Duolingo.", "permissions": [ "activeTab", diff --git a/dist/src/background.js b/dist/src/background.js index 3205be1..689eb3b 100644 --- a/dist/src/background.js +++ b/dist/src/background.js @@ -1 +1 @@ -!function(){"use strict";const e=(e,t,...o)=>new Promise(((r,s)=>{o.push((e=>{chrome.runtime.lastError?s(chrome.runtime.lastError):r(e)})),e[t](...o)})),t={onChanged:e=>chrome.storage.sync.onChanged(e),clear:()=>e(chrome.storage.sync,"clear"),get:t=>e(chrome.storage.sync,"get",t),getBytesInUse:t=>e(chrome.storage.sync,"getBytesInUse",t),remove:t=>e(chrome.storage.sync,"remove",t),set:t=>e(chrome.storage.sync,"set",t)},o=Array.isArray,r=()=>{chrome.runtime.lastError},s=e=>{null!=e&&e.id&&((e.url||"").match(/^https:\/\/.*duolingo\.com\//)?chrome.pageAction.show(e.id,r):chrome.pageAction.hide(e.id,r),chrome.runtime.lastError&&setTimeout((()=>s(e)),50))},a=(e,t)=>chrome.tabs.get(e,(o=>{var r;return"Tabs cannot be edited right now (user may be dragging a tab)."!==(null===(r=chrome.runtime.lastError)||void 0===r?void 0:r.message)?t(o):setTimeout((()=>a(e,t)),100)})),n=e=>"__duo-toolbox__-"+e,c=n("action_request"),i=n("background_event_notification"),d={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:"never"};function h(){for(var e=arguments.length,t=new Array(e),o=0;o{if("object"==typeof(n=e)&&n&&!o(n)){const o=await t.get(m),n=h(d,o.options||{},e);await t.set({[m]:n}),r(),s="options_changed",a=n,chrome.runtime.sendMessage({type:i,event:s,value:a}),chrome.tabs.query({url:"https://*.duolingo.com/*"},(e=>e.forEach((e=>chrome.tabs.sendMessage(e.id,{type:i,event:s,value:a})))))}var s,a,n};var l;l=async(e,o,r,s)=>{switch(e){case"get_options":await(async e=>{const o=await t.get(m);e(h(d,o.options||{}))})(s);break;case"update_options":await u(o,s)}},chrome.runtime.onMessage.addListener(((e,t,o)=>{if(c===e.type){let r=!1;const s=e=>{r=!0,o({type:"success",value:e})},a=e=>{r=!0,o({type:"failure",error:e})};try{Promise.resolve(l(e.action,e.value,t,s,a)).then((()=>{if(!r)throw new Error(`Could not handle action request: "${e.action}".`)})).catch((e=>{r||a(e)}))}catch(e){!r&&a(e)}return!0}})),chrome.tabs.onUpdated.addListener(((e,t)=>e&&(null!=t&&t.id?s(t):a(e,s)))),chrome.tabs.onActivated.addListener((({tabId:e})=>e&&a(e,s)))}(); +!function(){"use strict";const e=(e,t,...o)=>new Promise(((r,s)=>{o.push((e=>{chrome.runtime.lastError?s(chrome.runtime.lastError):r(e)})),e[t](...o)})),t={onChanged:e=>chrome.storage.sync.onChanged(e),clear:()=>e(chrome.storage.sync,"clear"),get:t=>e(chrome.storage.sync,"get",t),getBytesInUse:t=>e(chrome.storage.sync,"getBytesInUse",t),remove:t=>e(chrome.storage.sync,"remove",t),set:t=>e(chrome.storage.sync,"set",t)},o=Array.isArray,r=()=>{chrome.runtime.lastError},s=e=>{null!=e&&e.id&&((e.url||"").match(/^https:\/\/.*duolingo\.com\//)?chrome.pageAction.show(e.id,r):chrome.pageAction.hide(e.id,r),chrome.runtime.lastError&&setTimeout((()=>s(e)),50))},a=(e,t)=>chrome.tabs.get(e,(o=>{var r;return"Tabs cannot be edited right now (user may be dragging a tab)."!==(null===(r=chrome.runtime.lastError)||void 0===r?void 0:r.message)?t(o):setTimeout((()=>a(e,t)),100)})),n=e=>`__duo-toolbox__-${e}`,c=n("action_request"),i=n("background_event_notification"),d={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:"never"};function h(){for(var e=arguments.length,t=new Array(e),o=0;o{if("object"==typeof(n=e)&&n&&!o(n)){const o=await t.get(m),n=h(d,o.options||{},e);await t.set({[m]:n}),r(),s="options_changed",a=n,chrome.runtime.sendMessage({type:i,event:s,value:a}),chrome.tabs.query({url:"https://*.duolingo.com/*"},(e=>e.forEach((e=>chrome.tabs.sendMessage(e.id,{type:i,event:s,value:a})))))}var s,a,n};var l;l=async(e,o,r,s)=>{switch(e){case"get_options":await(async e=>{const o=await t.get(m);e(h(d,o.options||{}))})(s);break;case"update_options":await u(o,s)}},chrome.runtime.onMessage.addListener(((e,t,o)=>{if(c===e.type){let r=!1;const s=e=>{r=!0,o({type:"success",value:e})},a=e=>{r=!0,o({type:"failure",error:e})};try{Promise.resolve(l(e.action,e.value,t,s,a)).then((()=>{if(!r)throw new Error(`Could not handle action request: "${e.action}".`)})).catch((e=>{r||a(e)}))}catch(e){!r&&a(e)}return!0}})),chrome.tabs.onUpdated.addListener(((e,t)=>e&&(null!=t&&t.id?s(t):a(e,s)))),chrome.tabs.onActivated.addListener((({tabId:e})=>e&&a(e,s)))}(); diff --git a/dist/src/content.js b/dist/src/content.js index 724cc3f..0acd854 100644 --- a/dist/src/content.js +++ b/dist/src/content.js @@ -1 +1 @@ -!function(){"use strict";const e=()=>{},t=Array.isArray,n=e=>"object"==typeof e&&!!e&&!t(e),r=e=>"__duo-toolbox__-"+e,s="success",o=r("action_request"),a=r("action_result"),c=r("ui_event_notification"),i=r("background_event_notification"),d=async e=>new Promise(((t,n)=>{if("undefined"==typeof chrome)return browser.runtime.sendMessage(e);chrome.runtime.sendMessage(e,(e=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t(e)}))})),u=["get_options","update_options"],m=["options_changed"],l=document.createElement("script");l.src=chrome.runtime.getURL("src/observer.js"),l.type="text/javascript",(document.head||document.documentElement).appendChild(l);const p=document.createElement("script");p.src=chrome.runtime.getURL("src/ui.js"),p.type="text/javascript",(document.head||document.documentElement).appendChild(p);const h=document.createElement("link");h.href=chrome.runtime.getURL("assets/css/ui.css"),h.rel="stylesheet",(document.head||document.documentElement).appendChild(h),((r,u,m)=>{const l=t(r)?e=>r.indexOf(e)>=0:()=>!0,p=((e,r)=>{var s;const o=t(r)?e=>r.indexOf(e)>=0:()=>!0,a=t=>{const r=n(t.data)?t.data:t;return r&&i===r.type&&o(r.event)&&e(r.event,r.value)};return"undefined"!=typeof chrome&&null!==(s=chrome.runtime)&&void 0!==s&&s.onMessage?(chrome.runtime.onMessage.addListener(a),()=>chrome.runtime.onMessage.removeListener(a)):(window.addEventListener("message",a),()=>window.removeEventListener("message",a))})(((e,t)=>{window.postMessage({type:i,event:e,value:t},"*")}),m),h=t=>{if(t.source===window&&n(t.data))if(o===t.data.type){const e=t.data.action||null;l(e)&&d(t.data).then((e=>{if(!n(e)||s!==e.type)throw new Error;return e.value})).then((n=>{t.source.postMessage({type:a,action:e,result:s,value:n},"*")})).catch((n=>{t.source.postMessage({type:a,action:e,result:"failure",error:n},"*")}))}else if(c===t.data.type){const n=t.data.event||null;u.indexOf(n)>=0&&d(t.data).then(e).catch(e)}};window.addEventListener("message",h)})(u,[],m)}(); +!function(){"use strict";const e=()=>{},t=Array.isArray,n=e=>"object"==typeof e&&!!e&&!t(e),r=e=>`__duo-toolbox__-${e}`,s="success",o=r("action_request"),a=r("action_result"),c=r("ui_event_notification"),i=r("background_event_notification"),d=async e=>new Promise(((t,n)=>{if("undefined"==typeof chrome)return browser.runtime.sendMessage(e);chrome.runtime.sendMessage(e,(e=>{chrome.runtime.lastError?n(chrome.runtime.lastError):t(e)}))})),u=["get_options","update_options"],m=["options_changed"],l=document.createElement("script");l.src=chrome.runtime.getURL("src/observer.js"),l.type="text/javascript",(document.head||document.documentElement).appendChild(l);const p=document.createElement("script");p.src=chrome.runtime.getURL("src/ui.js"),p.type="text/javascript",(document.head||document.documentElement).appendChild(p);const h=document.createElement("link");h.href=chrome.runtime.getURL("assets/css/ui.css"),h.rel="stylesheet",(document.head||document.documentElement).appendChild(h),((r,u,m)=>{const l=t(r)?e=>r.indexOf(e)>=0:()=>!0,p=((e,r)=>{var s;const o=t(r)?e=>r.indexOf(e)>=0:()=>!0,a=t=>{const r=n(t.data)?t.data:t;return r&&i===r.type&&o(r.event)&&e(r.event,r.value)};return"undefined"!=typeof chrome&&null!==(s=chrome.runtime)&&void 0!==s&&s.onMessage?(chrome.runtime.onMessage.addListener(a),()=>chrome.runtime.onMessage.removeListener(a)):(window.addEventListener("message",a),()=>window.removeEventListener("message",a))})(((e,t)=>{window.postMessage({type:i,event:e,value:t},"*")}),m),h=t=>{if(t.source===window&&n(t.data))if(o===t.data.type){const e=t.data.action||null;l(e)&&d(t.data).then((e=>{if(!n(e)||s!==e.type)throw new Error;return e.value})).then((n=>{t.source.postMessage({type:a,action:e,result:s,value:n},"*")})).catch((n=>{t.source.postMessage({type:a,action:e,result:"failure",error:n},"*")}))}else if(c===t.data.type){const n=t.data.event||null;u.indexOf(n)>=0&&d(t.data).then(e).catch(e)}};window.addEventListener("message",h)})(u,[],m)}(); diff --git a/dist/src/observer.js b/dist/src/observer.js index 965a59d..80d6827 100644 --- a/dist/src/observer.js +++ b/dist/src/observer.js @@ -1 +1 @@ -!function(){"use strict";const e=()=>{},t=e=>"number"==typeof e&&Number.isFinite(e),n=e=>"string"==typeof e,a=Array.isArray,l=e=>"object"==typeof e&&!!e&&!a(e),o=e=>"function"==typeof e,s=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r=e=>{for(let t in e)if(s(e,t))return!1;return!0},i=e=>{let t=null;if("/"===e.charAt(0)&&("/"===e.charAt(1)?e="https://"+e:t=e),null===t)try{t=new URL(e).pathname}catch(n){t=e}return t},u=e=>"__duo-toolbox__-"+e,d=u("global_variables"),c=(e,t)=>(l(window[d])||(window[d]={}),s(window[d],e)?window[d][e]:t),p=(e,t)=>{l(window[d])||(window[d]={}),window[d][e]=t},v=(e,t,n)=>{const a=t(c(e,n));return p(e,a),a},f=u("original_function"),g=u("override_version"),_=(t,n,a,r=1)=>((e,t,n,a,l=1)=>{s(window,e)&&t(window[e])?n(window[e]):v("pending_global_listeners",((o={})=>{var s;if(!o[e]){o[e]={};let n=window[e];Object.defineProperty(window,e,{get:()=>n,set:a=>{t(a)?(Object.defineProperty(window,e,{value:a,configurable:!0,enumerable:!0,writable:!0}),Object.values(o[e]).forEach((e=>e.callback(a)))):n=a},configurable:!0})}return l>(Number(null===(s=o[e][a])||void 0===s?void 0:s.version)||0)&&(o[e][a]={callback:n,version:l}),o}))})(t,o,(t=>((t,n,a,o=1)=>{var s;if(l(t)&&o>(Number(null===(s=t[n])||void 0===s?void 0:s[g])||0)){var r;const l=(null===(r=t[n])||void 0===r?void 0:r[f])||t[n]||e;t[n]=a(l),t[n][f]=l,t[n][g]=o}})(null==t?void 0:t.prototype,n,a,r)),"instance_method:"+n,r),m=u("logging_iframe"),h=()=>(()=>{let e=document.getElementById(m);return e&&e.isConnected||(e=document.createElement("iframe"),e.id=m,e.style.display="none",document.body.appendChild(e)),e})().contentWindow.console,y=(...e)=>h().error(...e),b=e=>{var t,n;return(null===(t=e.metadata)||void 0===t?void 0:t.source_language)||e.sourceLanguage||(null===(n=e.metadata)||void 0===n?void 0:n.learning_language)},w=e=>{var t;return(null===(t=e.metadata)||void 0===t?void 0:t.target_language)||e.targetLanguage||b(e)},k="tts_sentence",K="tts_word",O="normal",V="howler",j="rate",x="volume",q=u("forced_setting"),T=e=>l(e)&&!!e[q],$=e=>e.value,L=e=>({[q]:!0,value:e}),M=(e,n)=>j===e&&t(n)||x===e&&n>=0&&n<=1,C=(e,n)=>((e,t,n,a=1)=>{if(!l(e))return;const o=u(t+"_override_version");a>(Number(e[o])||0)&&Object.defineProperty(e,t,n(Object.getOwnPropertyDescriptor(e,t)))})(HTMLMediaElement,n,(n=>({...n,set:function(a){const l=P[e];t(a)?(this[l.originalValueKey]=a,s(this,l.valueKey)&&(a=this[l.isRelativeKey]?H(e,a*this[l.valueKey]):this[l.valueKey])):T(a)&&(a=$(a)),t(a)&&(this[l.listenerValueKey]=a),n.set.call(this,a)}}))),E=(e,t)=>_("Howl",t,(n=>function(){const a=this,l=arguments,o=P[e];let r=!1;const i=a._queue.length;(1===l.length||2===l.length&&void 0===l[1])&&-1===a._getSoundIds().indexOf(l[0])&&(T(l[0])?(r=!0,l[0]=$(l[0])):M(e,l[0])&&(a[o.originalValueKey]=l[0],s(a,o.valueKey)&&(r=!0,a[o.isRelativeKey]?l[0]=H(e,l[0]*a[o.valueKey]):l[0]=a[o.valueKey])),r&&(a[o.listenerValueKey]=l[0]));const u=n.apply(a,arguments);return r&&i({...a,functions:{audio:{applyOverride:()=>C(e,n),getter:e=>e[t],setter:(e,n)=>e[t]=n,hasQueuedUpdate:()=>!1},[V]:{applyOverride:()=>E(e,n),getter:e=>e[n](),setter:(e,t)=>e[n](t),hasQueuedUpdate:e=>e._queue.find((e=>e.event===n))}},priorityKey:u(e+"_priority"),isRelativeKey:u(e+"_is_relative"),valueKey:u(`forced_${e}_value`),originalValueKey:u(`original_${e}_value`),listenerValueKey:u(e+"_value")}),P={[j]:R(j,"playbackRate","rate",{minValue:.5,maxValue:4,defaultValue:1}),[x]:R(x,"volume","volume",{minValue:0,maxValue:1,defaultValue:1})},H=(e,t)=>P[e]?Math.max(P[e].minValue,Math.min(t,P[e].maxValue)):t,N="event_listeners",S=()=>{return`__listener::${e="last_event_listener_id",v(`__counter::${e}__`,(e=>e+1),0)}__`;var e},A=e=>{var t;return(null===(t=c(N,{}))||void 0===t?void 0:t[e])||{}},I=(e,t)=>{v(N,(n=>Object.assign(n||{},{[e]:t})))},U=!r((e=>A(e))),D=(e,t)=>{const n=A(e);return r(n)?null:t(Object.values(n))},Q=(e,t,n=S())=>{const a=A(e);return a[n]=t,I(e,a),()=>z(e,n)},X=(e,t,n,l,o=Q,s=S())=>{const r=`__${t}::${e}__`;var i;i=r,A(t)[i]||o(t,((...t)=>{const n=l(...t);a(n)&&B(e,...n)}),r);const u=Q(e,n,s);return()=>{u(),U(e)||z(t,r)}},z=(e,t)=>{const n=A(e);delete n[t],I(e,n)},B=(e,...t)=>D(e,(e=>e.flatMap((e=>{try{return[e(...t)]}catch(e){return[]}})))),F="practice_session_loaded",J="story_loaded",W="forum_discussion_loaded",G="dictionary_lexeme_loaded",Y="sound_playback_requested",Z="sound_playback_confirmed",ee="sound_playback_cancelled",te={[G]:/\/api\/1\/dictionary_page/g,[W]:/\/comments\/([\d]+)/g,[F]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/sessions/g,[J]:/\/api2\/stories/g,user_data_loaded:/\/[\d]{4}-[\d]{2}-[\d]{2}\/users\/[\d]+/g},ne=(e,t,n=S())=>(_("XMLHttpRequest","open",(e=>function(t,n,a,o,s){let r;for(const[e,t]of Object.entries(te))if(n.match(t)){r=e;break}return r&&D(r,(e=>{this.addEventListener("load",(()=>{try{const t=l(this.response)?this.response:JSON.parse(this.responseText);e.forEach((e=>e(t)))}catch(e){y(e,`Could not handle the XHR result (event: ${r}): `)}}))})),e.call(this,t,n,a,o,s)})),Q(e,t,n)),ae=(e,t)=>({url:e,type:k,speed:O,language:t}),le=(e,t)=>({url:e,type:K,speed:O,language:t}),oe=Object.fromEntries(["/sounds/7abe057dc8446ad325229edd6d8fd250.mp3","/sounds/2aae0ea735c8e9ed884107d6f0a09e35.mp3","/sounds/421d48c53ad6d52618dba715722278e0.mp3","/sounds/37d8f0b39dcfe63872192c89653a93f6.mp3","/sounds/0a27c1ee63dd220647e8410a0029aed2.mp3","/sounds/a28ff0a501ef5f33ca78c0afc45ee53e.mp3","/sounds/2e4669d8cf839272f0731f8afa488caf.mp3","/sounds/f0b6ab4396d5891241ef4ca73b4de13a.mp3"].map((e=>{return[e,(t=e,{url:t,type:"effect",speed:O,language:null})];var t}))),se=/\/duolingo-data\/tts\/(?[a-z-_]+)\/token\//i,re="sound_type_map",ie=()=>c(re,oe),ue=e=>{const t=ie()||{};for(const n of e)t[i(n.url)]=n;p(re,t)},de="sound_detection_unregistration_callbacks",ce=(e,t,n)=>{var a;return{url:e.url,type:t,speed:(null===(a=e.speed)||void 0===a?void 0:a.value)||O,language:n}},pe=()=>{var e,t,o,s;c(de)||p(de,[(s=e=>(e=>{const t=e.learningLanguage;a(e.elements)&&ue(e.elements.map((e=>{var t;return(null==e||null===(t=e.line)||void 0===t?void 0:t.content)||(null==e?void 0:e.learningLanguageTitleContent)})).flatMap((e=>[null==e?void 0:e.audio,null==e?void 0:e.audioPrefix,null==e?void 0:e.audioSuffix])).map((e=>null==e?void 0:e.url)).filter(n).map((e=>ae(e,t))))})(e),ne(J,s)),(o=e=>{var t;n((t=e).tts_url)&&ue([ae(t.tts_url,t.sentence_language)])},ne(W,o)),(t=e=>(e=>{const t=[],l=e.learning_language;n(e.tts)&&t.push(le(e.tts,l)),a(e.alternative_forms)&&t.push(e.alternative_forms.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>ae(e,l)))),ue(t.flat())})(e),ne(G,t)),(e=e=>(e=>{const t=[];for(const i of e){var o;const e=b(i),u=w(i);if(n(i.tts)&&t.push(ae(i.tts,e)),n(i.slowTts)&&t.push({url:i.slowTts,type:k,speed:"slow",language:e}),n(i.solutionTts)&&t.push(ae(i.solutionTts,u)),a(i.choices)&&t.push(i.choices.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>le(e,u)))),a(i.tokens)&&t.push(i.tokens.map((e=>null==e?void 0:e.tts)).filter(n).map((t=>le(t,e)))),a(i.questionTokens)&&t.push(i.questionTokens.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>le(e,u)))),a(null===(o=i.metadata)||void 0===o?void 0:o.speakers))for(const e of i.metadata.speakers){var s,r;l(null===(s=e.tts)||void 0===s?void 0:s.tokens)&&t.push(Object.values(e.tts.tokens).filter((e=>n(e.url))).map((e=>ce(e,K,u)))),a(null===(r=e.tts)||void 0===r?void 0:r.sentence)&&t.push(e.tts.sentence.filter((e=>n(e.url))).map((e=>ce(e,k,u))))}a(i.pairs)&&t.push(i.pairs.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>le(e,u))))}ue(t.flat())})(e.challenges),X("practice_challenges_loaded",F,e,(e=>{let t;var n;l(e)&&(t=[{challenges:[e.challenges,e.adaptiveChallenges,null===(n=e.adaptiveInterleavedChallenges)||void 0===n?void 0:n.challenges].filter(a).flat(),sessionMetaData:e.metadata||{}}]);return t}),ne))])},ve=(e,t,n)=>{const a=(e=>{const t=ie()[e];if(l(t))return t;const n=e.match(se);return n?le(e,n.language):null})(i(t));return{url:t,type:(null==a?void 0:a.type)||"unknown",speed:(null==a?void 0:a.speed)||O,language:null==a?void 0:a.language,playbackStrategy:n,sound:e}};((e,t)=>{_("Howl","play",(e=>function(t){var n;p("is_howler_used",!0);const a=String(this._src||(null===(n=this._parent)||void 0===n?void 0:n._src)||"").trim();return""!==a?((e,t,n,a)=>{const l=ve(e,t,n);let o=!1;try{var s;o=null===(s=B(Y,l))||void 0===s?void 0:s.some((e=>!1===e)),B(o?ee:Z,l)}catch(e){y(e,`Could not handle playback for sound "${t}" (using "${n}"): `)}return o?null:a()})(this,a,V,(()=>e.call(this,t))):e.call(this,t)})),pe();const n=Q(e,t)})(Y,e)}(); +!function(){"use strict";const e=()=>{},t=e=>"number"==typeof e&&Number.isFinite(e),n=e=>"string"==typeof e,a=Array.isArray,l=e=>"object"==typeof e&&!!e&&!a(e),o=e=>"function"==typeof e,s=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r=e=>{for(let t in e)if(s(e,t))return!1;return!0},i=e=>{let t=null;if("/"===e.charAt(0)&&("/"===e.charAt(1)?e=`https://${e}`:t=e),null===t)try{t=new URL(e).pathname}catch(n){t=e}return t},u=e=>`__duo-toolbox__-${e}`,d=u("global_variables"),c=(e,t)=>(l(window[d])||(window[d]={}),s(window[d],e)?window[d][e]:t),p=(e,t)=>{l(window[d])||(window[d]={}),window[d][e]=t},v=(e,t,n)=>{const a=t(c(e,n));return p(e,a),a},f=u("original_function"),g=u("override_version"),_=(t,n,a,r=1)=>((e,t,n,a,l=1)=>{s(window,e)&&t(window[e])?n(window[e]):v("pending_global_listeners",((o={})=>{var s;if(!o[e]){o[e]={};let n=window[e];Object.defineProperty(window,e,{get:()=>n,set:a=>{t(a)?(Object.defineProperty(window,e,{value:a,configurable:!0,enumerable:!0,writable:!0}),Object.values(o[e]).forEach((e=>e.callback(a)))):n=a},configurable:!0})}return l>(Number(null===(s=o[e][a])||void 0===s?void 0:s.version)||0)&&(o[e][a]={callback:n,version:l}),o}))})(t,o,(t=>((t,n,a,o=1)=>{var s;if(l(t)&&o>(Number(null===(s=t[n])||void 0===s?void 0:s[g])||0)){var r;const l=(null===(r=t[n])||void 0===r?void 0:r[f])||t[n]||e;t[n]=a(l),t[n][f]=l,t[n][g]=o}})(null==t?void 0:t.prototype,n,a,r)),`instance_method:${n}`,r),h=u("logging_iframe"),m=()=>(()=>{let e=document.getElementById(h);return e&&e.isConnected||(e=document.createElement("iframe"),e.id=h,e.style.display="none",document.body.appendChild(e)),e})().contentWindow.console,y=(...e)=>m().error(...e),b=["characterIntro","characterMatch","characterPuzzle","characterSelect","characterTrace","selectPronunciation","selectTranscription"],w=e=>{var t,n;return(null===(t=e.metadata)||void 0===t?void 0:t.source_language)||e.sourceLanguage||(null===(n=e.metadata)||void 0===n?void 0:n.learning_language)},O=e=>{var t;return(null===(t=e.metadata)||void 0===t?void 0:t.target_language)||e.targetLanguage||w(e)},k="effect",x="tts_sentence",K="tts_word",$="tts_morpheme",j="unknown",V="normal",L="slow",M="howler",T="rate",q="volume",E=u("forced_setting"),S=e=>l(e)&&!!e[E],N=e=>e.value,C=e=>({[E]:!0,value:e}),I=(e,n)=>T===e&&t(n)||q===e&&n>=0&&n<=1,P=(e,n)=>((e,t,n,a=1)=>{if(!l(e))return;const o=u(`${t}_override_version`);a>(Number(e[o])||0)&&Object.defineProperty(e,t,n(Object.getOwnPropertyDescriptor(e,t)))})(HTMLMediaElement,n,(n=>({...n,set:function(a){const l=D[e];t(a)?(this[l.originalValueKey]=a,s(this,l.valueKey)&&(a=this[l.isRelativeKey]?H(e,a*this[l.valueKey]):this[l.valueKey])):S(a)&&(a=N(a)),t(a)&&(this[l.listenerValueKey]=a),n.set.call(this,a)}}))),R=(e,t)=>_("Howl",t,(n=>function(){const a=this,l=arguments,o=D[e];let r=!1;const i=a._queue.length;(1===l.length||2===l.length&&void 0===l[1])&&-1===a._getSoundIds().indexOf(l[0])&&(S(l[0])?(r=!0,l[0]=N(l[0])):I(e,l[0])&&(a[o.originalValueKey]=l[0],s(a,o.valueKey)&&(r=!0,a[o.isRelativeKey]?l[0]=H(e,l[0]*a[o.valueKey]):l[0]=a[o.valueKey])),r&&(a[o.listenerValueKey]=l[0]));const u=n.apply(a,arguments);return r&&i({...a,functions:{audio:{applyOverride:()=>P(e,n),getter:e=>e[t],setter:(e,n)=>e[t]=n,hasQueuedUpdate:()=>!1},[M]:{applyOverride:()=>R(e,n),getter:e=>e[n](),setter:(e,t)=>e[n](t),hasQueuedUpdate:e=>e._queue.find((e=>e.event===n))}},priorityKey:u(`${e}_priority`),isRelativeKey:u(`${e}_is_relative`),valueKey:u(`forced_${e}_value`),originalValueKey:u(`original_${e}_value`),listenerValueKey:u(`${e}_value`)}),D={[T]:A(T,"playbackRate","rate",{minValue:.5,maxValue:4,defaultValue:1}),[q]:A(q,"volume","volume",{minValue:0,maxValue:1,defaultValue:1})},H=(e,t)=>D[e]?Math.max(D[e].minValue,Math.min(t,D[e].maxValue)):t,z="event_listeners",B=()=>{return`__listener::${e="last_event_listener_id",v(`__counter::${e}__`,(e=>e+1),0)}__`;var e},U=e=>{var t;return(null===(t=c(z,{}))||void 0===t?void 0:t[e])||{}},Q=(e,t)=>{v(z,(n=>Object.assign(n||{},{[e]:t})))},X=e=>!r(U(e)),F=(e,t)=>{const n=U(e);return r(n)?null:t(Object.values(n))},J=(e,t,n=B())=>{const a=U(e);return a[n]=t,Q(e,a),()=>G(e,n)},W=(e,t,n,l,o=J,s=B())=>{const r=`__${t}::${e}__`;var i;i=r,U(t)[i]||o(t,((...t)=>{const n=l(...t);a(n)&&Y(e,...n)}),r);const u=J(e,n,s);return()=>{u(),X(e)||G(t,r)}},G=(e,t)=>{const n=U(e);delete n[t],Q(e,n)},Y=(e,...t)=>F(e,(e=>e.flatMap((e=>{try{return[e(...t)]}catch(e){return[]}})))),Z="practice_session_loaded",ee="practice_challenges_loaded",te="pre_fetched_session_loaded",ne="story_loaded",ae="alphabets_loaded",le="forum_discussion_loaded",oe="dictionary_lexeme_loaded",se="sound_playback_requested",re="sound_playback_confirmed",ie="sound_playback_cancelled",ue={[ae]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/alphabets\/courses\/(?[^/]+)\/(?[^/?]+)\/?/g,[oe]:/\/api\/1\/dictionary_page/g,[le]:/\/comments\/([\d]+)/g,[Z]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/sessions/g,[ne]:/\/api2\/stories/g,user_data_loaded:/\/[\d]{4}-[\d]{2}-[\d]{2}\/users\/[\d]+/g},de=(e,t,n=B())=>(_("XMLHttpRequest","open",(e=>function(t,n,a,o,s){let r,i;for(const[e,t]of Object.entries(ue))if(i=Array.from(n.matchAll(t))[0],i){r=e;break}return r&&F(r,(e=>{this.addEventListener("load",(()=>{try{const t=l(this.response)?this.response:JSON.parse(this.responseText);e.forEach((e=>e(t,i.groups||{})))}catch(e){y(e,`Could not handle the XHR result (event: ${r}): `)}}))})),e.call(this,t,n,a,o,s)}),2),J(e,t,n)),ce=(e,t=B())=>{const a=te,l=e=>F(a,(t=>{e.addEventListener("success",(()=>{try{t.forEach((t=>t(e.result)))}catch(e){y(e,`Could not handle the IDBRequest result (event: ${a}): `)}}))}));return _("IDBIndex","get",(e=>function(t){const a=e.call(this,t);return n(t)&&t&&"prefetchedSessions"===this.objectStore.name&&l(a),a})),_("IDBObjectStore","get",(e=>function(t){const n=e.call(this,t);return"prefetchedSessions"===this.name&&l(n),n})),J(a,e,t)},pe=e=>{const t=e=>{let t;if(l(e)){var n;t=[{challenges:[e.challenges,e.adaptiveChallenges,null===(n=e.adaptiveInterleavedChallenges)||void 0===n?void 0:n.challenges].filter(a).flat(),sessionMetaData:e.metadata||{}}]}return t},n=W(ee,Z,e,t,de),o=W(ee,te,e,t,((e,t,n)=>ce(t,n)));return()=>{n(),o()}},ve=(e,t)=>({url:e,type:x,speed:V,language:t}),fe=(e,t)=>({url:e,type:K,speed:V,language:t}),ge=(e,t)=>({url:e,type:$,speed:V,language:t}),_e=Object.fromEntries(["/sounds/7abe057dc8446ad325229edd6d8fd250.mp3","/sounds/2aae0ea735c8e9ed884107d6f0a09e35.mp3","/sounds/421d48c53ad6d52618dba715722278e0.mp3","/sounds/37d8f0b39dcfe63872192c89653a93f6.mp3","/sounds/0a27c1ee63dd220647e8410a0029aed2.mp3","/sounds/a28ff0a501ef5f33ca78c0afc45ee53e.mp3","/sounds/2e4669d8cf839272f0731f8afa488caf.mp3","/sounds/f0b6ab4396d5891241ef4ca73b4de13a.mp3"].map((e=>{return[e,(t=e,{url:t,type:k,speed:V,language:null})];var t}))),he=/\/duolingo-data\/tts\/(?[a-z-_]+)\/token\//i,me="sound_type_map",ye=()=>c(me,_e),be=[j,x,K,$,k],we=[V,L],Oe=(e,t)=>((e,t,n)=>{for(const a of e){const e=Number(a(t,n));if(!isNaN(e)&&0!==e)return e}return 0})([(e,t)=>be.indexOf(e.type)-be.indexOf(t.type),(e,t)=>we.indexOf(e.speed)-we.indexOf(t.speed)],e,t),ke=e=>{const t=ye()||{};for(const n of e){const e=i(n.url);(!t[e]||Oe(n,t[e])>0)&&(t[e]=n)}p(me,t)},xe="sound_detection_listeners_version",Ke="sound_detection_unregistration_callbacks",$e=(e,t,n)=>{var a;return{url:e.url,type:t,speed:(null===(a=e.speed)||void 0===a?void 0:a.value)||V,language:n}},je=()=>{const e=2<=(Number(c(xe))||0);var t,o,s,r,i;!!c(Ke)&&e||(e||Ve(),p(xe,2),p(Ke,[(i=e=>(e=>{const t=e.learningLanguage;a(null==e?void 0:e.elements)&&ke(e.elements.map((e=>{var t;return(null==e||null===(t=e.line)||void 0===t?void 0:t.content)||(null==e?void 0:e.learningLanguageTitleContent)})).flatMap((e=>[null==e?void 0:e.audio,null==e?void 0:e.audioPrefix,null==e?void 0:e.audioSuffix])).map((e=>null==e?void 0:e.url)).filter(n).map((e=>ve(e,t))))})(e),de(ne,i)),(s=(e,t)=>((e,t)=>{const l=t.toLanguage;a(null==e?void 0:e.alphabets)&&n(null==t?void 0:t.toLanguage)&&ke(e.alphabets.flatMap((e=>null==e?void 0:e.groups)).flatMap((e=>null==e?void 0:e.characters)).flat().map((e=>null==e?void 0:e.ttsUrl)).filter(n).map((e=>ge(e,l))))})(e,t),de(ae,s,r)),(o=e=>{var t;n(null==(t=e)?void 0:t.tts_url)&&ke([ve(t.tts_url,t.sentence_language)])},de(le,o)),(t=e=>(e=>{const t=[],l=e.learning_language;n(e.tts)&&t.push(fe(e.tts,l)),a(e.alternative_forms)&&t.push(e.alternative_forms.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>ve(e,l)))),ke(t.flat())})(e),de(oe,t)),pe((e=>(e=>{const t=[];for(const i of e){var o;const e=i.type,u=w(i),d=O(i);if(n(i.tts)){const n=b.indexOf(e)>=0?ge:ve;t.push(n(i.tts,u))}if(n(i.slowTts)&&t.push({url:i.slowTts,type:x,speed:L,language:u}),n(i.solutionTts)&&t.push(ve(i.solutionTts,d)),a(i.choices)){const a=-1===b.indexOf(e)?fe:ge;t.push(i.choices.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>a(e,d))))}if(a(i.tokens)&&t.push(i.tokens.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>fe(e,u)))),a(i.questionTokens)&&t.push(i.questionTokens.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>fe(e,d)))),a(null===(o=i.metadata)||void 0===o?void 0:o.speakers))for(const e of i.metadata.speakers){var s,r;l(null===(s=e.tts)||void 0===s?void 0:s.tokens)&&t.push(Object.values(e.tts.tokens).filter((e=>n(e.url))).map((e=>$e(e,K,d)))),a(null===(r=e.tts)||void 0===r?void 0:r.sentence)&&t.push(e.tts.sentence.filter((e=>n(e.url))).map((e=>$e(e,x,d))))}if(a(i.pairs)){const a=-1===b.indexOf(e)?fe:ge;t.push(i.pairs.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>a(e,d))))}a(i.options)&&t.push(i.options.map((e=>null==e?void 0:e.tts)).filter(n).map((e=>fe(e,d))))}ke(t.flat())})(e.challenges)))]))},Ve=()=>{const e=c(Ke);!a(e)||X("sound_initialized")||X(se)||X(ie)||X(re)||(e.forEach((e=>e())),p(xe,null),p(Ke,null))},Le=(e,t,n)=>{const a=(e=>{const t=ye()[e];if(l(t))return t;const n=e.match(he);return n?fe(e,n.language):null})(i(t));return{url:t,type:(null==a?void 0:a.type)||j,speed:(null==a?void 0:a.speed)||V,language:null==a?void 0:a.language,playbackStrategy:n,sound:e}};((e,t)=>{_("Howl","play",(e=>function(t){var n;p("is_howler_used",!0);const a=String(this._src||(null===(n=this._parent)||void 0===n?void 0:n._src)||"").trim();return""!==a?((e,t,n,a)=>{const l=Le(e,t,n);let o=!1;try{var s;o=null===(s=Y(se,l))||void 0===s?void 0:s.some((e=>!1===e)),Y(o?ie:re,l)}catch(e){y(e,`Could not handle playback for sound "${t}" (using "${n}"): `)}return o?null:a()})(this,a,M,(()=>e.call(this,t))):e.call(this,t)})),je();const n=J(e,t)})(se,e)}(); diff --git a/dist/src/popup.js b/dist/src/popup.js index 6d34e4f..dda3b4f 100644 --- a/dist/src/popup.js +++ b/dist/src/popup.js @@ -1 +1 @@ -!function(){"use strict";const e=e=>new Promise((t=>setTimeout(t,e))),t="__duo-toolbox__-"+"action_request";const r=async(e,r)=>o({type:t,action:e,value:r}).then((t=>{if("success"===(null==t?void 0:t.type))return t.value||null;throw new Error((null==t?void 0:t.error)||`An error occurred while processing a "${e}" action.`)})),o=async e=>new Promise(((t,r)=>{if("undefined"==typeof chrome)return browser.runtime.sendMessage(e);chrome.runtime.sendMessage(e,(e=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(e)}))})),n={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:"never"},a="is-loading",c=Object.fromEntries(Array.from(document.querySelectorAll('input[type="checkbox"]')).map((e=>[e.name,e]))),s=Array.from(document.querySelectorAll('input[type="radio"]')).reduce(((e,t)=>(!e[t.name]&&(e[t.name]={}),e[t.name][t.value]=t,e)),{}),i=[...Object.values(c),...Object.values(s).flatMap((e=>Object.values(e)))];async function l(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;document.body.classList.add(a),i.forEach((e=>e.disabled=!0));try{await Promise.all([t(),e(r)])}finally{i.forEach((e=>e.disabled=!1)),document.body.classList.remove(a)}}i.forEach((e=>e.addEventListener("change",(e=>l((()=>{return r("update_options",{[e.target.name]:(t=e.target.name,c[t]?c[t].checked:s[t]?null===(o=Object.values(s[t]).find((e=>e.checked)))||void 0===o?void 0:o.value:void 0)});var t,o}),250))))),l((()=>r("get_options").catch((()=>n)).then((e=>{for(const[r,o]of Object.entries(e)){var t;c[r]?c[r].checked=!!o:null!==(t=s[r])&&void 0!==t&&t[o]&&(s[r][o].checked=!0)}document.body.classList.remove(a)}))))}(); +!function(){"use strict";const e=e=>new Promise((t=>setTimeout(t,e))),t=`__duo-toolbox__-${"action_request"}`;const r=async(e,r)=>o({type:t,action:e,value:r}).then((t=>{if("success"===(null==t?void 0:t.type))return t.value||null;throw new Error((null==t?void 0:t.error)||`An error occurred while processing a "${e}" action.`)})),o=async e=>new Promise(((t,r)=>{if("undefined"==typeof chrome)return browser.runtime.sendMessage(e);chrome.runtime.sendMessage(e,(e=>{chrome.runtime.lastError?r(chrome.runtime.lastError):t(e)}))})),n={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:"never"},a="is-loading",c=Object.fromEntries(Array.from(document.querySelectorAll('input[type="checkbox"]')).map((e=>[e.name,e]))),s=Array.from(document.querySelectorAll('input[type="radio"]')).reduce(((e,t)=>(!e[t.name]&&(e[t.name]={}),e[t.name][t.value]=t,e)),{}),i=[...Object.values(c),...Object.values(s).flatMap((e=>Object.values(e)))];async function l(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;document.body.classList.add(a),i.forEach((e=>e.disabled=!0));try{await Promise.all([t(),e(r)])}finally{i.forEach((e=>e.disabled=!1)),document.body.classList.remove(a)}}i.forEach((e=>e.addEventListener("change",(e=>l((()=>{return r("update_options",{[e.target.name]:(t=e.target.name,c[t]?c[t].checked:s[t]?null===(o=Object.values(s[t]).find((e=>e.checked)))||void 0===o?void 0:o.value:void 0)});var t,o}),250))))),l((()=>r("get_options").catch((()=>n)).then((e=>{for(const[r,o]of Object.entries(e)){var t;c[r]?c[r].checked=!!o:null!==(t=s[r])&&void 0!==t&&t[o]&&(s[r][o].checked=!0)}document.body.classList.remove(a)}))))}(); diff --git a/dist/src/ui.js b/dist/src/ui.js index 3cf1219..1b60e57 100644 --- a/dist/src/ui.js +++ b/dist/src/ui.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n=(function(e,t){var n;window,n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=72)}([function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(66),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(70),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(57);Object.defineProperty(t,"closest",{enumerable:!0,get:function(){return a(r).default}});var o=n(55);Object.defineProperty(t,"requestNextAnimationFrame",{enumerable:!0,get:function(){return a(o).default}});var s=n(53);Object.defineProperty(t,"distance",{enumerable:!0,get:function(){return a(s).default}});var i=n(51);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"touchCoords",{enumerable:!0,get:function(){return a(i).default}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(46);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(49),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(14);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o=n(13);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}})}));var s=n(12);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}})}));var i=n(6);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}));var a,l=n(39),u=(a=l)&&a.__esModule?a:{default:a};t.default=u.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(4);Object.defineProperty(t,"Sensor",{enumerable:!0,get:function(){return u(r).default}});var o=n(48);Object.defineProperty(t,"MouseSensor",{enumerable:!0,get:function(){return u(o).default}});var s=n(45);Object.defineProperty(t,"TouchSensor",{enumerable:!0,get:function(){return u(s).default}});var i=n(43);Object.defineProperty(t,"DragSensor",{enumerable:!0,get:function(){return u(i).default}});var a=n(41);Object.defineProperty(t,"ForceTouchSensor",{enumerable:!0,get:function(){return u(a).default}});var l=n(3);function u(e){return e&&e.__esModule?e:{default:e}}Object.keys(l).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return l[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(20);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(25);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(29);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(32);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(35);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(68);Object.defineProperty(t,"Announcement",{enumerable:!0,get:function(){return a(r).default}}),Object.defineProperty(t,"defaultAnnouncementOptions",{enumerable:!0,get:function(){return r.defaultOptions}});var o=n(65);Object.defineProperty(t,"Focusable",{enumerable:!0,get:function(){return a(o).default}});var s=n(63);Object.defineProperty(t,"Mirror",{enumerable:!0,get:function(){return a(s).default}}),Object.defineProperty(t,"defaultMirrorOptions",{enumerable:!0,get:function(){return s.defaultOptions}});var i=n(59);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Scrollable",{enumerable:!0,get:function(){return a(i).default}}),Object.defineProperty(t,"defaultScrollableOptions",{enumerable:!0,get:function(){return i.defaultOptions}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(69);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(71);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t({domEl:e,offsetTop:e.offsetTop,offsetLeft:e.offsetLeft})))}[a]({oldIndex:e,newIndex:t}){if(e===t)return;const n=[];let r,o,s;e>t?(r=t,o=e-1,s=1):(r=e+1,o=t,s=-1);for(let e=r;e<=o;e++){const t=this.lastElements[e],r=this.lastElements[e+s];n.push({from:t,to:r})}cancelAnimationFrame(this.lastAnimationFrame),this.lastAnimationFrame=requestAnimationFrame((()=>{n.forEach((e=>function({from:e,to:t},{duration:n,easingFunction:r}){const o=e.domEl,s=e.offsetLeft-t.offsetLeft,i=e.offsetTop-t.offsetTop;o.style.pointerEvents="none",o.style.transform=`translate3d(${s}px, ${i}px, 0)`,requestAnimationFrame((()=>{o.addEventListener("transitionend",c),o.style.transition=`transform ${n}ms ${r}`,o.style.transform=""}))}(e,this.options)))}))}}function c(e){e.target.style.transition="",e.target.style.pointerEvents="",e.target.removeEventListener("transitionend",c)}t.default=d},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(15),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{e>=t?d(r,o,this.options):d(o,r,this.options)}))}}function d(e,t,{duration:n,easingFunction:r,horizontal:o}){for(const n of[e,t])n.style.pointerEvents="none";if(o){const n=e.offsetWidth;e.style.transform=`translate3d(${n}px, 0, 0)`,t.style.transform=`translate3d(-${n}px, 0, 0)`}else{const n=e.offsetHeight;e.style.transform=`translate3d(0, ${n}px, 0)`,t.style.transform=`translate3d(0, -${n}px, 0)`}requestAnimationFrame((()=>{for(const o of[e,t])o.addEventListener("transitionend",c),o.style.transition=`transform ${n}ms ${r}`,o.style.transform=""}))}function c(e){e.target.style.transition="",e.target.style.pointerEvents="",e.target.removeEventListener("transitionend",c)}t.default=u},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(17),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(0),s=(r=o)&&r.__esModule?r:{default:r},i=n(7);const a=Symbol("onDragStart"),l=Symbol("onDragStop"),u=Symbol("onDragOver"),d=Symbol("onDragOut"),c=Symbol("onMirrorCreated"),h=Symbol("onMirrorDestroy");class g extends s.default{constructor(e){super(e),this.firstSource=null,this.mirror=null,this[a]=this[a].bind(this),this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){this.draggable.on("drag:start",this[a]).on("drag:stop",this[l]).on("drag:over",this[u]).on("drag:out",this[d]).on("droppable:over",this[u]).on("droppable:out",this[d]).on("mirror:created",this[c]).on("mirror:destroy",this[h])}detach(){this.draggable.off("drag:start",this[a]).off("drag:stop",this[l]).off("drag:over",this[u]).off("drag:out",this[d]).off("droppable:over",this[u]).off("droppable:out",this[d]).off("mirror:created",this[c]).off("mirror:destroy",this[h])}[a](e){e.canceled()||(this.firstSource=e.source)}[l](){this.firstSource=null}[u](e){if(e.canceled())return;const t=e.source||e.dragEvent.source;if(t===this.firstSource)return void(this.firstSource=null);const n=new i.SnapInEvent({dragEvent:e,snappable:e.over||e.droppable});this.draggable.trigger(n),n.canceled()||(this.mirror&&(this.mirror.style.display="none"),t.classList.remove(...this.draggable.getClassNamesFor("source:dragging")),t.classList.add(...this.draggable.getClassNamesFor("source:placed")),setTimeout((()=>{t.classList.remove(...this.draggable.getClassNamesFor("source:placed"))}),this.draggable.options.placedTimeout))}[d](e){if(e.canceled())return;const t=e.source||e.dragEvent.source,n=new i.SnapOutEvent({dragEvent:e,snappable:e.over||e.droppable});this.draggable.trigger(n),n.canceled()||(this.mirror&&(this.mirror.style.display=""),t.classList.add(...this.draggable.getClassNamesFor("source:dragging")))}[c]({mirror:e}){this.mirror=e}[h](){this.mirror=null}}t.default=g},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SnapOutEvent=t.SnapInEvent=t.SnapEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}get snappable(){return this.data.snappable}}t.SnapEvent=i,i.type="snap";class a extends i{}t.SnapInEvent=a,a.type="snap:in",a.cancelable=!0;class l extends i{}t.SnapOutEvent=l,l.type="snap:out",l.cancelable=!0},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(7);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(19),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{if(!this.mirror.parentNode)return;this.mirror.parentNode!==e&&e.appendChild(this.mirror);const n=t||this.draggable.getDraggableElementsForContainer(e)[0];n&&(0,a.requestNextAnimationFrame)((()=>{const e=n.getBoundingClientRect();this.lastHeight===e.height&&this.lastWidth===e.width||(this.mirror.style.width=e.width+"px",this.mirror.style.height=e.height+"px",this.lastWidth=e.width,this.lastHeight=e.height)}))}))}}t.default=g},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(22),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(0),s=(r=o)&&r.__esModule?r:{default:r},i=n(2),a=n(8);const l=Symbol("onDragMove"),u=Symbol("onDragStop"),d=Symbol("onRequestAnimationFrame");class c extends s.default{constructor(e){super(e),this.currentlyCollidingElement=null,this.lastCollidingElement=null,this.currentAnimationFrame=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this)}attach(){this.draggable.on("drag:move",this[l]).on("drag:stop",this[u])}detach(){this.draggable.off("drag:move",this[l]).off("drag:stop",this[u])}getCollidables(){const e=this.draggable.options.collidables;return"string"==typeof e?Array.prototype.slice.call(document.querySelectorAll(e)):e instanceof NodeList||e instanceof Array?Array.prototype.slice.call(e):e instanceof HTMLElement?[e]:"function"==typeof e?e():[]}[l](e){const t=e.sensorEvent.target;this.currentAnimationFrame=requestAnimationFrame(this[d](t)),this.currentlyCollidingElement&&e.cancel();const n=new a.CollidableInEvent({dragEvent:e,collidingElement:this.currentlyCollidingElement}),r=new a.CollidableOutEvent({dragEvent:e,collidingElement:this.lastCollidingElement}),o=Boolean(this.currentlyCollidingElement&&this.lastCollidingElement!==this.currentlyCollidingElement),s=Boolean(!this.currentlyCollidingElement&&this.lastCollidingElement);o?(this.lastCollidingElement&&this.draggable.trigger(r),this.draggable.trigger(n)):s&&this.draggable.trigger(r),this.lastCollidingElement=this.currentlyCollidingElement}[u](e){const t=this.currentlyCollidingElement||this.lastCollidingElement,n=new a.CollidableOutEvent({dragEvent:e,collidingElement:t});t&&this.draggable.trigger(n),this.lastCollidingElement=null,this.currentlyCollidingElement=null}[d](e){return()=>{const t=this.getCollidables();this.currentlyCollidingElement=(0,i.closest)(e,(e=>t.includes(e)))}}}t.default=c},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.CollidableOutEvent=t.CollidableInEvent=t.CollidableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}}t.CollidableEvent=i,i.type="collidable";class a extends i{get collidingElement(){return this.data.collidingElement}}t.CollidableInEvent=a,a.type="collidable:in";class l extends i{get collidingElement(){return this.data.collidingElement}}t.CollidableOutEvent=l,l.type="collidable:out"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(8);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(24),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"Collidable",{enumerable:!0,get:function(){return l(r).default}});var o=n(23);Object.defineProperty(t,"ResizeMirror",{enumerable:!0,get:function(){return l(o).default}}),Object.defineProperty(t,"defaultResizeMirrorOptions",{enumerable:!0,get:function(){return o.defaultOptions}});var s=n(21);Object.defineProperty(t,"Snappable",{enumerable:!0,get:function(){return l(s).default}});var i=n(18);Object.defineProperty(t,"SwapAnimation",{enumerable:!0,get:function(){return l(i).default}}),Object.defineProperty(t,"defaultSwapAnimationOptions",{enumerable:!0,get:function(){return i.defaultOptions}});var a=n(16);function l(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"SortAnimation",{enumerable:!0,get:function(){return l(a).default}}),Object.defineProperty(t,"defaultSortAnimationOptions",{enumerable:!0,get:function(){return a.defaultOptions}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;tt!==this.originalSource&&t!==this.mirror&&t.parentNode===e))}[l](e){this.startContainer=e.source.parentNode,this.startIndex=this.index(e.source);const t=new a.SortableStartEvent({dragEvent:e,startIndex:this.startIndex,startContainer:this.startContainer});this.trigger(t),t.canceled()&&e.cancel()}[u](e){if(e.canceled())return;const{source:t,over:n,overContainer:r}=e,o=this.index(t),s=new a.SortableSortEvent({dragEvent:e,currentIndex:o,source:t,over:n});if(this.trigger(s),s.canceled())return;const i=p({source:t,over:n,overContainer:r,children:this.getSortableElementsForContainer(r)});if(!i)return;const{oldContainer:l,newContainer:u}=i,d=this.index(e.source),c=new a.SortableSortedEvent({dragEvent:e,oldIndex:o,newIndex:d,oldContainer:l,newContainer:u});this.trigger(c)}[d](e){if(e.over===e.originalSource||e.over===e.source)return;const{source:t,over:n,overContainer:r}=e,o=this.index(t),s=new a.SortableSortEvent({dragEvent:e,currentIndex:o,source:t,over:n});if(this.trigger(s),s.canceled())return;const i=p({source:t,over:n,overContainer:r,children:this.getDraggableElementsForContainer(r)});if(!i)return;const{oldContainer:l,newContainer:u}=i,d=this.index(t),c=new a.SortableSortedEvent({dragEvent:e,oldIndex:o,newIndex:d,oldContainer:l,newContainer:u});this.trigger(c)}[c](e){const t=new a.SortableStopEvent({dragEvent:e,oldIndex:this.startIndex,newIndex:this.index(e.source),oldContainer:this.startContainer,newContainer:e.source.parentNode});this.trigger(t),this.startIndex=null,this.startContainer=null}}function f(e){return Array.prototype.indexOf.call(e.parentNode.children,e)}function p({source:e,over:t,overContainer:n,children:r}){const o=!r.length,s=e.parentNode!==n,i=t&&e.parentNode===t.parentNode;return o?function(e,t){const n=e.parentNode;return t.appendChild(e),{oldContainer:n,newContainer:t}}(e,n):i?function(e,t){const n=f(e),r=f(t);return n{r.insertBefore(o,e),n.insertBefore(e,t),r.insertBefore(t,o)}))}t.default=h},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SwappableStopEvent=t.SwappableSwappedEvent=t.SwappableSwapEvent=t.SwappableStartEvent=t.SwappableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}}t.SwappableEvent=i,i.type="swappable";class a extends i{}t.SwappableStartEvent=a,a.type="swappable:start",a.cancelable=!0;class l extends i{get over(){return this.data.over}get overContainer(){return this.data.overContainer}}t.SwappableSwapEvent=l,l.type="swappable:swap",l.cancelable=!0;class u extends i{get swappedElement(){return this.data.swappedElement}}t.SwappableSwappedEvent=u,u.type="swappable:swapped";class d extends i{}t.SwappableStopEvent=d,d.type="swappable:stop"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(10);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(31),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t=0;r--){const o=t[r];try{o(e)}catch(e){n.push(e)}}return n.length&&console.error(`Draggable caught errors while triggering '${e.type}'`,n),this}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(37),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t"Picked up "+(e.source.textContent.trim()||e.source.id||"draggable element"),"drag:stop":e=>"Released "+(e.source.textContent.trim()||e.source.id||"draggable element")},m={"container:dragging":"draggable-container--is-dragging","source:dragging":"draggable-source--is-dragging","source:placed":"draggable-source--placed","container:placed":"draggable-container--placed","body:dragging":"draggable--is-dragging","draggable:over":"draggable--over","container:over":"draggable-container--over","source:original":"draggable--original",mirror:"draggable-mirror"},b=t.defaultOptions={draggable:".draggable-source",handle:null,delay:{},distance:0,placedTimeout:800,plugins:[],sensors:[],exclude:{plugins:[],sensors:[]}};class y{constructor(e=[document.body],t={}){if(e instanceof NodeList||e instanceof Array)this.containers=[...e];else{if(!(e instanceof HTMLElement))throw new Error("Draggable containers are expected to be of type `NodeList`, `HTMLElement[]` or `HTMLElement`");this.containers=[e]}this.options=o({},b,t,{classes:o({},m,t.classes||{}),announcements:o({},v,t.announcements||{}),exclude:{plugins:t.exclude&&t.exclude.plugins||[],sensors:t.exclude&&t.exclude.sensors||[]}}),this.emitter=new l.default,this.dragging=!1,this.plugins=[],this.sensors=[],this[h]=this[h].bind(this),this[g]=this[g].bind(this),this[f]=this[f].bind(this),this[p]=this[p].bind(this),document.addEventListener("drag:start",this[h],!0),document.addEventListener("drag:move",this[g],!0),document.addEventListener("drag:stop",this[f],!0),document.addEventListener("drag:pressure",this[p],!0);const n=Object.values(y.Plugins).filter((e=>!this.options.exclude.plugins.includes(e))),r=Object.values(y.Sensors).filter((e=>!this.options.exclude.sensors.includes(e)));this.addPlugin(...n,...this.options.plugins),this.addSensor(...r,...this.options.sensors);const s=new d.DraggableInitializedEvent({draggable:this});this.on("mirror:created",(({mirror:e})=>this.mirror=e)),this.on("mirror:destroy",(()=>this.mirror=null)),this.trigger(s)}destroy(){document.removeEventListener("drag:start",this[h],!0),document.removeEventListener("drag:move",this[g],!0),document.removeEventListener("drag:stop",this[f],!0),document.removeEventListener("drag:pressure",this[p],!0);const e=new d.DraggableDestroyEvent({draggable:this});this.trigger(e),this.removePlugin(...this.plugins.map((e=>e.constructor))),this.removeSensor(...this.sensors.map((e=>e.constructor)))}addPlugin(...e){const t=e.map((e=>new e(this)));return t.forEach((e=>e.attach())),this.plugins=[...this.plugins,...t],this}removePlugin(...e){return this.plugins.filter((t=>e.includes(t.constructor))).forEach((e=>e.detach())),this.plugins=this.plugins.filter((t=>!e.includes(t.constructor))),this}addSensor(...e){const t=e.map((e=>new e(this.containers,this.options)));return t.forEach((e=>e.attach())),this.sensors=[...this.sensors,...t],this}removeSensor(...e){return this.sensors.filter((t=>e.includes(t.constructor))).forEach((e=>e.detach())),this.sensors=this.sensors.filter((t=>!e.includes(t.constructor))),this}addContainer(...e){return this.containers=[...this.containers,...e],this.sensors.forEach((t=>t.addContainer(...e))),this}removeContainer(...e){return this.containers=this.containers.filter((t=>!e.includes(t))),this.sensors.forEach((t=>t.removeContainer(...e))),this}on(e,...t){return this.emitter.on(e,...t),this}off(e,t){return this.emitter.off(e,t),this}trigger(e){return this.emitter.trigger(e),this}getClassNameFor(e){return this.getClassNamesFor(e)[0]}getClassNamesFor(e){const t=this.options.classes[e];return t instanceof Array?t:"string"==typeof t||t instanceof String?[t]:[]}isDragging(){return Boolean(this.dragging)}getDraggableElements(){return this.containers.reduce(((e,t)=>[...e,...this.getDraggableElementsForContainer(t)]),[])}getDraggableElementsForContainer(e){return[...e.querySelectorAll(this.options.draggable)].filter((e=>e!==this.originalSource&&e!==this.mirror))}[h](e){const t=E(e),{target:n,container:r}=t;if(!this.containers.includes(r))return;if(this.options.handle&&n&&!(0,s.closest)(n,this.options.handle))return void t.cancel();if(this.originalSource=(0,s.closest)(n,this.options.draggable),this.sourceContainer=r,!this.originalSource)return void t.cancel();this.lastPlacedSource&&this.lastPlacedContainer&&(clearTimeout(this.placedTimeoutID),this.lastPlacedSource.classList.remove(...this.getClassNamesFor("source:placed")),this.lastPlacedContainer.classList.remove(...this.getClassNamesFor("container:placed"))),this.source=this.originalSource.cloneNode(!0),this.originalSource.parentNode.insertBefore(this.source,this.originalSource),this.originalSource.style.display="none";const i=new c.DragStartEvent({source:this.source,originalSource:this.originalSource,sourceContainer:r,sensorEvent:t});if(this.trigger(i),this.dragging=!i.canceled(),i.canceled())return this.source.parentNode.removeChild(this.source),void(this.originalSource.style.display=null);this.originalSource.classList.add(...this.getClassNamesFor("source:original")),this.source.classList.add(...this.getClassNamesFor("source:dragging")),this.sourceContainer.classList.add(...this.getClassNamesFor("container:dragging")),document.body.classList.add(...this.getClassNamesFor("body:dragging")),_(document.body,"none"),requestAnimationFrame((()=>{const t=E(e).clone({target:this.source});this[g](o({},e,{detail:t}))}))}[g](e){if(!this.dragging)return;const t=E(e),{container:n}=t;let r=t.target;const o=new c.DragMoveEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t});this.trigger(o),o.canceled()&&t.cancel(),r=(0,s.closest)(r,this.options.draggable);const i=(0,s.closest)(t.target,this.containers),a=t.overContainer||i,l=this.currentOverContainer&&a!==this.currentOverContainer,u=this.currentOver&&r!==this.currentOver,d=a&&this.currentOverContainer!==a,h=i&&r&&this.currentOver!==r;if(u){const e=new c.DragOutEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,over:this.currentOver,overContainer:this.currentOverContainer});this.currentOver.classList.remove(...this.getClassNamesFor("draggable:over")),this.currentOver=null,this.trigger(e)}if(l){const e=new c.DragOutContainerEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:this.currentOverContainer});this.currentOverContainer.classList.remove(...this.getClassNamesFor("container:over")),this.currentOverContainer=null,this.trigger(e)}if(d){a.classList.add(...this.getClassNamesFor("container:over"));const e=new c.DragOverContainerEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:a});this.currentOverContainer=a,this.trigger(e)}if(h){r.classList.add(...this.getClassNamesFor("draggable:over"));const e=new c.DragOverEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:a,over:r});this.currentOver=r,this.trigger(e)}}[f](e){if(!this.dragging)return;this.dragging=!1;const t=new c.DragStopEvent({source:this.source,originalSource:this.originalSource,sensorEvent:e.sensorEvent,sourceContainer:this.sourceContainer});this.trigger(t),this.source.parentNode.insertBefore(this.originalSource,this.source),this.source.parentNode.removeChild(this.source),this.originalSource.style.display="",this.source.classList.remove(...this.getClassNamesFor("source:dragging")),this.originalSource.classList.remove(...this.getClassNamesFor("source:original")),this.originalSource.classList.add(...this.getClassNamesFor("source:placed")),this.sourceContainer.classList.add(...this.getClassNamesFor("container:placed")),this.sourceContainer.classList.remove(...this.getClassNamesFor("container:dragging")),document.body.classList.remove(...this.getClassNamesFor("body:dragging")),_(document.body,""),this.currentOver&&this.currentOver.classList.remove(...this.getClassNamesFor("draggable:over")),this.currentOverContainer&&this.currentOverContainer.classList.remove(...this.getClassNamesFor("container:over")),this.lastPlacedSource=this.originalSource,this.lastPlacedContainer=this.sourceContainer,this.placedTimeoutID=setTimeout((()=>{this.lastPlacedSource&&this.lastPlacedSource.classList.remove(...this.getClassNamesFor("source:placed")),this.lastPlacedContainer&&this.lastPlacedContainer.classList.remove(...this.getClassNamesFor("container:placed")),this.lastPlacedSource=null,this.lastPlacedContainer=null}),this.options.placedTimeout);const n=new c.DragStoppedEvent({source:this.source,originalSource:this.originalSource,sensorEvent:e.sensorEvent,sourceContainer:this.sourceContainer});this.trigger(n),this.source=null,this.originalSource=null,this.currentOverContainer=null,this.currentOver=null,this.sourceContainer=null}[p](e){if(!this.dragging)return;const t=E(e),n=this.source||(0,s.closest)(t.originalEvent.target,this.options.draggable),r=new c.DragPressureEvent({sensorEvent:t,source:n,pressure:t.pressure});this.trigger(r)}}function E(e){return e.detail}function _(e,t){e.style.webkitUserSelect=t,e.style.mozUserSelect=t,e.style.msUserSelect=t,e.style.oUserSelect=t,e.style.userSelect=t}t.default=y,y.Plugins={Announcement:i.Announcement,Focusable:i.Focusable,Mirror:i.Mirror,Scrollable:i.Scrollable},y.Sensors={MouseSensor:u.MouseSensor,TouchSensor:u.TouchSensor}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(4),s=(r=o)&&r.__esModule?r:{default:r},i=n(3);const a=Symbol("onMouseForceWillBegin"),l=Symbol("onMouseForceDown"),u=Symbol("onMouseDown"),d=Symbol("onMouseForceChange"),c=Symbol("onMouseMove"),h=Symbol("onMouseUp"),g=Symbol("onMouseForceGlobalChange");class f extends s.default{constructor(e=[],t={}){super(e,t),this.mightDrag=!1,this[a]=this[a].bind(this),this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){for(const e of this.containers)e.addEventListener("webkitmouseforcewillbegin",this[a],!1),e.addEventListener("webkitmouseforcedown",this[l],!1),e.addEventListener("mousedown",this[u],!0),e.addEventListener("webkitmouseforcechanged",this[d],!1);document.addEventListener("mousemove",this[c]),document.addEventListener("mouseup",this[h])}detach(){for(const e of this.containers)e.removeEventListener("webkitmouseforcewillbegin",this[a],!1),e.removeEventListener("webkitmouseforcedown",this[l],!1),e.removeEventListener("mousedown",this[u],!0),e.removeEventListener("webkitmouseforcechanged",this[d],!1);document.removeEventListener("mousemove",this[c]),document.removeEventListener("mouseup",this[h])}[a](e){e.preventDefault(),this.mightDrag=!0}[l](e){if(this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=e.currentTarget,r=new i.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),this.currentContainer=n,this.dragging=!r.canceled(),this.mightDrag=!1}[h](e){if(!this.dragging)return;const t=new i.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:null,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,t),this.currentContainer=null,this.dragging=!1,this.mightDrag=!1}[u](e){this.mightDrag&&(e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault())}[c](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new i.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}[d](e){if(this.dragging)return;const t=e.target,n=e.currentTarget,r=new i.DragPressureSensorEvent({pressure:e.webkitForce,clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r)}[g](e){if(!this.dragging)return;const t=e.target,n=new i.DragPressureSensorEvent({pressure:e.webkitForce,clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(40),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onMouseDown"),u=Symbol("onMouseUp"),d=Symbol("onDragStart"),c=Symbol("onDragOver"),h=Symbol("onDragEnd"),g=Symbol("onDrop"),f=Symbol("reset");class p extends i.default{constructor(e=[],t={}){super(e,t),this.mouseDownTimeout=null,this.draggableElement=null,this.nativeDraggableElement=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this)}attach(){document.addEventListener("mousedown",this[l],!0)}detach(){document.removeEventListener("mousedown",this[l],!0)}[d](e){e.dataTransfer.setData("text",""),e.dataTransfer.effectAllowed=this.options.type;const t=document.elementFromPoint(e.clientX,e.clientY);if(this.currentContainer=(0,o.closest)(e.target,this.containers),!this.currentContainer)return;const n=new a.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});setTimeout((()=>{this.trigger(this.currentContainer,n),n.canceled()?this.dragging=!1:this.dragging=!0}),0)}[c](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=this.currentContainer,r=new a.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),r.canceled()||(e.preventDefault(),e.dataTransfer.dropEffect=this.options.type)}[h](e){if(!this.dragging)return;document.removeEventListener("mouseup",this[u],!0);const t=document.elementFromPoint(e.clientX,e.clientY),n=this.currentContainer,r=new a.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),this.dragging=!1,this.startEvent=null,this[f]()}[g](e){e.preventDefault()}[l](e){if(e.target&&(e.target.form||e.target.contenteditable))return;const t=(0,o.closest)(e.target,(e=>e.draggable));t&&(t.draggable=!1,this.nativeDraggableElement=t),document.addEventListener("mouseup",this[u],!0),document.addEventListener("dragstart",this[d],!1),document.addEventListener("dragover",this[c],!1),document.addEventListener("dragend",this[h],!1),document.addEventListener("drop",this[g],!1);const n=(0,o.closest)(e.target,this.options.draggable);n&&(this.startEvent=e,this.mouseDownTimeout=setTimeout((()=>{n.draggable=!0,this.draggableElement=n}),this.delay.drag))}[u](){this[f]()}[f](){clearTimeout(this.mouseDownTimeout),document.removeEventListener("mouseup",this[u],!0),document.removeEventListener("dragstart",this[d],!1),document.removeEventListener("dragover",this[c],!1),document.removeEventListener("dragend",this[h],!1),document.removeEventListener("drop",this[g],!1),this.nativeDraggableElement&&(this.nativeDraggableElement.draggable=!0,this.nativeDraggableElement=null),this.draggableElement&&(this.draggableElement.draggable=!1,this.draggableElement=null)}}t.default=p},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(42),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onTouchStart"),u=Symbol("onTouchEnd"),d=Symbol("onTouchMove"),c=Symbol("startDrag"),h=Symbol("onDistanceChange");let g=!1;window.addEventListener("touchmove",(e=>{g&&e.preventDefault()}),{passive:!1});class f extends i.default{constructor(e=[],t={}){super(e,t),this.currentScrollableParent=null,this.tapTimeout=null,this.touchMoved=!1,this.pageX=null,this.pageY=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){document.addEventListener("touchstart",this[l])}detach(){document.removeEventListener("touchstart",this[l])}[l](e){const t=(0,o.closest)(e.target,this.containers);if(!t)return;const{distance:n=0}=this.options,{delay:r}=this,{pageX:s,pageY:i}=(0,o.touchCoords)(e);Object.assign(this,{pageX:s,pageY:i}),this.onTouchStartAt=Date.now(),this.startEvent=e,this.currentContainer=t,document.addEventListener("touchend",this[u]),document.addEventListener("touchcancel",this[u]),document.addEventListener("touchmove",this[h]),t.addEventListener("contextmenu",p),n&&(g=!0),this.tapTimeout=window.setTimeout((()=>{this[h]({touches:[{pageX:this.pageX,pageY:this.pageY}]})}),r.touch)}[c](){const e=this.startEvent,t=this.currentContainer,n=(0,o.touchCoords)(e),r=new a.DragStartSensorEvent({clientX:n.pageX,clientY:n.pageY,target:e.target,container:t,originalEvent:e});this.trigger(this.currentContainer,r),this.dragging=!r.canceled(),this.dragging&&document.addEventListener("touchmove",this[d]),g=this.dragging}[h](e){const{distance:t}=this.options,{startEvent:n,delay:r}=this,s=(0,o.touchCoords)(n),i=(0,o.touchCoords)(e),a=Date.now()-this.onTouchStartAt,l=(0,o.distance)(s.pageX,s.pageY,i.pageX,i.pageY);Object.assign(this,i),clearTimeout(this.tapTimeout),a=t&&(document.removeEventListener("touchmove",this[h]),this[c]())}[d](e){if(!this.dragging)return;const{pageX:t,pageY:n}=(0,o.touchCoords)(e),r=document.elementFromPoint(t-window.scrollX,n-window.scrollY),s=new a.DragMoveSensorEvent({clientX:t,clientY:n,target:r,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,s)}[u](e){if(clearTimeout(this.tapTimeout),g=!1,document.removeEventListener("touchend",this[u]),document.removeEventListener("touchcancel",this[u]),document.removeEventListener("touchmove",this[h]),this.currentContainer&&this.currentContainer.removeEventListener("contextmenu",p),!this.dragging)return;document.removeEventListener("touchmove",this[d]);const{pageX:t,pageY:n}=(0,o.touchCoords)(e),r=document.elementFromPoint(t-window.scrollX,n-window.scrollY);e.preventDefault();const s=new a.DragStopSensorEvent({clientX:t,clientY:n,target:r,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,s),this.currentContainer=null,this.dragging=!1,this.startEvent=null}}function p(e){e.preventDefault(),e.stopPropagation()}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(44),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.DragPressureSensorEvent=t.DragStopSensorEvent=t.DragMoveSensorEvent=t.DragStartSensorEvent=t.SensorEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get originalEvent(){return this.data.originalEvent}get clientX(){return this.data.clientX}get clientY(){return this.data.clientY}get target(){return this.data.target}get container(){return this.data.container}get pressure(){return this.data.pressure}}t.SensorEvent=i;class a extends i{}t.DragStartSensorEvent=a,a.type="drag:start";class l extends i{}t.DragMoveSensorEvent=l,l.type="drag:move";class u extends i{}t.DragStopSensorEvent=u,u.type="drag:stop";class d extends i{}t.DragPressureSensorEvent=d,d.type="drag:pressure"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onContextMenuWhileDragging"),u=Symbol("onMouseDown"),d=Symbol("onMouseMove"),c=Symbol("onMouseUp"),h=Symbol("startDrag"),g=Symbol("onDistanceChange");class f extends i.default{constructor(e=[],t={}){super(e,t),this.mouseDownTimeout=null,this.pageX=null,this.pageY=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this)}attach(){document.addEventListener("mousedown",this[u],!0)}detach(){document.removeEventListener("mousedown",this[u],!0)}[u](e){if(0!==e.button||e.ctrlKey||e.metaKey)return;const t=(0,o.closest)(e.target,this.containers);if(!t)return;const{delay:n}=this,{pageX:r,pageY:s}=e;Object.assign(this,{pageX:r,pageY:s}),this.onMouseDownAt=Date.now(),this.startEvent=e,this.currentContainer=t,document.addEventListener("mouseup",this[c]),document.addEventListener("dragstart",p),document.addEventListener("mousemove",this[g]),this.mouseDownTimeout=window.setTimeout((()=>{this[g]({pageX:this.pageX,pageY:this.pageY})}),n.mouse)}[h](){const e=this.startEvent,t=this.currentContainer,n=new a.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:e.target,container:t,originalEvent:e});this.trigger(this.currentContainer,n),this.dragging=!n.canceled(),this.dragging&&(document.addEventListener("contextmenu",this[l],!0),document.addEventListener("mousemove",this[d]))}[g](e){const{pageX:t,pageY:n}=e,{distance:r}=this.options,{startEvent:s,delay:i}=this;if(Object.assign(this,{pageX:t,pageY:n}),!this.currentContainer)return;const a=Date.now()-this.onMouseDownAt,l=(0,o.distance)(s.pageX,s.pageY,t,n)||0;clearTimeout(this.mouseDownTimeout),a=r&&(document.removeEventListener("mousemove",this[g]),this[h]())}[d](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new a.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}[c](e){if(clearTimeout(this.mouseDownTimeout),0!==e.button)return;if(document.removeEventListener("mouseup",this[c]),document.removeEventListener("dragstart",p),document.removeEventListener("mousemove",this[g]),!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new a.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n),document.removeEventListener("contextmenu",this[l],!0),document.removeEventListener("mousemove",this[d]),this.currentContainer=null,this.dragging=!1,this.startEvent=null}[l](e){e.preventDefault()}}function p(e){e.preventDefault()}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(47),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t!e.includes(t)))}trigger(e,t){const n=document.createEvent("Event");return n.detail=t,n.initEvent(t.type,!0,!0),e.dispatchEvent(n),this.lastEvent=t,t}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e={}){const{touches:t,changedTouches:n}=e;return t&&t[0]||n&&n[0]}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(50),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){return Math.sqrt((n-e)**2+(r-t)**2)}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(52),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return requestAnimationFrame((()=>{requestAnimationFrame(e)}))}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(54),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!e)return null;const n=t,o=t,s=t,i=t,a=Boolean("string"==typeof t),l=Boolean("function"==typeof t),u=Boolean(t instanceof NodeList||t instanceof Array),d=Boolean(t instanceof HTMLElement);let c=e;do{if(c=c.correspondingUseElement||c.correspondingElement||c,(h=c)?a?r.call(h,n):u?[...s].includes(h):d?i===h:l&&o(h):h)return c;c=c.parentNode}while(c&&c!==document.body&&c!==document);var h;return null};const r=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(56),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=t.scroll=t.onDragStop=t.onDragMove=t.onDragStart=void 0;var r,o=Object.assign||function(e){for(var t=1;t(!n||!function(e){return"static"===getComputedStyle(e).getPropertyValue("position")}(e))&&function(e){const t=/(auto|scroll)/,n=getComputedStyle(e,null),r=n.getPropertyValue("overflow")+n.getPropertyValue("overflow-y")+n.getPropertyValue("overflow-x");return t.test(r)}(e)));return"fixed"!==t&&r?r:f()}(e)}hasDefinedScrollableElements(){return Boolean(0!==this.options.scrollableElements.length)}[l](e){this.findScrollableElementFrame=requestAnimationFrame((()=>{this.scrollableElement=this.getScrollableElement(e.source)}))}[u](e){if(this.findScrollableElementFrame=requestAnimationFrame((()=>{this.scrollableElement=this.getScrollableElement(e.sensorEvent.target)})),!this.scrollableElement)return;const t=e.sensorEvent,n={x:0,y:0};"ontouchstart"in window&&(n.y=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,n.x=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0),this.currentMousePosition={clientX:t.clientX-n.x,clientY:t.clientY-n.y},this.scrollAnimationFrame=requestAnimationFrame(this[c])}[d](){cancelAnimationFrame(this.scrollAnimationFrame),cancelAnimationFrame(this.findScrollableElementFrame),this.scrollableElement=null,this.scrollAnimationFrame=null,this.findScrollableElementFrame=null,this.currentMousePosition=null}[c](){if(!this.scrollableElement||!this.currentMousePosition)return;cancelAnimationFrame(this.scrollAnimationFrame);const{speed:e,sensitivity:t}=this.options,n=this.scrollableElement.getBoundingClientRect(),r=n.bottom>window.innerHeight,o=n.top<0||r,s=f(),i=this.scrollableElement,a=this.currentMousePosition.clientX,l=this.currentMousePosition.clientY;if(i===document.body||i===document.documentElement||o){const{innerHeight:n,innerWidth:r}=window;l=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}const u=t.onDragStart=Symbol("onDragStart"),d=t.onDragMove=Symbol("onDragMove"),c=t.onDragStop=Symbol("onDragStop"),h=t.onMirrorCreated=Symbol("onMirrorCreated"),g=t.onMirrorMove=Symbol("onMirrorMove"),f=t.onScroll=Symbol("onScroll"),p=t.getAppendableContainer=Symbol("getAppendableContainer"),v=t.defaultOptions={constrainDimensions:!1,xAxis:!0,yAxis:!0,cursorOffsetX:null,cursorOffsetY:null,thresholdX:null,thresholdY:null};class m extends i.default{constructor(e){super(e),this.options=o({},v,this.getOptions()),this.scrollOffset={x:0,y:0},this.initialScrollOffset={x:window.scrollX,y:window.scrollY},this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this),this[f]=this[f].bind(this)}attach(){this.draggable.on("drag:start",this[u]).on("drag:move",this[d]).on("drag:stop",this[c]).on("mirror:created",this[h]).on("mirror:move",this[g])}detach(){this.draggable.off("drag:start",this[u]).off("drag:move",this[d]).off("drag:stop",this[c]).off("mirror:created",this[h]).off("mirror:move",this[g])}getOptions(){return this.draggable.options.mirror||{}}[u](e){if(e.canceled())return;"ontouchstart"in window&&document.addEventListener("scroll",this[f],!0),this.initialScrollOffset={x:window.scrollX,y:window.scrollY};const{source:t,originalSource:n,sourceContainer:r,sensorEvent:o}=e;this.lastMirrorMovedClient={x:o.clientX,y:o.clientY};const s=new a.MirrorCreateEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e});if(this.draggable.trigger(s),function(e){return/^drag/.test(e.originalEvent.type)}(o)||s.canceled())return;const i=this[p](t)||r;this.mirror=t.cloneNode(!0);const l=new a.MirrorCreatedEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e,mirror:this.mirror}),u=new a.MirrorAttachedEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e,mirror:this.mirror});this.draggable.trigger(l),i.appendChild(this.mirror),this.draggable.trigger(u)}[d](e){if(!this.mirror||e.canceled())return;const{source:t,originalSource:n,sourceContainer:r,sensorEvent:o}=e;let s=!0,i=!0;if(this.options.thresholdX||this.options.thresholdY){const{x:e,y:t}=this.lastMirrorMovedClient;if(Math.abs(e-o.clientX){let{mirrorOffset:t,initialX:n,initialY:r}=e,s=l(e,["mirrorOffset","initialX","initialY"]);return this.mirrorOffset=t,this.initialX=n,this.initialY=r,this.lastMovedX=n,this.lastMovedY=r,o({mirrorOffset:t,initialX:n,initialY:r},s)}))}[g](e){if(e.canceled())return null;const t={mirror:e.mirror,sensorEvent:e.sensorEvent,mirrorOffset:this.mirrorOffset,options:this.options,initialX:this.initialX,initialY:this.initialY,scrollOffset:this.scrollOffset,passedThreshX:e.passedThreshX,passedThreshY:e.passedThreshY,lastMovedX:this.lastMovedX,lastMovedY:this.lastMovedY};return Promise.resolve(t).then(O({raf:!0})).then((e=>{let{lastMovedX:t,lastMovedY:n}=e,r=l(e,["lastMovedX","lastMovedY"]);return this.lastMovedX=t,this.lastMovedY=n,o({lastMovedX:t,lastMovedY:n},r)}))}[p](e){const t=this.options.appendTo;return"string"==typeof t?document.querySelector(t):t instanceof HTMLElement?t:"function"==typeof t?t(e):e.parentNode}}function b(e){let{source:t}=e,n=l(e,["source"]);return C((e=>{const r=t.getBoundingClientRect();e(o({source:t,sourceRect:r},n))}))}function y(e){let{sensorEvent:t,sourceRect:n,options:r}=e,s=l(e,["sensorEvent","sourceRect","options"]);return C((e=>{const i=null===r.cursorOffsetY?t.clientY-n.top:r.cursorOffsetY,a=null===r.cursorOffsetX?t.clientX-n.left:r.cursorOffsetX;e(o({sensorEvent:t,sourceRect:n,mirrorOffset:{top:i,left:a},options:r},s))}))}function E(e){let{mirror:t,source:n,options:r}=e,s=l(e,["mirror","source","options"]);return C((e=>{let i,a;if(r.constrainDimensions){const e=getComputedStyle(n);i=e.getPropertyValue("height"),a=e.getPropertyValue("width")}t.style.display=null,t.style.position="fixed",t.style.pointerEvents="none",t.style.top=0,t.style.left=0,t.style.margin=0,r.constrainDimensions&&(t.style.height=i,t.style.width=a),e(o({mirror:t,source:n,options:r},s))}))}function _(e){let{mirror:t,mirrorClasses:n}=e,r=l(e,["mirror","mirrorClasses"]);return C((e=>{t.classList.add(...n),e(o({mirror:t,mirrorClasses:n},r))}))}function S(e){let{mirror:t}=e,n=l(e,["mirror"]);return C((e=>{t.removeAttribute("id"),delete t.id,e(o({mirror:t},n))}))}function O({withFrame:e=!1,initial:t=!1}={}){return n=>{let{mirror:r,sensorEvent:s,mirrorOffset:i,initialY:a,initialX:u,scrollOffset:d,options:c,passedThreshX:h,passedThreshY:g,lastMovedX:f,lastMovedY:p}=n,v=l(n,["mirror","sensorEvent","mirrorOffset","initialY","initialX","scrollOffset","options","passedThreshX","passedThreshY","lastMovedX","lastMovedY"]);return C((e=>{const n=o({mirror:r,sensorEvent:s,mirrorOffset:i,options:c},v);if(i){const e=h?Math.round((s.clientX-i.left-d.x)/(c.thresholdX||1))*(c.thresholdX||1):Math.round(f),o=g?Math.round((s.clientY-i.top-d.y)/(c.thresholdY||1))*(c.thresholdY||1):Math.round(p);c.xAxis&&c.yAxis||t?r.style.transform=`translate3d(${e}px, ${o}px, 0)`:c.xAxis&&!c.yAxis?r.style.transform=`translate3d(${e}px, ${a}px, 0)`:c.yAxis&&!c.xAxis&&(r.style.transform=`translate3d(${u}px, ${o}px, 0)`),t&&(n.initialX=e,n.initialY=o),n.lastMovedX=e,n.lastMovedY=o}e(n)}),{frame:e})}}function C(e,{raf:t=!1}={}){return new Promise(((n,r)=>{t?requestAnimationFrame((()=>{e(n,r)})):e(n,r)}))}t.default=m},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(62),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t{this.getElements().forEach((e=>function(e){Boolean(!e.getAttribute("tabindex")&&-1===e.tabIndex)&&(c.push(e),e.tabIndex=0)}(e)))}))}[l](){requestAnimationFrame((()=>{this.getElements().forEach((e=>function(e){const t=c.indexOf(e);-1!==t&&(e.tabIndex=-1,c.splice(t,1))}(e)))}))}}t.default=d;const c=[]},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(64),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.draggable=e}attach(){throw new Error("Not Implemented")}detach(){throw new Error("Not Implemented")}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{g.removeChild(n)}),t)}(e,{expire:this.options.expire})}[a](){this.draggable.trigger=e=>{try{this[u](e)}finally{this.originalTriggerMethod.call(this.draggable,e)}}}[l](){this.draggable.trigger=this.originalTriggerMethod}}t.default=h;const g=function(){const e=document.createElement("div");return e.setAttribute("id","draggable-live-region"),e.setAttribute("aria-relevant","additions"),e.setAttribute("aria-atomic","true"),e.setAttribute("aria-live","assertive"),e.setAttribute("role","log"),e.style.position="fixed",e.style.width="1px",e.style.height="1px",e.style.top="-1px",e.style.overflow="hidden",e}();document.addEventListener("DOMContentLoaded",(()=>{document.body.appendChild(g)}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(67),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.DraggableDestroyEvent=t.DraggableInitializedEvent=t.DraggableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get draggable(){return this.data.draggable}}t.DraggableEvent=i,i.type="draggable";class a extends i{}t.DraggableInitializedEvent=a,a.type="draggable:initialize";class l extends i{}t.DraggableDestroyEvent=l,l.type="draggable:destroy"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t{},o=e=>"number"==typeof e&&Number.isFinite(e),s=e=>"string"==typeof e,i=Array.isArray,a=e=>"object"==typeof e&&!!e&&!i(e),l=e=>"function"==typeof e,u=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),d=e=>{for(let t in e)if(u(e,t))return!1;return!0},c=(e,t)=>e>t,h=(e,t)=>((e,t,n)=>{let r,o;if(i(e))for(let s=0,i=e.length;s{let t=null;if("/"===e.charAt(0)&&("/"===e.charAt(1)?e="https://"+e:t=e),null===t)try{t=new URL(e).pathname}catch(n){t=e}return t},f=e=>"__duo-toolbox__-"+e,p=f("global_variables"),v=(e,t)=>(a(window[p])||(window[p]={}),u(window[p],e)?window[p][e]:t),m=(e,t)=>{a(window[p])||(window[p]={}),window[p][e]=t},b=(e,t,n)=>{const r=t(v(e,n));return m(e,r),r},y=e=>b(`__counter::${e}__`,(e=>e+1),0),E=f("original_function"),_=f("override_version"),S=(e,t,n,o=1)=>((e,t,n,r,o=1)=>{u(window,e)&&t(window[e])?n(window[e]):b("pending_global_listeners",((s={})=>{var i;if(!s[e]){s[e]={};let n=window[e];Object.defineProperty(window,e,{get:()=>n,set:r=>{t(r)?(Object.defineProperty(window,e,{value:r,configurable:!0,enumerable:!0,writable:!0}),Object.values(s[e]).forEach((e=>e.callback(r)))):n=r},configurable:!0})}return o>(Number(null===(i=s[e][r])||void 0===i?void 0:i.version)||0)&&(s[e][r]={callback:n,version:o}),s}))})(e,l,(e=>((e,t,n,o=1)=>{var s;if(a(e)&&o>(Number(null===(s=e[t])||void 0===s?void 0:s[_])||0)){var i;const s=(null===(i=e[t])||void 0===i?void 0:i[E])||e[t]||r;e[t]=n(s),e[t][E]=s,e[t][_]=o}})(null==e?void 0:e.prototype,t,n,o)),"instance_method:"+t,o),O=f("logging_iframe"),C=e=>{e.preventDefault(),e.stopPropagation()},M=["characterIntro","characterMatch","characterSelect","completeReverseTranslation","definition","dialogue","form","freeResponse","gapFill","judge","listen","listenComprehension","listenTap","name","readComprehension","select","selectPronunciation","selectTranscription","speak","tapCloze","tapClozeTable","tapComplete","tapCompleteTable","tapDescribe","translate","typeCloze","typeClozeTable","typeCompleteTable"],w=e=>{var t,n;return(null===(t=e.metadata)||void 0===t?void 0:t.source_language)||e.sourceLanguage||(null===(n=e.metadata)||void 0===n?void 0:n.learning_language)},D=e=>{var t;return(null===(t=e.metadata)||void 0===t?void 0:t.target_language)||e.targetLanguage||w(e)},x="none",P="challenge",j=/duolingo\.com\/stories\/(?[^/]+)/,L=/forum\.duolingo\.com\/comment\/(?[\d]+)/,T=/duolingo\.com\/dictionary\/(?.+)\/(?.+)\/(?[\w]+)\//,F=()=>(()=>{let e=document.getElementById(O);return e&&e.isConnected||(e=document.createElement("iframe"),e.id=O,e.style.display="none",document.body.appendChild(e)),e})().contentWindow.console,A=(...e)=>F().error(...e),X=Number.MAX_SAFE_INTEGER,Y=Math.round(X/4),N=Math.round(2*Y),k="tts_sentence",z="tts_word",I="normal",q="howler",$="rate",B="volume",H=f("forced_setting"),R=e=>a(e)&&!!e[H],K=e=>e.value,V=e=>({[H]:!0,value:e}),W=(e,t)=>$===e&&o(t)||B===e&&t>=0&&t<=1,U=(e,t)=>((e,t,n,r=1)=>{if(!a(e))return;const o=f(t+"_override_version");r>(Number(e[o])||0)&&Object.defineProperty(e,t,n(Object.getOwnPropertyDescriptor(e,t)))})(HTMLMediaElement,t,(t=>({...t,set:function(n){const r=Q[e];o(n)?(this[r.originalValueKey]=n,u(this,r.valueKey)&&(n=this[r.isRelativeKey]?Z(e,n*this[r.valueKey]):this[r.valueKey])):R(n)&&(n=K(n)),o(n)&&(this[r.listenerValueKey]=n),t.set.call(this,n)}}))),G=(e,t)=>S("Howl",t,(n=>function(){const r=this,o=arguments,s=Q[e];let i=!1;const a=r._queue.length;(1===o.length||2===o.length&&void 0===o[1])&&-1===r._getSoundIds().indexOf(o[0])&&(R(o[0])?(i=!0,o[0]=K(o[0])):W(e,o[0])&&(r[s.originalValueKey]=o[0],u(r,s.valueKey)&&(i=!0,r[s.isRelativeKey]?o[0]=Z(e,o[0]*r[s.valueKey]):o[0]=r[s.valueKey])),i&&(r[s.listenerValueKey]=o[0]));const l=n.apply(r,arguments);return i&&a({...r,functions:{audio:{applyOverride:()=>U(e,n),getter:e=>e[t],setter:(e,n)=>e[t]=n,hasQueuedUpdate:()=>!1},[q]:{applyOverride:()=>G(e,n),getter:e=>e[n](),setter:(e,t)=>e[n](t),hasQueuedUpdate:e=>e._queue.find((e=>e.event===n))}},priorityKey:f(e+"_priority"),isRelativeKey:f(e+"_is_relative"),valueKey:f(`forced_${e}_value`),originalValueKey:f(`original_${e}_value`),listenerValueKey:f(e+"_value")}),Q={[$]:J($,"playbackRate","rate",{minValue:.5,maxValue:4,defaultValue:1}),[B]:J(B,"volume","volume",{minValue:0,maxValue:1,defaultValue:1})},Z=(e,t)=>Q[e]?Math.max(Q[e].minValue,Math.min(t,Q[e].maxValue)):t,ee="event_listeners",te=()=>`__listener::${y("last_event_listener_id")}__`,ne=e=>{var t;return(null===(t=v(ee,{}))||void 0===t?void 0:t[e])||{}},re=(e,t)=>{b(ee,(n=>Object.assign(n||{},{[e]:t})))},oe=!d((e=>ne(e))),se=(e,t)=>{const n=ne(e);return d(n)?null:t(Object.values(n))},ie=(e,t,n=te())=>{const r=ne(e);return r[n]=t,re(e,r),()=>le(e,n)},ae=(e,t,n,r,o=ie,s=te())=>{const a=`__${t}::${e}__`;var l;l=a,ne(t)[l]||o(t,((...t)=>{const n=r(...t);i(n)&&ue(e,...n)}),a);const u=ie(e,n,s);return()=>{u(),oe(e)||le(t,a)}},le=(e,t)=>{const n=ne(e);delete n[t],re(e,n)},ue=(e,...t)=>se(e,(e=>e.flatMap((e=>{try{return[e(...t)]}catch(e){return[]}})))),de="practice_session_loaded",ce="story_loaded",he="forum_discussion_loaded",ge="dictionary_lexeme_loaded",fe="sound_playback_requested",pe="sound_playback_confirmed",ve="sound_playback_cancelled",me="ui_loaded",be={[ge]:/\/api\/1\/dictionary_page/g,[he]:/\/comments\/([\d]+)/g,[de]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/sessions/g,[ce]:/\/api2\/stories/g,user_data_loaded:/\/[\d]{4}-[\d]{2}-[\d]{2}\/users\/[\d]+/g},ye=(e,t,n=te())=>(S("XMLHttpRequest","open",(e=>function(t,n,r,o,s){let i;for(const[e,t]of Object.entries(be))if(n.match(t)){i=e;break}return i&&se(i,(e=>{this.addEventListener("load",(()=>{try{const t=a(this.response)?this.response:JSON.parse(this.responseText);e.forEach((e=>e(t)))}catch(e){A(e,`Could not handle the XHR result (event: ${i}): `)}}))})),e.call(this,t,n,r,o,s)})),ie(e,t,n)),Ee=(e,t)=>({url:e,type:k,speed:I,language:t}),_e=(e,t)=>({url:e,type:z,speed:I,language:t}),Se=Object.fromEntries(["/sounds/7abe057dc8446ad325229edd6d8fd250.mp3","/sounds/2aae0ea735c8e9ed884107d6f0a09e35.mp3","/sounds/421d48c53ad6d52618dba715722278e0.mp3","/sounds/37d8f0b39dcfe63872192c89653a93f6.mp3","/sounds/0a27c1ee63dd220647e8410a0029aed2.mp3","/sounds/a28ff0a501ef5f33ca78c0afc45ee53e.mp3","/sounds/2e4669d8cf839272f0731f8afa488caf.mp3","/sounds/f0b6ab4396d5891241ef4ca73b4de13a.mp3"].map((e=>{return[e,(t=e,{url:t,type:"effect",speed:I,language:null})];var t}))),Oe=/\/duolingo-data\/tts\/(?[a-z-_]+)\/token\//i,Ce="sound_type_map",Me=()=>v(Ce,Se),we=e=>{const t=Me()||{};for(const n of e)t[g(n.url)]=n;m(Ce,t)},De="sound_detection_unregistration_callbacks",xe=(e,t,n)=>{var r;return{url:e.url,type:t,speed:(null===(r=e.speed)||void 0===r?void 0:r.value)||I,language:n}},Pe=()=>{var e,t,n,r;v(De)||m(De,[(r=e=>(e=>{const t=e.learningLanguage;i(e.elements)&&we(e.elements.map((e=>{var t;return(null==e||null===(t=e.line)||void 0===t?void 0:t.content)||(null==e?void 0:e.learningLanguageTitleContent)})).flatMap((e=>[null==e?void 0:e.audio,null==e?void 0:e.audioPrefix,null==e?void 0:e.audioSuffix])).map((e=>null==e?void 0:e.url)).filter(s).map((e=>Ee(e,t))))})(e),ye(ce,r)),(n=e=>{var t;s((t=e).tts_url)&&we([Ee(t.tts_url,t.sentence_language)])},ye(he,n)),(t=e=>(e=>{const t=[],n=e.learning_language;s(e.tts)&&t.push(_e(e.tts,n)),i(e.alternative_forms)&&t.push(e.alternative_forms.map((e=>null==e?void 0:e.tts)).filter(s).map((e=>Ee(e,n)))),we(t.flat())})(e),ye(ge,t)),(e=e=>(e=>{const t=[];for(const l of e){var n;const e=w(l),u=D(l);if(s(l.tts)&&t.push(Ee(l.tts,e)),s(l.slowTts)&&t.push({url:l.slowTts,type:k,speed:"slow",language:e}),s(l.solutionTts)&&t.push(Ee(l.solutionTts,u)),i(l.choices)&&t.push(l.choices.map((e=>null==e?void 0:e.tts)).filter(s).map((e=>_e(e,u)))),i(l.tokens)&&t.push(l.tokens.map((e=>null==e?void 0:e.tts)).filter(s).map((t=>_e(t,e)))),i(l.questionTokens)&&t.push(l.questionTokens.map((e=>null==e?void 0:e.tts)).filter(s).map((e=>_e(e,u)))),i(null===(n=l.metadata)||void 0===n?void 0:n.speakers))for(const e of l.metadata.speakers){var r,o;a(null===(r=e.tts)||void 0===r?void 0:r.tokens)&&t.push(Object.values(e.tts.tokens).filter((e=>s(e.url))).map((e=>xe(e,z,u)))),i(null===(o=e.tts)||void 0===o?void 0:o.sentence)&&t.push(e.tts.sentence.filter((e=>s(e.url))).map((e=>xe(e,k,u))))}i(l.pairs)&&t.push(l.pairs.map((e=>null==e?void 0:e.tts)).filter(s).map((e=>_e(e,u))))}we(t.flat())})(e.challenges),ae("practice_challenges_loaded",de,e,(e=>{let t;var n;a(e)&&(t=[{challenges:[e.challenges,e.adaptiveChallenges,null===(n=e.adaptiveInterleavedChallenges)||void 0===n?void 0:n.challenges].filter(i).flat(),sessionMetaData:e.metadata||{}}]);return t}),ye))])},je=(e,t,n)=>{const r=(e=>{const t=Me()[e];if(a(t))return t;const n=e.match(Oe);return n?_e(e,n.language):null})(g(t));return{url:t,type:(null==r?void 0:r.type)||"unknown",speed:(null==r?void 0:r.speed)||I,language:null==r?void 0:r.language,playbackStrategy:n,sound:e}},Le=(e,t)=>{S("Howl","play",(e=>function(t){var n;m("is_howler_used",!0);const r=String(this._src||(null===(n=this._parent)||void 0===n?void 0:n._src)||"").trim();return""!==r?((e,t,n,r)=>{const o=je(e,t,n);let s=!1;try{var i;s=null===(i=ue(fe,o))||void 0===i?void 0:i.some((e=>!1===e)),ue(s?ve:pe,o)}catch(e){A(e,`Could not handle playback for sound "${t}" (using "${n}"): `)}return s?null:r()})(this,r,q,(()=>e.call(this,t))):e.call(this,t)})),Pe();const n=ie(e,t);return()=>{n(),(()=>{const e=v(De);!i(e)||oe("sound_initialized")||oe(fe)||oe(ve)||oe(pe)||(e.forEach((e=>e())),m(De,null))})()}},Te="is_ui_loaded",Fe=f("action_request"),Ae=f("action_result"),Xe=f("background_event_notification"),Ye=(e,t)=>{b("mutexes",(n=>(a(n[e])||(n[e]={currentHolder:null,pendingHolders:[]}),n[e]=t(n[e]),n)),{})},Ne=async(e,{priority:t=N,timeoutDelay:n=null,onSupersessionRequest:o=r}={})=>new Promise(((r,s)=>{const i=y("last_mutex_holder_id"),a=n>0?setTimeout((()=>{Ye(e,(e=>({...e,pendingHolders:e.pendingHolders.filter((e=>i!==e.uniqueId))}))),s()}),n):null,l=()=>{a&&clearTimeout(a),r((()=>((e,t)=>{Ye(e,(e=>{var n;if((null===(n=e.currentHolder)||void 0===n?void 0:n.uniqueId)!==t)return;const r=h(e.pendingHolders,(e=>e.priority));return r?(setTimeout((()=>r.onAcquired())),e.currentHolder=r,e.pendingHolders=e.pendingHolders.filter((e=>e.uniqueId!==r.uniqueId))):e.currentHolder=null,e}))})(e,i)))},u={uniqueId:i,priority:t,onAcquired:l,onSupersessionRequest:o};Ye(e,(e=>(e.currentHolder?(e.pendingHolders.push(u),u.priority>e.currentHolder.priority&&setTimeout((()=>e.currentHolder.onSupersessionRequest()))):(e.currentHolder=u,setTimeout((()=>l()))),e)))})),ke="always",ze="never",Ie={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:ze};let qe=Ie,$e=null,Be=null,He=null,Re=null,Ke=[],Ve=null,We=!1,Ue=!1,Ge=!1,Je=!1,Qe=!1,Ze=null,et=null,tt=null;const nt=e=>e.classList.contains(Lt),rt=()=>$e?Array.from($e.querySelectorAll(Dt)):[],ot=e=>e.disabled||"true"===e.ariaDisabled,st=e=>(e.childNodes[0]||e).textContent.trim(),it=()=>rt().map((e=>nt(e)?"":st(e))).filter((e=>e.length>0)),at=e=>{if(!Be)return;const t=[],n=rt().slice(e);ze!==qe.disableWordAnimation&>(!1);const r=()=>{const e=n.shift();if(e){if(e.click(),!nt(e)){const n=st(e);""!==n&&t.push(n)}setTimeout((()=>{if(e.isConnected){const t=e.closest(wt.join(","))||e;t.parentNode.removeChild(t)}r()}),1)}else Qe=!0,setTimeout(s,1)};let o=!1;const s=()=>{try{const n=Be?Array.from(Be.querySelectorAll(Dt)):[];if(o||!Re||null===(e=He)||void 0===e||!e.querySelector(Pt)){o=!0;const e=t.shift(),r=n.find((t=>!ot(t)&&st(t)===e));r&&r.click()}t.length>0?setTimeout(s,1):setTimeout(i,200)}catch(e){throw i(),e}var e},i=()=>{Qe=!1,Je=!1,dt(),ke!==qe.disableWordAnimation&>(!0)};r()},lt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!Be)return;const n=rt(),r=n.slice(e).map((e=>(e.click(),nt(e)?"":st(e)))).filter((e=>e.length>0));if(t){const e=t.dragEvent.source,n=document.createElement("div");e.parentNode.removeChild(e),n.appendChild(e)}Qe=!0;try{Be&&Array.from(Be.querySelectorAll(Dt)).filter((e=>!ot(e))).map((e=>{const t=r.indexOf(st(e));return t>=0&&(r[t]=null),[t,e]})).filter((e=>e[0]>=0)).sort(((e,t)=>e[0]-t[0])).forEach((e=>e[1].click()))}finally{Qe=!1,Je=!1,dt()}},ut=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Je=!0,et=null,tt=null,Re?at(e):lt(e,t)},dt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;(e||rt()).forEach(((e,t)=>{e.classList.toggle(jt,t===et)}))},ct=e=>{const t=rt();0===t.length||_t===e&&0===et||St===e&&t.length-1===et?et=null:null===et?et=St===e?0:t.length-1:et+=_t===e?-1:1,dt(t)},ht=e=>{if(null!==et){const t=rt();if(t[et]){const n=t[et].parentNode;null===tt&&(tt=et),_t===e&&et>0?(Ge=!0,n.parentNode.insertBefore(n,t[et-1].parentNode),et-=1):St===e&&etdocument.body.classList.toggle("_duo-wb-dnd_disabled_word_animation",!e),ft=e=>{qe=e,ze===qe.disableWordAnimation?gt(!0):ke===qe.disableWordAnimation?gt(!1):"dnd"===qe.disableWordAnimation&>(!Je)};(e=>{if(v(Te))setTimeout(e);else{if(!v("is_ui_loading_detected")){var t;let e;e=i(null===(t=window.duo)||void 0===t?void 0:t.stylesheets)?new Promise((e=>{const t=()=>{Array.from(document.styleSheets).some((e=>window.duo.stylesheets.some((t=>String(e.href||"").indexOf(t)>=0))))&&(clearInterval(n),e())},n=setInterval(t,1e3);t()})):Promise.resolve();const n=()=>e.then((()=>{m(Te,!0),ue(me)}));"complete"===document.readyState||"interactive"===document.readyState?setTimeout(n,1):document.addEventListener("DOMContentLoaded",n)}ie(me,e)}})((()=>{(async(e,t)=>new Promise(((n,r)=>{const o=t=>{t.source===window&&a(t.data)&&Ae===t.data.type&&e===t.data.action&&("success"===t.data.result?n(t.data.value):r(t.data.error),t.stopPropagation(),window.removeEventListener("message",o))};window.addEventListener("message",o),window.postMessage({type:Fe,action:e,value:t},"*")})))("get_options").catch((()=>Ie)).then(ft)})),((e,t)=>{var n;const r=i(t)?e=>t.indexOf(e)>=0:()=>!0,o=t=>{const n=a(t.data)?t.data:t;return n&&Xe===n.type&&r(n.event)&&e(n.event,n.value)};"undefined"!=typeof chrome&&null!==(n=chrome.runtime)&&void 0!==n&&n.onMessage?chrome.runtime.onMessage.addListener(o):window.addEventListener("message",o)})(((e,t)=>"options_changed"===e&&ft(t)));const pt=new MutationObserver((()=>{var e;null!==(e=He)&&void 0!==e&&e.querySelector(Pt)&&(Re=!0,pt.disconnect())})),vt=new MutationObserver((()=>{if(null!==et&&!Ge&&!Ue&&!Je){const e=rt();let t=e.findIndex((e=>e.classList.contains(jt)));-1===t&&e.length>0&&(t=Math.max(0,Math.min(e.length-1,et))),t>=0?(et=t,dt(e)):et=null}})),mt=e=>{var t,n;null===(t=$e)||void 0===t||null===(n=t.querySelectorAll("."+Lt))||void 0===n||n.forEach((e=>e.classList.remove(Lt))),null==e||e.classList.add(Lt)};setInterval((()=>{const e=document.querySelector(Ot);if(e!==He){if(He=e,!He)return;null===Re&&pt.observe(He,{childList:!0})}const t=document.querySelector(Mt);t!==Be&&(Be=t,Be&&Be.addEventListener("click",(e=>{(e.target.matches("button")||e.target.closest("button"))&&(Ze=Date.now())})));const r=document.querySelector(Ct);if(r!==$e){if($e=r,et=null,tt=null,!$e)return;vt.observe($e,{childList:!0,subtree:!0});const e=new n.Sortable($e,{draggable:xt,distance:5});e.removePlugin(n.Draggable.Plugins.Mirror),e.on("drag:start",(e=>{qe.enableDnd&&!Ge&&yt()?(mt(e.originalSource.querySelector(Dt)),Ue=!0,Ke=it()):e.cancel()})),e.on("sortable:stop",(e=>{Ue=!1,null===Re&&(Re=!1,pt.disconnect());const t=it();var n;const r=Array.from((null===(n=$e)||void 0===n?void 0:n.getElementsByClassName(Lt))||[]).map((e=>st(e)));let o=Math.min(...[Ke.findIndex(((e,n)=>e!==t[n])),...r.map((e=>t.indexOf(e))).filter((e=>e>=0&&t[e]===t[e+1])),...r.map((e=>Ke.indexOf(e))).filter((e=>e>=0&&Ke[e]===Ke[e+1]&&t[e]!==t[e+1]))].filter((e=>e>=0)));if(-1===o||1/0===o){if(!(t.length>Ke.length))return void mt(null);o=Ke.length}ut(o,e)}))}}),50),Le(fe,(e=>!(z===e.type&&(Qe||qe.disableWordButtonsTts&&Math.abs(Date.now()-Ze)<=Et))));const bt=()=>{We||Ve||(We=!0,Ne("hotkeys",{priority:1,onSupersessionRequest:()=>{Ve&&!Ge&&(Ve(),Ve=null,bt())}}).then((e=>{We=!1,Ve=e})).catch(r))};bt();const yt=()=>{const e=(()=>{const e=document.location.href;let t=e.match(L);if(i(t))return{type:"forum_discussion",commentId:Number(t.comment_id)||null};var n;if(t=e.match(j),i(t)||document.querySelector('[data-test="stories-element"]'))return{type:"story",storyKey:null===(n=t)||void 0===n?void 0:n.story_key};if(t=e.match(T),i(t))return{type:"dictionary",languageName:t.language,lexeme:t.lexeme,lexemeId:t.lexeme_id};const r=document.querySelector('[data-test*="challenge"]');if(r){let e=null;for(const t of(null===(o=r.getAttribute("data-test"))||void 0===o?void 0:o.split(/\s+/))||[]){var o,s;const n=null===(s=t.match(/challenge-(?[a-z]+)/i))||void 0===s?void 0:s.groups.type.trim();if(M.indexOf(n)>=0){e=n;break}}let t=x;const n=document.querySelector("._2Fc1K ._1tuLI");return n&&(t=n.classList.contains("_3e9O1")?"correct":"incorrect"),{type:P,challengeType:e,result:t,isCompleted:x!==t}}return{type:"unknown"}})();return P===e.type&&!e.isCompleted};document.addEventListener("keydown",(e=>{var t;Ue?"Backspace"===e.key&&(e.preventDefault(),e.stopImmediatePropagation()):!$e||Je||null===Ve||!qe.enableKeyboardShortcuts||!yt()||document.activeElement&&["input","select","textarea"].indexOf(document.activeElement.tagName.toLowerCase())>=0||("ArrowLeft"===e.key?(C(e),e.ctrlKey?ht(_t):ct(_t)):"ArrowRight"===e.key?(C(e),e.ctrlKey?ht(St):ct(St)):e.ctrlKey||"Delete"===e.key&&(C(e),null!==et&&(null===(t=rt()[et])||void 0===t||t.click()))),$e&&(Ze=Date.now())}),!0),document.addEventListener("keyup",(e=>{"Control"===e.key&&(Ge&&et!==tt&&ut(Math.max(0,Math.min(et,tt))),Ge=!1)}));const Et=100,_t="left",St="right",Ot="#overlays",Ct=".PcKtj",Mt='[data-test="word-bank"]',wt=["._1yW4j",".JSl9i","._2LmyT"],Dt=wt.map((e=>e+" button")).join(","),xt=wt.map((e=>`${Ct} ${e}`)).join(","),Pt="button._1O290",jt="pmjld",Lt="_dnd_-dragged-word-button"}(); +!function(){"use strict";var e,t,n,r=(e=function(e,t){var n;window,n=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=72)}([function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(66),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(70),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(57);Object.defineProperty(t,"closest",{enumerable:!0,get:function(){return a(r).default}});var o=n(55);Object.defineProperty(t,"requestNextAnimationFrame",{enumerable:!0,get:function(){return a(o).default}});var s=n(53);Object.defineProperty(t,"distance",{enumerable:!0,get:function(){return a(s).default}});var i=n(51);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"touchCoords",{enumerable:!0,get:function(){return a(i).default}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(46);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(49),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(14);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o=n(13);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}})}));var s=n(12);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}})}));var i=n(6);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}));var a,l=n(39),u=(a=l)&&a.__esModule?a:{default:a};t.default=u.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(4);Object.defineProperty(t,"Sensor",{enumerable:!0,get:function(){return u(r).default}});var o=n(48);Object.defineProperty(t,"MouseSensor",{enumerable:!0,get:function(){return u(o).default}});var s=n(45);Object.defineProperty(t,"TouchSensor",{enumerable:!0,get:function(){return u(s).default}});var i=n(43);Object.defineProperty(t,"DragSensor",{enumerable:!0,get:function(){return u(i).default}});var a=n(41);Object.defineProperty(t,"ForceTouchSensor",{enumerable:!0,get:function(){return u(a).default}});var l=n(3);function u(e){return e&&e.__esModule?e:{default:e}}Object.keys(l).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return l[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(20);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(25);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(29);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(32);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(35);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(68);Object.defineProperty(t,"Announcement",{enumerable:!0,get:function(){return a(r).default}}),Object.defineProperty(t,"defaultAnnouncementOptions",{enumerable:!0,get:function(){return r.defaultOptions}});var o=n(65);Object.defineProperty(t,"Focusable",{enumerable:!0,get:function(){return a(o).default}});var s=n(63);Object.defineProperty(t,"Mirror",{enumerable:!0,get:function(){return a(s).default}}),Object.defineProperty(t,"defaultMirrorOptions",{enumerable:!0,get:function(){return s.defaultOptions}});var i=n(59);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Scrollable",{enumerable:!0,get:function(){return a(i).default}}),Object.defineProperty(t,"defaultScrollableOptions",{enumerable:!0,get:function(){return i.defaultOptions}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(69);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(71);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t({domEl:e,offsetTop:e.offsetTop,offsetLeft:e.offsetLeft})))}[a]({oldIndex:e,newIndex:t}){if(e===t)return;const n=[];let r,o,s;e>t?(r=t,o=e-1,s=1):(r=e+1,o=t,s=-1);for(let e=r;e<=o;e++){const t=this.lastElements[e],r=this.lastElements[e+s];n.push({from:t,to:r})}cancelAnimationFrame(this.lastAnimationFrame),this.lastAnimationFrame=requestAnimationFrame((()=>{n.forEach((e=>function({from:e,to:t},{duration:n,easingFunction:r}){const o=e.domEl,s=e.offsetLeft-t.offsetLeft,i=e.offsetTop-t.offsetTop;o.style.pointerEvents="none",o.style.transform=`translate3d(${s}px, ${i}px, 0)`,requestAnimationFrame((()=>{o.addEventListener("transitionend",c),o.style.transition=`transform ${n}ms ${r}`,o.style.transform=""}))}(e,this.options)))}))}}function c(e){e.target.style.transition="",e.target.style.pointerEvents="",e.target.removeEventListener("transitionend",c)}t.default=d},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(15),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{e>=t?d(r,o,this.options):d(o,r,this.options)}))}}function d(e,t,{duration:n,easingFunction:r,horizontal:o}){for(const n of[e,t])n.style.pointerEvents="none";if(o){const n=e.offsetWidth;e.style.transform=`translate3d(${n}px, 0, 0)`,t.style.transform=`translate3d(-${n}px, 0, 0)`}else{const n=e.offsetHeight;e.style.transform=`translate3d(0, ${n}px, 0)`,t.style.transform=`translate3d(0, -${n}px, 0)`}requestAnimationFrame((()=>{for(const o of[e,t])o.addEventListener("transitionend",c),o.style.transition=`transform ${n}ms ${r}`,o.style.transform=""}))}function c(e){e.target.style.transition="",e.target.style.pointerEvents="",e.target.removeEventListener("transitionend",c)}t.default=u},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(17),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(0),s=(r=o)&&r.__esModule?r:{default:r},i=n(7);const a=Symbol("onDragStart"),l=Symbol("onDragStop"),u=Symbol("onDragOver"),d=Symbol("onDragOut"),c=Symbol("onMirrorCreated"),h=Symbol("onMirrorDestroy");class g extends s.default{constructor(e){super(e),this.firstSource=null,this.mirror=null,this[a]=this[a].bind(this),this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){this.draggable.on("drag:start",this[a]).on("drag:stop",this[l]).on("drag:over",this[u]).on("drag:out",this[d]).on("droppable:over",this[u]).on("droppable:out",this[d]).on("mirror:created",this[c]).on("mirror:destroy",this[h])}detach(){this.draggable.off("drag:start",this[a]).off("drag:stop",this[l]).off("drag:over",this[u]).off("drag:out",this[d]).off("droppable:over",this[u]).off("droppable:out",this[d]).off("mirror:created",this[c]).off("mirror:destroy",this[h])}[a](e){e.canceled()||(this.firstSource=e.source)}[l](){this.firstSource=null}[u](e){if(e.canceled())return;const t=e.source||e.dragEvent.source;if(t===this.firstSource)return void(this.firstSource=null);const n=new i.SnapInEvent({dragEvent:e,snappable:e.over||e.droppable});this.draggable.trigger(n),n.canceled()||(this.mirror&&(this.mirror.style.display="none"),t.classList.remove(...this.draggable.getClassNamesFor("source:dragging")),t.classList.add(...this.draggable.getClassNamesFor("source:placed")),setTimeout((()=>{t.classList.remove(...this.draggable.getClassNamesFor("source:placed"))}),this.draggable.options.placedTimeout))}[d](e){if(e.canceled())return;const t=e.source||e.dragEvent.source,n=new i.SnapOutEvent({dragEvent:e,snappable:e.over||e.droppable});this.draggable.trigger(n),n.canceled()||(this.mirror&&(this.mirror.style.display=""),t.classList.add(...this.draggable.getClassNamesFor("source:dragging")))}[c]({mirror:e}){this.mirror=e}[h](){this.mirror=null}}t.default=g},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SnapOutEvent=t.SnapInEvent=t.SnapEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}get snappable(){return this.data.snappable}}t.SnapEvent=i,i.type="snap";class a extends i{}t.SnapInEvent=a,a.type="snap:in",a.cancelable=!0;class l extends i{}t.SnapOutEvent=l,l.type="snap:out",l.cancelable=!0},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(7);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(19),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{if(!this.mirror.parentNode)return;this.mirror.parentNode!==e&&e.appendChild(this.mirror);const n=t||this.draggable.getDraggableElementsForContainer(e)[0];n&&(0,a.requestNextAnimationFrame)((()=>{const e=n.getBoundingClientRect();this.lastHeight===e.height&&this.lastWidth===e.width||(this.mirror.style.width=`${e.width}px`,this.mirror.style.height=`${e.height}px`,this.lastWidth=e.width,this.lastHeight=e.height)}))}))}}t.default=g},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(22),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(0),s=(r=o)&&r.__esModule?r:{default:r},i=n(2),a=n(8);const l=Symbol("onDragMove"),u=Symbol("onDragStop"),d=Symbol("onRequestAnimationFrame");class c extends s.default{constructor(e){super(e),this.currentlyCollidingElement=null,this.lastCollidingElement=null,this.currentAnimationFrame=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this)}attach(){this.draggable.on("drag:move",this[l]).on("drag:stop",this[u])}detach(){this.draggable.off("drag:move",this[l]).off("drag:stop",this[u])}getCollidables(){const e=this.draggable.options.collidables;return"string"==typeof e?Array.prototype.slice.call(document.querySelectorAll(e)):e instanceof NodeList||e instanceof Array?Array.prototype.slice.call(e):e instanceof HTMLElement?[e]:"function"==typeof e?e():[]}[l](e){const t=e.sensorEvent.target;this.currentAnimationFrame=requestAnimationFrame(this[d](t)),this.currentlyCollidingElement&&e.cancel();const n=new a.CollidableInEvent({dragEvent:e,collidingElement:this.currentlyCollidingElement}),r=new a.CollidableOutEvent({dragEvent:e,collidingElement:this.lastCollidingElement}),o=Boolean(this.currentlyCollidingElement&&this.lastCollidingElement!==this.currentlyCollidingElement),s=Boolean(!this.currentlyCollidingElement&&this.lastCollidingElement);o?(this.lastCollidingElement&&this.draggable.trigger(r),this.draggable.trigger(n)):s&&this.draggable.trigger(r),this.lastCollidingElement=this.currentlyCollidingElement}[u](e){const t=this.currentlyCollidingElement||this.lastCollidingElement,n=new a.CollidableOutEvent({dragEvent:e,collidingElement:t});t&&this.draggable.trigger(n),this.lastCollidingElement=null,this.currentlyCollidingElement=null}[d](e){return()=>{const t=this.getCollidables();this.currentlyCollidingElement=(0,i.closest)(e,(e=>t.includes(e)))}}}t.default=c},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.CollidableOutEvent=t.CollidableInEvent=t.CollidableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}}t.CollidableEvent=i,i.type="collidable";class a extends i{get collidingElement(){return this.data.collidingElement}}t.CollidableInEvent=a,a.type="collidable:in";class l extends i{get collidingElement(){return this.data.collidingElement}}t.CollidableOutEvent=l,l.type="collidable:out"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(8);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(24),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(26);Object.defineProperty(t,"Collidable",{enumerable:!0,get:function(){return l(r).default}});var o=n(23);Object.defineProperty(t,"ResizeMirror",{enumerable:!0,get:function(){return l(o).default}}),Object.defineProperty(t,"defaultResizeMirrorOptions",{enumerable:!0,get:function(){return o.defaultOptions}});var s=n(21);Object.defineProperty(t,"Snappable",{enumerable:!0,get:function(){return l(s).default}});var i=n(18);Object.defineProperty(t,"SwapAnimation",{enumerable:!0,get:function(){return l(i).default}}),Object.defineProperty(t,"defaultSwapAnimationOptions",{enumerable:!0,get:function(){return i.defaultOptions}});var a=n(16);function l(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"SortAnimation",{enumerable:!0,get:function(){return l(a).default}}),Object.defineProperty(t,"defaultSortAnimationOptions",{enumerable:!0,get:function(){return a.defaultOptions}})},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;tt!==this.originalSource&&t!==this.mirror&&t.parentNode===e))}[l](e){this.startContainer=e.source.parentNode,this.startIndex=this.index(e.source);const t=new a.SortableStartEvent({dragEvent:e,startIndex:this.startIndex,startContainer:this.startContainer});this.trigger(t),t.canceled()&&e.cancel()}[u](e){if(e.canceled())return;const{source:t,over:n,overContainer:r}=e,o=this.index(t),s=new a.SortableSortEvent({dragEvent:e,currentIndex:o,source:t,over:n});if(this.trigger(s),s.canceled())return;const i=p({source:t,over:n,overContainer:r,children:this.getSortableElementsForContainer(r)});if(!i)return;const{oldContainer:l,newContainer:u}=i,d=this.index(e.source),c=new a.SortableSortedEvent({dragEvent:e,oldIndex:o,newIndex:d,oldContainer:l,newContainer:u});this.trigger(c)}[d](e){if(e.over===e.originalSource||e.over===e.source)return;const{source:t,over:n,overContainer:r}=e,o=this.index(t),s=new a.SortableSortEvent({dragEvent:e,currentIndex:o,source:t,over:n});if(this.trigger(s),s.canceled())return;const i=p({source:t,over:n,overContainer:r,children:this.getDraggableElementsForContainer(r)});if(!i)return;const{oldContainer:l,newContainer:u}=i,d=this.index(t),c=new a.SortableSortedEvent({dragEvent:e,oldIndex:o,newIndex:d,oldContainer:l,newContainer:u});this.trigger(c)}[c](e){const t=new a.SortableStopEvent({dragEvent:e,oldIndex:this.startIndex,newIndex:this.index(e.source),oldContainer:this.startContainer,newContainer:e.source.parentNode});this.trigger(t),this.startIndex=null,this.startContainer=null}}function f(e){return Array.prototype.indexOf.call(e.parentNode.children,e)}function p({source:e,over:t,overContainer:n,children:r}){const o=!r.length,s=e.parentNode!==n,i=t&&e.parentNode===t.parentNode;return o?function(e,t){const n=e.parentNode;return t.appendChild(e),{oldContainer:n,newContainer:t}}(e,n):i?function(e,t){const n=f(e),r=f(t);return n{r.insertBefore(o,e),n.insertBefore(e,t),r.insertBefore(t,o)}))}t.default=h},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.SwappableStopEvent=t.SwappableSwappedEvent=t.SwappableSwapEvent=t.SwappableStartEvent=t.SwappableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get dragEvent(){return this.data.dragEvent}}t.SwappableEvent=i,i.type="swappable";class a extends i{}t.SwappableStartEvent=a,a.type="swappable:start",a.cancelable=!0;class l extends i{get over(){return this.data.over}get overContainer(){return this.data.overContainer}}t.SwappableSwapEvent=l,l.type="swappable:swap",l.cancelable=!0;class u extends i{get swappedElement(){return this.data.swappedElement}}t.SwappableSwappedEvent=u,u.type="swappable:swapped";class d extends i{}t.SwappableStopEvent=d,d.type="swappable:stop"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=n(10);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}})}));var o,s=n(31),i=(o=s)&&o.__esModule?o:{default:o};t.default=i.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t=0;r--){const o=t[r];try{o(e)}catch(e){n.push(e)}}return n.length&&console.error(`Draggable caught errors while triggering '${e.type}'`,n),this}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(37),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t`Picked up ${e.source.textContent.trim()||e.source.id||"draggable element"}`,"drag:stop":e=>`Released ${e.source.textContent.trim()||e.source.id||"draggable element"}`},m={"container:dragging":"draggable-container--is-dragging","source:dragging":"draggable-source--is-dragging","source:placed":"draggable-source--placed","container:placed":"draggable-container--placed","body:dragging":"draggable--is-dragging","draggable:over":"draggable--over","container:over":"draggable-container--over","source:original":"draggable--original",mirror:"draggable-mirror"},b=t.defaultOptions={draggable:".draggable-source",handle:null,delay:{},distance:0,placedTimeout:800,plugins:[],sensors:[],exclude:{plugins:[],sensors:[]}};class y{constructor(e=[document.body],t={}){if(e instanceof NodeList||e instanceof Array)this.containers=[...e];else{if(!(e instanceof HTMLElement))throw new Error("Draggable containers are expected to be of type `NodeList`, `HTMLElement[]` or `HTMLElement`");this.containers=[e]}this.options=o({},b,t,{classes:o({},m,t.classes||{}),announcements:o({},v,t.announcements||{}),exclude:{plugins:t.exclude&&t.exclude.plugins||[],sensors:t.exclude&&t.exclude.sensors||[]}}),this.emitter=new l.default,this.dragging=!1,this.plugins=[],this.sensors=[],this[h]=this[h].bind(this),this[g]=this[g].bind(this),this[f]=this[f].bind(this),this[p]=this[p].bind(this),document.addEventListener("drag:start",this[h],!0),document.addEventListener("drag:move",this[g],!0),document.addEventListener("drag:stop",this[f],!0),document.addEventListener("drag:pressure",this[p],!0);const n=Object.values(y.Plugins).filter((e=>!this.options.exclude.plugins.includes(e))),r=Object.values(y.Sensors).filter((e=>!this.options.exclude.sensors.includes(e)));this.addPlugin(...n,...this.options.plugins),this.addSensor(...r,...this.options.sensors);const s=new d.DraggableInitializedEvent({draggable:this});this.on("mirror:created",(({mirror:e})=>this.mirror=e)),this.on("mirror:destroy",(()=>this.mirror=null)),this.trigger(s)}destroy(){document.removeEventListener("drag:start",this[h],!0),document.removeEventListener("drag:move",this[g],!0),document.removeEventListener("drag:stop",this[f],!0),document.removeEventListener("drag:pressure",this[p],!0);const e=new d.DraggableDestroyEvent({draggable:this});this.trigger(e),this.removePlugin(...this.plugins.map((e=>e.constructor))),this.removeSensor(...this.sensors.map((e=>e.constructor)))}addPlugin(...e){const t=e.map((e=>new e(this)));return t.forEach((e=>e.attach())),this.plugins=[...this.plugins,...t],this}removePlugin(...e){return this.plugins.filter((t=>e.includes(t.constructor))).forEach((e=>e.detach())),this.plugins=this.plugins.filter((t=>!e.includes(t.constructor))),this}addSensor(...e){const t=e.map((e=>new e(this.containers,this.options)));return t.forEach((e=>e.attach())),this.sensors=[...this.sensors,...t],this}removeSensor(...e){return this.sensors.filter((t=>e.includes(t.constructor))).forEach((e=>e.detach())),this.sensors=this.sensors.filter((t=>!e.includes(t.constructor))),this}addContainer(...e){return this.containers=[...this.containers,...e],this.sensors.forEach((t=>t.addContainer(...e))),this}removeContainer(...e){return this.containers=this.containers.filter((t=>!e.includes(t))),this.sensors.forEach((t=>t.removeContainer(...e))),this}on(e,...t){return this.emitter.on(e,...t),this}off(e,t){return this.emitter.off(e,t),this}trigger(e){return this.emitter.trigger(e),this}getClassNameFor(e){return this.getClassNamesFor(e)[0]}getClassNamesFor(e){const t=this.options.classes[e];return t instanceof Array?t:"string"==typeof t||t instanceof String?[t]:[]}isDragging(){return Boolean(this.dragging)}getDraggableElements(){return this.containers.reduce(((e,t)=>[...e,...this.getDraggableElementsForContainer(t)]),[])}getDraggableElementsForContainer(e){return[...e.querySelectorAll(this.options.draggable)].filter((e=>e!==this.originalSource&&e!==this.mirror))}[h](e){const t=E(e),{target:n,container:r}=t;if(!this.containers.includes(r))return;if(this.options.handle&&n&&!(0,s.closest)(n,this.options.handle))return void t.cancel();if(this.originalSource=(0,s.closest)(n,this.options.draggable),this.sourceContainer=r,!this.originalSource)return void t.cancel();this.lastPlacedSource&&this.lastPlacedContainer&&(clearTimeout(this.placedTimeoutID),this.lastPlacedSource.classList.remove(...this.getClassNamesFor("source:placed")),this.lastPlacedContainer.classList.remove(...this.getClassNamesFor("container:placed"))),this.source=this.originalSource.cloneNode(!0),this.originalSource.parentNode.insertBefore(this.source,this.originalSource),this.originalSource.style.display="none";const i=new c.DragStartEvent({source:this.source,originalSource:this.originalSource,sourceContainer:r,sensorEvent:t});if(this.trigger(i),this.dragging=!i.canceled(),i.canceled())return this.source.parentNode.removeChild(this.source),void(this.originalSource.style.display=null);this.originalSource.classList.add(...this.getClassNamesFor("source:original")),this.source.classList.add(...this.getClassNamesFor("source:dragging")),this.sourceContainer.classList.add(...this.getClassNamesFor("container:dragging")),document.body.classList.add(...this.getClassNamesFor("body:dragging")),_(document.body,"none"),requestAnimationFrame((()=>{const t=E(e).clone({target:this.source});this[g](o({},e,{detail:t}))}))}[g](e){if(!this.dragging)return;const t=E(e),{container:n}=t;let r=t.target;const o=new c.DragMoveEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t});this.trigger(o),o.canceled()&&t.cancel(),r=(0,s.closest)(r,this.options.draggable);const i=(0,s.closest)(t.target,this.containers),a=t.overContainer||i,l=this.currentOverContainer&&a!==this.currentOverContainer,u=this.currentOver&&r!==this.currentOver,d=a&&this.currentOverContainer!==a,h=i&&r&&this.currentOver!==r;if(u){const e=new c.DragOutEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,over:this.currentOver,overContainer:this.currentOverContainer});this.currentOver.classList.remove(...this.getClassNamesFor("draggable:over")),this.currentOver=null,this.trigger(e)}if(l){const e=new c.DragOutContainerEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:this.currentOverContainer});this.currentOverContainer.classList.remove(...this.getClassNamesFor("container:over")),this.currentOverContainer=null,this.trigger(e)}if(d){a.classList.add(...this.getClassNamesFor("container:over"));const e=new c.DragOverContainerEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:a});this.currentOverContainer=a,this.trigger(e)}if(h){r.classList.add(...this.getClassNamesFor("draggable:over"));const e=new c.DragOverEvent({source:this.source,originalSource:this.originalSource,sourceContainer:n,sensorEvent:t,overContainer:a,over:r});this.currentOver=r,this.trigger(e)}}[f](e){if(!this.dragging)return;this.dragging=!1;const t=new c.DragStopEvent({source:this.source,originalSource:this.originalSource,sensorEvent:e.sensorEvent,sourceContainer:this.sourceContainer});this.trigger(t),this.source.parentNode.insertBefore(this.originalSource,this.source),this.source.parentNode.removeChild(this.source),this.originalSource.style.display="",this.source.classList.remove(...this.getClassNamesFor("source:dragging")),this.originalSource.classList.remove(...this.getClassNamesFor("source:original")),this.originalSource.classList.add(...this.getClassNamesFor("source:placed")),this.sourceContainer.classList.add(...this.getClassNamesFor("container:placed")),this.sourceContainer.classList.remove(...this.getClassNamesFor("container:dragging")),document.body.classList.remove(...this.getClassNamesFor("body:dragging")),_(document.body,""),this.currentOver&&this.currentOver.classList.remove(...this.getClassNamesFor("draggable:over")),this.currentOverContainer&&this.currentOverContainer.classList.remove(...this.getClassNamesFor("container:over")),this.lastPlacedSource=this.originalSource,this.lastPlacedContainer=this.sourceContainer,this.placedTimeoutID=setTimeout((()=>{this.lastPlacedSource&&this.lastPlacedSource.classList.remove(...this.getClassNamesFor("source:placed")),this.lastPlacedContainer&&this.lastPlacedContainer.classList.remove(...this.getClassNamesFor("container:placed")),this.lastPlacedSource=null,this.lastPlacedContainer=null}),this.options.placedTimeout);const n=new c.DragStoppedEvent({source:this.source,originalSource:this.originalSource,sensorEvent:e.sensorEvent,sourceContainer:this.sourceContainer});this.trigger(n),this.source=null,this.originalSource=null,this.currentOverContainer=null,this.currentOver=null,this.sourceContainer=null}[p](e){if(!this.dragging)return;const t=E(e),n=this.source||(0,s.closest)(t.originalEvent.target,this.options.draggable),r=new c.DragPressureEvent({sensorEvent:t,source:n,pressure:t.pressure});this.trigger(r)}}function E(e){return e.detail}function _(e,t){e.style.webkitUserSelect=t,e.style.mozUserSelect=t,e.style.msUserSelect=t,e.style.oUserSelect=t,e.style.userSelect=t}t.default=y,y.Plugins={Announcement:i.Announcement,Focusable:i.Focusable,Mirror:i.Mirror,Scrollable:i.Scrollable},y.Sensors={MouseSensor:u.MouseSensor,TouchSensor:u.TouchSensor}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(4),s=(r=o)&&r.__esModule?r:{default:r},i=n(3);const a=Symbol("onMouseForceWillBegin"),l=Symbol("onMouseForceDown"),u=Symbol("onMouseDown"),d=Symbol("onMouseForceChange"),c=Symbol("onMouseMove"),h=Symbol("onMouseUp"),g=Symbol("onMouseForceGlobalChange");class f extends s.default{constructor(e=[],t={}){super(e,t),this.mightDrag=!1,this[a]=this[a].bind(this),this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){for(const e of this.containers)e.addEventListener("webkitmouseforcewillbegin",this[a],!1),e.addEventListener("webkitmouseforcedown",this[l],!1),e.addEventListener("mousedown",this[u],!0),e.addEventListener("webkitmouseforcechanged",this[d],!1);document.addEventListener("mousemove",this[c]),document.addEventListener("mouseup",this[h])}detach(){for(const e of this.containers)e.removeEventListener("webkitmouseforcewillbegin",this[a],!1),e.removeEventListener("webkitmouseforcedown",this[l],!1),e.removeEventListener("mousedown",this[u],!0),e.removeEventListener("webkitmouseforcechanged",this[d],!1);document.removeEventListener("mousemove",this[c]),document.removeEventListener("mouseup",this[h])}[a](e){e.preventDefault(),this.mightDrag=!0}[l](e){if(this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=e.currentTarget,r=new i.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),this.currentContainer=n,this.dragging=!r.canceled(),this.mightDrag=!1}[h](e){if(!this.dragging)return;const t=new i.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:null,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,t),this.currentContainer=null,this.dragging=!1,this.mightDrag=!1}[u](e){this.mightDrag&&(e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault())}[c](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new i.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}[d](e){if(this.dragging)return;const t=e.target,n=e.currentTarget,r=new i.DragPressureSensorEvent({pressure:e.webkitForce,clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r)}[g](e){if(!this.dragging)return;const t=e.target,n=new i.DragPressureSensorEvent({pressure:e.webkitForce,clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(40),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onMouseDown"),u=Symbol("onMouseUp"),d=Symbol("onDragStart"),c=Symbol("onDragOver"),h=Symbol("onDragEnd"),g=Symbol("onDrop"),f=Symbol("reset");class p extends i.default{constructor(e=[],t={}){super(e,t),this.mouseDownTimeout=null,this.draggableElement=null,this.nativeDraggableElement=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this)}attach(){document.addEventListener("mousedown",this[l],!0)}detach(){document.removeEventListener("mousedown",this[l],!0)}[d](e){e.dataTransfer.setData("text",""),e.dataTransfer.effectAllowed=this.options.type;const t=document.elementFromPoint(e.clientX,e.clientY);if(this.currentContainer=(0,o.closest)(e.target,this.containers),!this.currentContainer)return;const n=new a.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});setTimeout((()=>{this.trigger(this.currentContainer,n),n.canceled()?this.dragging=!1:this.dragging=!0}),0)}[c](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=this.currentContainer,r=new a.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),r.canceled()||(e.preventDefault(),e.dataTransfer.dropEffect=this.options.type)}[h](e){if(!this.dragging)return;document.removeEventListener("mouseup",this[u],!0);const t=document.elementFromPoint(e.clientX,e.clientY),n=this.currentContainer,r=new a.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:n,originalEvent:e});this.trigger(n,r),this.dragging=!1,this.startEvent=null,this[f]()}[g](e){e.preventDefault()}[l](e){if(e.target&&(e.target.form||e.target.contenteditable))return;const t=(0,o.closest)(e.target,(e=>e.draggable));t&&(t.draggable=!1,this.nativeDraggableElement=t),document.addEventListener("mouseup",this[u],!0),document.addEventListener("dragstart",this[d],!1),document.addEventListener("dragover",this[c],!1),document.addEventListener("dragend",this[h],!1),document.addEventListener("drop",this[g],!1);const n=(0,o.closest)(e.target,this.options.draggable);n&&(this.startEvent=e,this.mouseDownTimeout=setTimeout((()=>{n.draggable=!0,this.draggableElement=n}),this.delay.drag))}[u](){this[f]()}[f](){clearTimeout(this.mouseDownTimeout),document.removeEventListener("mouseup",this[u],!0),document.removeEventListener("dragstart",this[d],!1),document.removeEventListener("dragover",this[c],!1),document.removeEventListener("dragend",this[h],!1),document.removeEventListener("drop",this[g],!1),this.nativeDraggableElement&&(this.nativeDraggableElement.draggable=!0,this.nativeDraggableElement=null),this.draggableElement&&(this.draggableElement.draggable=!1,this.draggableElement=null)}}t.default=p},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(42),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onTouchStart"),u=Symbol("onTouchEnd"),d=Symbol("onTouchMove"),c=Symbol("startDrag"),h=Symbol("onDistanceChange");let g=!1;window.addEventListener("touchmove",(e=>{g&&e.preventDefault()}),{passive:!1});class f extends i.default{constructor(e=[],t={}){super(e,t),this.currentScrollableParent=null,this.tapTimeout=null,this.touchMoved=!1,this.pageX=null,this.pageY=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this)}attach(){document.addEventListener("touchstart",this[l])}detach(){document.removeEventListener("touchstart",this[l])}[l](e){const t=(0,o.closest)(e.target,this.containers);if(!t)return;const{distance:n=0}=this.options,{delay:r}=this,{pageX:s,pageY:i}=(0,o.touchCoords)(e);Object.assign(this,{pageX:s,pageY:i}),this.onTouchStartAt=Date.now(),this.startEvent=e,this.currentContainer=t,document.addEventListener("touchend",this[u]),document.addEventListener("touchcancel",this[u]),document.addEventListener("touchmove",this[h]),t.addEventListener("contextmenu",p),n&&(g=!0),this.tapTimeout=window.setTimeout((()=>{this[h]({touches:[{pageX:this.pageX,pageY:this.pageY}]})}),r.touch)}[c](){const e=this.startEvent,t=this.currentContainer,n=(0,o.touchCoords)(e),r=new a.DragStartSensorEvent({clientX:n.pageX,clientY:n.pageY,target:e.target,container:t,originalEvent:e});this.trigger(this.currentContainer,r),this.dragging=!r.canceled(),this.dragging&&document.addEventListener("touchmove",this[d]),g=this.dragging}[h](e){const{distance:t}=this.options,{startEvent:n,delay:r}=this,s=(0,o.touchCoords)(n),i=(0,o.touchCoords)(e),a=Date.now()-this.onTouchStartAt,l=(0,o.distance)(s.pageX,s.pageY,i.pageX,i.pageY);Object.assign(this,i),clearTimeout(this.tapTimeout),a=t&&(document.removeEventListener("touchmove",this[h]),this[c]())}[d](e){if(!this.dragging)return;const{pageX:t,pageY:n}=(0,o.touchCoords)(e),r=document.elementFromPoint(t-window.scrollX,n-window.scrollY),s=new a.DragMoveSensorEvent({clientX:t,clientY:n,target:r,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,s)}[u](e){if(clearTimeout(this.tapTimeout),g=!1,document.removeEventListener("touchend",this[u]),document.removeEventListener("touchcancel",this[u]),document.removeEventListener("touchmove",this[h]),this.currentContainer&&this.currentContainer.removeEventListener("contextmenu",p),!this.dragging)return;document.removeEventListener("touchmove",this[d]);const{pageX:t,pageY:n}=(0,o.touchCoords)(e),r=document.elementFromPoint(t-window.scrollX,n-window.scrollY);e.preventDefault();const s=new a.DragStopSensorEvent({clientX:t,clientY:n,target:r,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,s),this.currentContainer=null,this.dragging=!1,this.startEvent=null}}function p(e){e.preventDefault(),e.stopPropagation()}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(44),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.DragPressureSensorEvent=t.DragStopSensorEvent=t.DragMoveSensorEvent=t.DragStartSensorEvent=t.SensorEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get originalEvent(){return this.data.originalEvent}get clientX(){return this.data.clientX}get clientY(){return this.data.clientY}get target(){return this.data.target}get container(){return this.data.container}get pressure(){return this.data.pressure}}t.SensorEvent=i;class a extends i{}t.DragStartSensorEvent=a,a.type="drag:start";class l extends i{}t.DragMoveSensorEvent=l,l.type="drag:move";class u extends i{}t.DragStopSensorEvent=u,u.type="drag:stop";class d extends i{}t.DragPressureSensorEvent=d,d.type="drag:pressure"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(2),s=n(4),i=(r=s)&&r.__esModule?r:{default:r},a=n(3);const l=Symbol("onContextMenuWhileDragging"),u=Symbol("onMouseDown"),d=Symbol("onMouseMove"),c=Symbol("onMouseUp"),h=Symbol("startDrag"),g=Symbol("onDistanceChange");class f extends i.default{constructor(e=[],t={}){super(e,t),this.mouseDownTimeout=null,this.pageX=null,this.pageY=null,this[l]=this[l].bind(this),this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this)}attach(){document.addEventListener("mousedown",this[u],!0)}detach(){document.removeEventListener("mousedown",this[u],!0)}[u](e){if(0!==e.button||e.ctrlKey||e.metaKey)return;const t=(0,o.closest)(e.target,this.containers);if(!t)return;const{delay:n}=this,{pageX:r,pageY:s}=e;Object.assign(this,{pageX:r,pageY:s}),this.onMouseDownAt=Date.now(),this.startEvent=e,this.currentContainer=t,document.addEventListener("mouseup",this[c]),document.addEventListener("dragstart",p),document.addEventListener("mousemove",this[g]),this.mouseDownTimeout=window.setTimeout((()=>{this[g]({pageX:this.pageX,pageY:this.pageY})}),n.mouse)}[h](){const e=this.startEvent,t=this.currentContainer,n=new a.DragStartSensorEvent({clientX:e.clientX,clientY:e.clientY,target:e.target,container:t,originalEvent:e});this.trigger(this.currentContainer,n),this.dragging=!n.canceled(),this.dragging&&(document.addEventListener("contextmenu",this[l],!0),document.addEventListener("mousemove",this[d]))}[g](e){const{pageX:t,pageY:n}=e,{distance:r}=this.options,{startEvent:s,delay:i}=this;if(Object.assign(this,{pageX:t,pageY:n}),!this.currentContainer)return;const a=Date.now()-this.onMouseDownAt,l=(0,o.distance)(s.pageX,s.pageY,t,n)||0;clearTimeout(this.mouseDownTimeout),a=r&&(document.removeEventListener("mousemove",this[g]),this[h]())}[d](e){if(!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new a.DragMoveSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n)}[c](e){if(clearTimeout(this.mouseDownTimeout),0!==e.button)return;if(document.removeEventListener("mouseup",this[c]),document.removeEventListener("dragstart",p),document.removeEventListener("mousemove",this[g]),!this.dragging)return;const t=document.elementFromPoint(e.clientX,e.clientY),n=new a.DragStopSensorEvent({clientX:e.clientX,clientY:e.clientY,target:t,container:this.currentContainer,originalEvent:e});this.trigger(this.currentContainer,n),document.removeEventListener("contextmenu",this[l],!0),document.removeEventListener("mousemove",this[d]),this.currentContainer=null,this.dragging=!1,this.startEvent=null}[l](e){e.preventDefault()}}function p(e){e.preventDefault()}t.default=f},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(47),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t!e.includes(t)))}trigger(e,t){const n=document.createEvent("Event");return n.detail=t,n.initEvent(t.type,!0,!0),e.dispatchEvent(n),this.lastEvent=t,t}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e={}){const{touches:t,changedTouches:n}=e;return t&&t[0]||n&&n[0]}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(50),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){return Math.sqrt((n-e)**2+(r-t)**2)}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(52),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return requestAnimationFrame((()=>{requestAnimationFrame(e)}))}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(54),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(!e)return null;const n=t,o=t,s=t,i=t,a=Boolean("string"==typeof t),l=Boolean("function"==typeof t),u=Boolean(t instanceof NodeList||t instanceof Array),d=Boolean(t instanceof HTMLElement);let c=e;do{if(c=c.correspondingUseElement||c.correspondingElement||c,(h=c)?a?r.call(h,n):u?[...s].includes(h):d?i===h:l&&o(h):h)return c;c=c.parentNode}while(c&&c!==document.body&&c!==document);var h;return null};const r=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(56),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=t.scroll=t.onDragStop=t.onDragMove=t.onDragStart=void 0;var r,o=Object.assign||function(e){for(var t=1;t(!n||!function(e){return"static"===getComputedStyle(e).getPropertyValue("position")}(e))&&function(e){const t=/(auto|scroll)/,n=getComputedStyle(e,null),r=n.getPropertyValue("overflow")+n.getPropertyValue("overflow-y")+n.getPropertyValue("overflow-x");return t.test(r)}(e)));return"fixed"!==t&&r?r:f()}(e)}hasDefinedScrollableElements(){return Boolean(0!==this.options.scrollableElements.length)}[l](e){this.findScrollableElementFrame=requestAnimationFrame((()=>{this.scrollableElement=this.getScrollableElement(e.source)}))}[u](e){if(this.findScrollableElementFrame=requestAnimationFrame((()=>{this.scrollableElement=this.getScrollableElement(e.sensorEvent.target)})),!this.scrollableElement)return;const t=e.sensorEvent,n={x:0,y:0};"ontouchstart"in window&&(n.y=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,n.x=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0),this.currentMousePosition={clientX:t.clientX-n.x,clientY:t.clientY-n.y},this.scrollAnimationFrame=requestAnimationFrame(this[c])}[d](){cancelAnimationFrame(this.scrollAnimationFrame),cancelAnimationFrame(this.findScrollableElementFrame),this.scrollableElement=null,this.scrollAnimationFrame=null,this.findScrollableElementFrame=null,this.currentMousePosition=null}[c](){if(!this.scrollableElement||!this.currentMousePosition)return;cancelAnimationFrame(this.scrollAnimationFrame);const{speed:e,sensitivity:t}=this.options,n=this.scrollableElement.getBoundingClientRect(),r=n.bottom>window.innerHeight,o=n.top<0||r,s=f(),i=this.scrollableElement,a=this.currentMousePosition.clientX,l=this.currentMousePosition.clientY;if(i===document.body||i===document.documentElement||o){const{innerHeight:n,innerWidth:r}=window;l=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}const u=t.onDragStart=Symbol("onDragStart"),d=t.onDragMove=Symbol("onDragMove"),c=t.onDragStop=Symbol("onDragStop"),h=t.onMirrorCreated=Symbol("onMirrorCreated"),g=t.onMirrorMove=Symbol("onMirrorMove"),f=t.onScroll=Symbol("onScroll"),p=t.getAppendableContainer=Symbol("getAppendableContainer"),v=t.defaultOptions={constrainDimensions:!1,xAxis:!0,yAxis:!0,cursorOffsetX:null,cursorOffsetY:null,thresholdX:null,thresholdY:null};class m extends i.default{constructor(e){super(e),this.options=o({},v,this.getOptions()),this.scrollOffset={x:0,y:0},this.initialScrollOffset={x:window.scrollX,y:window.scrollY},this[u]=this[u].bind(this),this[d]=this[d].bind(this),this[c]=this[c].bind(this),this[h]=this[h].bind(this),this[g]=this[g].bind(this),this[f]=this[f].bind(this)}attach(){this.draggable.on("drag:start",this[u]).on("drag:move",this[d]).on("drag:stop",this[c]).on("mirror:created",this[h]).on("mirror:move",this[g])}detach(){this.draggable.off("drag:start",this[u]).off("drag:move",this[d]).off("drag:stop",this[c]).off("mirror:created",this[h]).off("mirror:move",this[g])}getOptions(){return this.draggable.options.mirror||{}}[u](e){if(e.canceled())return;"ontouchstart"in window&&document.addEventListener("scroll",this[f],!0),this.initialScrollOffset={x:window.scrollX,y:window.scrollY};const{source:t,originalSource:n,sourceContainer:r,sensorEvent:o}=e;this.lastMirrorMovedClient={x:o.clientX,y:o.clientY};const s=new a.MirrorCreateEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e});if(this.draggable.trigger(s),function(e){return/^drag/.test(e.originalEvent.type)}(o)||s.canceled())return;const i=this[p](t)||r;this.mirror=t.cloneNode(!0);const l=new a.MirrorCreatedEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e,mirror:this.mirror}),u=new a.MirrorAttachedEvent({source:t,originalSource:n,sourceContainer:r,sensorEvent:o,dragEvent:e,mirror:this.mirror});this.draggable.trigger(l),i.appendChild(this.mirror),this.draggable.trigger(u)}[d](e){if(!this.mirror||e.canceled())return;const{source:t,originalSource:n,sourceContainer:r,sensorEvent:o}=e;let s=!0,i=!0;if(this.options.thresholdX||this.options.thresholdY){const{x:e,y:t}=this.lastMirrorMovedClient;if(Math.abs(e-o.clientX){let{mirrorOffset:t,initialX:n,initialY:r}=e,s=l(e,["mirrorOffset","initialX","initialY"]);return this.mirrorOffset=t,this.initialX=n,this.initialY=r,this.lastMovedX=n,this.lastMovedY=r,o({mirrorOffset:t,initialX:n,initialY:r},s)}))}[g](e){if(e.canceled())return null;const t={mirror:e.mirror,sensorEvent:e.sensorEvent,mirrorOffset:this.mirrorOffset,options:this.options,initialX:this.initialX,initialY:this.initialY,scrollOffset:this.scrollOffset,passedThreshX:e.passedThreshX,passedThreshY:e.passedThreshY,lastMovedX:this.lastMovedX,lastMovedY:this.lastMovedY};return Promise.resolve(t).then(O({raf:!0})).then((e=>{let{lastMovedX:t,lastMovedY:n}=e,r=l(e,["lastMovedX","lastMovedY"]);return this.lastMovedX=t,this.lastMovedY=n,o({lastMovedX:t,lastMovedY:n},r)}))}[p](e){const t=this.options.appendTo;return"string"==typeof t?document.querySelector(t):t instanceof HTMLElement?t:"function"==typeof t?t(e):e.parentNode}}function b(e){let{source:t}=e,n=l(e,["source"]);return C((e=>{const r=t.getBoundingClientRect();e(o({source:t,sourceRect:r},n))}))}function y(e){let{sensorEvent:t,sourceRect:n,options:r}=e,s=l(e,["sensorEvent","sourceRect","options"]);return C((e=>{const i=null===r.cursorOffsetY?t.clientY-n.top:r.cursorOffsetY,a=null===r.cursorOffsetX?t.clientX-n.left:r.cursorOffsetX;e(o({sensorEvent:t,sourceRect:n,mirrorOffset:{top:i,left:a},options:r},s))}))}function E(e){let{mirror:t,source:n,options:r}=e,s=l(e,["mirror","source","options"]);return C((e=>{let i,a;if(r.constrainDimensions){const e=getComputedStyle(n);i=e.getPropertyValue("height"),a=e.getPropertyValue("width")}t.style.display=null,t.style.position="fixed",t.style.pointerEvents="none",t.style.top=0,t.style.left=0,t.style.margin=0,r.constrainDimensions&&(t.style.height=i,t.style.width=a),e(o({mirror:t,source:n,options:r},s))}))}function _(e){let{mirror:t,mirrorClasses:n}=e,r=l(e,["mirror","mirrorClasses"]);return C((e=>{t.classList.add(...n),e(o({mirror:t,mirrorClasses:n},r))}))}function S(e){let{mirror:t}=e,n=l(e,["mirror"]);return C((e=>{t.removeAttribute("id"),delete t.id,e(o({mirror:t},n))}))}function O({withFrame:e=!1,initial:t=!1}={}){return n=>{let{mirror:r,sensorEvent:s,mirrorOffset:i,initialY:a,initialX:u,scrollOffset:d,options:c,passedThreshX:h,passedThreshY:g,lastMovedX:f,lastMovedY:p}=n,v=l(n,["mirror","sensorEvent","mirrorOffset","initialY","initialX","scrollOffset","options","passedThreshX","passedThreshY","lastMovedX","lastMovedY"]);return C((e=>{const n=o({mirror:r,sensorEvent:s,mirrorOffset:i,options:c},v);if(i){const e=h?Math.round((s.clientX-i.left-d.x)/(c.thresholdX||1))*(c.thresholdX||1):Math.round(f),o=g?Math.round((s.clientY-i.top-d.y)/(c.thresholdY||1))*(c.thresholdY||1):Math.round(p);c.xAxis&&c.yAxis||t?r.style.transform=`translate3d(${e}px, ${o}px, 0)`:c.xAxis&&!c.yAxis?r.style.transform=`translate3d(${e}px, ${a}px, 0)`:c.yAxis&&!c.xAxis&&(r.style.transform=`translate3d(${u}px, ${o}px, 0)`),t&&(n.initialX=e,n.initialY=o),n.lastMovedX=e,n.lastMovedY=o}e(n)}),{frame:e})}}function C(e,{raf:t=!1}={}){return new Promise(((n,r)=>{t?requestAnimationFrame((()=>{e(n,r)})):e(n,r)}))}t.default=m},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(62),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=Object.assign||function(e){for(var t=1;t{this.getElements().forEach((e=>function(e){Boolean(!e.getAttribute("tabindex")&&-1===e.tabIndex)&&(c.push(e),e.tabIndex=0)}(e)))}))}[l](){requestAnimationFrame((()=>{this.getElements().forEach((e=>function(e){const t=c.indexOf(e);-1!==t&&(e.tabIndex=-1,c.splice(t,1))}(e)))}))}}t.default=d;const c=[]},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r,o=n(64),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=class{constructor(e){this.draggable=e}attach(){throw new Error("Not Implemented")}detach(){throw new Error("Not Implemented")}}},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=Object.assign||function(e){for(var t=1;t{g.removeChild(n)}),t)}(e,{expire:this.options.expire})}[a](){this.draggable.trigger=e=>{try{this[u](e)}finally{this.originalTriggerMethod.call(this.draggable,e)}}}[l](){this.draggable.trigger=this.originalTriggerMethod}}t.default=h;const g=function(){const e=document.createElement("div");return e.setAttribute("id","draggable-live-region"),e.setAttribute("aria-relevant","additions"),e.setAttribute("aria-atomic","true"),e.setAttribute("aria-live","assertive"),e.setAttribute("role","log"),e.style.position="fixed",e.style.width="1px",e.style.height="1px",e.style.top="-1px",e.style.overflow="hidden",e}();document.addEventListener("DOMContentLoaded",(()=>{document.body.appendChild(g)}))},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.defaultOptions=void 0;var r,o=n(67),s=(r=o)&&r.__esModule?r:{default:r};t.default=s.default,t.defaultOptions=o.defaultOptions},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0}),t.DraggableDestroyEvent=t.DraggableInitializedEvent=t.DraggableEvent=void 0;var r,o=n(1),s=(r=o)&&r.__esModule?r:{default:r};class i extends s.default{get draggable(){return this.data.draggable}}t.DraggableEvent=i,i.type="draggable";class a extends i{}t.DraggableInitializedEvent=a,a.type="draggable:initialize";class l extends i{}t.DraggableDestroyEvent=l,l.type="draggable:destroy"},function(e,t,n){Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t{},s=e=>"number"==typeof e&&Number.isFinite(e),i=e=>"string"==typeof e,a=Array.isArray,l=e=>"object"==typeof e&&!!e&&!a(e),u=e=>"function"==typeof e,d=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),c=e=>{for(let t in e)if(d(e,t))return!1;return!0},h=(e,t)=>e>t,g=(e,t)=>((e,t,n)=>{let r,o;if(a(e))for(let s=0,i=e.length;s{let t=null;if("/"===e.charAt(0)&&("/"===e.charAt(1)?e=`https://${e}`:t=e),null===t)try{t=new URL(e).pathname}catch(n){t=e}return t},p=e=>`__duo-toolbox__-${e}`,v=p("global_variables"),m=(e,t)=>(l(window[v])||(window[v]={}),d(window[v],e)?window[v][e]:t),b=(e,t)=>{l(window[v])||(window[v]={}),window[v][e]=t},y=(e,t,n)=>{const r=t(m(e,n));return b(e,r),r},E=e=>y(`__counter::${e}__`,(e=>e+1),0),_=p("original_function"),S=p("override_version"),O=(e,t,n,r=1)=>((e,t,n,r,o=1)=>{d(window,e)&&t(window[e])?n(window[e]):y("pending_global_listeners",((s={})=>{var i;if(!s[e]){s[e]={};let n=window[e];Object.defineProperty(window,e,{get:()=>n,set:r=>{t(r)?(Object.defineProperty(window,e,{value:r,configurable:!0,enumerable:!0,writable:!0}),Object.values(s[e]).forEach((e=>e.callback(r)))):n=r},configurable:!0})}return o>(Number(null===(i=s[e][r])||void 0===i?void 0:i.version)||0)&&(s[e][r]={callback:n,version:o}),s}))})(e,u,(e=>((e,t,n,r=1)=>{var s;if(l(e)&&r>(Number(null===(s=e[t])||void 0===s?void 0:s[S])||0)){var i;const s=(null===(i=e[t])||void 0===i?void 0:i[_])||e[t]||o;e[t]=n(s),e[t][_]=s,e[t][S]=r}})(null==e?void 0:e.prototype,t,n,r)),`instance_method:${t}`,r),C=p("logging_iframe"),M=e=>{e.preventDefault(),e.stopPropagation()},w="characterIntro",D="characterMatch",x="characterPuzzle",P="characterSelect",j="characterTrace",L="selectPronunciation",T="selectTranscription",A=["assist",w,D,x,P,j,"completeReverseTranslation","definition","dialogue","form","freeResponse","gapFill","judge","listen","listenComprehension","listenIsolation","listenMatch","listenSpell","listenTap","match","name","partialReverseTranslate","readComprehension","select",L,T,"speak","tapCloze","tapClozeTable","tapComplete","tapCompleteTable","tapDescribe","translate","typeCloze","typeClozeTable","typeCompleteTable"],F=[w,D,x,P,j,L,T],X=e=>{var t,n;return(null===(t=e.metadata)||void 0===t?void 0:t.source_language)||e.sourceLanguage||(null===(n=e.metadata)||void 0===n?void 0:n.learning_language)},N=e=>{var t;return(null===(t=e.metadata)||void 0===t?void 0:t.target_language)||e.targetLanguage||X(e)},Y="none",k="challenge",I=/duolingo\.com\/stories\/(?[^/]+)/,z=/forum\.duolingo\.com\/comment\/(?[\d]+)/,q=/duolingo\.com\/characters\/?/,$=/duolingo\.com\/dictionary\/(?.+)\/(?.+)\/(?[\w]+)\/?/,B=()=>(()=>{let e=document.getElementById(C);return e&&e.isConnected||(e=document.createElement("iframe"),e.id=C,e.style.display="none",document.body.appendChild(e)),e})().contentWindow.console,H=(...e)=>B().error(...e),R=Number.MAX_SAFE_INTEGER,K=Math.round(R/4),V=Math.round(2*K),W="effect",U="tts_sentence",G="tts_word",J="tts_morpheme",Q="unknown",Z="normal",ee="slow",te="howler",ne="rate",re="volume",oe=p("forced_setting"),se=e=>l(e)&&!!e[oe],ie=e=>e.value,ae=e=>({[oe]:!0,value:e}),le=(e,t)=>ne===e&&s(t)||re===e&&t>=0&&t<=1,ue=(e,t)=>((e,t,n,r=1)=>{if(!l(e))return;const o=p(`${t}_override_version`);r>(Number(e[o])||0)&&Object.defineProperty(e,t,n(Object.getOwnPropertyDescriptor(e,t)))})(HTMLMediaElement,t,(t=>({...t,set:function(n){const r=he[e];s(n)?(this[r.originalValueKey]=n,d(this,r.valueKey)&&(n=this[r.isRelativeKey]?ge(e,n*this[r.valueKey]):this[r.valueKey])):se(n)&&(n=ie(n)),s(n)&&(this[r.listenerValueKey]=n),t.set.call(this,n)}}))),de=(e,t)=>O("Howl",t,(n=>function(){const r=this,o=arguments,s=he[e];let i=!1;const a=r._queue.length;(1===o.length||2===o.length&&void 0===o[1])&&-1===r._getSoundIds().indexOf(o[0])&&(se(o[0])?(i=!0,o[0]=ie(o[0])):le(e,o[0])&&(r[s.originalValueKey]=o[0],d(r,s.valueKey)&&(i=!0,r[s.isRelativeKey]?o[0]=ge(e,o[0]*r[s.valueKey]):o[0]=r[s.valueKey])),i&&(r[s.listenerValueKey]=o[0]));const l=n.apply(r,arguments);return i&&a({...r,functions:{audio:{applyOverride:()=>ue(e,n),getter:e=>e[t],setter:(e,n)=>e[t]=n,hasQueuedUpdate:()=>!1},[te]:{applyOverride:()=>de(e,n),getter:e=>e[n](),setter:(e,t)=>e[n](t),hasQueuedUpdate:e=>e._queue.find((e=>e.event===n))}},priorityKey:p(`${e}_priority`),isRelativeKey:p(`${e}_is_relative`),valueKey:p(`forced_${e}_value`),originalValueKey:p(`original_${e}_value`),listenerValueKey:p(`${e}_value`)}),he={[ne]:ce(ne,"playbackRate","rate",{minValue:.5,maxValue:4,defaultValue:1}),[re]:ce(re,"volume","volume",{minValue:0,maxValue:1,defaultValue:1})},ge=(e,t)=>he[e]?Math.max(he[e].minValue,Math.min(t,he[e].maxValue)):t,fe="event_listeners",pe=()=>`__listener::${E("last_event_listener_id")}__`,ve=e=>{var t;return(null===(t=m(fe,{}))||void 0===t?void 0:t[e])||{}},me=(e,t)=>{y(fe,(n=>Object.assign(n||{},{[e]:t})))},be=e=>!c(ve(e)),ye=(e,t)=>{const n=ve(e);return c(n)?null:t(Object.values(n))},Ee=(e,t,n=pe())=>{const r=ve(e);return r[n]=t,me(e,r),()=>Se(e,n)},_e=(e,t,n,r,o=Ee,s=pe())=>{const i=`__${t}::${e}__`;var l;l=i,ve(t)[l]||o(t,((...t)=>{const n=r(...t);a(n)&&Oe(e,...n)}),i);const u=Ee(e,n,s);return()=>{u(),be(e)||Se(t,i)}},Se=(e,t)=>{const n=ve(e);delete n[t],me(e,n)},Oe=(e,...t)=>ye(e,(e=>e.flatMap((e=>{try{return[e(...t)]}catch(e){return[]}})))),Ce="practice_session_loaded",Me="practice_challenges_loaded",we="pre_fetched_session_loaded",De="story_loaded",xe="alphabets_loaded",Pe="forum_discussion_loaded",je="dictionary_lexeme_loaded",Le="sound_playback_requested",Te="sound_playback_confirmed",Ae="sound_playback_cancelled",Fe="ui_loaded",Xe={[xe]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/alphabets\/courses\/(?[^/]+)\/(?[^/?]+)\/?/g,[je]:/\/api\/1\/dictionary_page/g,[Pe]:/\/comments\/([\d]+)/g,[Ce]:/\/[\d]{4}-[\d]{2}-[\d]{2}\/sessions/g,[De]:/\/api2\/stories/g,user_data_loaded:/\/[\d]{4}-[\d]{2}-[\d]{2}\/users\/[\d]+/g},Ne=(e,t,n=pe())=>(O("XMLHttpRequest","open",(e=>function(t,n,r,o,s){let i,a;for(const[e,t]of Object.entries(Xe))if(a=Array.from(n.matchAll(t))[0],a){i=e;break}return i&&ye(i,(e=>{this.addEventListener("load",(()=>{try{const t=l(this.response)?this.response:JSON.parse(this.responseText);e.forEach((e=>e(t,a.groups||{})))}catch(e){H(e,`Could not handle the XHR result (event: ${i}): `)}}))})),e.call(this,t,n,r,o,s)}),2),Ee(e,t,n)),Ye=(e,t=pe())=>{const n=we,r=e=>ye(n,(t=>{e.addEventListener("success",(()=>{try{t.forEach((t=>t(e.result)))}catch(e){H(e,`Could not handle the IDBRequest result (event: ${n}): `)}}))}));return O("IDBIndex","get",(e=>function(t){const n=e.call(this,t);return i(t)&&t&&"prefetchedSessions"===this.objectStore.name&&r(n),n})),O("IDBObjectStore","get",(e=>function(t){const n=e.call(this,t);return"prefetchedSessions"===this.name&&r(n),n})),Ee(n,e,t)},ke=e=>{const t=e=>{let t;if(l(e)){var n;t=[{challenges:[e.challenges,e.adaptiveChallenges,null===(n=e.adaptiveInterleavedChallenges)||void 0===n?void 0:n.challenges].filter(a).flat(),sessionMetaData:e.metadata||{}}]}return t},n=_e(Me,Ce,e,t,Ne),r=_e(Me,we,e,t,((e,t,n)=>Ye(t,n)));return()=>{n(),r()}},Ie=(e,t)=>({url:e,type:U,speed:Z,language:t}),ze=(e,t)=>({url:e,type:G,speed:Z,language:t}),qe=(e,t)=>({url:e,type:J,speed:Z,language:t}),$e=Object.fromEntries(["/sounds/7abe057dc8446ad325229edd6d8fd250.mp3","/sounds/2aae0ea735c8e9ed884107d6f0a09e35.mp3","/sounds/421d48c53ad6d52618dba715722278e0.mp3","/sounds/37d8f0b39dcfe63872192c89653a93f6.mp3","/sounds/0a27c1ee63dd220647e8410a0029aed2.mp3","/sounds/a28ff0a501ef5f33ca78c0afc45ee53e.mp3","/sounds/2e4669d8cf839272f0731f8afa488caf.mp3","/sounds/f0b6ab4396d5891241ef4ca73b4de13a.mp3"].map((e=>{return[e,(t=e,{url:t,type:W,speed:Z,language:null})];var t}))),Be=/\/duolingo-data\/tts\/(?[a-z-_]+)\/token\//i,He="sound_type_map",Re=()=>m(He,$e),Ke=[Q,U,G,J,W],Ve=[Z,ee],We=(e,t)=>((e,t,n)=>{for(const r of e){const e=Number(r(t,n));if(!isNaN(e)&&0!==e)return e}return 0})([(e,t)=>Ke.indexOf(e.type)-Ke.indexOf(t.type),(e,t)=>Ve.indexOf(e.speed)-Ve.indexOf(t.speed)],e,t),Ue=e=>{const t=Re()||{};for(const n of e){const e=f(n.url);(!t[e]||We(n,t[e])>0)&&(t[e]=n)}b(He,t)},Ge="sound_detection_listeners_version",Je="sound_detection_unregistration_callbacks",Qe=(e,t,n)=>{var r;return{url:e.url,type:t,speed:(null===(r=e.speed)||void 0===r?void 0:r.value)||Z,language:n}},Ze=()=>{const e=2<=(Number(m(Ge))||0);var t,n,r,o,s;!!m(Je)&&e||(e||et(),b(Ge,2),b(Je,[(s=e=>(e=>{const t=e.learningLanguage;a(null==e?void 0:e.elements)&&Ue(e.elements.map((e=>{var t;return(null==e||null===(t=e.line)||void 0===t?void 0:t.content)||(null==e?void 0:e.learningLanguageTitleContent)})).flatMap((e=>[null==e?void 0:e.audio,null==e?void 0:e.audioPrefix,null==e?void 0:e.audioSuffix])).map((e=>null==e?void 0:e.url)).filter(i).map((e=>Ie(e,t))))})(e),Ne(De,s)),(r=(e,t)=>((e,t)=>{const n=t.toLanguage;a(null==e?void 0:e.alphabets)&&i(null==t?void 0:t.toLanguage)&&Ue(e.alphabets.flatMap((e=>null==e?void 0:e.groups)).flatMap((e=>null==e?void 0:e.characters)).flat().map((e=>null==e?void 0:e.ttsUrl)).filter(i).map((e=>qe(e,n))))})(e,t),Ne(xe,r,o)),(n=e=>{var t;i(null==(t=e)?void 0:t.tts_url)&&Ue([Ie(t.tts_url,t.sentence_language)])},Ne(Pe,n)),(t=e=>(e=>{const t=[],n=e.learning_language;i(e.tts)&&t.push(ze(e.tts,n)),a(e.alternative_forms)&&t.push(e.alternative_forms.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>Ie(e,n)))),Ue(t.flat())})(e),Ne(je,t)),ke((e=>(e=>{const t=[];for(const s of e){var n;const e=s.type,u=X(s),d=N(s);if(i(s.tts)){const n=F.indexOf(e)>=0?qe:Ie;t.push(n(s.tts,u))}if(i(s.slowTts)&&t.push({url:s.slowTts,type:U,speed:ee,language:u}),i(s.solutionTts)&&t.push(Ie(s.solutionTts,d)),a(s.choices)){const n=-1===F.indexOf(e)?ze:qe;t.push(s.choices.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>n(e,d))))}if(a(s.tokens)&&t.push(s.tokens.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>ze(e,u)))),a(s.questionTokens)&&t.push(s.questionTokens.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>ze(e,d)))),a(null===(n=s.metadata)||void 0===n?void 0:n.speakers))for(const e of s.metadata.speakers){var r,o;l(null===(r=e.tts)||void 0===r?void 0:r.tokens)&&t.push(Object.values(e.tts.tokens).filter((e=>i(e.url))).map((e=>Qe(e,G,d)))),a(null===(o=e.tts)||void 0===o?void 0:o.sentence)&&t.push(e.tts.sentence.filter((e=>i(e.url))).map((e=>Qe(e,U,d))))}if(a(s.pairs)){const n=-1===F.indexOf(e)?ze:qe;t.push(s.pairs.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>n(e,d))))}a(s.options)&&t.push(s.options.map((e=>null==e?void 0:e.tts)).filter(i).map((e=>ze(e,d))))}Ue(t.flat())})(e.challenges)))]))},et=()=>{const e=m(Je);!a(e)||be("sound_initialized")||be(Le)||be(Ae)||be(Te)||(e.forEach((e=>e())),b(Ge,null),b(Je,null))},tt=(e,t,n)=>{const r=(e=>{const t=Re()[e];if(l(t))return t;const n=e.match(Be);return n?ze(e,n.language):null})(f(t));return{url:t,type:(null==r?void 0:r.type)||Q,speed:(null==r?void 0:r.speed)||Z,language:null==r?void 0:r.language,playbackStrategy:n,sound:e}},nt=(e,t)=>{O("Howl","play",(e=>function(t){var n;b("is_howler_used",!0);const r=String(this._src||(null===(n=this._parent)||void 0===n?void 0:n._src)||"").trim();return""!==r?((e,t,n,r)=>{const o=tt(e,t,n);let s=!1;try{var i;s=null===(i=Oe(Le,o))||void 0===i?void 0:i.some((e=>!1===e)),Oe(s?Ae:Te,o)}catch(e){H(e,`Could not handle playback for sound "${t}" (using "${n}"): `)}return s?null:r()})(this,r,te,(()=>e.call(this,t))):e.call(this,t)})),Ze();const n=Ee(e,t);return()=>{n(),et()}},rt="is_ui_loaded",ot=p("action_request"),st=p("action_result"),it=p("background_event_notification"),at=(e,t)=>{y("mutexes",(n=>(l(n[e])||(n[e]={currentHolder:null,pendingHolders:[]}),n[e]=t(n[e]),n)),{})},lt=async(e,{priority:t=V,timeoutDelay:n=null,onSupersessionRequest:r=o}={})=>new Promise(((o,s)=>{const i=E("last_mutex_holder_id"),a=n>0?setTimeout((()=>{at(e,(e=>({...e,pendingHolders:e.pendingHolders.filter((e=>i!==e.uniqueId))}))),s()}),n):null,l=()=>{a&&clearTimeout(a),o((()=>((e,t)=>{at(e,(e=>{var n;if((null===(n=e.currentHolder)||void 0===n?void 0:n.uniqueId)!==t)return;const r=g(e.pendingHolders,(e=>e.priority));return r?(setTimeout((()=>r.onAcquired())),e.currentHolder=r,e.pendingHolders=e.pendingHolders.filter((e=>e.uniqueId!==r.uniqueId))):e.currentHolder=null,e}))})(e,i)))},u={uniqueId:i,priority:t,onAcquired:l,onSupersessionRequest:r};at(e,(e=>(e.currentHolder?(e.pendingHolders.push(u),u.priority>e.currentHolder.priority&&setTimeout((()=>e.currentHolder.onSupersessionRequest()))):(e.currentHolder=u,setTimeout((()=>l()))),e)))})),ut="always",dt="never",ct={enableDnd:!0,enableKeyboardShortcuts:!0,disableWordButtonsTts:!1,disableWordAnimation:dt};let ht=ct,gt=null,ft=null,pt=null,vt=null,mt=[],bt=null,yt=!1,Et=!1,_t=!1,St=!1,Ot=!1,Ct=null,Mt=null,wt=null;const Dt=e=>e.classList.contains(nn),xt=()=>gt?Array.from(gt.querySelectorAll(Qt)):[],Pt=e=>e.disabled||"true"===e.ariaDisabled,jt=e=>(e.childNodes[0]||e).textContent.trim(),Lt=()=>xt().map((e=>Dt(e)?"":jt(e))).filter((e=>e.length>0)),Tt=e=>{if(!ft)return;const t=[],n=xt().slice(e);dt!==ht.disableWordAnimation&&kt(!1);const r=()=>{const e=n.shift();if(e){if(e.click(),!Dt(e)){const n=jt(e);""!==n&&t.push(n)}setTimeout((()=>{if(e.isConnected){const t=e.closest(Jt.join(","))||e;t.parentNode.removeChild(t)}r()}),1)}else Ot=!0,setTimeout(s,1)};let o=!1;const s=()=>{try{const n=ft?Array.from(ft.querySelectorAll(Qt)):[];if(o||!vt||null===(e=pt)||void 0===e||!e.querySelector(en)){o=!0;const e=t.shift(),r=n.find((t=>!Pt(t)&&jt(t)===e));r&&r.click()}t.length>0?setTimeout(s,1):setTimeout(i,200)}catch(e){throw i(),e}var e},i=()=>{Ot=!1,St=!1,Xt(),ut!==ht.disableWordAnimation&&kt(!0)};r()},At=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!ft)return;const n=xt(),r=n.slice(e).map((e=>(e.click(),Dt(e)?"":jt(e)))).filter((e=>e.length>0));if(t){const e=t.dragEvent.source,n=document.createElement("div");e.parentNode.removeChild(e),n.appendChild(e)}Ot=!0;try{ft&&Array.from(ft.querySelectorAll(Qt)).filter((e=>!Pt(e))).map((e=>{const t=r.indexOf(jt(e));return t>=0&&(r[t]=null),[t,e]})).filter((e=>e[0]>=0)).sort(((e,t)=>e[0]-t[0])).forEach((e=>e[1].click()))}finally{Ot=!1,St=!1,Xt()}},Ft=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;St=!0,Mt=null,wt=null,vt?Tt(e):At(e,t)},Xt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;(e||xt()).forEach(((e,t)=>{e.classList.toggle(tn,t===Mt)}))},Nt=e=>{const t=xt();0===t.length||Kt===e&&0===Mt||Vt===e&&t.length-1===Mt?Mt=null:null===Mt?Mt=Vt===e?0:t.length-1:Mt+=Kt===e?-1:1,Xt(t)},Yt=e=>{if(null!==Mt){const t=xt();if(t[Mt]){const n=t[Mt].parentNode;null===wt&&(wt=Mt),Kt===e&&Mt>0?(_t=!0,n.parentNode.insertBefore(n,t[Mt-1].parentNode),Mt-=1):Vt===e&&Mtdocument.body.classList.toggle("_duo-wb-dnd_disabled_word_animation",!e),It=e=>{ht=e,dt===ht.disableWordAnimation?kt(!0):ut===ht.disableWordAnimation?kt(!1):"dnd"===ht.disableWordAnimation&&kt(!St)};(e=>{if(m(rt))setTimeout(e);else{if(!m("is_ui_loading_detected")){var t;let e;e=a(null===(t=window.duo)||void 0===t?void 0:t.stylesheets)?new Promise((e=>{const t=()=>{Array.from(document.styleSheets).some((e=>window.duo.stylesheets.some((t=>String(e.href||"").indexOf(t)>=0))))&&(clearInterval(n),e())},n=setInterval(t,1e3);t()})):Promise.resolve();const n=()=>e.then((()=>{b(rt,!0),Oe(Fe)}));"complete"===document.readyState||"interactive"===document.readyState?setTimeout(n,1):document.addEventListener("DOMContentLoaded",n)}Ee(Fe,e)}})((()=>{(async(e,t)=>new Promise(((n,r)=>{const o=t=>{t.source===window&&l(t.data)&&st===t.data.type&&e===t.data.action&&("success"===t.data.result?n(t.data.value):r(t.data.error),t.stopPropagation(),window.removeEventListener("message",o))};window.addEventListener("message",o),window.postMessage({type:ot,action:e,value:t},"*")})))("get_options").catch((()=>ct)).then(It)})),((e,t)=>{var n;const r=a(t)?e=>t.indexOf(e)>=0:()=>!0,o=t=>{const n=l(t.data)?t.data:t;return n&&it===n.type&&r(n.event)&&e(n.event,n.value)};"undefined"!=typeof chrome&&null!==(n=chrome.runtime)&&void 0!==n&&n.onMessage?chrome.runtime.onMessage.addListener(o):window.addEventListener("message",o)})(((e,t)=>"options_changed"===e&&It(t)));const zt=new MutationObserver((()=>{var e;null!==(e=pt)&&void 0!==e&&e.querySelector(en)&&(vt=!0,zt.disconnect())})),qt=new MutationObserver((()=>{if(null!==Mt&&!_t&&!Et&&!St){const e=xt();let t=e.findIndex((e=>e.classList.contains(tn)));-1===t&&e.length>0&&(t=Math.max(0,Math.min(e.length-1,Mt))),t>=0?(Mt=t,Xt(e)):Mt=null}})),$t=e=>{var t,n;null===(t=gt)||void 0===t||null===(n=t.querySelectorAll(`.${nn}`))||void 0===n||n.forEach((e=>e.classList.remove(nn))),null==e||e.classList.add(nn)};setInterval((()=>{const e=document.querySelector(Wt);if(e!==pt){if(pt=e,!pt)return;null===vt&&zt.observe(pt,{childList:!0})}const t=document.querySelector(Gt);t!==ft&&(ft=t,ft&&ft.addEventListener("click",(e=>{(e.target.matches("button")||e.target.closest("button"))&&(Ct=Date.now())})));const n=document.querySelector(Ut);if(n!==gt){if(gt=n,Mt=null,wt=null,!gt)return;qt.observe(gt,{childList:!0,subtree:!0});const e=new r.Sortable(gt,{draggable:Zt,distance:5});e.removePlugin(r.Draggable.Plugins.Mirror),e.on("drag:start",(e=>{ht.enableDnd&&!_t&&Ht()?($t(e.originalSource.querySelector(Qt)),Et=!0,mt=Lt()):e.cancel()})),e.on("sortable:stop",(e=>{Et=!1,null===vt&&(vt=!1,zt.disconnect());const t=Lt();var n;const r=Array.from((null===(n=gt)||void 0===n?void 0:n.getElementsByClassName(nn))||[]).map((e=>jt(e)));let o=Math.min(...[mt.findIndex(((e,n)=>e!==t[n])),...r.map((e=>t.indexOf(e))).filter((e=>e>=0&&t[e]===t[e+1])),...r.map((e=>mt.indexOf(e))).filter((e=>e>=0&&mt[e]===mt[e+1]&&t[e]!==t[e+1]))].filter((e=>e>=0)));if(-1===o||1/0===o){if(!(t.length>mt.length))return void $t(null);o=mt.length}Ft(o,e)}))}}),50),nt(Le,(e=>!(G===e.type&&(Ot||ht.disableWordButtonsTts&&Math.abs(Date.now()-Ct)<=Rt))));const Bt=()=>{yt||bt||(yt=!0,lt("hotkeys",{priority:1,onSupersessionRequest:()=>{bt&&!_t&&(bt(),bt=null,Bt())}}).then((e=>{yt=!1,bt=e})).catch(o))};Bt();const Ht=()=>{const e=(()=>{const e=document.location.href;let t=e.match(z);if(a(t))return{type:"forum_discussion",commentId:Number(t.comment_id)||null};var n;if(t=e.match(I),a(t)||document.querySelector('[data-test="stories-element"]'))return{type:"story",storyKey:null===(n=t)||void 0===n?void 0:n.story_key};if(e.match(q))return{type:"characters"};if(t=e.match($),a(t))return{type:"dictionary",languageName:t.language,lexeme:t.lexeme,lexemeId:t.lexeme_id};const r=document.querySelector('[data-test*="challenge"]');if(r){let e=null;for(const t of(null===(o=r.getAttribute("data-test"))||void 0===o?void 0:o.split(/\s+/))||[]){var o,s;const n=null===(s=t.match(/challenge-(?[a-z]+)/i))||void 0===s?void 0:s.groups.type.trim();if(A.indexOf(n)>=0){e=n;break}}let t=Y;const n=document.querySelector("._2Fc1K ._1tuLI");return n&&(t=n.classList.contains("_3e9O1")?"correct":"incorrect"),{type:k,challengeType:e,result:t,isCompleted:Y!==t}}return{type:"unknown"}})();return k===e.type&&!e.isCompleted};document.addEventListener("keydown",(e=>{var t;Et?"Backspace"===e.key&&(e.preventDefault(),e.stopImmediatePropagation()):!gt||St||null===bt||!ht.enableKeyboardShortcuts||!Ht()||document.activeElement&&["input","select","textarea"].indexOf(document.activeElement.tagName.toLowerCase())>=0||("ArrowLeft"===e.key?(M(e),e.ctrlKey?Yt(Kt):Nt(Kt)):"ArrowRight"===e.key?(M(e),e.ctrlKey?Yt(Vt):Nt(Vt)):e.ctrlKey||"Delete"===e.key&&(M(e),null!==Mt&&(null===(t=xt()[Mt])||void 0===t||t.click()))),gt&&(Ct=Date.now())}),!0),document.addEventListener("keyup",(e=>{"Control"===e.key&&(_t&&Mt!==wt&&Ft(Math.max(0,Math.min(Mt,wt))),_t=!1)}));const Rt=100,Kt="left",Vt="right",Wt="#overlays",Ut=".PcKtj",Gt='[data-test="word-bank"]',Jt=["._1yW4j",".JSl9i","._2LmyT"],Qt=Jt.map((e=>`${e} button`)).join(","),Zt=Jt.map((e=>`${Ut} ${e}`)).join(","),en="button._1O290",tn="pmjld",nn="_dnd_-dragged-word-button"}(); diff --git a/package.json b/package.json index d23807e..642b377 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "A minimal browser extension for enabling the drag'n'drop of words in the word-bank answers on Duolingo.", "license": "MIT", "author": "blmage", - "version": "2.1.1", + "version": "2.2.0", "homepage": "https://github.com/blmage/duolingo-word-bank-dnd", "scripts": { "build": "rollup -c --environment production",