{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/wavesurfer.js/dist/wavesurfer.esm.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./app/javascript/utils/data_binder.js","webpack:///./app/javascript/utils/ring_to_endpoint.js","webpack:///./app/javascript/utils/common.js","webpack:///./app/javascript/reporting/audio_player.js","webpack:///./app/javascript/packs/app.js","webpack:///./app/javascript/reporting/report_detail_row.js","webpack:///./app/javascript/reporting/user_reports.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","runtime","undefined","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","obj","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","resolve","reject","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_typeof","_get","Reflect","target","receiver","base","_superPropBase","desc","getOwnPropertyDescriptor","arguments","apply","_getPrototypeOf","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","e","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","minLen","_arrayLikeToArray","toString","from","test","len","arr2","h","a","throw","SuppressedError","decode","_callee","_context","AudioContext","sampleRate","decodeAudioData","finally","close","createBuffer","some","_t","_i2","Math","abs","_step","_iterator","allowArrayLike","it","F","_e6","f","normalCompletion","didErr","step","_e7","return","_createForOfIteratorHelper","_t2","duration","numberOfChannels","getChannelData","copyFromChannel","AudioBuffer","copyToChannel","fetchBlob","_callee2","_context2","fetch","blob","listeners","_this","Set","add","un","on","_s2","delete","_len","_key","_s3","_super","_this2","media","document","createElement","autoplay","playbackRate","_this3","addEventListener","removeEventListener","onMediaEvent","once","currentSrc","src","getSrc","startsWith","URL","revokeObjectURL","revokeSrc","Blob","createObjectURL","load","pause","play","currentTime","paused","ended","volume","muted","preservesPitch","setSinkId","_s4","_super2","_this4","timeouts","isScrolling","audioData","resizeObserver","isDragging","options","container","querySelector","HTMLElement","parent","_this4$initHtml2","initHtml","appendChild","scrollContainer","wrapper","canvasWrapper","progressWrapper","cursor","initEvents","_this5","getBoundingClientRect","clientX","left","width","emit","initDrag","_this5$scrollContaine","scrollLeft","scrollWidth","clientWidth","createDelay","ResizeObserver","reRender","observe","_this6","_o","button","preventDefault","stopPropagation","clientY","_t$getBoundingClientR","_s5","_n2","top","u","setTimeout","max","min","height","Number","clientHeight","attachShadow","innerHTML","concat","getHeight","remove","disconnect","timeout","clearTimeout","getContext","createLinearGradient","addColorStop","fillStyle","convertColorValues","waveColor","renderFunction","_r","window","devicePixelRatio","_i$canvas","canvas","barHeight","barWidth","barGap","barRadius","g","normalize","_t3","_e2","v","beginPath","b","y","C","_t4","_r7","round","_t5","_s6","_n3","barAlign","_o2","_a","fill","closePath","_r3","style","floor","renderBars","map","cloneNode","drawImage","globalCompositeOperation","progressColor","fillRect","_this7","minHeight","_this$scrollContainer","MAX_CANVAS_WIDTH","_t6","_i3","_r4","renderSingleCanvas","ceil","minPxPerSec","fillParent","_r5","overflowX","classList","toggle","hideScrollbar","backgroundColor","cursorColor","cursorWidth","splitChannels","_e3","_i4","assign","renderWaveform","_e4","render","_this$scrollContainer2","_r6","autoCenter","_t7","_t8","_t9","_e5","_s7","marginLeft","autoScroll","scrollIntoView","_s8","_super3","_this8","unsubscribe","_this9","requestAnimationFrame","interact","_n4","_super4","_this10","audioRate","plugins","decodedData","subscriptions","timer","renderer","initPlayerEvents","initRendererEvents","initTimerEvents","initPlugins","url","peaks","setOptions","setPlaybackRate","_this11","getCurrentTime","renderProgress","getDuration","_this12","isPlaying","start","_t10","_this13","seekTo","_this14","registerPlugin","_this15","init","filter","getWrapper","getScroll","_callee3","_i5","_this16","_context3","t0","fetchParams","setSrc","t2","onceMediaEvent","t1","arrayBuffer","zoom","setTime","_callee4","_context4","destroy","DataBinder","namespace","fetchable","req_opts","elements","fetchData","_data","data","requestUpdate","elmt","splice","indexOf","fetch_opts","res","json","RingToEndpoint","is_domain","$","keypress","event","console","log","which","val","includes","mask","unmask","replace","keyup","keyCode","pastedData","originalEvent","clipboardData","getData","formatInput","match","Common","notify","ready","maxlength","input","input_element","parts","split","HTMLInputElement","customElements","extends","gCallback","gPreviousChecksum","gReportSettingsFunction","gActiveAdminDomainTabName","shortMonthNames","validateCommaSeperatedEmail","emailList","emails","valid","validateEmail","loading_overlay","action","parent_selector","parent_container","loading_frame","overlay_div","offsetWidth","offsetHeight","loading_loader","dot1","dot2","append","email","save_active_admin_domain_tab","attr","localStorage","setItem","get_active_admin_domain_tab","getItem","hashCode","str","reduce","charCodeAt","hash","objectArrayIndexOf","array","waitFor","testFx","onReady","onTimeout","timeOutMillis","maxtimeOutMillis","Date","getTime","condition","interval","setInterval","clearInterval","msg","element","message","delay","getURLParameter","paramName","params","location","search","substring","unescape","imageError","image","onerror","initCarImageDefault","persistSidebar","last_clicked_nav_id","in_crm_mode","IN_CRM_MODE","activateSidebar","in_pdf_mode","current_action","last_clicked_nav_item","hasClass","parentElement","className","jqId","parents","eq","addClass","Highcharts","plotOptions","series","animation","lang","decimalPoint","thousandsSep","initNavigationLinks","initWidgets","updateBranding","initWidgetRefresh","executeFunctionByName","functionName","args","namespaces","func","panel","callback","getSelectedDomainId","panel_refresh","formatTableValues","table_selector","each","text","numeral","format","moment","utc","parseInt","asMilliseconds","formatPhoneNumber","getSelectedAutoGroupIdFromCookie","id","Cookies","getSelectedSiteIdFromCookie","site_id","removeClass","links","initSidebarReportLinks","click","href","medium_type","getSelectedDomainIdFromHiddenElement","domain_id","getSelectedSiteIdFromDomainMenu","_","isUndefined","hidden_domain_id","getWidgetData","abort_ajax_requests","setCookie","update_branding","settings","get_auto_group_settings","branding","checksum","get_branding_checksum","clear_custom_branding","update_logo","logo_url","small_logo","update_header_color","header_color","update_messaging_header_color","update_sidebar_color","sidebar_color","update_highlight_color","highlight_color","update_active_color","active_color","update_header_text_color","header_text_color","update_messaging_header_text_color","update_sidebar_text_color","sidebar_text_color","update_panel_header_color","panel_header_color","update_panel_text_color","panel_text_color","update_table_header_color","table_header_color","update_table_text_color","table_text_color","getBranding","style_container","getElementById","textContent","add_custom_branding","style_text","text_node","createTextNode","css","siteNavigationMenu","change","refreshDomainSettings","autoGroupMenu","autoGroupSelectionChanged","prop","trigger","getSelectedAutoGroupIdFromMenu","cookie_name","path","protocol","secure","sameSite","set","group_name","rebuild_domains_menu","update_sidebar_for_user_roles","roles","show","link_pieces","match_found","lp","link_role","trim","toLowerCase","hide","domains","is_admin","show_location_names_as_menu_options","selected_domain_id","domain","selected","option_html","get_domain_settings","domain_enc_settings_str","JSON","parse","decodeURIComponent","is_automotive_industry","domain_settings","industry","is_automotive","render_displayable_json","jsonStr","stringify","brace","p1","rtnFn","rtnStr","lastIndexOf","group_enc_settings_str","handle_generic_ajax_error","mask_inputs","clearLocalStorageFilters","removeItem","formatNumberWithCommas","number","AudioPlayer","handleClick","querySelectorAll","el","wavesurfer","playPause","playButton","playIcon","waveformContainer","WaveSurfer","barMinHeight","responsive","backend","getAttribute","calculateTime","secs","minutes","seconds","returnedSeconds","require","ReportDetailRow","user_report_id","title","user_report_schedules","timezone","period_start","user_report_recipients","addNewItem","recipient_data","reportRecipient","email_address","user_report_recipient_id","setTarget","destination","groupBadgeList","groupBadges","group_names","badge","locationBadgeList","locationBadges","location_names","saveChanges","closeRow","newReportRecipient","report_id","emailElems","getElementsByClassName","validRegex","isValid","elem","timeframe","headers","body","saved_changes","ok","DataTable","ajax","reload","closest","previousSibling","ReportDetailRecipients","childElementCount","UserReports","is_admin_view","user_reports","table","columns","row","word","toUpperCase","join","next_run_date","recipients","visible","sortable","detailRows","tr","idx","inArray","child","isShown","oldSelectedTr","size","oldSelectedRow","row_detail","initTableEvents","confirm","draw","modal","user_report_runner","UserReportRunner","modal_dialog_elem","save_cb","fail_cb","start_date","startOf","end_date","endOf","daterangepicker","autoApply","startDate","endDate","maxDate","end","utcStartDate","utcEndDate"],"mappings":"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","file":"js/app-79ec0f22396317e965ec.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 339);\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e6) { throw _e6; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e7) { didErr = true; err = _e7; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction t(t, e, i, s) {\n return new (i || (i = Promise))(function (n, r) {\n function o(t) {\n try {\n h(s.next(t));\n } catch (t) {\n r(t);\n }\n }\n\n function a(t) {\n try {\n h(s.throw(t));\n } catch (t) {\n r(t);\n }\n }\n\n function h(t) {\n var e;\n t.done ? n(t.value) : (e = t.value, e instanceof i ? e : new i(function (t) {\n t(e);\n })).then(o, a);\n }\n\n h((s = s.apply(t, e || [])).next());\n });\n}\n\n\"function\" == typeof SuppressedError && SuppressedError;\nvar e = {\n decode: function decode(e, i) {\n return t(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var t, s;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n t = new AudioContext({\n sampleRate: i\n }), s = t.decodeAudioData(e);\n return _context.abrupt(\"return\", (s.finally(function () {\n return t.close();\n }), s));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n },\n createBuffer: function createBuffer(t, e) {\n return \"number\" == typeof t[0] && (t = [t]), function (t) {\n var e = t[0];\n\n if (e.some(function (t) {\n return t > 1 || t < -1;\n })) {\n var _i = e.length;\n var _s = 0;\n\n for (var _t = 0; _t < _i; _t++) {\n var _i2 = Math.abs(e[_t]);\n\n _i2 > _s && (_s = _i2);\n }\n\n var _iterator = _createForOfIteratorHelper(t),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _e = _step.value;\n\n for (var _t2 = 0; _t2 < _i; _t2++) {\n _e[_t2] /= _s;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }(t), {\n duration: e,\n length: t[0].length,\n sampleRate: t[0].length / e,\n numberOfChannels: t.length,\n getChannelData: function getChannelData(e) {\n return null == t ? void 0 : t[e];\n },\n copyFromChannel: AudioBuffer.prototype.copyFromChannel,\n copyToChannel: AudioBuffer.prototype.copyToChannel\n };\n }\n};\nvar i = {\n fetchBlob: function fetchBlob(e, i) {\n return t(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", fetch(e, i).then(function (t) {\n return t.blob();\n }));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n }\n};\n\nvar s = /*#__PURE__*/function () {\n function s() {\n _classCallCheck(this, s);\n\n this.listeners = {};\n }\n\n _createClass(s, [{\n key: \"on\",\n value: function on(t, e) {\n var _this = this;\n\n return this.listeners[t] || (this.listeners[t] = new Set()), this.listeners[t].add(e), function () {\n return _this.un(t, e);\n };\n }\n }, {\n key: \"once\",\n value: function once(t, e) {\n var i = this.on(t, e),\n _s2 = this.on(t, function () {\n i(), _s2();\n });\n\n return i;\n }\n }, {\n key: \"un\",\n value: function un(t, e) {\n this.listeners[t] && (e ? this.listeners[t].delete(e) : delete this.listeners[t]);\n }\n }, {\n key: \"unAll\",\n value: function unAll() {\n this.listeners = {};\n }\n }, {\n key: \"emit\",\n value: function emit(t) {\n for (var _len = arguments.length, e = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n e[_key - 1] = arguments[_key];\n }\n\n this.listeners[t] && this.listeners[t].forEach(function (t) {\n return t.apply(void 0, e);\n });\n }\n }]);\n\n return s;\n}();\n\nvar n = /*#__PURE__*/function (_s3) {\n _inherits(n, _s3);\n\n var _super = _createSuper(n);\n\n function n(t) {\n var _this2;\n\n _classCallCheck(this, n);\n\n _this2 = _super.call(this), t.media ? _this2.media = t.media : _this2.media = document.createElement(\"audio\"), t.autoplay && (_this2.media.autoplay = !0), null != t.playbackRate && (_this2.media.playbackRate = t.playbackRate);\n return _this2;\n }\n\n _createClass(n, [{\n key: \"onMediaEvent\",\n value: function onMediaEvent(t, e, i) {\n var _this3 = this;\n\n return this.media.addEventListener(t, e, i), function () {\n return _this3.media.removeEventListener(t, e);\n };\n }\n }, {\n key: \"onceMediaEvent\",\n value: function onceMediaEvent(t, e) {\n return this.onMediaEvent(t, e, {\n once: !0\n });\n }\n }, {\n key: \"getSrc\",\n value: function getSrc() {\n return this.media.currentSrc || this.media.src || \"\";\n }\n }, {\n key: \"revokeSrc\",\n value: function revokeSrc() {\n var t = this.getSrc();\n t.startsWith(\"blob:\") && URL.revokeObjectURL(t);\n }\n }, {\n key: \"setSrc\",\n value: function setSrc(t, e) {\n if (this.getSrc() === t) return;\n this.revokeSrc();\n var i = e instanceof Blob ? URL.createObjectURL(e) : t;\n this.media.src = i, this.media.load();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.media.pause(), this.revokeSrc(), this.media.src = \"\", this.media.load();\n }\n }, {\n key: \"play\",\n value: function play() {\n return this.media.play();\n }\n }, {\n key: \"pause\",\n value: function pause() {\n this.media.pause();\n }\n }, {\n key: \"isPlaying\",\n value: function isPlaying() {\n return this.media.currentTime > 0 && !this.media.paused && !this.media.ended;\n }\n }, {\n key: \"setTime\",\n value: function setTime(t) {\n this.media.currentTime = t;\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.media.duration;\n }\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.media.currentTime;\n }\n }, {\n key: \"getVolume\",\n value: function getVolume() {\n return this.media.volume;\n }\n }, {\n key: \"setVolume\",\n value: function setVolume(t) {\n this.media.volume = t;\n }\n }, {\n key: \"getMuted\",\n value: function getMuted() {\n return this.media.muted;\n }\n }, {\n key: \"setMuted\",\n value: function setMuted(t) {\n this.media.muted = t;\n }\n }, {\n key: \"getPlaybackRate\",\n value: function getPlaybackRate() {\n return this.media.playbackRate;\n }\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(t, e) {\n null != e && (this.media.preservesPitch = e), this.media.playbackRate = t;\n }\n }, {\n key: \"getMediaElement\",\n value: function getMediaElement() {\n return this.media;\n }\n }, {\n key: \"setSinkId\",\n value: function setSinkId(t) {\n return this.media.setSinkId(t);\n }\n }]);\n\n return n;\n}(s);\n\nvar r = /*#__PURE__*/function (_s4) {\n _inherits(r, _s4);\n\n var _super2 = _createSuper(r);\n\n function r(t) {\n var _this4;\n\n _classCallCheck(this, r);\n\n var e;\n if (_this4 = _super2.call(this), _this4.timeouts = [], _this4.isScrolling = !1, _this4.audioData = null, _this4.resizeObserver = null, _this4.isDragging = !1, _this4.options = t, \"string\" == typeof t.container ? e = document.querySelector(t.container) : t.container instanceof HTMLElement && (e = t.container), !e) throw new Error(\"Container not found\");\n _this4.parent = e;\n\n var _this4$initHtml = _this4.initHtml(),\n _this4$initHtml2 = _slicedToArray(_this4$initHtml, 2),\n i = _this4$initHtml2[0],\n s = _this4$initHtml2[1];\n\n e.appendChild(i), _this4.container = i, _this4.scrollContainer = s.querySelector(\".scroll\"), _this4.wrapper = s.querySelector(\".wrapper\"), _this4.canvasWrapper = s.querySelector(\".canvases\"), _this4.progressWrapper = s.querySelector(\".progress\"), _this4.cursor = s.querySelector(\".cursor\"), _this4.initEvents();\n return _possibleConstructorReturn(_this4);\n }\n\n _createClass(r, [{\n key: \"initEvents\",\n value: function initEvents() {\n var _this5 = this;\n\n this.wrapper.addEventListener(\"click\", function (t) {\n var e = _this5.wrapper.getBoundingClientRect(),\n i = (t.clientX - e.left) / e.width;\n\n _this5.emit(\"click\", i);\n }), this.initDrag(), this.scrollContainer.addEventListener(\"scroll\", function () {\n var _this5$scrollContaine = _this5.scrollContainer,\n t = _this5$scrollContaine.scrollLeft,\n e = _this5$scrollContaine.scrollWidth,\n i = _this5$scrollContaine.clientWidth,\n s = t / e,\n n = (t + i) / e;\n\n _this5.emit(\"scroll\", s, n);\n });\n var t = this.createDelay(100);\n this.resizeObserver = new ResizeObserver(function () {\n t(function () {\n return _this5.reRender();\n });\n }), this.resizeObserver.observe(this.scrollContainer);\n }\n }, {\n key: \"initDrag\",\n value: function initDrag() {\n var _this6 = this;\n\n !function (t, e, i, s) {\n var n = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 5;\n\n var r = function r() {};\n\n if (!t) return r;\n\n var o = function o(_o) {\n if (2 === _o.button) return;\n _o.preventDefault(), _o.stopPropagation();\n var a = _o.clientX,\n h = _o.clientY,\n l = !1;\n\n var c = function c(s) {\n s.preventDefault(), s.stopPropagation();\n var r = s.clientX,\n o = s.clientY;\n\n if (l || Math.abs(r - a) >= n || Math.abs(o - h) >= n) {\n var _t$getBoundingClientR = t.getBoundingClientRect(),\n _s5 = _t$getBoundingClientR.left,\n _n2 = _t$getBoundingClientR.top;\n\n l || (l = !0, null == i || i(a - _s5, h - _n2)), e(r - a, o - h, r - _s5, o - _n2), a = r, h = o;\n }\n },\n d = function d(t) {\n l && (t.preventDefault(), t.stopPropagation());\n },\n u = function u() {\n l && (null == s || s()), r();\n };\n\n document.addEventListener(\"pointermove\", c), document.addEventListener(\"pointerup\", u), document.addEventListener(\"pointerleave\", u), document.addEventListener(\"click\", d, !0), r = function r() {\n document.removeEventListener(\"pointermove\", c), document.removeEventListener(\"pointerup\", u), document.removeEventListener(\"pointerleave\", u), setTimeout(function () {\n document.removeEventListener(\"click\", d, !0);\n }, 10);\n };\n };\n\n t.addEventListener(\"pointerdown\", o);\n }(this.wrapper, function (t, e, i) {\n _this6.emit(\"drag\", Math.max(0, Math.min(1, i / _this6.wrapper.clientWidth)));\n }, function () {\n return _this6.isDragging = !0;\n }, function () {\n return _this6.isDragging = !1;\n });\n }\n }, {\n key: \"getHeight\",\n value: function getHeight() {\n return null == this.options.height ? 128 : isNaN(Number(this.options.height)) ? \"auto\" === this.options.height && this.parent.clientHeight || 128 : Number(this.options.height);\n }\n }, {\n key: \"initHtml\",\n value: function initHtml() {\n var t = document.createElement(\"div\"),\n e = t.attachShadow({\n mode: \"open\"\n });\n return e.innerHTML = \"\\n \\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \"), [t, e];\n }\n }, {\n key: \"setOptions\",\n value: function setOptions(t) {\n this.options = t, this.reRender();\n }\n }, {\n key: \"getWrapper\",\n value: function getWrapper() {\n return this.wrapper;\n }\n }, {\n key: \"getScroll\",\n value: function getScroll() {\n return this.scrollContainer.scrollLeft;\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n var t;\n this.container.remove(), null === (t = this.resizeObserver) || void 0 === t || t.disconnect();\n }\n }, {\n key: \"createDelay\",\n value: function createDelay() {\n var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var e = {};\n return this.timeouts.push(e), function (i) {\n e.timeout && clearTimeout(e.timeout), e.timeout = setTimeout(i, t);\n };\n }\n }, {\n key: \"convertColorValues\",\n value: function convertColorValues(t) {\n if (!Array.isArray(t)) return t || \"\";\n if (t.length < 2) return t[0] || \"\";\n var e = document.createElement(\"canvas\"),\n i = e.getContext(\"2d\").createLinearGradient(0, 0, 0, e.height),\n s = 1 / (t.length - 1);\n return t.forEach(function (t, e) {\n var n = e * s;\n i.addColorStop(n, t);\n }), i;\n }\n }, {\n key: \"renderBars\",\n value: function renderBars(t, e, i) {\n if (i.fillStyle = this.convertColorValues(e.waveColor), e.renderFunction) return void e.renderFunction(t, i);\n var s = t[0],\n n = t[1] || t[0],\n _r = s.length,\n o = window.devicePixelRatio || 1,\n _i$canvas = i.canvas,\n a = _i$canvas.width,\n h = _i$canvas.height,\n l = h / 2,\n c = e.barHeight || 1,\n d = e.barWidth ? e.barWidth * o : 1,\n u = e.barGap ? e.barGap * o : e.barWidth ? d / 2 : 0,\n p = e.barRadius || 0,\n m = a / (d + u) / _r;\n var g = 1;\n\n if (e.normalize) {\n g = 0;\n\n for (var _t3 = 0; _t3 < _r; _t3++) {\n var _e2 = Math.abs(s[_t3]);\n\n _e2 > g && (g = _e2);\n }\n }\n\n var v = l / g * c,\n f = p && \"roundRect\" in i ? \"roundRect\" : \"rect\";\n i.beginPath();\n var b = 0,\n y = 0,\n C = 0;\n\n for (var _t4 = 0; _t4 <= _r; _t4++) {\n var _r7 = Math.round(_t4 * m);\n\n if (_r7 > b) {\n var _t5 = Math.round(y * v),\n _s6 = _t5 + Math.round(C * v) || 1;\n\n var _n3 = l - _t5;\n\n \"top\" === e.barAlign ? _n3 = 0 : \"bottom\" === e.barAlign && (_n3 = h - _s6), i[f](b * (d + u), _n3, d, _s6, p), b = _r7, y = 0, C = 0;\n }\n\n var _o2 = Math.abs(s[_t4] || 0),\n _a = Math.abs(n[_t4] || 0);\n\n _o2 > y && (y = _o2), _a > C && (C = _a);\n }\n\n i.fill(), i.closePath();\n }\n }, {\n key: \"renderSingleCanvas\",\n value: function renderSingleCanvas(t, e, i, s, n, _r3, o, a) {\n var h = window.devicePixelRatio || 1,\n l = document.createElement(\"canvas\"),\n c = t[0].length;\n l.width = Math.round(i * (_r3 - n) / c), l.height = s * h, l.style.width = \"\".concat(Math.floor(l.width / h), \"px\"), l.style.height = \"\".concat(s, \"px\"), l.style.left = \"\".concat(Math.floor(n * i / h / c), \"px\"), o.appendChild(l);\n var d = l.getContext(\"2d\");\n this.renderBars(t.map(function (t) {\n return t.slice(n, _r3);\n }), e, d);\n var u = l.cloneNode();\n a.appendChild(u);\n var p = u.getContext(\"2d\");\n l.width > 0 && l.height > 0 && p.drawImage(l, 0, 0), p.globalCompositeOperation = \"source-in\", p.fillStyle = this.convertColorValues(e.progressColor), p.fillRect(0, 0, l.width, l.height);\n }\n }, {\n key: \"renderWaveform\",\n value: function renderWaveform(t, e, i) {\n var _this7 = this;\n\n var s = document.createElement(\"div\"),\n n = this.getHeight();\n s.style.height = \"\".concat(n, \"px\"), this.canvasWrapper.style.minHeight = \"\".concat(n, \"px\"), this.canvasWrapper.appendChild(s);\n var o = s.cloneNode();\n this.progressWrapper.appendChild(o);\n var _this$scrollContainer = this.scrollContainer,\n a = _this$scrollContainer.scrollLeft,\n h = _this$scrollContainer.scrollWidth,\n l = _this$scrollContainer.clientWidth,\n c = t[0].length,\n d = c / h;\n var u = Math.min(r.MAX_CANVAS_WIDTH, l);\n\n if (e.barWidth || e.barGap) {\n var _t6 = e.barWidth || .5,\n _i3 = _t6 + (e.barGap || _t6 / 2);\n\n u % _i3 != 0 && (u = Math.floor(u / _i3) * _i3);\n }\n\n var p = Math.floor(Math.abs(a) * d),\n m = Math.floor(p + u * d),\n g = m - p,\n v = function v(_r4, a) {\n _this7.renderSingleCanvas(t, e, i, n, Math.max(0, _r4), Math.min(a, c), s, o);\n },\n f = this.createDelay(),\n b = this.createDelay(),\n y = function y(t, e) {\n v(t, e), t > 0 && f(function () {\n y(t - g, e - g);\n });\n },\n C = function C(t, e) {\n v(t, e), e < c && b(function () {\n C(t + g, e + g);\n });\n };\n\n y(p, m), m < c && C(m, m + g);\n }\n }, {\n key: \"render\",\n value: function render(t) {\n this.timeouts.forEach(function (t) {\n return t.timeout && clearTimeout(t.timeout);\n }), this.timeouts = [], this.canvasWrapper.innerHTML = \"\", this.progressWrapper.innerHTML = \"\", this.wrapper.style.width = \"\";\n var e = window.devicePixelRatio || 1,\n i = this.scrollContainer.clientWidth,\n s = Math.ceil(t.duration * (this.options.minPxPerSec || 0));\n this.isScrolling = s > i;\n\n var n = this.options.fillParent && !this.isScrolling,\n _r5 = (n ? i : s) * e;\n\n if (this.wrapper.style.width = n ? \"100%\" : \"\".concat(s, \"px\"), this.scrollContainer.style.overflowX = this.isScrolling ? \"auto\" : \"hidden\", this.scrollContainer.classList.toggle(\"noScrollbar\", !!this.options.hideScrollbar), this.cursor.style.backgroundColor = \"\".concat(this.options.cursorColor || this.options.progressColor), this.cursor.style.width = \"\".concat(this.options.cursorWidth, \"px\"), this.options.splitChannels) for (var _e3 = 0; _e3 < t.numberOfChannels; _e3++) {\n var _i4 = Object.assign(Object.assign({}, this.options), this.options.splitChannels[_e3]);\n\n this.renderWaveform([t.getChannelData(_e3)], _i4, _r5);\n } else {\n var _e4 = [t.getChannelData(0)];\n t.numberOfChannels > 1 && _e4.push(t.getChannelData(1)), this.renderWaveform(_e4, this.options, _r5);\n }\n this.audioData = t, this.emit(\"render\");\n }\n }, {\n key: \"reRender\",\n value: function reRender() {\n if (!this.audioData) return;\n var t = this.progressWrapper.clientWidth;\n this.render(this.audioData);\n var e = this.progressWrapper.clientWidth;\n this.scrollContainer.scrollLeft += e - t;\n }\n }, {\n key: \"zoom\",\n value: function zoom(t) {\n this.options.minPxPerSec = t, this.reRender();\n }\n }, {\n key: \"scrollIntoView\",\n value: function scrollIntoView(t) {\n var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;\n\n var _this$scrollContainer2 = this.scrollContainer,\n i = _this$scrollContainer2.clientWidth,\n s = _this$scrollContainer2.scrollLeft,\n n = _this$scrollContainer2.scrollWidth,\n _r6 = n * t,\n o = i / 2;\n\n if (_r6 > s + (e && this.options.autoCenter && !this.isDragging ? o : i) || _r6 < s) if (this.options.autoCenter && !this.isDragging) {\n var _t7 = o / 20;\n\n _r6 - (s + o) >= _t7 && _r6 < s + i ? this.scrollContainer.scrollLeft += _t7 : this.scrollContainer.scrollLeft = _r6 - o;\n } else if (this.isDragging) {\n var _t8 = 10;\n this.scrollContainer.scrollLeft = _r6 < s ? _r6 - _t8 : _r6 - i + _t8;\n } else this.scrollContainer.scrollLeft = _r6;\n {\n var _t9 = this.scrollContainer.scrollLeft,\n _e5 = _t9 / n,\n _s7 = (_t9 + i) / n;\n\n this.emit(\"scroll\", _e5, _s7);\n }\n }\n }, {\n key: \"renderProgress\",\n value: function renderProgress(t, e) {\n isNaN(t) || (this.progressWrapper.style.width = 100 * t + \"%\", this.cursor.style.left = 100 * t + \"%\", this.cursor.style.marginLeft = 100 === Math.round(100 * t) ? \"-\".concat(this.options.cursorWidth, \"px\") : \"\", this.isScrolling && this.options.autoScroll && this.scrollIntoView(t, e));\n }\n }]);\n\n return r;\n}(s);\n\nr.MAX_CANVAS_WIDTH = 4e3;\n\nvar o = /*#__PURE__*/function (_s8) {\n _inherits(o, _s8);\n\n var _super3 = _createSuper(o);\n\n function o() {\n var _this8;\n\n _classCallCheck(this, o);\n\n _this8 = _super3.apply(this, arguments), _this8.unsubscribe = function () {};\n return _this8;\n }\n\n _createClass(o, [{\n key: \"start\",\n value: function start() {\n var _this9 = this;\n\n this.unsubscribe = this.on(\"tick\", function () {\n requestAnimationFrame(function () {\n _this9.emit(\"tick\");\n });\n }), this.emit(\"tick\");\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.unsubscribe();\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unsubscribe();\n }\n }]);\n\n return o;\n}(s);\n\nvar a = {\n waveColor: \"#999\",\n progressColor: \"#555\",\n cursorWidth: 1,\n minPxPerSec: 0,\n fillParent: !0,\n interact: !0,\n autoScroll: !0,\n autoCenter: !0,\n sampleRate: 8e3\n};\n\nvar h = /*#__PURE__*/function (_n4) {\n _inherits(h, _n4);\n\n var _super4 = _createSuper(h);\n\n function h(t) {\n var _this10;\n\n _classCallCheck(this, h);\n\n var e, i;\n _this10 = _super4.call(this, {\n media: t.media,\n autoplay: t.autoplay,\n playbackRate: t.audioRate\n }), _this10.plugins = [], _this10.decodedData = null, _this10.duration = null, _this10.subscriptions = [], _this10.options = Object.assign({}, a, t), _this10.timer = new o(), _this10.renderer = new r(_this10.options), _this10.initPlayerEvents(), _this10.initRendererEvents(), _this10.initTimerEvents(), _this10.initPlugins();\n var s = _this10.options.url || (null === (e = _this10.options.media) || void 0 === e ? void 0 : e.currentSrc) || (null === (i = _this10.options.media) || void 0 === i ? void 0 : i.src);\n s && _this10.load(s, _this10.options.peaks, _this10.options.duration);\n return _this10;\n }\n\n _createClass(h, [{\n key: \"setOptions\",\n value: function setOptions(t) {\n this.options = Object.assign({}, this.options, t), this.renderer.setOptions(this.options), t.audioRate && this.setPlaybackRate(t.audioRate);\n }\n }, {\n key: \"initTimerEvents\",\n value: function initTimerEvents() {\n var _this11 = this;\n\n this.subscriptions.push(this.timer.on(\"tick\", function () {\n var t = _this11.getCurrentTime();\n\n _this11.renderer.renderProgress(t / _this11.getDuration(), !0), _this11.emit(\"timeupdate\", t), _this11.emit(\"audioprocess\", t);\n }));\n }\n }, {\n key: \"initPlayerEvents\",\n value: function initPlayerEvents() {\n var _this12 = this;\n\n this.subscriptions.push(this.onMediaEvent(\"timeupdate\", function () {\n var t = _this12.getCurrentTime();\n\n _this12.renderer.renderProgress(t / _this12.getDuration(), _this12.isPlaying()), _this12.emit(\"timeupdate\", t);\n }), this.onMediaEvent(\"play\", function () {\n _this12.emit(\"play\"), _this12.timer.start();\n }), this.onMediaEvent(\"pause\", function () {\n _this12.emit(\"pause\"), _this12.timer.stop();\n }), this.onMediaEvent(\"ended\", function () {\n _this12.emit(\"finish\");\n }), this.onMediaEvent(\"seeking\", function () {\n _this12.emit(\"seeking\", _this12.getCurrentTime());\n }));\n }\n }, {\n key: \"initRendererEvents\",\n value: function initRendererEvents() {\n var _this13 = this;\n\n this.subscriptions.push(this.renderer.on(\"click\", function (t) {\n _this13.options.interact && (_this13.seekTo(t), _this13.emit(\"interaction\", _this13.getCurrentTime()), _this13.emit(\"click\", t));\n }), this.renderer.on(\"scroll\", function (t, e) {\n var i = _this13.getDuration();\n\n _this13.emit(\"scroll\", t * i, e * i);\n }), this.renderer.on(\"render\", function () {\n _this13.emit(\"redraw\");\n }));\n {\n var _t10;\n\n this.subscriptions.push(this.renderer.on(\"drag\", function (e) {\n _this13.options.interact && (_this13.renderer.renderProgress(e), clearTimeout(_t10), _t10 = setTimeout(function () {\n _this13.seekTo(e);\n }, _this13.isPlaying() ? 0 : 200), _this13.emit(\"interaction\", e * _this13.getDuration()), _this13.emit(\"drag\", e));\n }));\n }\n }\n }, {\n key: \"initPlugins\",\n value: function initPlugins() {\n var _this14 = this;\n\n var t;\n (null === (t = this.options.plugins) || void 0 === t ? void 0 : t.length) && this.options.plugins.forEach(function (t) {\n _this14.registerPlugin(t);\n });\n }\n }, {\n key: \"registerPlugin\",\n value: function registerPlugin(t) {\n var _this15 = this;\n\n return t.init(this), this.plugins.push(t), this.subscriptions.push(t.once(\"destroy\", function () {\n _this15.plugins = _this15.plugins.filter(function (e) {\n return e !== t;\n });\n })), t;\n }\n }, {\n key: \"getWrapper\",\n value: function getWrapper() {\n return this.renderer.getWrapper();\n }\n }, {\n key: \"getScroll\",\n value: function getScroll() {\n return this.renderer.getScroll();\n }\n }, {\n key: \"getActivePlugins\",\n value: function getActivePlugins() {\n return this.plugins;\n }\n }, {\n key: \"load\",\n value: function load(s, n, r) {\n return t(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n var _this16 = this;\n\n var t, _i5;\n\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.isPlaying() && this.pause(), this.decodedData = null, this.duration = null, this.emit(\"load\", s);\n\n if (!n) {\n _context3.next = 5;\n break;\n }\n\n _context3.t0 = void 0;\n _context3.next = 8;\n break;\n\n case 5:\n _context3.next = 7;\n return i.fetchBlob(s, this.options.fetchParams);\n\n case 7:\n _context3.t0 = _context3.sent;\n\n case 8:\n t = _context3.t0;\n this.setSrc(s, t);\n _context3.t2 = r || this.getDuration();\n\n if (_context3.t2) {\n _context3.next = 15;\n break;\n }\n\n _context3.next = 14;\n return new Promise(function (t) {\n _this16.onceMediaEvent(\"loadedmetadata\", function () {\n return t(_this16.getDuration());\n });\n });\n\n case 14:\n _context3.t2 = _context3.sent;\n\n case 15:\n _context3.t1 = _context3.t2;\n\n if (_context3.t1) {\n _context3.next = 18;\n break;\n }\n\n _context3.t1 = 0;\n\n case 18:\n this.duration = _context3.t1;\n\n if (!n) {\n _context3.next = 23;\n break;\n }\n\n this.decodedData = e.createBuffer(n, this.duration);\n _context3.next = 31;\n break;\n\n case 23:\n if (!t) {\n _context3.next = 31;\n break;\n }\n\n _context3.next = 26;\n return t.arrayBuffer();\n\n case 26:\n _i5 = _context3.sent;\n _context3.next = 29;\n return e.decode(_i5, this.options.sampleRate);\n\n case 29:\n this.decodedData = _context3.sent;\n 0 !== this.duration && this.duration !== 1 / 0 || (this.duration = this.decodedData.duration);\n\n case 31:\n this.emit(\"decode\", this.duration), this.decodedData && this.renderer.render(this.decodedData), this.emit(\"ready\", this.duration);\n\n case 32:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n }\n }, {\n key: \"zoom\",\n value: function zoom(t) {\n if (!this.decodedData) throw new Error(\"No audio loaded\");\n this.renderer.zoom(t), this.emit(\"zoom\", t);\n }\n }, {\n key: \"getDecodedData\",\n value: function getDecodedData() {\n return this.decodedData;\n }\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return null !== this.duration ? this.duration : _get(_getPrototypeOf(h.prototype), \"getDuration\", this).call(this);\n }\n }, {\n key: \"toggleInteraction\",\n value: function toggleInteraction(t) {\n this.options.interact = t;\n }\n }, {\n key: \"seekTo\",\n value: function seekTo(t) {\n var e = this.getDuration() * t;\n this.setTime(e);\n }\n }, {\n key: \"playPause\",\n value: function playPause() {\n return t(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt(\"return\", this.isPlaying() ? this.pause() : this.play());\n\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.pause(), this.setTime(0);\n }\n }, {\n key: \"skip\",\n value: function skip(t) {\n this.setTime(this.getCurrentTime() + t);\n }\n }, {\n key: \"empty\",\n value: function empty() {\n this.load(\"\", [[0]], .001);\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.emit(\"destroy\"), this.plugins.forEach(function (t) {\n return t.destroy();\n }), this.subscriptions.forEach(function (t) {\n return t();\n }), this.timer.destroy(), this.renderer.destroy(), _get(_getPrototypeOf(h.prototype), \"destroy\", this).call(this);\n }\n }], [{\n key: \"create\",\n value: function create(t) {\n return new h(t);\n }\n }]);\n\n return h;\n}(n);\n\nexport { h as default };","module.exports = require(\"regenerator-runtime\");\n","/*\n * This module consists of a data binder that allows all elements to be updated\n * from data from a single data source, and a base class for web components that\n * to be bound to that data.\n *\n * Usage:\n * To use the bound element create your own class that extends the BoundElement\n * class with \"src\" set, either in the constructor or as an HTML attribute.\n * The resulting component will automatically update whenever the data binder's\n * data is changed.\n *\n * To use the data binder without the BoundElement class just create a new\n * instance with the desired namespace.\n *\n * let my_binder = new DataBinder(\"my_namespace\");\n * my_binder.data = \"Some data\"\n *\n * To update an Object automatically register it with the data binder and\n * implement the \"requestUpdate\" method.\n * myObject = {\n * data: my_binder.data;\n * requestUpdate: function(data) {\n * myObject.data = data;\n * console.log(myObject.data);\n * }\n * }\n *\n * For external data like AJAX requests or WebSocket messages the URL of the\n * data source is likely a good namespace to avoid conflicts.\n *\n * let my_remote_binder = new DataBinder(\"namespace_url.com\");\n * my_remote_binder.data = async () => {\n * let req = await fetch (\"namespace_url.com\");\n * let data = await req.json();\n * return data;\n * }\n *\n */\n\nclass DataBinder {\n /**\n namespace - This identifies the data that is being stored. Most likely to be a URL.\n fetchable - If this data is external data.\n */\n constructor(namespace, fetchable, req_opts = null){\n if(!namespace) throw new Error('No data source provided');\n if(DataBinder[namespace]) return DataBinder[namespace];\n else {\n DataBinder[namespace] = this;\n this.src = namespace;\n this.fetchable = fetchable;\n this.req_opts = req_opts;\n this.elements = [];\n if(fetchable)this.fetchData();\n return DataBinder[namespace]\n }\n }\n set data(data){\n this._data = data;\n this.elements.map(e => {e.requestUpdate(data)});\n }\n get data(){\n return this._data;\n }\n register(elmt){\n this.elements.push(elmt);\n }\n unregister(elmt){\n this.elements.splice(this.elements.indexOf(elmt),1);\n }\n async fetchData(){//Only use if the\n if(this.fetchable){\n let res = await fetch(this.src, this.fetch_opts, this.req_opts);\n this.data = await res.json();\n } else throw new Error('fetchData can only be used if DataBinder is instantiated with the nemespace set to a fetchable URL, and fetchable set to true.');\n }\n}\n\nexport {DataBinder};","class RingToEndpoint extends HTMLInputElement {\n constructor() {\n super();\n\n let is_domain = false;\n\n // Watch keypresses for @\n $(this).keypress(function(event){\n console.log(event.which)\n let _this = this\n setTimeout(function() {\n if(event.which == 64 && !is_domain) {\n is_domain = true;\n $(_this).unmask();\n $(_this).val($(_this).val().replace(/[^0-9]/g, '')+\"@\");\n is_domain = true;\n } else if (is_domain && !$(_this).val().includes(\"@\")) {\n is_domain = false;\n $(_this).mask('(999) 999-9999');\n }\n }, 10);\n })\n\n // Needed to catch backspace\n $(this).keyup(function(event){\n if(event.keyCode == 8) {\n if(!is_domain && $(this).val().includes(\"@\")) {\n is_domain = true;\n $(this).unmask();\n } else if (is_domain && !$(this).val().includes(\"@\")) {\n is_domain = false;\n $(this).mask('(999) 999-9999')\n }\n }\n });\n\n // Catch paste events\n $(this).bind(\"paste\", function(event) {\n let pastedData = event.originalEvent.clipboardData.getData('text');\n let _this = this\n this.formatInput(pastedData, this);\n })\n\n // If not valid wipe out\n $(this).bind(\"change\", function(event) {\n let value = $(this).val();\n if( value != \"\" && !value.match(/^\\(\\d{3}\\)\\s\\d{3}-\\d{4}/g) && !value.match(/^([0-9]+)@([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))+(:[0-9]+)?$/g )) {\n $(this).val(\"\");\n Common.notify(\"Please use a valid ring to number or SIP URL.\", \"warning\");\n }\n });\n $(document).ready(function() {\n if(!$(this).val().match(/^(\\S+[0-9])@([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])(\\.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]))+(:[0-9]+)?$/g )) {\n $(this).mask('(999) 999-9999');\n }\n }.bind(this));\n this.type=\"text\";\n this.maxlength = 10;\n }\n\n formatInput(input, input_element){\n let parts = input.split('@');\n parts[0] = parts[0].replace(/\\D/g,'');\n console.log(parts);\n setTimeout(function(){\n if(parts.length === 1){\n input_element.value = parts[0];\n $(input_element).mask('(999) 999-9999');\n }\n else if(parts.length === 2){\n $(input_element).unmask();\n input_element.value = parts[0]+'@'+parts[1];\n }\n },10);\n }\n};\n\ncustomElements.define('ring-to-endpoint', RingToEndpoint, {\n extends: 'input',\n});\n","export var Common = function () {\n\n\nreturn {\n gCallback: null,\n gPreviousChecksum: null,\n gReportSettingsFunction: null,\n gActiveAdminDomainTabName: 'activeAdminDomainTab',\n\n // Format a Date to use short month names with a date.\n // Example: 'Nov 11'\n shortMonthNames: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n\n validateCommaSeperatedEmail: function(emailList) {\n var emails = emailList.split(',')\n\n var valid = true;\n for (var i = 0; i < emails.length; i++) {\n if( !Common.validateEmail(emails[i]) ){\n valid = false;\n }\n }\n\n return valid;\n },\n loading_overlay: function(action, parent_selector){\n const parent_container = document.querySelector(parent_selector)\n if (parent_container){\n if (action === 'hide'){\n const loading_frame = parent_container.querySelector('.loading-frame')\n if (loading_frame) {\n loading_frame.remove()\n }\n return\n }\n\n const overlay_div = document.createElement('div')\n overlay_div.classList.add('loading-frame')\n overlay_div.style.width = parent_container.offsetWidth\n overlay_div.style.height = parent_container.offsetHeight\n\n const loading_loader = document.createElement('div')\n loading_loader.classList.add('loading-loader')\n\n const dot1 = document.createElement('div')\n dot1.classList.add('dot1')\n const dot2 = document.createElement('div')\n dot2.classList.add('dot2')\n loading_loader.append(dot1)\n loading_loader.append(dot2)\n overlay_div.append(loading_loader)\n parent_container.append(overlay_div)\n } \n },\n\n validateEmail: function(email) {\n var regex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return !( email === \"\" || !regex.test(email.replace(/\\s/g, \"\")))\n },\n\n save_active_admin_domain_tab: function()\n {\n var v = $('#tablist a.active').attr('href');\n localStorage.setItem(Common.gActiveAdminDomainTabName, v);\n },\n\n get_active_admin_domain_tab: function()\n {\n return localStorage.getItem(Common.gActiveAdminDomainTabName);\n },\n\n /**\n * Using this to generate hash value to compare the current domain to\n * a list of known domain hash values.\n * This is needed as a hack to determine the hosting company when on mobile devices\n * and they do not provide data for us to know who the hosting comany is.\n *\n * This code is also used within the AI.js script.\n *\n * @see http://stackoverflow.com/q/7616461/940217\n * @return {number}\n */\n hashCode: function(str){\n if (Array.prototype.reduce){\n return str.split(\"\").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0);\n }\n var hash = 0;\n if (str.length === 0) return hash;\n for (var i = 0; i < str.length; i++) {\n var character = str.charCodeAt(i);\n hash = ((hash<<5)-hash)+character;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n },\n\n // Used to perform indexOf on an array of objects\n objectArrayIndexOf: function(array, attr, value){\n for(var i = 0; i < array.length; i += 1) {\n if(array[i][attr] === value) {\n return i;\n }\n }\n return -1;\n },\n\n /**\n * This is copied from the AI code.\n * The concept is to use this function when you need to wait for\n * an asynchronous event to occur before proceeding. \n *\n * Wait until the test condition is true or a timeout occurs. Useful for waiting\n * on a server response or for a ui change (fadeIn, etc.) to occur.\n *\n * @param testFx javascript condition that evaluates to a boolean,\n * it can be passed in as a string (e.g.: \"1 == 1\" or \"$('#bar').is(':visible')\" or\n * as a callback function.\n * @param onReady what to do when testFx condition is fulfilled,\n * it can be passed in as a string (e.g.: \"1 == 1\" or \"$('#bar').is(':visible')\" or\n * as a callback function.\n * @param timeOutMillis the max amount of time to wait. If not specified, 3 sec is used.\n */\n waitFor: function(testFx, onReady, onTimeout, timeOutMillis) {\n var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 3000, //< Default Max Timout is 3s\n start = new Date().getTime(),\n condition = false,\n interval = setInterval(function() {\n if ( (new Date().getTime() - start < maxtimeOutMillis) && !condition ) {\n // If not time-out yet and condition not yet fulfilled\n condition = (typeof(testFx) === \"function\" ? testFx() : \"testFx parameter should be a function\");\n } else {\n if(!condition) {\n // If condition still not fulfilled (timeout but condition is 'false')\n console.log(\"'waitFor()' timeout\");\n clearInterval(interval); // Stop this interval\n // Do what it's supposed to do once the condition is fulfilled\n typeof(onTimeout) === \"function\" ? onTimeout() : \"onTimeout parameter should be a function\";\n } else {\n // Condition fulfilled (timeout and/or condition is 'true')\n console.log(\"'waitFor()' finished in \" + (new Date().getTime() - start) + \"ms.\");\n // Do what it's supposed to do once the condition is fulfilled\n typeof(onReady) === \"function\" ? onReady() : \"onReady parameter should be a function\";\n clearInterval(interval); // Stop this interval\n }\n }\n }, 250); //< repeat check every 250ms\n },\n \n notify: function(msg, type, element) {\n element = element || 'body'\n $.notify({\n // options\n message: msg\n },{\n // settings\n element: element,\n type: type,\n delay:5000\n });\n },\n\n //public function to get a paremeter by name from URL\n getURLParameter: function(paramName) {\n var searchString = window.location.search.substring(1),\n i, val, params = searchString.split(\"&\");\n for (i = 0; i < params.length; i++) {\n val = params[i].split(\"=\");\n if (val[0] == paramName) {\n return unescape(val[1]);\n }\n }\n return null;\n },\n\n imageError: function(image)\n {\n var car_placeholder = '/assets/cars/no_image_available.jpg';\n image.onerror = \"\";\n image.src = car_placeholder;\n return true;\n },\n initCarImageDefault: function()\n {\n var car_placeholder = '/assets/cars/no_image_available.jpg';\n $(\".car_image\").error(function(){\n $(this).attr('src', car_placeholder);\n });\n },\n\n // Save the clicked sidebar item to localstorage\n persistSidebar: function(last_clicked_nav_id) {\n if(last_clicked_nav_id != undefined){\n localStorage.setItem(\"last_clicked_nav_id\", last_clicked_nav_id);\n }\n },\n\n in_crm_mode: function()\n {\n var v = (typeof(IN_CRM_MODE)!==\"undefined\") && IN_CRM_MODE;\n return v;\n },\n\n // Used to show the appropriate sidebar items as active from the\n // previously saved item id.\n activateSidebar: function() {\n if (Common.in_pdf_mode() || Common.in_crm_mode()) return;\n\n if (localStorage[\"last_clicked_nav_id\"]) {\n var current_action = $('#action-name').val();\n var last_clicked_nav_item = localStorage[\"last_clicked_nav_id\"];\n if (current_action == last_clicked_nav_item || $('body').hasClass( last_clicked_nav_item )) {\n var activeAttribute = document.querySelector(`[data-nav_id=${localStorage.getItem(\"last_clicked_nav_id\")}]`)\n activeAttribute.parentElement.className += \" active\"\n //this has a bad var name, but it essentialy creates a jQuery id of the activeAttribute, then calls it's ancestors\n var jqId = $(`a[data-nav_id=\"${localStorage[\"last_clicked_nav_id\"]}\"]`)\n $(jqId).parents().eq(2).addClass(\" active\")\n $(jqId).parents().eq(4).addClass(\" active\")\n $(jqId).parents().eq(6).addClass(\" active\")\n }\n }\n\n // calculate the window height and set the sidebar height for scrolling\n // Common.setSidebarHeight();\n // $(window).resize(function(){Common.setSidebarHeight()});\n },\n\n init: function()\n {\n console.log('init');\n // Disable chart animations when rendering pdf\n if (Common.in_pdf_mode())\n {\n Highcharts.setOptions({\n plotOptions: {\n series: {\n animation: false\n }\n }\n });\n }\n\n Highcharts.setOptions({ lang: { decimalPoint: '.', thousandsSep: ',' } });\n\n Common.initNavigationLinks();\n Common.activateSidebar();\n Common.initWidgets();\n Common.updateBranding();\n },\n initWidgets: function()\n {\n Common.initWidgetRefresh();\n },\n\n // http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string\n executeFunctionByName: function(functionName, context, args)\n {\n var args = [].slice.call(arguments).splice(2);\n var namespaces = functionName.split(\".\");\n var func = namespaces.pop();\n for(var i = 0; i < namespaces.length; i++) {\n context = context[namespaces[i]];\n }\n return context[func].apply(this, args);\n },\n\n initWidgetRefresh: function()\n {\n $(\".panel-refresh\").on(\"click\",function(){\n var panel = $(this).parents(\".panel\");\n var callback = $(this).attr('data-callback');\n if (callback !== 'undefined')\n {\n Common.executeFunctionByName(callback, window, Common.getSelectedDomainId());\n }\n else\n {\n panel_refresh(panel);\n }\n return false;\n });\n },\n // Pass in a table_selector to find and format\n // all data with the appropriate classes.\n formatTableValues: function(table_selector)\n {\n $(table_selector + ' .currency').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('$0,0.00');\n $(this).text(v);\n });\n\n $(table_selector + ' .currency_no_cents').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('$0,0');\n $(this).text(v);\n });\n\n $(table_selector + ' .numeric').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('0,0');\n $(this).text(v);\n });\n\n $(table_selector + ' .decimal').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('0,0.00');\n $(this).text(v);\n });\n\n $(table_selector + ' .percentage').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('0%');\n $(this).text(v);\n });\n\n $(table_selector + ' .duration').each(function(){\n var v = $(this).text();\n v = numeral( v ).format('00:00:00');\n $(this).text(v);\n });\n\n $(table_selector + ' .audio_player_duration').each(function(){\n var v = $(this).text();\n v = moment.utc(moment.duration( parseInt(v), \"seconds\").asMilliseconds()).format(\"H:m:ss\")\n v = v.replace(\"0:\",\"\");\n $(this).text(v);\n });\n },\n\n formatPhoneNumber: function(str){\n //Filter only numbers from the input\n var cleaned = ('' + str).replace(/\\D/g, '');\n\n //Check if the input is of correct length\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\n\n if (match) {\n return \"(\" + match[1] + ') ' + match[2] + '-' + match[3]\n }\n\n return null\n },\n\n getSelectedAutoGroupIdFromCookie: function()\n {\n let result = 0;\n var id = Cookies.get('aid_selected_auto_group_id');\n if (id !== undefined && id !== '')\n {\n result = id;\n }\n return result;\n },\n\n getSelectedSiteIdFromCookie: function()\n {\n let result = 0;\n var site_id = Cookies.get('aid_selected_site_id');\n if (site_id !== 'undefined' && site_id !== '')\n {\n result = site_id;\n }\n return result;\n },\n\n initNavigationLinks: function()\n {\n // Code to set the correct navigation link to the\n // appropriate view.\n var current_action = $('#action-name').val();\n $('.page-sidebar .navigation-links').removeClass('active');\n var links = $('.page-sidebar .navigation-links a[href*=' + current_action + ']');\n $(links[0]).parent().addClass('active');\n\n Common.initSidebarReportLinks();\n },\n // When a report link is clicked on, we need to build the\n // url dynamically as the user may choose which site\n // is in use.\n initSidebarReportLinks: function()\n {\n $('.page-sidebar .user-action a').click(function(e){\n e.preventDefault();\n e.stopPropagation();\n var href = $(this).attr('href');\n var site_id = Common.getSelectedDomainId();\n if ($(this).hasClass('direct'))\n {\n window.location.href = href;\n }\n else if ($(this).hasClass('sites'))\n {\n window.location.href = href;\n }\n else if ($(this).attr('data-medium-type'))\n {\n var medium_type = $(this).attr('data-medium-type');\n window.location.href = '/acquisition/detail/' + medium_type;\n }\n else if ($(this).attr('data-report-type'))\n {\n var report_type = $(this).attr('data-report-type');\n var url = '/sites/' + site_id + '/inventory/' + report_type\n window.location.href = url;\n }\n else if ($(this).attr('data-con-type'))\n {\n var con_type = $(this).attr('data-con-type');\n var url = '/sites/' + site_id + '/page_performance/' + con_type\n window.location.href = url;\n }\n else if ($(this).attr('data-cd-type') && $(this).attr('data-alert-cd-type') && $(this).attr('data-appt-cd-type') && $(this).attr('data-cd-prospects') && $(this).attr('data-connected-type'))\n {\n var cd_type = $(this).attr('data-cd-type');\n var cd_prospects = $(this).attr('data-cd-prospects');\n var appt_cd_type = $(this).attr('data-appt-cd-type');\n var alert_cd_type = $(this).attr('data-alert-cd-type');\n var connected_type = $(this).attr('data-connected-type');\n var url = '/filtered_call_details/' + cd_type + '/' + cd_prospects + '/' + appt_cd_type + '/' + alert_cd_type + '/' + connected_type\n window.location.href = url;\n }\n else if ($(this).attr('data-chat-type'))\n {\n var chat_type = $(this).attr('data-chat-type');\n var url = '/chat_details/' + chat_type\n window.location.href = url;\n }\n else if ($(this).attr('data-lead-type'))\n {\n var lead_type = $(this).attr('data-lead-type');\n var url = '/lead_details/' + lead_type\n window.location.href = url;\n }\n else if ($(this).attr('data-text-type'))\n {\n var text_type = $(this).attr('data-text-type');\n var url = '/text_details/' + text_type\n window.location.href = url;\n }\n else\n {\n var admin_type = $(this).attr('data-domain-admin');\n var url = '/admin/domains'\n window.location.href = url;\n }\n });\n },\n \n getSelectedDomainIdFromHiddenElement: function()\n {\n return $('#domain_id').val();\n },\n\n // Gets selected domain id from the DOM element or\n // from the cookie.\n getSelectedDomainId: function()\n {\n var domain_id = Common.getSelectedSiteIdFromDomainMenu();\n if (_.isUndefined(domain_id) || domain_id === '' || domain_id == 'null' || domain_id == null)\n {\n domain_id = Common.getSelectedSiteIdFromCookie();\n $('select#site-navigation').val(domain_id);\n }\n\n // The hidden element overrides other values\n var hidden_domain_id = Common.getSelectedDomainIdFromHiddenElement();\n if (! _.isUndefined(hidden_domain_id) && hidden_domain_id !== '')\n {\n domain_id = hidden_domain_id;\n }\n return domain_id;\n },\n getSelectedSiteIdFromDomainMenu: function()\n {\n return $('select#site-navigation').val();\n },\n getWidgetData: function()\n {\n var site_id = Common.getSelectedDomainId();\n abort_ajax_requests();\n\n // Refresh UI with new data requests.\n // Cookies.set('aid_selected_site_id', site_id, {secure: true, sameSite: \"None\"}); //should be able to delete this\n this.setCookie('aid_selected_site_id', site_id); //should be able to delete this\n Common.gCallback(site_id);\n },\n\n updateBranding: function(update_branding = null)\n {\n console.log(\"init\");\n var settings = Common.get_auto_group_settings();\n console.log(settings);\n if ((settings && (settings.branding !== undefined && settings.branding !== null)) || update_branding != null) {\n var checksum = Common.get_branding_checksum();\n if (checksum == Common.gPreviousChecksum && (typeof checksum !== 'undefined'))\n {\n // console.log('same branding checksum')\n return;\n }\n\n Common.gPreviousChecksum = checksum;\n var branding = update_branding != null ? update_branding : settings.branding;\n Common.clear_custom_branding();\n Common.update_logo(branding.logo_url, branding.small_logo);\n Common.update_header_color(branding.header_color);\n Common.update_messaging_header_color(branding.header_color);\n Common.update_sidebar_color(branding.sidebar_color);\n Common.update_highlight_color(branding.highlight_color);\n Common.update_active_color(branding.active_color);\n Common.update_header_text_color(branding.header_text_color);\n Common.update_messaging_header_text_color(branding.header_text_color);\n Common.update_sidebar_text_color(branding.sidebar_text_color);\n\n Common.update_panel_header_color(branding.panel_header_color);\n Common.update_panel_text_color(branding.panel_text_color);\n Common.update_table_header_color(branding.table_header_color);\n Common.update_table_text_color(branding.table_text_color);\n\n }\n },\n\n getBranding: function() {\n var settings = Common.get_auto_group_settings();\n if ((settings && (settings.branding !== undefined && settings.branding !== null)) || update_branding != null) {\n return settings.branding;\n } else {\n return null;\n }\n },\n\n clear_custom_branding: function()\n {\n var style_container = document.getElementById('custom_branding');\n\n if(style_container) {\n style_container.textContent = ''\n }\n },\n \n add_custom_branding: function(style_text)\n {\n var style_container = document.getElementById('custom_branding');\n var text_node = document.createTextNode(style_text);\n if(style_container) {\n style_container.appendChild(text_node);\n }\n },\n\n update_header_text_color: function(v)\n {\n $('.x-navigation.x-navigation-horizontal li > a, .x-navigation.x-navigation-horizontal li > span#domain_label, .x-navigation.x-navigation-horizontal li > a .fa, .x-navigation.x-navigation-horizontal li > .glyphicon').css('color', v);\n $('.x-navigation.x-navigation-horizontal li > a, .x-navigation.x-navigation-horizontal li > span#auto_group_label, .x-navigation.x-navigation-horizontal li > a .fa, .x-navigation.x-navigation-horizontal li > .glyphicon').css('color', v);\n $('.navbar li > a, .navbar li > span, .navbar li > a .fa, .navbar li > .glyphicon, .navbar .dropdown-toggle').css('color', v);\n },\n update_sidebar_text_color: function(v)\n {\n $('.x-navigation:not(.x-navigation-horizontal) li > a').css('color', v);\n $('.x-navigation:not(.x-navigation-horizontal) li > a .fa, .x-navigation:not(.x-navigation-horizontal) li li > a .glyphicon').css('color', v);\n $('.message_center_sidebar_icon').css('background-color', v);\n\n // logout menu\n $('.dropdown-menu li > a').css('color', v);\n Common.add_custom_branding('.dt-button a {color : ' + v + ' !important;}')\n },\n update_panel_header_color: function(v) {\n Common.add_custom_branding(`.panel-default .panel-heading {background-color: ${v}}`);\n },\n update_panel_text_color: function(v) {\n \n Common.add_custom_branding(`.panel .panel-title, .panel-default > .panel-heading, ul.panel-controls > li > a {color: ${v}}`);\n Common.add_custom_branding(`ul.panel-controls > li > a {border: 1px solid ${v}}`);\n },\n update_table_header_color: function(v) {\n Common.add_custom_branding(`.drilltable > thead > tr > th {background-color: ${v}}`);\n },\n update_table_text_color: function(v) {\n Common.add_custom_branding(`.drilltable > thead > tr > th {color: ${v}}`);\n },\n update_logo: function(logo_url, small_logo)\n {\n // Large header\n Common.add_custom_branding('.x-navigation:not(.x-navigation-minimized) > li.xn-logo > a:first-child {background: ' + 'url(\"' + logo_url + '\") top center no-repeat !important; background-size: contain !important;}')\n Common.add_custom_branding('.navbar-nav > li.xn-logo > a:first-child {background: ' + 'url(\"' + logo_url + '\") center left no-repeat !important;}')\n \n // if ($('img#logo_placeholder').length > 0) {\n // $('img#logo_placeholder').attr('src', logo_url);\n // }\n\n // Small logo\n // If we are using the default autoid logo, use the default autoid small logo\n // otherwise, use no logo since we do not allow the users to upload a mini logo yet.\n if (logo_url.indexOf('/assets/') == 0) {\n Common.add_custom_branding('.x-navigation.x-navigation-minimized > li.xn-logo > a:first-child {background-image: url(\"/assets/logo-newco-small@2x.png\") !important;}')\n Common.add_custom_branding('.navbar-nav > li.xn-logo > a:first-child {background-image: url(\"/assets/logo-newco-small@2x.png\") !important;}')\n } else {\n Common.add_custom_branding('.x-navigation.x-navigation-minimized > li.xn-logo > a:first-child {background-image: none !important;}')\n }\n },\n\n update_header_color: function(v)\n {\n Common.add_custom_branding('.page-content .x-navigation {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-content .navbar {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-content .navbar .nav {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-content .navbar ul.nav > li {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('ul.nav .open > a, ul.nav .open > a:hover, ul.nav .open > a:focus {background-color : ' + v + ' !important;}')\n $('.dropdown-menu li > a').css('background-color', v);\n },\n\n update_messaging_header_color: function(v)\n {\n Common.add_custom_branding('.page-messaging-header .x-navigation {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-messaging-header .navbar {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-messaging-header .navbar .nav {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-messaging-header .navbar ul.nav > li {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('ul.nav .open > a, ul.nav .open > a:hover, ul.nav .open > a:focus {background-color : ' + v + ' !important;}')\n $('.dropdown-menu li > a').css('background-color', v);\n },\n\n update_messaging_header_text_color: function(v)\n {\n Common.add_custom_branding('message-headers a {color : ' + v + ' !important;}')\n Common.add_custom_branding('message-headers .filter-selected {border : ' + v + ' !important;}')\n },\n\n update_sidebar_color: function(v)\n {\n Common.add_custom_branding('.page-sidebar .x-navigation {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.page-sidebar ul li a {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('#page-sidebar-container {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.x-navigation .dropdown-menu {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.dropdown-menu > .active > a, .dropdown-menu > .active > a:focus {background-color : ' + v + ' !important;}')\n },\n\n update_highlight_color: function(v)\n {\n Common.add_custom_branding('.dropdown-menu a:hover {background: ' + v + ' !important;}')\n Common.add_custom_branding('.x-navigation li > a:hover {background: ' + v + ' !important;}')\n Common.add_custom_branding('.x-navigation .x-navigation-control:hover {background : ' + v + ' !important;}')\n Common.add_custom_branding('.x-navigation > li.xn-logo > a:first-child:hover {background-color: ' + v + ' !important;}')\n // Common.add_custom_branding('.x-navigation.x-navigation-horizontal > li > a:hover {background: ' + v + ' !important;}')\n Common.add_custom_branding('.dt-button-collection > li > a:hover {background-color : ' + v + ' !important;}')\n },\n\n update_active_color: function(v)\n {\n Common.add_custom_branding('.x-navigation li.active > a {background : ' + v + ' !important;}')\n Common.add_custom_branding('.x-navigation li > ul li.active > a {background : ' + v + ' !important;}')\n Common.add_custom_branding('.dt-button-collection > li:not(active) {background-color : ' + v + ' !important;}')\n Common.add_custom_branding('.dt-button-collection > li:not(active) > a:focus {background-color : ' + v + ' !important;}')\n },\n\n siteNavigationMenu: function(callback)\n {\n Common.gCallback = callback;\n $('select#site-navigation').change(function(){\n Common.refreshDomainSettings();\n });\n\n Common.autoGroupMenu();\n },\n\n // When the domain selection changes, we need\n // to rebuild the domain settings cookie.\n // The goal is to only rebuild the domain settings cookie\n // only when the domain actually changes.\n refreshDomainSettings: function()\n {\n var id = Common.getSelectedSiteIdFromDomainMenu();\n // Cookies.set('aid_selected_site_id', id, {secure: true, sameSite: \"None\"});\n this.setCookie('aid_selected_site_id', id);\n $.get('/domains/' + id + '/settings', function(data){\n Common.getWidgetData();\n },'json');\n },\n\n autoGroupMenu: function()\n {\n // in crm mode, the auto group menu is not rendered\n // so get the group value from the cookie.\n if (Common.in_crm_mode()) {\n var id = Common.getSelectedAutoGroupIdFromCookie();\n $.get('/auto_groups/domains/' + id, function(data){\n Common.getWidgetData();\n },'json');\n }\n else {\n $('select#auto-group-navigation').change(function(){\n Common.autoGroupSelectionChanged();\n });\n\n // Select any previously selected site.\n var id = Common.getSelectedAutoGroupIdFromCookie();\n if (id !== 0)\n {\n $('select#auto-group-navigation option[value=\"' + id + '\"]').prop('selected', true)\n $('select#auto-group-navigation').trigger('change');\n }\n }\n },\n\n getSelectedAutoGroupIdFromMenu: function()\n {\n return $('select#auto-group-navigation').val();\n },\n\n setCookie(cookie_name, value, path) {\n var options = {};\n if (window.location.protocol === 'https:') {\n options.secure = true;\n options.sameSite = \"None\";\n }\n\n if (path) {\n options.path = path;\n }\n \n Cookies.set(cookie_name, value, options);\n },\n\n autoGroupSelectionChanged: function()\n {\n let id = Common.getSelectedAutoGroupIdFromMenu();\n console.log('setting aid_selected_auto_group_id: ' + id);\n this.setCookie('aid_selected_auto_group_id', id);\n\n var group_name = $('select#auto-group-navigation option:selected').text();\n $(document).prop('title', group_name);\n\n console.log('auto group selected: ' + id);\n\n // Show only domains specific to group\n // Update branding\n $.get('/auto_groups/domains/' + id, function(data){\n Common.rebuild_domains_menu(data);\n Common.updateBranding();\n Common.getWidgetData();\n Common.update_sidebar_for_user_roles(data.roles);\n },'json');\n },\n\n /*\n When the group changes, we may need to hide/show links\n in the sidebar based on the user's roles for the current group.\n */\n update_sidebar_for_user_roles: function(roles)\n {\n // If the user is an admin or account admin for any group, enable all the admin related links\n if (roles['is_admin_or_account_admin_for_any_group']) {\n $('*[data_allowed_roles]').each(function(){\n $(this).show();\n });\n }\n else {\n $('*[data_allowed_roles]').each(function(){\n var link_roles = $(this).attr('data_allowed_roles');\n var link_pieces = link_roles.split(',');\n var match_found = false;\n for(lp in link_pieces) {\n var link_role = link_pieces[lp].trim().toLowerCase();\n if (roles[link_role]) {\n match_found = true;\n break;\n }\n } // lp\n\n if (match_found) {\n $(this).show();\n }\n else {\n $(this).hide();\n }\n });\n }\n },\n\n rebuild_domains_menu: function(data)\n {\n $('#site-navigation option').remove();\n var domains = data.domains;\n var is_admin = data.is_admin;\n\n if (domains.length > 1) {\n $('#site-navigation').append(\"\");\n }\n else if (domains.length == 0) {\n $('#site-navigation').append(\"\");\n return\n }\n\n var show_location_names_as_menu_options = $('#show_location_names_as_menu_options').val();\n var selected_domain_id = Common.getSelectedSiteIdFromCookie();\n for (var i=0; i < domains.length; i++)\n {\n var domain = domains[i];\n var selected = (selected_domain_id == domain['id']) ? \"selected\" : '';\n var option_html = \"\";\n $('#site-navigation').append(option_html);\n } // for\n },\n\n get_domain_settings: function()\n {\n var result = {};\n var data = Cookies.get('domain_settings');\n\n // Scheduled reports store the domain settings on the page. Overriding the cookies.\n if(typeof domain_enc_settings_str !== 'undefined') {\n data = domain_enc_settings_str;\n }\n if (data) {\n result = JSON.parse( decodeURIComponent(data) );\n }\n //console.log(\"TEST = \" + JSON.stringify(result));\n return result;\n },\n\n is_automotive_industry: function()\n {\n var is_automotive_industry = false\n var domain_settings = Common.get_domain_settings()\n if (domain_settings.industry !== undefined && domain_settings.industry !== null)\n {\n is_automotive_industry = domain_settings.industry.is_automotive\n }\n\n return is_automotive_industry\n },\n\n // https://stackoverflow.com/questions/14195530/how-to-display-raw-json-data-on-a-html-page\n render_displayable_json: function(json)\n {\n var jsonStr = JSON.stringify(json);\n var f = {brace: 0};\n\n var regeStr = jsonStr.replace(/({|}[,]*|[^{}:]+:[^{}:,]*[,{]*)/g, function (m, p1) {\n var rtnFn = function() {\n return '
' + p1 + '
';\n },\n rtnStr = 0;\n if (p1.lastIndexOf('{') === (p1.length - 1)) {\n rtnStr = rtnFn();\n f['brace'] += 1;\n } else if (p1.indexOf('}') === 0) {\n f['brace'] -= 1;\n rtnStr = rtnFn();\n } else {\n rtnStr = rtnFn();\n }\n return rtnStr;\n });\n return regeStr;\n },\n\n get_auto_group_settings: function()\n {\n var result = {};\n var data = Cookies.get('auto_group_settings');\n\n // Scheduled reports store the group settings on the page. Overriding the cookies.\n if(typeof group_enc_settings_str !== 'undefined') {\n data = group_enc_settings_str;\n }\n\n if (data) {\n result = JSON.parse( decodeURIComponent(data) );\n }\n return result;\n },\n\n get_branding_checksum: function()\n {\n var result = null;\n var data = Cookies.get('auto_group_settings_checksum');\n if (data) {\n result = data;\n }\n return result;\n },\n\n // Returns true if the layout contains this DOM element and it value is true.\n in_pdf_mode: function()\n {\n var pdf_mode = $('#pdf_mode').val();\n return (pdf_mode == \"true\");\n },\n\n handle_generic_ajax_error: function()\n {\n console.log('There was an ajax error')\n },\n\n // copied from plugins.js\n // if we chsnge the mask, need to change it in plugins too.\n mask_inputs: function()\n {\n $(\"input.mask_phone\").mask('(999) 999-9999');\n },\n\n clearLocalStorageFilters: function() {\n // filters for running detail reports are saved in localStorage\n localStorage.removeItem(\"filters\");\n localStorage.removeItem(\"group_path\");\n },\n\n formatNumberWithCommas(number) {\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n }\n}();\n\n$(document).ready(function() {\n Common.init();\n}); ","import WaveSurfer from \"wavesurfer.js\";\n\nexport class AudioPlayer extends HTMLElement {\n constructor() {\n super();\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick() {\n const audioPlayers = document.querySelectorAll(\"audio-player\");\n audioPlayers.forEach((el) => {\n if (el === this) {\n this.wavesurfer.playPause();\n } else {\n // pauses all other audio-player elements on the page\n // so only one element can be played at a time\n el.wavesurfer.pause();\n }\n });\n }\n\n connectedCallback() {\n this.innerHTML = `\n
\n
\n \n
\n 0:00\n
\n 0:00\n
\n `;\n\n this.playButton = this.querySelector(\".play-button\");\n this.playIcon = this.querySelector(\"#play-icon\");\n this.currentTime = this.querySelector(\"#current-time\");\n this.waveformContainer = this.querySelector(\".waveform-container\");\n this.duration = this.querySelector(\"#duration\");\n\n this.wavesurfer = WaveSurfer.create({\n container: this.waveformContainer,\n barGap: 2,\n barHeight: 2.5,\n barRadius: 1,\n barWidth: 1,\n cursorWidth: 0,\n barMinHeight: 0.5,\n height: 28,\n hideScrollbar: true,\n progressColor: \"white\",\n responsive: true,\n backend: \"MediaElement\",\n });\n\n this.wavesurfer.load(this.getAttribute(\"src\"));\n\n this.wavesurfer.on(\"ready\", () => {\n this.duration.textContent = calculateTime(this.wavesurfer.getDuration());\n });\n\n this.playButton.addEventListener(\"click\", this.handleClick);\n\n this.wavesurfer.on(\"play\", () => {\n this.playIcon.className = \"fa fa-pause\";\n });\n\n this.wavesurfer.on(\"pause\", () => {\n this.playIcon.className = \"fa fa-play\";\n });\n\n this.wavesurfer.on(\"audioprocess\", () => {\n this.currentTime.textContent = calculateTime(this.wavesurfer.getCurrentTime());\n });\n }\n\n disconnectedCallback() {\n this.playIcon.className = \"fa fa-play\";\n this.currentTime.textContent = \"0:00\";\n this.playButton.removeEventListener(\"click\", this.handleClick);\n this.wavesurfer.destroy();\n }\n}\n\nfunction calculateTime(secs) {\n const minutes = Math.floor(secs / 60);\n const seconds = Math.floor(secs % 60);\n const returnedSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\n return `${minutes}:${returnedSeconds}`;\n}\n\ncustomElements.define(\"audio-player\", AudioPlayer);\n","require(\"utils/ring_to_endpoint\");\nimport {Common} from \"utils/common\";\nconsole.log(Common)\nwindow.Common = Common;\n\n// This does not really have to be added to the Window as only js files access it. However does need the be same instance everytime.\nimport {DataBinder} from \"utils/data_binder\" \nwindow.DataBinder = DataBinder;\n\nrequire('reporting/user_reports')\n\nimport \"../reporting/audio_player\";\n","export class ReportDetailRow extends HTMLElement {\n constructor(user_report_id) {\n super();\n this.user_report_id = user_report_id;\n }\n async connectedCallback() {\n let rowData = this.data;\n let res = await fetch(`/user_report_schedule/${this.user_report_id}`);\n let data = await res.json();\n this.innerHTML = `\n
\n
\n
\n

Report Details

\n
\n
\n \n
\n
\n
\n
\n
\n Selected Groups\n
\n
\n Selected Locations\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n Report Timeframe- Timeframe must be selected\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n
\n
\n `;\n\n \n // Creates email address inputs with existing addresses if they exist\n if(data.user_report_recipients.length == 0) {\n this.addNewItem();\n }\n else {\n data.user_report_recipients.map(function(recipient_data, i) {\n let reportRecipient = document.createElement(\"report-detail-recipients\");\n reportRecipient.data = {email: recipient_data.email_address, id: recipient_data.user_report_recipient_id};\n reportRecipient.setTarget(recipient_data.destination);\n this.querySelector(\"#report_recipient_group\").appendChild(reportRecipient);\n }.bind(this)\n );\n }\n\n const groupBadgeList = $(\"#group_names\");\n const groupBadges = data.group_names.map(\n (name) => `${name}`\n );\n if (groupBadges.length === 0) {\n groupBadgeList.remove();\n }\n groupBadges.forEach((badge) => {\n groupBadgeList.append(badge);\n });\n\n const locationBadgeList = $(\"#location_names\");\n const locationBadges = data.location_names.map(\n (name) => `${name}`\n );\n if (locationBadges.length === 0) {\n locationBadgeList.remove();\n }\n locationBadges.forEach((badge) => {\n locationBadgeList.append(badge);\n });\n\n this.querySelector(\".btn-primary\").addEventListener(\"click\", function() {\n this.saveChanges(this.user_report_id)\n }.bind(this));\n this.querySelector(\".cancel-report-edit\").addEventListener(\"click\", this.closeRow);\n }\n\n addNewItem() {\n let newReportRecipient = document.createElement('report-detail-recipients');\n this.querySelector('#report_recipient_group').appendChild(newReportRecipient);\n }\n\n async saveChanges(report_id) {\n let emailElems = document.getElementsByClassName(\"report_email\")\n let emails = [];\n let validRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i;\n let isValid = true;\n\n this.querySelectorAll('.error').forEach(elem => elem.classList.remove('error'))\n\n emailElems.forEach(elem => {\n if(elem.value.trim() != \"\" && !elem.value.match(validRegex)) {\n elem.classList.add('error');\n Common.notify('Invalid email address. Please be sure to enter only one email per line', 'error');\n isValid = false;\n } else {\n emails.push({\"email\": elem.value, \"id\": elem.getAttribute(\"data\")})\n }\n });\n if(!isValid) {\n return\n }\n let data = {\n name: this.querySelector(\"#report_name\").value,\n timezone: this.querySelector(\"#report_detail_timezone\").value,\n timeframe: $(\"input[name='timeframe']:checked\").val(),\n emails: emails,\n }\n let saved_changes = await fetch(`/user_report_schedule/${report_id}/update_report`, {\n headers: {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n 'Content-Type': 'application/json'\n },\n method: 'PUT',\n body: JSON.stringify(data)\n });\n let response = await saved_changes.json();\n if (response.ok) {\n Common.notify('Scheduled report updated', 'success');\n $('#scheduled_reports').DataTable().ajax.reload();;\n console.log(this.closest('tr').previousSibling)\n } else {\n Common.notify('Unable to update', 'danger');\n }\n }\n\n closeRow(e) {\n e.preventDefault();\n this.closest(\"table\").querySelector(\"tr.shown td.details-control\").click();\n }\n \n}\n\ncustomElements.define(\"report-detail-row\", ReportDetailRow)\n\nclass ReportDetailRecipients extends HTMLElement {\n constructor() {\n super();\n }\n connectedCallback() {\n this.innerHTML = \n `
\n \n \n \n
`;\n let _this = this;\n console.log(this.data)\n this.querySelector(\".remove_item\").addEventListener('click', function(event) {\n event.preventDefault();\n _this.remove();\n });\n this.querySelector(\".add_item\").addEventListener('click', function(event) {\n event.preventDefault();\n if(document.querySelector(\"#report_recipient_group\").childElementCount < 10) {\n _this.closest(\"report-detail-row\").addNewItem();\n }\n });\n }\n\n setTarget(target) {\n this.target = target\n }\n}\n\ncustomElements.define(\"report-detail-recipients\", ReportDetailRecipients)","import {ReportDetailRow} from './report_detail_row'\n\nclass UserReports extends HTMLElement {\n\n constructor() {\n super();\n }\n\n async connectedCallback() {\n this.is_admin_view = this.getAttribute(\"admin_view\") ? true : false;\n\n this.innerHTML = `
\n ${this.is_admin_view ? `\n

All Scheduled Reports

\n

Editing or deleting these reports will affect users.

\n ` : `

Scheduled Reports

`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TitleReport TypeNext Run DateNo. RecipientsRecipientsActions
\n
`;\n this.init();\n }\n\n init(user_reports) {\n this.table = $('#scheduled_reports').DataTable({\n ajax: this.is_admin_view ? \"/admin/user_reports.json\" : \"/user_report_schedule.json\",\n columns: [\n {\n \"class\": \"details-control\",\n \"orderable\": false,\n \"data\": null,\n \"defaultContent\": \"\"\n },\n {data: \"title\"},\n {data: \"report_type\", render: function(data, type, row) {\n return data.split('_').map((word)=> {return word.charAt(0).toUpperCase() + word.slice(1)}).join(' ')\n },\n \"class\": \"text-center\"},\n {render: function(data, type, row) {\n return moment(row.next_run_date).format(\"MM/DD/YYYY\");\n },\n \"class\": \"text-center\"},\n {render: function(data, type, row) {\n return row.recipients;\n },\n \"class\": \"text-center\"},\n {data: \"recipient_list\", visible: false},\n {render: function(data, type, row) {\n return 'Run Now';\n },\n \"class\": \"text-center\",\n sortable: false},\n ]\n });\n\n this.table.on('draw', function () {\n $.each(detailRows, function (i, id) {\n $('#' + id + ' td.details-control').trigger('click');\n });\n });\n\n let detailRows = [];\n\n $('#scheduled_reports tbody').on('click', 'tr td.details-control', async function (e) {\n let tr = $(e.target).closest('tr');\n let row = this.table.row(tr);\n let idx = $.inArray(tr.attr('id'), detailRows);\n\n if (row.child.isShown()) {\n tr.removeClass('details shown');\n row.child.hide();\n\n detailRows.splice(idx, 1);\n }\n else {\n let oldSelectedTr = $(\"table#scheduled_reports tr.shown\");\n if(oldSelectedTr.size() > 0) {\n let oldSelectedRow = this.table.row(oldSelectedTr);\n oldSelectedTr.next('tr').removeClass('details-row');\n oldSelectedRow.child.hide();\n oldSelectedTr.removeClass('shown');\n }\n tr.addClass('details shown');\n let row_detail = new ReportDetailRow(this.table.row( e.target.closest(\"tr\")).data().user_report_id);\n row.child(row_detail).show();\n\n if (idx === -1) {\n detailRows.push(tr.attr('id'));\n }\n }\n }.bind(this));\n\n this.querySelector(\".form-inline\").classList.remove(\"form-inline\")\n\n this.initTableEvents();\n }\n \n initTableEvents() { \n $(\"#scheduled_reports\").on('click', 'a.delete_report', async function (e) {\n if(confirm(\"Are you sure you want to delete this report?\")){\n e.preventDefault();\n var row = this.table.row( e.target.closest(\"tr\").previousSibling ).data();\n let res = await fetch('/user_report_schedule/'+row.user_report_id, \n {method: \"DELETE\",\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')}\n });\n this.table.row( e.target.closest(\"tr\").previousSibling ).remove().draw();\n }\n }.bind(this));\n\n $(\"#scheduled_reports\").on('click', 'tr a.run_report', async function (e) {\n e.preventDefault();\n $(\"#run_report_modal\").modal();\n var row = this.table.row( e.target.closest('tr') ).data();\n let user_report_runner = new UserReportRunner(row.user_report_id);\n let modal_dialog_elem = document.querySelector(\"#run_report_modal .modal-dialog\");\n modal_dialog_elem.innerHTML = \"\";\n modal_dialog_elem.appendChild(user_report_runner);\n }.bind(this));\n }\n}\n\ncustomElements.define('user-reports', UserReports);\n\nclass UserReportRunner extends HTMLElement {\n constructor(report_id, save_cb, fail_cb) {\n super();\n this.report_id = report_id;\n }\n async connectedCallback() {\n this.innerHTML = `
\n
\n

Run Scheduled Report

\n
\n
\n
\n \n \n
\n
\n
\n \n \n
\n
`;\n\n let start_date = moment().startOf(\"day\");\n let end_date = moment().endOf(\"day\");\n $('input[name=\"dates\"]').daterangepicker(\n {\n autoApply: true,\n startDate: start_date,\n endDate: end_date,\n maxDate: moment(),\n },\n function (start, end) {\n start_date = start.startOf(\"day\");\n end_date = end.endOf(\"day\");\n }\n );\n\n $('#start_report').click(async function(e) {\n e.preventDefault();\n let utcStartDate = start_date.utc().format(\"YYYY-MM-DD HH:mm:ss\");\n let utcEndDate = end_date.utc().format(\"YYYY-MM-DD HH:mm:ss\");\n let res = await fetch('/user_report_schedule/'+this.report_id+'/run_report', {\n headers: {'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n 'Content-type': 'application/json'},\n method: 'POST',\n body: `{\"start_date\":\"${utcStartDate} UTC\", \"end_date\":\"${utcEndDate} UTC\"}`\n });\n let data = await res.json();\n Common.notify('Your report will be emailed when ready.', 'success');\n $(\"#run_report_modal\").modal('hide');\n }.bind(this));\n }\n}\n\ncustomElements.define('user-report-runner', UserReportRunner);"],"sourceRoot":""}