{"version":3,"file":"audioplayer.js","mappings":"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","sources":["webpack://dzsap--compile-files/../source/audioplayer/configs/_constants.js","webpack://dzsap--compile-files/../source/audioplayer/js_common/_dzs_helpers.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_helpers.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_keyboard.js","webpack://dzsap--compile-files/webpack/bootstrap","webpack://dzsap--compile-files/webpack/runtime/define property getters","webpack://dzsap--compile-files/webpack/runtime/hasOwnProperty shorthand","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_volume.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_scrubModeWave.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/wave-render/_wave-render-functions.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_scrubModeWave_spectrum.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/media/_media_functions.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_time_model.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_ajax.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/helper-classes/_ClassMetaParts.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_svgs.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/view/player/_view_playerStructure.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/components/_structure.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/extra-functionality/_extraHtmlFunctions.js","webpack://dzsap--compile-files/../source/audioplayer/configs/_settingsPlayer.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/features/_zoomsounds-radio-features.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_nextPrevButtons.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_feederFunctions.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_viewSetup.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_config.js","webpack://dzsap--compile-files/../source/audioplayer/audioplayer.sourcepack.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_scrubbar.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/view/player/_view_dimensionHelpers.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_misc.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_setupMiscButtons.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_touchFunctionality.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player_menuState.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/player/_player-one-time-setups.js"],"sourcesContent":["export const DEBUG_STYLE_PLAY_FUNCTIONS = 'background-color: #daffda; color: #222222;';\nexport const WAVESURFER_MAX_TIMEOUT = 20000;\n\nexport const ConstantsDzsAp = {\n PLAYLIST_TRANSITION_DURATION: 300,\n 'DEBUG_STYLE_1': 'background-color: #aaa022; color: #222222;',\n 'DEBUG_STYLE_2': 'background-color: #7c3b8e; color: #ffffff;',\n 'DEBUG_STYLE_3': 'background-color: #3a696b; color: #eeeeee;',\n 'DEBUG_STYLE_ERROR': 'background-color: #3a696b; color: #eeeeee;',\n URL_WAVESURFER_HELPER_BACKUP: 'https://zoomthe.me/assets/dzsap-wave-generate.js',\n WAVESURFER_MAX_TIMEOUT,\n DEBUG_STYLE_PLAY_FUNCTIONS,\n URL_JQUERY: 'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js',\n ERRORED_OUT_CLASS: 'errored-out',\n ERRORED_OUT_MAX_ATTEMPTS: 5\n}\n\nexport const DZSAP_PLAYER_CLASS_FOOTER_PLAYER = 'dzsap_footer';\nexport const DZSAP_PLAYER_CLASS_LOADED = 'dzsap-loaded';\nexport const DZSAP_PLAYER_CLASS_FOR_STICK_TO_BOTTOM_SHOW = 'audioplayer-loaded';\nexport const DZSAP_PLAYER_CLASS_STICK_TO_BOTTOM = 'dzsap-sticktobottom';\nexport const DZSAP_PLAYER_PLACEHOLDER_CLASS_STICK_TO_BOTTOM = 'dzsap-sticktobottom-placeholder';\nexport const DZSAP_PLAYER_TYPE_FOR_ACCEPTING_FEED = 'fake';\nexport const DZSAP_PLAYER_ATTR_PLAY_FROM_LAST_POS = 'last';\nexport const DZSAP_CLASS_NAME_AJAX_LIKE = 'btn-like';\n\nexport const DZSAP_SCRIPT_SELECTOR_MAIN_SETTINGS = '#dzsap-main-settings';\nexport const DZSAP_SCRIPT_SELECTOR_KEYBOARD = '#dzsap-keyboard-controls';\nexport const DZSAP_VIEW_PLAYER_PLAYING_EASED_TIMEOUT = 500;\nexport const DZSAP_AJAX_ACTION_LIKE = 'dzsap_submit_like';\nexport const DZSAP_VIEW_SONG_CHANGER_CLASS = 'audioplayer-song-changer';\n","import {ConstantsDzsAp} from \"../configs/_constants\";\n\nexport const decode_json = function (arg) {\n var fout = {};\n\n if (arg) {\n\n try {\n\n fout = JSON.parse(arg);\n } catch (err) {\n\n return null;\n }\n }\n\n return fout;\n}\nexport async function dzsap_jQueryInit(callback, reject) {\n\n return new Promise((resolve, reject) => {\n\n if (window.jQuery) {\n resolve('jQuery loaded');\n } else {\n const script = document.createElement('script');\n script.onload = function () {\n if (window.jQuery) {\n resolve('jQuery loaded');\n } else {\n reject('error loading');\n }\n };\n script.src = ConstantsDzsAp.URL_JQUERY;\n\n document.head.appendChild(script);\n }\n\n setTimeout(() => {\n reject('error loading');\n }, 15000);\n })\n}\n/**\n *\n * @param {string} arg\n * @return {string}\n */\nexport function string_curateClassName(arg){\n\n arg = arg.replace('feed-dzsap', '');\n arg = arg.replace('feed-dzsap--extra-html', '');\n return arg;\n}\n\n\nexport function simpleStringify (object){\n if (object && typeof object === 'object') {\n object = copyWithoutCircularReferences([object], object);\n }\n return JSON.stringify(object);\n\n function copyWithoutCircularReferences(references, object) {\n const cleanObject = {};\n Object.keys(object).forEach(function(key) {\n var value = object[key];\n if (value && typeof value === 'object') {\n if (references.indexOf(value) < 0) {\n references.push(value);\n cleanObject[key] = copyWithoutCircularReferences(references, value);\n references.pop();\n } else {\n cleanObject[key] = '###_Circular_###';\n }\n } else if (typeof value !== 'function') {\n cleanObject[key] = value;\n }\n });\n return cleanObject;\n }\n}\n\nexport const loadScriptIfItDoesNotExist = (scriptSrc, checkForVar) => {\n return new Promise((resolve, reject) => {\n if (checkForVar) {\n resolve('loadfromvar');\n return;\n }\n\n var script = document.createElement('script');\n script.onload = function () {\n resolve('loadfromload');\n };\n script.onerror = function () {\n reject();\n };\n script.src = scriptSrc;\n\n document.head.appendChild(script);\n })\n}\n\n\nexport const getBaseUrl = (baseUrlVar, scriptName) => {\n if (window[baseUrlVar]) {\n return window[baseUrlVar];\n }\n\n let scripts = document.getElementsByTagName(\"script\");\n for (var scriptKey in scripts) {\n if (scripts[scriptKey] && scripts[scriptKey].src && String(scripts[scriptKey].src).indexOf(scriptName) > -1) {\n break;\n }\n }\n var baseUrl_arr = String(scripts[scriptKey].src).split('/');\n baseUrl_arr.splice(-1, 1);\n const result = string_addTrailingSlash(baseUrl_arr.join('/'));\n window[baseUrlVar] = result+'/';\n return result;\n}\n\nfunction string_addTrailingSlash(url){\n var lastChar = url.substr(-1); // Selects the last character\n if (lastChar != '/') { // If the last character is not a slash\n url = url + '/'; // Append a slash to it.\n }\n return url;\n}\nexport const sanitizeToCssPx = (arg) => {\n\n if (String(arg).indexOf('%') > -1 || String(arg).indexOf('em') > -1 || String(arg).indexOf('px') > -1 || String(arg).indexOf('auto') > -1) {\n return arg;\n }\n return arg + 'px';\n}\n\n\nexport const setupTooltip = (args) => {\n\n var mainArgs = Object.assign({\n tooltipInnerHTML: '',\n tooltipIndicatorText: '',\n tooltipConClass: '',\n }, args)\n\n return `
${mainArgs.tooltipInnerHTML} ${mainArgs.tooltipIndicatorText}
`;\n}\n\n\nexport const isInt = function (n) {\n return typeof n == 'number' && Math.round(n) % 1 == 0;\n}\n\nexport const isValid = function (n) {\n return typeof n != 'undefined' && n != '';\n}\n\n\nexport function getRelativeX (mouseX, $el_) {\n if (jQuery) {\n return mouseX - jQuery($el_).offset().left;\n }\n}\n","import {isValid} from \"../js_common/_dzs_helpers\";\nimport {dzsap_keyboardSetup} from \"./player/_player_keyboard\";\nimport {\n DZSAP_PLAYER_CLASS_FOOTER_PLAYER,\n DZSAP_PLAYER_CLASS_STICK_TO_BOTTOM,\n DZSAP_VIEW_SONG_CHANGER_CLASS\n} from \"../configs/_constants\";\n\n\nexport function formatTime(arg) {\n\n var s = Math.round(arg);\n var m = 0;\n var h = 0;\n if (s > 0) {\n while (s > 3599 && s < 3000000 && isFinite(s)) {\n h++;\n s -= 3600;\n }\n while (s > 59 && s < 3000000 && isFinite(s)) {\n m++;\n s -= 60;\n }\n if (h) {\n\n return String((h < 10 ? \"0\" : \"\") + h + \":\" + String((m < 10 ? \"0\" : \"\") + m + \":\" + (s < 10 ? \"0\" : \"\") + s));\n }\n return String((m < 10 ? \"0\" : \"\") + m + \":\" + (s < 10 ? \"0\" : \"\") + s);\n } else {\n return \"00:00\";\n }\n}\n\nexport function can_history_api() {\n return !!(window.history && history.pushState);\n}\n\nexport function dzs_clean_string(arg) {\n\n if (arg) {\n\n arg = arg.replace(/[^A-Za-z0-9\\-]/g, '');\n\n arg = arg.replace(/\\./g, '');\n return arg;\n }\n\n return '';\n\n\n}\n\n\nexport function get_query_arg(purl, key) {\n if (purl) {\n\n if (String(purl).indexOf(key + '=') > -1) {\n\n var regexS = \"[?&]\" + key + \"=.+\";\n var regex = new RegExp(regexS);\n var regtest = regex.exec(purl);\n\n\n if (regtest != null) {\n var splitterS = regtest[0];\n if (splitterS.indexOf('&') > -1) {\n var aux = splitterS.split('&');\n splitterS = aux[1];\n }\n\n var splitter = splitterS.split('=');\n\n\n return splitter[1];\n\n }\n\n }\n\n } else {\n }\n}\n\nexport function add_query_arg(purl, key, value) {\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n\n if (!(purl)) {\n purl = '';\n }\n var s = purl;\n var pair = key + \"=\" + value;\n\n var r = new RegExp(\"(&|\\\\?)\" + key + \"=[^\\&]*\");\n\n s = s.replace(r, \"$1\" + pair);\n\n if (s.indexOf(key + '=') > -1) {\n\n\n } else {\n if (s.indexOf('?') > -1) {\n s += '&' + pair;\n } else {\n s += '?' + pair;\n }\n }\n\n\n if (value === 'NaN') {\n var regex_attr = new RegExp('[\\?|\\&]' + key + '=' + value);\n s = s.replace(regex_attr, '');\n\n\n if (s.indexOf('?') === -1 && s.indexOf('&') > -1) {\n s = s.replace('&', '?');\n }\n }\n\n return s;\n}\n\n\nexport function dzsap_is_mobile() {\n\n\n return is_ios() || is_android();\n}\n\nexport function is_ios() {\n\n return ((navigator.platform.indexOf(\"iPhone\") !== -1) || (navigator.platform.indexOf(\"iPod\") !== -1) || (navigator.platform.indexOf(\"iPad\") !== -1));\n}\n\n\nexport function can_canvas() {\n\n var oCanvas = document.createElement(\"canvas\");\n return !!oCanvas.getContext(\"2d\");\n\n}\n\nexport function is_safari() {\n return Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\n}\n\n\nexport function is_android() {\n var ua = navigator.userAgent.toLowerCase();\n\n return (ua.indexOf(\"android\") > -1);\n}\n\nexport function select_all(el) {\n if (typeof window.getSelection !== \"undefined\" && typeof document.createRange !== \"undefined\") {\n var range = document.createRange();\n range.selectNodeContents(el);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.selection !== \"undefined\" && typeof document.body.createTextRange !== \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.select();\n }\n}\n\nexport function is_android_good() {\n\n\n}\n\nexport function htmlEncode(arg) {\n return jQuery('
').text(arg).html();\n}\n\nexport function dzsap_generate_keyboard_tooltip(keyboard_controls, lab) {\n\n\n let structureDzsTooltipCommentAfterSubmit = '' + 'Shortcut' + ': ' + keyboard_controls[lab] + '';\n\n structureDzsTooltipCommentAfterSubmit = structureDzsTooltipCommentAfterSubmit.replace('32', 'space');\n structureDzsTooltipCommentAfterSubmit = structureDzsTooltipCommentAfterSubmit.replace('27', 'escape');\n\n return structureDzsTooltipCommentAfterSubmit;\n\n\n}\n\n\n/**\n *\n * @param hex\n * @param {number|null} targetAlpha 0-1\n * @returns {string}\n */\nexport function hexToRgb(hex, targetAlpha = null) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var str = '';\n if (result) {\n result = {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n };\n\n\n var alpha = 1;\n\n if (targetAlpha !== null) {\n alpha = targetAlpha;\n }\n\n\n str = 'rgba(' + result.r + ',' + result.g + ',' + result.b + ',' + alpha + ')';\n }\n\n\n return str;\n\n\n}\n\nexport function assignHelperFunctionsToJquery($) {\n\n\n Math.easeIn = function (t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n };\n\n\n /**\n *\n * @param {string} argfind\n * @param {string} arg\n * @returns {string}\n */\n const checkIfHasClass = (argfind, arg) => {\n\n if (!argfind) {\n var regex = new RegExp('class=\"(.*?)\"');\n var auxarr = regex.exec(arg);\n\n\n if (auxarr && auxarr[1]) {\n argfind = '.' + auxarr[1];\n }\n }\n\n return argfind;\n }\n $.fn.prependOnce = function (arg, argfind) {\n var _t = $(this)\n\n\n argfind = checkIfHasClass(argfind, arg);\n\n\n if (_t.children(argfind).length < 1) {\n _t.prepend(arg);\n return true;\n }\n return false;\n };\n $.fn.appendOnce = function (arg, argfind) {\n var _t = $(this)\n\n argfind = checkIfHasClass(argfind, arg);\n\n if (_t.children(argfind).length < 1) {\n _t.append(arg);\n return true;\n }\n return false;\n };\n};\n\n\nexport function registerTextWidth($) {\n\n $.fn.textWidth = function () {\n var _t = jQuery(this);\n var html_org = _t.html();\n if (_t[0].nodeName === 'INPUT') {\n html_org = _t.val();\n }\n var html_calcS = '' + html_org + '';\n jQuery('body').append(html_calcS);\n var _lastspan = jQuery('span.forcalc').last();\n\n _lastspan.css({\n 'font-size': _t.css('font-size'),\n 'font-family': _t.css('font-family')\n })\n var width = _lastspan.width();\n\n _lastspan.remove();\n return width;\n };\n}\n\nexport function player_checkIfWeShouldShowAComment(selfClass, real_time_curr, real_time_total) {\n\n var $ = jQuery;\n var timer_curr_perc = Math.round((real_time_curr / real_time_total) * 100) / 100;\n if (selfClass.audioType === 'fake') {\n timer_curr_perc = Math.round((selfClass.timeCurrent / selfClass.timeTotal) * 100) / 100;\n }\n if (selfClass._commentsHolder) {\n selfClass._commentsHolder.children().each(function () {\n var _t = $(this);\n if (_t.hasClass('dzstooltip-con')) {\n var _t_posx = _t.offset().left - selfClass._commentsHolder.offset().left;\n\n\n var aux = Math.round((parseFloat(_t_posx) / selfClass._commentsHolder.outerWidth()) * 100) / 100;\n\n\n if (aux) {\n\n if (Math.abs(aux - timer_curr_perc) < 0.02) {\n selfClass._commentsHolder.find('.dzstooltip').removeClass('active');\n _t.find('.dzstooltip').addClass('active');\n } else {\n _t.find('.dzstooltip').removeClass('active');\n }\n }\n }\n })\n }\n}\n\n\nexport function sanitizeObjectForChangeMediaArgs(_sourceForChange) {\n\n var changeMediaArgs = {};\n var _feed_fakePlayer = _sourceForChange;\n\n var lab = '';\n\n if (_sourceForChange.data('original-settings')) {\n return _sourceForChange.data('original-settings');\n }\n\n\n changeMediaArgs.source = null;\n if (_feed_fakePlayer.attr('data-source')) {\n changeMediaArgs.source = _feed_fakePlayer.attr('data-source')\n } else {\n\n if (_feed_fakePlayer.attr('href')) {\n changeMediaArgs.source = _feed_fakePlayer.attr('href');\n }\n }\n\n if (_feed_fakePlayer.attr('data-pcm')) {\n changeMediaArgs.pcm = _feed_fakePlayer.attr('data-pcm');\n }\n\n\n lab = 'thumb';\n if (_feed_fakePlayer.attr('data-' + lab)) {\n changeMediaArgs[lab] = _sourceForChange.attr('data-' + lab);\n }\n\n lab = 'playerid';\n if (_feed_fakePlayer.attr('data-' + lab)) {\n changeMediaArgs[lab] = _sourceForChange.attr('data-' + lab);\n }\n lab = 'type';\n if (_feed_fakePlayer.attr('data-' + lab)) {\n changeMediaArgs[lab] = _sourceForChange.attr('data-' + lab);\n }\n\n\n if (_feed_fakePlayer.attr('data-thumb_link')) {\n changeMediaArgs.thumb_link = _sourceForChange.attr('data-thumb_link');\n }\n\n\n if (_sourceForChange.find('.meta-artist').length > 0 || _sourceForChange.find('.meta-artist-con').length > 0) {\n\n changeMediaArgs.artist = _sourceForChange.find('.the-artist').eq(0).html();\n changeMediaArgs.song_name = _sourceForChange.find('.the-name').eq(0).html();\n }\n\n\n if (_sourceForChange.attr('data-thumb_for_parent')) {\n changeMediaArgs.thumb = _sourceForChange.attr('data-thumb_for_parent');\n }\n\n\n if (_sourceForChange.find('.feed-song-name').length > 0 || _sourceForChange.find('.feed-artist-name').length > 0) {\n changeMediaArgs.artist = _sourceForChange.find('.feed-artist-name').eq(0).html();\n changeMediaArgs.song_name = _sourceForChange.find('.feed-song-name').eq(0).html();\n }\n\n\n return changeMediaArgs;\n}\n\n\nexport function utils_sanitizeToColor(colorString) {\n if (colorString.indexOf('#') === -1 && colorString.indexOf('rgb') === -1 && colorString.indexOf('hsl') === -1) {\n return '#' + colorString;\n }\n return colorString;\n}\n\nexport function dzsapInitjQueryRegisters() {\n}\n\nexport function player_radio_isNameUpdatable(selfClass, radio_update_song_name, targetKey) {\n\n if (selfClass._metaArtistCon.find(targetKey).length && selfClass._metaArtistCon.find(targetKey).eq(0).text().length > 0) {\n\n if (selfClass._metaArtistCon.find(targetKey).eq(0).html().indexOf('{{update}}') > -1) {\n return true;\n }\n }\n\n\n return false;\n}\n\nexport function playerRegisterWindowFunctions() {\n\n\n window['dzsap_functions'] = {};\n window['dzsap_functions']['send_total_time'] = function (argtime, argcthis) {\n\n\n if (argtime && argtime !== Infinity) {\n const data = {\n action: 'dzsap_send_total_time_for_track',\n id_track: argcthis.attr('data-playerid'),\n postdata: Math.ceil(argtime)\n };\n jQuery.post(window.dzsap_ajaxurl, data, function (response) {\n });\n }\n\n }\n\n\n window.dzs_open_social_link = function (arg, argthis) {\n var leftPosition, topPosition;\n var w = 500, h = 500;\n\n leftPosition = (window.screen.width / 2) - ((w / 2) + 10);\n\n topPosition = (window.screen.height / 2) - ((h / 2) + 50);\n var windowFeatures = \"status=no,height=\" + h + \",width=\" + w + \",resizable=yes,left=\" + leftPosition + \",top=\" + topPosition + \",screenX=\" + leftPosition + \",screenY=\" + topPosition + \",toolbar=no,menubar=no,scrollbars=no,location=no,directories=no\";\n\n\n arg = arg.replace('{{replacewithcurrurl}}', encodeURIComponent(window.location.href));\n\n if (argthis && argthis.attr) {\n arg = arg.replace(/{{replacewithdataurl}}/g, argthis.attr('data-url'));\n }\n\n const locationHref = window.location.href;\n\n\n const auxa = locationHref.split('?');\n\n let cid = '';\n let cid_gallery = '';\n\n\n if (argthis) {\n\n } else {\n if (window.dzsap_currplayer_from_share) {\n\n argthis = window.dzsap_currplayer_from_share;\n }\n }\n\n\n if (argthis) {\n\n const $ = jQuery;\n\n if ($(argthis).hasClass('audioplayer')) {\n cid = $(argthis).parent().children().index(argthis);\n cid_gallery = $(argthis).parent().parent().parent().attr('id');\n } else {\n if (jQuery(argthis).parent().parent().attr('data-menu-index')) {\n\n cid = jQuery(argthis).parent().parent().attr('data-menu-index');\n }\n if (jQuery(argthis).parent().parent().attr('data-gallery-id')) {\n\n cid_gallery = jQuery(argthis).parent().parent().attr('data-gallery-id');\n }\n }\n\n }\n\n\n var shareurl = encodeURIComponent(auxa[0] + '?fromsharer=on&audiogallery_startitem_' + cid_gallery + '=' + cid + '');\n arg = arg.replace('{{shareurl}}', shareurl);\n\n\n window.open(arg, \"sharer\", windowFeatures);\n }\n\n\n window.dzsap_wp_send_contor_60_secs = function (argcthis, argtitle) {\n\n var data = {\n video_title: argtitle\n\n , video_analytics_id: argcthis.attr('data-playerid')\n , curr_user: window.dzsap_curr_user\n };\n var theajaxurl = 'index.php?action=ajax_dzsap_submit_contor_60_secs';\n\n if (window.dzsap_settings.dzsap_site_url) {\n\n theajaxurl = dzsap_settings.dzsap_site_url + theajaxurl;\n }\n\n\n jQuery.ajax({\n type: \"POST\",\n url: theajaxurl,\n data: data,\n success: function (response) {\n\n\n },\n error: function (arg) {\n\n }\n });\n }\n\n\n window.dzsap_init_multisharer = function () {\n\n\n }\n\n\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function assignPcmData(selfClass) {\n\n selfClass.pcmSource = string_jsonConvertToArray(selfClass.cthis.attr('data-pcm'));\n if (selfClass.initOptions.skinwave_enableSpectrum === 'on') {\n var pcmSourceLen = selfClass.pcmSource.length;\n var desiredSize = 256;\n\n for (var i = 0; i < pcmSourceLen; i++) {\n if (i > desiredSize) {\n continue;\n }\n selfClass.pcmSource[i] = selfClass.pcmSource[i * pcmSourceLen / desiredSize] * desiredSize;\n }\n selfClass.pcmSource.splice(desiredSize, pcmSourceLen - desiredSize); // removes 3rd element of array\n }\n}\n\nexport function string_jsonConvertToArray(ar_str) {\n let waves = [];\n if (typeof (ar_str) == 'object') {\n waves = ar_str;\n } else {\n try {\n waves = JSON.parse(ar_str);\n } catch (err) {\n\n }\n }\n\n return waves;\n}\n\n/**\n * should be called only once on init\n */\nexport function dzsap_singleton_ready_calls() {\n\n window.dzsap_singleton_ready_calls_is_called = true;\n\n\n let $feed_dzsapMainSettings = null;\n const $feed_dzsapMainSettingsAll = document.querySelectorAll('.dzsap-main-settings');\n if ($feed_dzsapMainSettingsAll.length) {\n $feed_dzsapMainSettings = $feed_dzsapMainSettingsAll[$feed_dzsapMainSettingsAll.length - 1];\n }\n if ($feed_dzsapMainSettings) {\n window.dzsap_settings = JSON.parse($feed_dzsapMainSettings.innerHTML);\n window.ajaxurl = window.dzsap_settings.ajax_url;\n window.dzsap_curr_user = window.dzsap_settings.dzsap_curr_user;\n }\n\n\n jQuery('body').append('');\n\n\n window.dzsap__style = jQuery('.dzsap--style');\n\n\n jQuery('audio.zoomsounds-from-audio').each(function () {\n var _t = jQuery(this);\n _t.after('
');\n _t.remove();\n })\n\n jQuery(document).on('focus.dzsap', 'input', function () {\n window.dzsap_currplayer_focused = null;\n })\n\n registerTextWidth(jQuery);\n\n dzsap_keyboardSetup();\n}\n\nexport function jQueryAuxBindings($) {\n\n\n function handleClick_onGlobalZoomSoundsButton(e) {\n const $t = $(this);\n\n\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n\n if ($t.hasClass(DZSAP_VIEW_SONG_CHANGER_CLASS)) {\n const _c = $($t.attr('data-fakeplayer')).eq(0);\n\n\n if (_c && _c.get(0) && _c.get(0).api_change_media) {\n _c.get(0).api_change_media($t, {\n 'feeder_type': 'button'\n , 'call_from': 'changed ' + DZSAP_VIEW_SONG_CHANGER_CLASS\n });\n }\n\n return false;\n }\n\n\n }\n\n\n $(document).off('click.dzsap_metas')\n $(document).on('click.dzsap_metas', '.' + DZSAP_VIEW_SONG_CHANGER_CLASS, handleClick_onGlobalZoomSoundsButton)\n\n\n}\n\n\n/**\n * for .zoomsounds-wrapper-bg-center\n * @param selfClass\n */\nexport function view_player_playMiscEffects(selfClass) {\n\n selfClass.$conPlayPause.addClass('playing');\n\n if (selfClass.cthis.parent().hasClass('zoomsounds-wrapper-bg-center')) {\n selfClass.cthis.parent().addClass('is-playing');\n }\n}\n\n\nexport function view_player_globalDetermineSyncPlayersIndex(selfClass) {\n\n if (selfClass._sourcePlayer === null && window.dzsap_syncList_players) {\n window.dzsap_syncList_players.forEach(($syncPlayer, index) => {\n if (selfClass.cthis.attr('data-playerid') == $syncPlayer.attr('data-playerid')) {\n window.dzsap_syncList_index = index;\n }\n })\n }\n}\n\n\nexport function player_view_addMetaLoaded(selfClass) {\n\n selfClass.cthis.addClass('meta-loaded');\n selfClass.cthis.removeClass('meta-fake');\n if (selfClass._sourcePlayer) {\n selfClass._sourcePlayer.addClass('meta-loaded');\n selfClass._sourcePlayer.removeClass('meta-fake');\n }\n if (selfClass.$totalTime) {\n\n selfClass.timeModel.refreshTimes();\n selfClass.$totalTime.html(formatTime(selfClass.timeModel.getVisualTotalTime()));\n }\n if (selfClass._sourcePlayer) {\n selfClass._sourcePlayer.addClass('meta-loaded');\n }\n}\n\n\nfunction htmlEntities(str) {\n return String(str).replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"');\n}\n\nexport function waitForScriptToBeAvailableThenExecute(verifyVar, callbackFn) {\n\n new Promise((resolve, reject) => {\n\n let checkInterval = 0;\n\n function checkIfVarExists() {\n if (verifyVar) {\n clearInterval(checkInterval);\n resolve('var exists');\n }\n }\n\n checkIfVarExists()\n checkInterval = setInterval(checkIfVarExists, 300);\n setTimeout(() => {\n reject('timeout');\n }, 5000);\n\n }).then((resolve => {\n callbackFn(resolve);\n })).catch((err) => {\n })\n}\n\n\nexport function player_reinit_findIfPcmNeedsGenerating(selfClass) {\n const o = selfClass.initOptions;\n\n if (selfClass.cthis.attr('data-pcm')) {\n selfClass.hasInitialPcmData = true;\n }\n\n if (!selfClass.hasInitialPcmData && o.skinwave_wave_mode === 'canvas' && (o.design_skin === 'skin-wave' || selfClass.cthis.attr('data-fakeplayer'))) {\n selfClass.isPcmRequiredToGenerate = true;\n }\n\n\n if (o.scrubbar_type === 'wave') {\n if (o.is_inited_from_playlist) {\n\n selfClass.cthis.addClass('scrubbar-type-wave--has-reveal-animation');\n }\n if (o.scrubbar_type_wave__has_reveal_animation === 'on') {\n\n selfClass.cthis.addClass('scrubbar-type-wave--has-reveal-animation');\n }\n if (selfClass.isPcmRequiredToGenerate) {\n selfClass.cthis.addClass('scrubbar-type-wave--has-reveal-animation');\n }\n }\n}\n\n\nexport function playerFunctions(selfClass, functionType) {\n var o = selfClass.initOptions;\n\n if (functionType === 'detectIds') {\n\n\n if (o.skinwave_comments_playerid === '') {\n if (typeof (selfClass.cthis.attr('id')) !== 'undefined') {\n selfClass.the_player_id = selfClass.cthis.attr('id');\n }\n }\n\n\n if (selfClass.the_player_id == '') {\n\n if (selfClass.cthis.attr('data-computed-playerid')) {\n selfClass.the_player_id = selfClass.cthis.attr('data-computed-playerid');\n }\n if (selfClass.cthis.attr('data-real-playerid')) {\n selfClass.the_player_id = selfClass.cthis.attr('data-real-playerid');\n }\n }\n selfClass.uniqueId = selfClass.the_player_id;\n\n if (typeof selfClass.uniqueId === 'string') {\n selfClass.uniqueId = selfClass.uniqueId.replace('ap', '');\n }\n selfClass.identifier_pcm = selfClass.uniqueId;\n\n\n if (selfClass.uniqueId === '') {\n o.skinwave_comments_enable = 'off';\n }\n\n }\n}\n\nexport function player_delete(selfClass) {\n\n var _con = null;\n if (selfClass.cthis.parent().parent().hasClass('dzsap-sticktobottom')) {\n _con = selfClass.cthis.parent().parent();\n }\n if (_con) {\n if (_con.prev().hasClass(\"dzsap-sticktobottom-placeholder\")) {\n _con.prev().remove();\n }\n _con.remove();\n }\n selfClass.cthis.remove();\n return false;\n}\n\n\nexport function sanitizeToHexColor(hexcolor) {\n if (hexcolor.indexOf('#') === -1) {\n hexcolor = '#' + hexcolor;\n }\n return hexcolor;\n}\n\nexport function player_identifySource(selfClass) {\n\n selfClass.data_source = selfClass.cthis.attr('data-source') || '';\n}\n\nexport function player_identifyTypes(selfClass) {\n\n\n var o = selfClass.initOptions;\n const cthis = selfClass.cthis;\n if (cthis.attr('data-type') === 'youtube') {\n o.type = 'youtube';\n selfClass.audioType = 'youtube';\n }\n if (cthis.attr('data-type') === 'soundcloud') {\n o.type = 'soundcloud';\n selfClass.audioType = 'soundcloud';\n\n o.skinwave_enableSpectrum = 'off';\n cthis.removeClass('skin-wave-is-spectrum');\n }\n if (cthis.attr('data-type') === 'mediafile') {\n o.type = 'audio';\n selfClass.audioType = 'audio';\n }\n\n if (cthis.attr('data-type') === 'shoutcast') {\n o.type = 'shoutcast';\n selfClass.audioType = 'audio';\n o.disable_timer = 'on';\n o.skinwave_enableSpectrum = 'off';\n\n if (!cthis.attr('data-streamtype')) {\n\n selfClass.audioTypeSelfHosted_streamType = 'shoutcast';\n }\n\n\n if (o.design_skin === 'skin-default') {\n o.disable_scrub = 'on';\n }\n\n }\n\n\n if (selfClass.audioType === 'audio' || selfClass.audioType === 'normal' || selfClass.audioType === '') {\n selfClass.audioType = 'selfHosted';\n }\n\n\n if (String(selfClass.data_source).indexOf('https://soundcloud.com/') > -1) {\n selfClass.audioType = 'soundcloud';\n }\n}\n\n\nexport function player_getPlayFromTime(selfClass) {\n\n selfClass.playFrom = selfClass.initOptions.playfrom;\n\n if (isValid(selfClass.cthis.attr('data-playfrom'))) {\n selfClass.playFrom = selfClass.cthis.attr('data-playfrom');\n }\n\n if (isNaN(parseInt(selfClass.playFrom, 10)) === false) {\n selfClass.playFrom = parseInt(selfClass.playFrom, 10);\n }\n\n\n if (selfClass.playFrom === 'off' || selfClass.playFrom === '') {\n if (get_query_arg(window.location.href, 'audio_time')) {\n selfClass.playFrom = sanitizeToIntFromPointTime(get_query_arg(window.location.href, 'audio_time'));\n }\n }\n\n if (selfClass.timeModel.sampleTimeStart) {\n if (selfClass.playFrom < selfClass.timeModel.sampleTimeStart) {\n selfClass.playFrom = selfClass.timeModel.sampleTimeStart;\n }\n if (typeof selfClass.playFrom === 'string') {\n selfClass.playFrom = selfClass.timeModel.sampleTimeStart;\n }\n }\n}\n\n\nexport function sanitizeToIntFromPointTime(arg) {\n\n\n arg = String(arg).replace('%3A', ':');\n arg = String(arg).replace('#', '');\n\n if (arg && String(arg).indexOf(':') > -1) {\n\n var arr = /(\\d.*):(\\d.*)/g.exec(arg);\n\n\n var m = parseInt(arr[1], 10);\n var s = parseInt(arr[2], 10);\n\n\n return (m * 60) + s;\n } else {\n return Number(arg);\n }\n}\n\n\n/**\n * called in player init()\n * @param {DzsAudioPlayer} selfClass\n */\nexport function player_determineStickToBottomContainer(selfClass) {\n\n let $conTest = selfClass.cthis.parent();\n\n\n if ($conTest.hasClass(DZSAP_PLAYER_CLASS_STICK_TO_BOTTOM)) {\n selfClass.$stickToBottomContainer = $conTest;\n selfClass.isStickyPlayer = true;\n\n }\n $conTest = selfClass.cthis.parent().parent();\n if ($conTest.hasClass(DZSAP_PLAYER_CLASS_STICK_TO_BOTTOM)) {\n selfClass.$stickToBottomContainer = $conTest;\n selfClass.isStickyPlayer = true;\n }\n}\n\n\n/**\n *\n * todo: maybe move\n * @param {DzsAudioPlayer} selfClass\n */\nexport function player_stickToBottomContainerDetermineClasses(selfClass) {\n\n if (selfClass.$stickToBottomContainer) {\n if (selfClass.cthis.hasClass('theme-dark')) {\n selfClass.$stickToBottomContainer.addClass('theme-dark');\n }\n\n setTimeout(function () {\n\n selfClass.$stickToBottomContainer.addClass('inited');\n }, 500)\n\n\n }\n\n}\n\nexport function player_service_getSourceProtection(selfClass) {\n\n return new Promise((resolve, reject) => {\n\n jQuery.ajax({\n type: \"POST\",\n url: selfClass.data_source,\n data: {},\n success: function (response) {\n resolve(response);\n },\n error: function (err) {\n reject(err);\n }\n });\n })\n}\n\nexport function player_isGoingToSetupMediaNow(selfClass) {\n return selfClass.audioTypeSelfHosted_streamType !== 'icecast' && selfClass.audioType !== 'youtube';\n}\n\n\nexport function player_stopOtherPlayers(dzsap_list, selfClass) {\n\n let i = 0;\n for (i = 0; i < dzsap_list.length; i++) {\n\n if (dzsap_list[i].get(0) && dzsap_list[i].get(0).api_pause_media && (dzsap_list[i].get(0) != selfClass.cthis.get(0))) {\n\n\n if (dzsap_list[i].data('type_audio_stop_buffer_on_unfocus') && dzsap_list[i].data('type_audio_stop_buffer_on_unfocus') === 'on') {\n dzsap_list[i].get(0).api_destroy_for_rebuffer();\n } else {\n dzsap_list[i].get(0).api_pause_media({\n 'audioapi_setlasttime': false\n });\n }\n }\n }\n}\n\n\nexport function player_syncPlayers_gotoItem(selfClass, targetIncrement) {\n if (window.dzsap_settings.syncPlayers_autoplayEnabled) {\n\n for (let keySyncPlayer in window.dzsap_syncList_players) {\n let $playerInSyncList = selfClass.cthis;\n\n if (selfClass._sourcePlayer) {\n $playerInSyncList = selfClass._sourcePlayer;\n }\n\n\n if (window.dzsap_syncList_players[keySyncPlayer].get(0) === $playerInSyncList.get(0)) {\n\n keySyncPlayer = parseInt(keySyncPlayer, 10);\n let targetIndex = window.dzsap_syncList_index + targetIncrement;\n if (targetIndex >= 0 && targetIndex < window.dzsap_syncList_players.length) {\n const $currentSyncPlayer_ = window.dzsap_syncList_players[targetIndex].get(0);\n\n\n if ($currentSyncPlayer_ && $currentSyncPlayer_.api_play_media) {\n setTimeout(function () {\n $currentSyncPlayer_.api_play_media({\n 'called_from': 'api_sync_players_prev'\n });\n }, 200);\n\n }\n }\n }\n }\n }\n\n}\n\nexport function player_syncPlayers_buildList() {\n\n if (!window.syncPlayers_isDzsapListBuilt) {\n\n window.dzsap_syncList_players = [];\n\n window.syncPlayers_isDzsapListBuilt = true;\n\n jQuery('.audioplayer.is-single-player,.audioplayer-tobe.is-single-player').each(function () {\n const _t23 = jQuery(this);\n\n\n if (_t23.hasClass(DZSAP_PLAYER_CLASS_FOOTER_PLAYER)) {\n return;\n }\n\n\n if (_t23.attr('data-do-not-include-in-list') !== 'on') {\n window.dzsap_syncList_players.push(_t23);\n }\n })\n\n\n clearTimeout(window.syncPlayers_buildTimeout);\n\n window.syncPlayers_buildTimeout = setTimeout(function () {\n window.syncPlayers_isDzsapListBuilt = false;\n }, 500);\n\n }\n\n}\n\n\nexport function convertPluginOptionsToFinalOptions(elThis, defaultOptions, argOptions = null, searchedAttr = 'data-options', $es) {\n\n var finalOptions = null;\n var tempOptions = {};\n var isSetFromJson = false;\n\n if ($es === undefined) {\n $es = jQuery;\n }\n\n\n var $elThis = $es(elThis);\n\n const isArgOptionsDefinedViaJs = Boolean(argOptions && typeof argOptions === 'object' && Object.keys(argOptions).length);\n\n\n if (isArgOptionsDefinedViaJs) {\n tempOptions = argOptions;\n } else {\n if ($elThis.attr(searchedAttr)) {\n try {\n tempOptions = JSON.parse($elThis.attr(searchedAttr));\n isSetFromJson = true;\n } catch (err) {\n\n }\n }\n if (!isSetFromJson) {\n if (typeof $elThis.attr(searchedAttr) != 'undefined' && $elThis.attr('data-options') != '') {\n let aux = $elThis.attr(searchedAttr);\n aux = 'var aux_opts = ' + aux;\n eval(aux);\n tempOptions = Object.assign({}, argOptions);\n }\n }\n }\n finalOptions = Object.assign(defaultOptions, tempOptions);\n\n return finalOptions;\n}\n\nexport function generateFakeArrayForPcm() {\n\n\n var maxlen = 256;\n\n var arr = [];\n\n for (let it1 = 0; it1 < maxlen; it1++) {\n arr[it1] = Math.random() * 100;\n\n }\n\n return arr;\n}\n","import {DZSAP_SCRIPT_SELECTOR_KEYBOARD} from \"../../configs/_constants\";\n\nexport const dzsap_generate_keyboard_controls = function () {\n let keyboard_controls = {\n 'play_trigger_step_back': 'off'\n , 'step_back_amount': '5'\n , 'step_back': '37'\n , 'step_forward': '39'\n , 'sync_players_goto_next': ''\n , 'sync_players_goto_prev': ''\n , 'pause_play': '32'\n , 'show_tooltips': 'off'\n }\n\n\n const $keyboardControlsInfo = jQuery(DZSAP_SCRIPT_SELECTOR_KEYBOARD);\n if ($keyboardControlsInfo.length) {\n window.dzsap_keyboard_controls = JSON.parse($keyboardControlsInfo.html());\n }\n\n if (window.dzsap_keyboard_controls) {\n keyboard_controls = jQuery.extend(keyboard_controls, window.dzsap_keyboard_controls);\n }\n\n keyboard_controls.step_back_amount = Number(keyboard_controls.step_back_amount);\n\n\n return keyboard_controls;\n};\n\n\nexport function handle_keypresses(e) {\n\n if (window.dzsap_isTextFieldFocused) {\n return;\n }\n\n\n function isKeyPressed(checkKeyCode) {\n let isKeyPressed = false;\n if (checkKeyCode.indexOf('ctrl+') > -1) {\n if (e.ctrlKey) {\n checkKeyCode = checkKeyCode.replace('ctrl+', '');\n if (e.keyCode === Number(checkKeyCode)) {\n isKeyPressed = true;\n }\n }\n } else {\n if (e.keyCode === Number(checkKeyCode)) {\n isKeyPressed = true;\n }\n }\n return isKeyPressed;\n }\n\n var $ = jQuery;\n\n const keyboard_controls = $.extend({}, dzsap_generate_keyboard_controls());\n\n\n if (dzsap_currplayer_focused && dzsap_currplayer_focused.api_pause_media) {\n\n if (isKeyPressed(keyboard_controls.pause_play)) {\n if (!$(dzsap_currplayer_focused).hasClass('comments-writer-active')) {\n if ($(dzsap_currplayer_focused).hasClass('is-playing')) {\n dzsap_currplayer_focused.api_pause_media();\n } else {\n dzsap_currplayer_focused.api_play_media();\n }\n\n if (window.dzsap_mouseover) {\n e.preventDefault();\n return false;\n }\n }\n }\n\n if (isKeyPressed(keyboard_controls.step_back)) {\n dzsap_currplayer_focused.api_step_back(keyboard_controls.step_back_amount);\n }\n\n if (isKeyPressed(keyboard_controls.step_forward)) {\n dzsap_currplayer_focused.api_step_forward(keyboard_controls.step_back_amount);\n }\n\n if (isKeyPressed(keyboard_controls.sync_players_goto_next)) {\n dzsap_currplayer_focused.api_sync_players_goto_next();\n }\n\n\n if (isKeyPressed(keyboard_controls.sync_players_goto_prev)) {\n dzsap_currplayer_focused.api_sync_players_goto_prev();\n }\n\n\n }\n}\n\n\n/**\n * called in singleton\n */\nexport const dzsap_keyboardSetup = () => {\n\n let $ = jQuery;\n\n window.dzsap_isTextFieldFocused = false;\n\n $(document).off('keydown.dzsapkeyup');\n $(document).on('keydown.dzsapkeyup', handle_keypresses);\n\n\n $(document).on('focus blur', 'textarea,input', function (e) {\n\n if (e.type == 'focusin' || e.type == 'focus') {\n\n window.dzsap_isTextFieldFocused = true;\n }\n if (e.type == 'focusout' || e.type == 'blur') {\n\n window.dzsap_isTextFieldFocused = false;\n }\n });\n\n\n $(document).on('keydown blur', '.zoomsounds-search-field', function (e) {\n const _t = $(e.currentTarget);\n\n setTimeout(function () {\n\n if (_t) {\n let $audioGallery = $('.audiogallery').eq(0);\n if (_t.attr('data-target')) {\n $audioGallery = $(_t.attr('data-target'));\n }\n if ($audioGallery.get(0) && $audioGallery.get(0).api_filter) {\n $audioGallery.get(0).api_filter('title', _t.val());\n }\n }\n }, 100);\n\n });\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export function player_volumeSetup(selfClass, volume_lastVolume, $, o) {\n\n let last_vol_before_mute = 1;\n var isMuted = false;\n let volume_dragging = false;\n\n\n const cthis = selfClass.cthis;\n\n\n selfClass.$controlsVolume.on('click', '.volumeicon', volume_handleClickMuteIcon);\n\n selfClass.$controlsVolume.on('mousemove', volume_handleMouse);\n selfClass.$controlsVolume.on('mousedown', volume_handleMouse);\n\n\n $(document).on('mouseup', window, volume_handleMouse);\n\n if (o.design_skin === 'skin-silver') {\n cthis.on('click', '.volume-holder', volume_handleMouse);\n }\n\n\n function volume_handleClickMuteIcon(e) {\n\n if (isMuted === false) {\n last_vol_before_mute = volume_lastVolume;\n volume_setVolume(selfClass, 0, {\n call_from: \"from_mute\"\n });\n isMuted = true;\n } else {\n volume_setVolume(selfClass, last_vol_before_mute, {\n call_from: \"from_unmute\"\n });\n isMuted = false;\n }\n }\n\n\n\n\n function volume_handleMouse(e) {\n var _t = $(this);\n /**\n * from 0 to 1\n * @type number\n */\n let mouseXRelativeToVolume = null;\n\n if (selfClass.$controlsVolume.find('.volume_static').length) {\n\n mouseXRelativeToVolume = Number((e.pageX - (selfClass.$controlsVolume.find('.volume_static').eq(0).offset().left)) / (selfClass.$controlsVolume.find('.volume_static').eq(0).width()));\n }\n\n if (!mouseXRelativeToVolume) {\n return false;\n }\n if (e.type === 'mousemove') {\n if (volume_dragging) {\n\n if (_t.parent().hasClass('volume-holder') || _t.hasClass('volume-holder')) {\n }\n\n if (o.design_skin === 'skin-redlights') {\n mouseXRelativeToVolume *= 10;\n mouseXRelativeToVolume = Math.round(mouseXRelativeToVolume);\n mouseXRelativeToVolume /= 10;\n }\n\n\n volume_setVolume(selfClass, mouseXRelativeToVolume, {\n call_from: \"set_by_mousemove\"\n });\n isMuted = false;\n }\n\n }\n if (e.type === 'mouseleave') {\n\n }\n if (e.type === 'click') {\n\n if (_t.parent().hasClass('volume-holder')) {\n\n\n mouseXRelativeToVolume = 1 - ((e.pageY - (selfClass.$controlsVolume.find('.volume_static').eq(0).offset().top)) / (selfClass.$controlsVolume.find('.volume_static').eq(0).height()));\n\n }\n if (_t.hasClass('volume-holder')) {\n mouseXRelativeToVolume = 1 - ((e.pageY - (selfClass.$controlsVolume.find('.volume_static').eq(0).offset().top)) / (selfClass.$controlsVolume.find('.volume_static').eq(0).height()));\n\n\n }\n\n volume_setVolume(selfClass, mouseXRelativeToVolume, {\n call_from: \"set_by_mouseclick\"\n });\n isMuted = false;\n }\n\n if (e.type === 'mousedown') {\n\n volume_dragging = true;\n cthis.addClass('volume-dragging');\n\n\n if (_t.parent().hasClass('volume-holder')) {\n\n\n mouseXRelativeToVolume = 1 - ((e.pageY - (selfClass.$controlsVolume.find('.volume_static').eq(0).offset().top)) / (selfClass.$controlsVolume.find('.volume_static').eq(0).height()));\n\n }\n\n volume_setVolume(selfClass, mouseXRelativeToVolume, {\n call_from: \"set_by_mousedown\"\n });\n isMuted = false;\n }\n if (e.type === 'mouseup') {\n\n volume_dragging = false;\n cthis.removeClass('volume-dragging');\n\n }\n\n }\n\n}\n\n\n\n\nexport function volume_setOnlyVisual(selfClass, arg, margs) {\n const o = selfClass.initOptions;\n\n if (selfClass.$controlsVolume.hasClass('controls-volume-vertical')) {\n selfClass.$controlsVolume.find('.volume_active').eq(0).css({\n 'height': (selfClass.$controlsVolume.find('.volume_static').eq(0).height() * arg)\n });\n } else {\n\n if (selfClass.initOptions.design_skin === 'skin-redlights') {\n\n selfClass.$controlsVolume.find('.volume_active').eq(0).css({\n 'clip-path': 'inset(0% ' + (Math.abs(1 - arg) * 100) + '% 0% 0%)'\n });\n } else {\n\n selfClass.$controlsVolume.find('.volume_active').eq(0).css({\n 'width': (selfClass.$controlsVolume.find('.volume_static').eq(0).width() * arg)\n });\n }\n }\n\n\n if (o.design_skin === 'skin-wave' && o.skinwave_dynamicwaves === 'on') {\n selfClass._scrubbar.find('.scrub-bg-img').eq(0).css({\n 'transform': 'scaleY(' + arg + ')'\n })\n selfClass._scrubbar.find('.scrub-prog-img').eq(0).css({\n 'transform': 'scaleY(' + arg + ')'\n })\n\n }\n\n\n if (localStorage !== null && selfClass.the_player_id) {\n\n localStorage.setItem('dzsap_last_volume_' + selfClass.the_player_id, arg);\n\n }\n\n selfClass.volume_lastVolume = arg;\n}\n\n\n\n\n/**\n * outputs a volume from 0 to 1\n * @param {DzsAudioPlayer} selfClass\n * @param {number} arg 0 <-> 1\n * @param pargs\n * @returns {boolean}\n */\nexport function volume_setVolume(selfClass, arg, pargs) {\n\n var margs = {\n\n 'call_from': 'default'\n };\n\n if (pargs) {\n margs = Object.assign(margs, pargs);\n }\n\n if (arg > 1) {\n arg = 1;\n }\n if (arg < 0) {\n arg = 0;\n }\n\n var o = selfClass.initOptions;\n const $ = selfClass.$;\n let volume_isSetByUser = false;\n\n\n if (margs.call_from === 'from_fake_player_feeder_from_init_loaded') {\n // -- lets prevent call from the init_loaded set_volume if the volume has been changed\n if (selfClass._sourcePlayer) {\n if (o.default_volume !== 'default') {\n volume_isSetByUser = true;\n }\n if (volume_isSetByUser) {\n return false;\n } else {\n volume_isSetByUser = true;\n }\n }\n }\n\n if (margs.call_from === 'set_by_mouseclick' || margs.call_from === 'set_by_mousemove') {\n volume_isSetByUser = true;\n }\n\n if (selfClass.audioType === 'youtube') {\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.setVolume) {\n selfClass.$mediaNode_.setVolume(arg * 100);\n }\n }\n if (selfClass.audioType === 'selfHosted') {\n if (selfClass.$mediaNode_) {\n\n selfClass.$mediaNode_.volume = arg;\n } else {\n if (selfClass.$mediaNode_) {\n $(selfClass.$mediaNode_).attr('preload', 'metadata');\n }\n }\n }\n\n\n volume_setOnlyVisual(selfClass, arg, margs);\n\n if (selfClass._sourcePlayer) {\n margs.call_from = ('from_fake_player')\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_visual_set_volume(arg, margs)) {\n selfClass._sourcePlayer.get(0).api_visual_set_volume(arg, margs);\n }\n }\n\n if (selfClass._actualPlayer) {\n if (margs.call_from !== ('from_fake_player')) {\n if (margs.call_from === 'from_init_loaded') {\n\n margs.call_from = ('from_fake_player_feeder_from_init_loaded')\n } else {\n\n margs.call_from = ('from_fake_player_feeder')\n }\n if (selfClass._actualPlayer && selfClass._actualPlayer.get(0) && selfClass._actualPlayer.get(0).api_set_volume) {\n selfClass._actualPlayer.get(0).api_set_volume(arg, margs);\n }\n }\n }\n\n}\n\n\nexport function getDefaultVolume(o, selfClass){\n\n let defaultVolume = 1;\n if (o.default_volume === 'default') {\n defaultVolume = 1;\n }\n\n if (isNaN(Number(o.default_volume)) === false) {\n defaultVolume = Number(o.default_volume);\n } else {\n if (o.default_volume === 'last') {\n if (localStorage !== null && selfClass.the_player_id) {\n if (localStorage.getItem('dzsap_last_volume_' + selfClass.the_player_id)) {\n defaultVolume = localStorage.getItem('dzsap_last_volume_' + selfClass.the_player_id);\n } else {\n defaultVolume = 1;\n }\n } else {\n defaultVolume = 1;\n }\n }\n }\n\n if (o.volume_from_gallery) {\n defaultVolume = o.volume_from_gallery;\n }\n\n return defaultVolume;\n}\n","\n\nexport function scrubbar_modeWave_clearObsoleteCanvas(selfClass) {\n if (selfClass._scrubbar) {\n selfClass._scrubbar.find('.scrubbar-type-wave--canvas.transitioning-out').remove();\n }\n}\n\n\nexport function scrubbar_modeWave_setupCanvas_context(_canvas) {\n if(_canvas.get(0)){\n\n const _canvasContext = _canvas.get(0).getContext(\"2d\");\n\n _canvasContext.imageSmoothingEnabled = false;\n _canvasContext.imageSmoothing = false;\n _canvasContext.imageSmoothingQuality = \"high\";\n _canvasContext.webkitImageSmoothing = false;\n }\n}\n\nexport function scrubbar_modeWave_setupCanvas(pargs, selfClass) {\n\n var margs = {\n prepare_for_transition_in: false\n }\n\n if (pargs) {\n margs = Object.assign(margs, pargs);\n }\n\n\n var struct_scrubBg_str = '';\n var struct_scrubProg_str = '';\n var aux_selector = '';\n var o = selfClass.initOptions;\n\n\n struct_scrubBg_str = ' selfClass.scrubbarWidth - selfClass.currTime_outerWidth) {\n selfClass.$currTime.css({\n 'left': selfClass.scrubbarWidth - selfClass.currTime_outerWidth\n })\n }\n if (selfClass.scrubbarProgX > selfClass.scrubbarWidth - 30 && selfClass.scrubbarWidth) {\n selfClass.$totalTime.css({\n 'opacity': 1 - (((selfClass.scrubbarProgX - (selfClass.scrubbarWidth - 30)) / 30))\n });\n } else {\n if (selfClass.$totalTime.css('opacity') !== '1') {\n selfClass.$totalTime.css({\n 'opacity': ''\n });\n }\n }\n}\n","import {hexToRgb, sanitizeToHexColor, string_jsonConvertToArray, utils_sanitizeToColor} from '../_dzsap_helpers';\n\nimport {ConstantsDzsAp} from \"../../configs/_constants\";\nimport {loadScriptIfItDoesNotExist} from \"../../js_common/_dzs_helpers\";\nimport {scrubbar_modeWave_clearObsoleteCanvas, scrubbar_modeWave_setupCanvas} from \"../player/_player_scrubModeWave\";\n\nwindow.dzsap_wavesurfer_load_attempt = 0;\nwindow.dzsap_wavesurfer_is_trying_to_generate = null;\n\n\nvar dzsapWaveRender = this;\n\n/**\n * called on init_loaded\n * @param selfClass\n * @param pargs\n * @returns {boolean}\n */\nexport function scrubModeWave__checkIfWeShouldTryToGetPcm(selfClass, pargs) {\n\n\n var margs = {\n 'call_from': 'default'\n , 'call_attempt': 0\n };\n if (pargs) {\n margs = jQuery.extend(margs, pargs);\n }\n\n\n // -- retry\n if (window.dzsap_wavesurfer_is_trying_to_generate) {\n setTimeout(function () {\n\n margs.call_attempt++;\n if (margs.call_attempt < 10) {\n scrubModeWave__checkIfWeShouldTryToGetPcm(selfClass, margs);\n ;\n }\n }, 1000)\n return false;\n }\n\n\n if (selfClass.isPcmRequiredToGenerate) {\n\n if (isWeCanGeneratePcm(selfClass)) {\n\n window.dzsap_wavesurfer_is_trying_to_generate = selfClass;\n\n\n window.dzsap_get_base_url();\n\n let wavesurferUrl = window.dzsap_base_url ? window.dzsap_base_url + 'parts/wavesurfer/dzsap-wave-generate.js' : ConstantsDzsAp.URL_WAVESURFER_HELPER_BACKUP;\n\n\n window.scrubModeWave__view_transitionIn = scrubModeWave__view_transitionIn;\n\n\n loadScriptIfItDoesNotExist(wavesurferUrl, window.scrubModeWave__initedGenerateWave).then((resolveStr) => {\n\n\n scrubModeWave__initGenerateWaveData(selfClass);\n });\n }\n }\n}\n\nfunction isWeCanGeneratePcm(selfClass) {\n\n if (selfClass.isAlreadyHasRealPcm) {\n return false;\n }\n return selfClass.data_source != 'fake';\n\n}\n\nexport function view_drawCanvases(selfClass, argpcm, calledFrom) {\n var o = selfClass.initOptions;\n\n draw_canvas(selfClass._scrubbarbg_canvas.get(0), argpcm, \"#\" + o.design_wave_color_bg, {\n call_from: calledFrom + '_bg',\n selfClass,\n 'skinwave_wave_mode_canvas_waves_number': parseInt(o.skinwave_wave_mode_canvas_waves_number, 10),\n 'skinwave_wave_mode_canvas_waves_padding': parseInt(o.skinwave_wave_mode_canvas_waves_padding, 10)\n });\n draw_canvas(selfClass._scrubbarprog_canvas.get(0), argpcm, '#' + o.design_wave_color_progress, {\n call_from: calledFrom + '_prog',\n selfClass,\n 'skinwave_wave_mode_canvas_waves_number': parseInt(o.skinwave_wave_mode_canvas_waves_number, 10),\n 'skinwave_wave_mode_canvas_waves_padding': parseInt(o.skinwave_wave_mode_canvas_waves_padding, 10),\n },\n true);\n}\n\n\n/**\n * called on isPcmRequiredToGenerate ( init_loaded ) / change_media\n * @param selfClass\n * @param argpcm\n */\nexport function scrubModeWave__view_transitionIn(selfClass, argpcm) {\n\n\n selfClass._scrubbar.find('.scrub-bg-img,.scrub-prog-img').removeClass('transitioning-in');\n selfClass._scrubbar.find('.scrub-bg-img,.scrub-prog-img').addClass('transitioning-out');\n ;\n\n scrubbar_modeWave_setupCanvas({\n 'prepare_for_transition_in': true\n }, selfClass);\n\n view_drawCanvases(selfClass, argpcm, 'canvas_generate_wave_data_animate_pcm');\n\n\n setTimeout(() => {\n scrubbar_modeWave_clearObsoleteCanvas(selfClass);\n }, 300);\n\n // -- warning - not always real pcm\n selfClass.isAlreadyHasRealPcm = true;\n selfClass.scrubbar_reveal();\n}\n\n\n/**\n * aggregate wave array based on max\n * @param waveArrayTemp\n * @returns {array}\n */\nfunction waveCalculateWaveArray(waveArrayTemp) {\n let max = 0;\n let waveArrayNew = [];\n let barIndex = 0;\n\n let waveArray = string_jsonConvertToArray(waveArrayTemp);\n\n\n // -- normalizing\n for (barIndex = 0; barIndex < waveArray.length; barIndex++) {\n if ((waveArray[barIndex]) > max) {\n max = (waveArray[barIndex]);\n }\n }\n\n for (barIndex = 0; barIndex < waveArray.length; barIndex++) {\n waveArrayNew[barIndex] = parseFloat(Math.abs(waveArray[barIndex]) / Number(max));\n }\n // -- end normalize\n\n waveArray = waveArrayNew;\n\n return waveArray;\n\n}\n\n\nfunction view_drawBars(_canvasContext, isReflection, isProgressScrubContext, hexcolor, barCount, waveArray, widthCanvas, heightCanvas, reflection_size, playerOptions, margs, selfClass, bar_space) {\n let isWithinSample = false;\n var searched_index = null;\n var lastBarHeight = 0;\n var gradient = null;\n var spectrum_isBarWithinProgress = false; // -- color the bar in progress colors\n\n\n hexcolor = sanitizeToHexColor(hexcolor);\n // -- left right gradient\n var temp_hex = hexcolor;\n temp_hex = temp_hex.replace('#', '');\n var hexcolors = []; // -- hex colors array\n if (temp_hex.indexOf(',') > -1) {\n hexcolors = temp_hex.split(',');\n }\n\n\n if (barCount == 1) {\n barCount = widthCanvas / barCount;\n }\n if (barCount == 2) {\n barCount = widthCanvas / 2;\n }\n if (barCount == 3) {\n barCount = (widthCanvas) / 3;\n }\n\n\n if (widthCanvas / barCount < 1) {\n barCount = Math.ceil(barCount / 3);\n }\n\n\n var widthBar = Math.ceil(widthCanvas / barCount);\n var sizeRatioNormal = 1 - reflection_size;\n\n\n if (widthBar == 0) {\n widthBar = 1;\n bar_space = 0;\n }\n if (widthBar == 1) {\n bar_space = bar_space / 2;\n }\n\n\n var progress_hexcolor = '';\n var progress_hexcolors = '';\n\n\n if (margs.call_from == 'spectrum') {\n progress_hexcolor = playerOptions.design_wave_color_progress;\n progress_hexcolor = progress_hexcolor.replace('#', '');\n progress_hexcolors = []; // -- hex colors array\n if (progress_hexcolor.indexOf(',') > -1) {\n progress_hexcolors = progress_hexcolor.split(',');\n\n }\n }\n\n for (let barIndex = 0; barIndex < barCount; barIndex++) {\n isWithinSample = false;\n _canvasContext.save();\n\n\n searched_index = Math.ceil(barIndex * (waveArray.length / barCount));\n\n // -- we'll try to prevent\n if (barIndex < barCount / 5) {\n if (waveArray[searched_index] < 0.1) {\n waveArray[searched_index] = 0.1;\n }\n }\n if (waveArray.length > barCount * 2.5 && barIndex > 0 && barIndex < waveArray.length - 1) {\n waveArray[searched_index] = Math.abs(waveArray[searched_index] + waveArray[searched_index - 1] + waveArray[searched_index + 1]) / 3\n }\n // -- normalize end\n\n\n let targetRatio = sizeRatioNormal;\n if (isReflection) {\n targetRatio = reflection_size;\n }\n\n let barHeight = Math.abs(waveArray[searched_index] * heightCanvas * targetRatio);\n\n\n if (playerOptions.skinwave_wave_mode_canvas_normalize == 'on') {\n if (isNaN(lastBarHeight)) {\n lastBarHeight = 0;\n }\n barHeight = barHeight / 1.5 + lastBarHeight / 2.5;\n }\n lastBarHeight = barHeight;\n\n\n _canvasContext.lineWidth = 0;\n barHeight = Math.floor(barHeight);\n\n\n const barPositionTop = isReflection ? heightCanvas * sizeRatioNormal : Math.ceil(heightCanvas * targetRatio - barHeight);\n\n\n _canvasContext.beginPath();\n _canvasContext.rect(barIndex * widthBar, barPositionTop, widthBar - bar_space, barHeight);\n\n\n if (margs.call_from == 'spectrum') {\n if (barIndex / barCount < selfClass.timeCurrent / selfClass.timeTotal) {\n spectrum_isBarWithinProgress = true;\n } else {\n spectrum_isBarWithinProgress = false;\n }\n }\n\n\n if (selfClass.isSample) {\n isWithinSample = isBeforeOrAfterSample(barIndex, barCount, selfClass);\n }\n\n\n if (spectrum_isBarWithinProgress) {\n if (isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto') {\n _canvasContext.fillStyle = hexToRgb(progress_hexcolor, 0.25);\n } else {\n _canvasContext.fillStyle = isWithinSample ? hexToRgb(progress_hexcolor, 0.5) : '#' + progress_hexcolor;\n }\n\n\n if (progress_hexcolors.length) {\n\n const startColor = isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto' ? hexToRgb('#' + progress_hexcolors[0], 0.25) : '#' + progress_hexcolors[0];\n const endColor = isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto' ? hexToRgb('#' + progress_hexcolors[1], 0.25) : '#' + progress_hexcolors[1];\n\n gradient = _canvasContext.createLinearGradient(0, 0, 0, heightCanvas);\n gradient.addColorStop(0, startColor);\n gradient.addColorStop(1, endColor);\n _canvasContext.fillStyle = gradient;\n }\n\n } else {\n /**\n * normal\n */\n\n\n if (isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto') {\n _canvasContext.fillStyle = hexToRgb(hexcolor, 0.25);\n } else {\n\n _canvasContext.fillStyle = isWithinSample ? hexToRgb(hexcolor, 0.5) : '' + hexcolor;\n }\n\n // -- if we have gradient\n if (hexcolors.length) {\n const startColor = isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto' ? hexToRgb(utils_sanitizeToColor(hexcolors[0]), 0.25) : '' + utils_sanitizeToColor(hexcolors[0]);\n const endColor = isReflection && playerOptions.skinwave_wave_mode_canvas_mode !== 'reflecto' ? hexToRgb(utils_sanitizeToColor(hexcolors[1]), 0.25) : '' + utils_sanitizeToColor(hexcolors[1]);\n\n gradient = _canvasContext.createLinearGradient(0, 0, 0, heightCanvas);\n gradient.addColorStop(0, startColor);\n gradient.addColorStop(1, endColor);\n _canvasContext.fillStyle = gradient;\n }\n\n\n }\n\n\n if (!(isWithinSample && isProgressScrubContext)) {\n\n\n _canvasContext.fill();\n _canvasContext.closePath();\n }\n\n\n _canvasContext.restore();\n\n }\n\n}\n\n\n/**\n * draw with different color\n * @returns {boolean}\n * @param {number} currBarIndex\n * @param {number} barCount\n * @param {DzsAudioPlayer} selfClass\n */\nfunction isBeforeOrAfterSample(currBarIndex, barCount, selfClass) {\n\n\n if ((currBarIndex / barCount < selfClass.timeModel.sampleTimeStart / selfClass.timeModel.sampleTimeTotal) || currBarIndex / barCount > selfClass.timeModel.sampleTimeEnd / selfClass.timeModel.sampleTimeTotal) {\n\n return true;\n }\n return false;\n}\n\n/**\n * draw canvas here\n * @param $canvas_\n * @param pcm_arr\n * @param hexcolor\n * @param pargs\n * @param {boolean} isProgressScrubContext\n * @returns {boolean}\n */\nexport function draw_canvas($canvas_, pcm_arr, hexcolor, pargs, isProgressScrubContext = false) {\n let margs = {\n 'call_from': 'default',\n 'is_sample': false,\n 'selfClass': null,\n 'sample_time_start': 0,\n 'sample_time_end': 0,\n 'sample_time_total': 0,\n 'skinwave_wave_mode_canvas_waves_number': 2,\n 'skinwave_wave_mode_canvas_waves_padding': 1,\n };\n\n const $ = jQuery;\n if (pargs) {\n margs = Object.assign(margs, pargs);\n }\n\n\n var _canvas = $($canvas_);\n var __canvas = $canvas_;\n\n if (_canvas.get(0)) {\n\n\n var {selfClass, skinwave_wave_mode_canvas_waves_number, skinwave_wave_mode_canvas_waves_padding} = margs;\n let playerOptions = {};\n var _canvasContext = _canvas.get(0).getContext(\"2d\");\n var waveArrayTemp = pcm_arr;\n var widthCanvas;\n var heightCanvas;\n\n let waveArray = [];\n\n\n // -- sanitize\n if (isNaN(Number(skinwave_wave_mode_canvas_waves_number))) {\n skinwave_wave_mode_canvas_waves_number = 2;\n }\n\n if (isNaN(Number(skinwave_wave_mode_canvas_waves_padding))) {\n if (skinwave_wave_mode_canvas_waves_number !== 1) {\n skinwave_wave_mode_canvas_waves_padding = 1;\n } else {\n skinwave_wave_mode_canvas_waves_padding = 0;\n }\n }\n\n if (selfClass) {\n playerOptions = selfClass.initOptions;\n }\n\n\n let barCount = skinwave_wave_mode_canvas_waves_number;\n let bar_space = skinwave_wave_mode_canvas_waves_padding;\n\n\n if (_canvas && _canvas.get(0)) {\n\n } else {\n return false;\n }\n\n\n if (selfClass && selfClass._scrubbar) {\n if (selfClass._scrubbarprog_canvas) {\n selfClass._scrubbarbg_canvas.width(selfClass._scrubbar.width());\n selfClass._scrubbarprog_canvas.width(selfClass._scrubbar.width());\n $canvas_.width = selfClass._scrubbar.width();\n $canvas_.height = selfClass._scrubbar.height();\n }\n }\n\n\n waveArray = waveCalculateWaveArray(waveArrayTemp);\n\n\n if (selfClass) {\n __canvas.width = selfClass._scrubbar.width();\n }\n\n widthCanvas = __canvas.width;\n heightCanvas = __canvas.height;\n\n\n const reflection_size = parseFloat(playerOptions.skinwave_wave_mode_canvas_reflection_size);\n\n\n // -- left right gradient END\n\n\n _canvasContext.clearRect(0, 0, widthCanvas, heightCanvas);\n\n\n view_drawBars(_canvasContext, false, isProgressScrubContext, hexcolor, barCount, waveArray, widthCanvas, heightCanvas, reflection_size, playerOptions, margs, selfClass, bar_space)\n if (reflection_size > 0) {\n view_drawBars(_canvasContext, true, isProgressScrubContext, hexcolor, barCount, waveArray, widthCanvas, heightCanvas, reflection_size, playerOptions, margs, selfClass, bar_space)\n }\n\n // -- reflection\n setTimeout(function () {\n selfClass.scrubbar_reveal();\n }, 100)\n }\n\n\n}\n","import {generateFakeArrayForPcm} from \"../_dzsap_helpers\";\nimport {draw_canvas} from \"../wave-render/_wave-render-functions\";\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function player_initSpectrum(selfClass) {\n\n\n if (window.dzsap_audio_ctx === null) {\n if (typeof AudioContext !== 'undefined') {\n selfClass.spectrum_audioContext = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n selfClass.spectrum_audioContext = new webkitAudioContext();\n } else {\n selfClass.spectrum_audioContext = null;\n }\n window.dzsap_audio_ctx = selfClass.spectrum_audioContext;\n } else {\n selfClass.spectrum_audioContext = window.dzsap_audio_ctx;\n }\n\n\n if (selfClass.spectrum_audioContext) {\n if (selfClass.spectrum_analyser === null) {\n\n selfClass.spectrum_analyser = selfClass.spectrum_audioContext.createAnalyser();\n selfClass.spectrum_analyser.smoothingTimeConstant = 0.3;\n selfClass.spectrum_analyser.fftSize = 512;\n\n if (selfClass.audioType === 'selfHosted') {\n selfClass.$mediaNode_.crossOrigin = \"anonymous\";\n selfClass.spectrum_mediaElementSource = selfClass.spectrum_audioContext.createMediaElementSource(selfClass.$mediaNode_);\n\n selfClass.spectrum_mediaElementSource.connect(selfClass.spectrum_analyser);\n if (selfClass.spectrum_audioContext.createGain) {\n selfClass.spectrum_gainNode = selfClass.spectrum_audioContext.createGain();\n }\n selfClass.spectrum_analyser.connect(selfClass.spectrum_audioContext.destination);\n\n selfClass.spectrum_gainNode.gain.value = 1;\n\n const frameCount = selfClass.spectrum_audioContext.sampleRate * 2.0;\n selfClass.spectrum_audioContext_buffer = selfClass.spectrum_audioContext.createBuffer(2, frameCount, selfClass.spectrum_audioContext.sampleRate);\n }\n }\n }\n\n\n if (selfClass._scrubbarbg_canvas) {\n\n selfClass.canvasWidth = selfClass._scrubbarbg_canvas.width();\n selfClass.heightCanvas = selfClass._scrubbarbg_canvas.height();\n\n\n if (selfClass.heightCanvas == 0) {\n selfClass.heightCanvas = 100;\n }\n\n selfClass._scrubbarbg_canvas.get(0).width = selfClass.canvasWidth;\n selfClass._scrubbarbg_canvas.get(0).height = selfClass.heightCanvas;\n }\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function player_initSpectrumOnUserAction(selfClass) {\n\n\n selfClass.cthis.get(0).addEventListener('mousedown', handleMouseDown, {once: true});\n selfClass.cthis.get(0).addEventListener('touchdown', handleMouseDown, {once: true});\n\n function handleMouseDown(e) {\n player_initSpectrum(selfClass);\n }\n\n\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param $scrubBgCanvas\n * @param {string} spectrum_fakeItMode\n * @param {number} heightCanvas\n */\nexport const view_spectrum_drawMeter = function (selfClass, $scrubBgCanvas, spectrum_fakeItMode, heightCanvas) {\n\n\n // -- spectrum ON\n // -- easing\n\n let duration_viy = 20;\n let begin_viy = 0;\n let change_viy = 0;\n\n if (selfClass.initOptions.type === 'soundcloud' || spectrum_fakeItMode === 'on') {\n selfClass.lastArray = generateFakeArrayForPcm();\n\n } else {\n\n\n if (selfClass.spectrum_analyser) {\n\n if (selfClass.isPlayerPlaying) {\n selfClass.lastArray = new Uint8Array(selfClass.spectrum_analyser.frequencyBinCount);\n selfClass.spectrum_analyser.getByteFrequencyData(selfClass.lastArray);\n }\n\n\n }\n }\n\n\n // -- normalize if pcmSource exists\n if (selfClass.pcmSource) {\n for (let i = 0; i < selfClass.lastArray.length; i++) {\n selfClass.lastArray[i] = (selfClass.lastArray[i] * 3/4 + (selfClass.pcmSource[i] /4));\n }\n }\n\n\n if (selfClass.lastArray && selfClass.lastArray.length) {\n // -- fix when some sounds end the value still not back to zero\n const len = selfClass.lastArray.length;\n for (let i = len - 1; i >= 0; i--) {\n\n if (i < len / 2) {\n\n selfClass.lastArray[i] = selfClass.lastArray[i] / 255 * heightCanvas;\n } else {\n\n selfClass.lastArray[i] = selfClass.lastArray[len - i] / 255 * heightCanvas;\n }\n\n }\n ;\n\n\n if (!selfClass.isPlayerPlaying && selfClass.pcmSource) {\n selfClass.lastArray = [...selfClass.pcmSource];\n }\n\n // -- normalize\n if (selfClass.isPlayerPlayingEased && selfClass.last_lastarray) {\n for (let i3 = 0; i3 < selfClass.last_lastarray.length; i3++) {\n if (selfClass.last_lastarray[i3] > heightCanvas) {\n selfClass.last_lastarray[i3] = heightCanvas;\n }\n begin_viy = selfClass.last_lastarray[i3]; // -- last value\n change_viy = selfClass.lastArray[i3] - begin_viy; // -- target value - last value\n duration_viy = 6;\n selfClass.lastArray[i3] = Math.easeIn(1, begin_viy, change_viy, duration_viy);\n }\n }\n // -- easing END\n\n\n draw_canvas($scrubBgCanvas.get(0), selfClass.lastArray, '' + selfClass.initOptions.design_wave_color_bg, {\n 'call_from': 'spectrum',\n selfClass,\n 'skinwave_wave_mode_canvas_waves_number': parseInt(selfClass.initOptions.skinwave_wave_mode_canvas_waves_number),\n 'skinwave_wave_mode_canvas_waves_padding': parseInt(selfClass.initOptions.skinwave_wave_mode_canvas_waves_padding)\n }, false)\n\n\n if (selfClass.lastArray) {\n selfClass.last_lastarray = selfClass.lastArray.slice();\n }\n }\n\n};\n","import {assignPcmData, dzsap_is_mobile, is_android, is_ios, player_view_addMetaLoaded} from '../_dzsap_helpers';\nimport {ConstantsDzsAp} from \"../../configs/_constants\";\nimport {setupTooltip} from \"../../js_common/_dzs_helpers\";\nimport {volume_setVolume} from \"../player/_player_volume\";\nimport {player_initSpectrumOnUserAction} from \"../player/_player_scrubModeWave_spectrum\";\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param callbackFn\n * @param errorFn\n */\nexport const media_tryToPlay = function (selfClass, callbackFn, errorFn) {\n async function async_media_tryToPlay() {\n function tryToPlay(resolve, reject) {\n if (selfClass.cthis.attr('data-original-type')) {\n // -- then this player is feeding\n } else {\n\n if (selfClass.$mediaNode_) {\n if (selfClass.$mediaNode_.play) {\n\n // -- no audioCtx_buffer\n\n if (is_ios() && selfClass.spectrum_audioContext !== null && typeof selfClass.spectrum_audioContext == 'object') {\n // todo: ios not playing nice.. with audio context\n\n selfClass.spectrum_audioContextBufferSource = selfClass.spectrum_audioContext.createBufferSource();\n selfClass.spectrum_audioContextBufferSource.buffer = selfClass.spectrum_audioContext_buffer;\n selfClass.spectrum_audioContextBufferSource.connect(selfClass.spectrum_audioContext.destination);\n\n selfClass.spectrum_audioContextBufferSource.start(0, selfClass.lastTimeInSeconds);\n resolve({\n 'resolve_type': 'playing_context'\n })\n } else {\n\n selfClass.cthis.addClass('zoomsounds-player--media--is-loading');\n\n try {\n\n selfClass.$mediaNode_.play().then(r => {\n resolve({\n 'resolve_type': 'started_playing'\n })\n }).catch(err => {\n reject({\n 'error_type': 'did not want to play',\n 'error_message': err\n });\n }).finally(() => {\n\n selfClass.cthis.removeClass('zoomsounds-player--media--is-loading');\n });\n } catch (e) {\n selfClass.$mediaNode_.play();\n resolve({\n 'resolve_type': 'started_playing'\n })\n }\n\n }\n } else {\n if (selfClass._actualPlayer == null) {\n selfClass.isPlayPromised = true;\n }\n\n }\n } else {\n if (selfClass._actualPlayer == null) {\n selfClass.isPlayPromised = true;\n }\n }\n\n\n }\n\n }\n\n return new Promise((resolve, reject) => {\n\n tryToPlay(resolve, reject);\n\n })\n }\n\n async_media_tryToPlay().then((r) => {\n callbackFn(r);\n }).catch((err) => {\n errorFn(err);\n })\n\n}\n\n\n/**\n *\n * @param {DzsApPlaylist | null} $parentPlaylistForSource\n * @param {DzsAudioPlayer} selfClass\n * @returns {string}\n */\nconst getAutoplayNextMethod = ($parentPlaylistForSource, selfClass) => {\n\n let autoplayNextMethod = 'default';\n\n // -- if it's part of a playlist\n if ($parentPlaylistForSource) {\n if ($parentPlaylistForSource.initOptions.autoplayNext === 'on') {\n autoplayNextMethod = 'nextInSourcePlayist';\n }\n }\n\n if (autoplayNextMethod === 'default') {\n const tryGetAutoPlayMethod = () => {\n if (window.dzsap_syncList_players && window.dzsap_syncList_players.length > 0) {\n if (selfClass.cthis.hasClass('is-single-player') || (selfClass._sourcePlayer && selfClass._sourcePlayer.hasClass('is-single-player'))) {\n // -- called on handle end\n return 'syncPlayerNext';\n }\n }\n if (selfClass._sourcePlayer && (selfClass._sourcePlayer.hasClass('is-single-player') || selfClass._sourcePlayer.hasClass('feeded-whole-playlist'))) {\n return 'handleEndForSourcePlayer';\n }\n\n return 'nothingAfter';\n }\n autoplayNextMethod = tryGetAutoPlayMethod();\n }\n\n return autoplayNextMethod;\n}\n\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param {object} pargs\n * @param {boolean} media_isLoopActive\n * @param {function} seek_to\n * @param {function} play_media\n * @param {function} pause_media\n * @param {object} o\n * @param {function} syncPlayers_gotoNext\n * @param {function} action_audio_end\n * @returns {void}\n */\nexport const media_handleEventEnd = (selfClass, pargs, media_isLoopActive, seek_to, play_media, pause_media, o, syncPlayers_gotoNext, action_audio_end) => {\n\n\n var margs = {\n 'called_from': 'default'\n }\n\n\n if (pargs) {\n margs = Object.assign(margs, pargs);\n }\n if (selfClass.isMediaEnded) {\n return;\n }\n\n selfClass.isMediaEnded = true;\n\n selfClass.inter_isEnded = setTimeout(function () {\n selfClass.isMediaEnded = false;\n }, 1000);\n\n\n if (selfClass._sourcePlayer) {\n\n media_isLoopActive = selfClass._sourcePlayer.get(0).api_get_media_isLoopActive();\n }\n if (selfClass._actualPlayer && margs.call_from !== 'fake_player') {\n // -- lets leave fake player handle handle_end\n return;\n }\n\n\n seek_to(0, {\n 'call_from': 'handle_end'\n });\n\n if (media_isLoopActive) {\n play_media({\n 'called_from': 'track_end'\n });\n return;\n } else {\n pause_media();\n }\n\n if (o.parentgallery) {\n o.parentgallery.get(0).api_gallery_handle_end();\n }\n\n\n\n let $parentPlaylistForSource = null;\n if (selfClass._sourcePlayer && selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).SelfInstance && selfClass._sourcePlayer.get(0).SelfInstance.$parentPlaylist) {\n // -- called on handle end\n $parentPlaylistForSource = selfClass._sourcePlayer.get(0).SelfInstance.$parentPlaylist.get(0).SelfPlaylist;\n\n }\n\n const autoplayNextMethod = getAutoplayNextMethod($parentPlaylistForSource, selfClass);\n\n\n\n // -- decided autoplayNextMethod\n\n if (autoplayNextMethod === 'nextInSourcePlayist') {\n\n if ($parentPlaylistForSource && $parentPlaylistForSource.argThis) {\n $parentPlaylistForSource.argThis.api_gallery_handle_end();\n }\n }\n if (autoplayNextMethod === 'syncPlayerNext') {\n setTimeout(function () {\n syncPlayers_gotoNext(selfClass);\n }, 100);\n }\n\n if (autoplayNextMethod === 'handleEndForSourcePlayer') {\n setTimeout(function () {\n selfClass._sourcePlayer.get(0).api_handle_end({\n 'call_from': 'handle_end() fake_player'\n });\n }, 200);\n }\n\n if (action_audio_end) {\n setTimeout(function () {\n let args = {};\n action_audio_end(selfClass.cthis, args);\n }, 200);\n }\n}\n\nexport const media_removeMediaInside = (selfClass) => {\n\n selfClass.$theMedia.children().remove();\n selfClass.$mediaNode_ = null;\n}\n\nexport const setupMediaElement = (selfClass, stringAudioElementHtml = '', stringAudioTagSource = '') => {\n\n\n media_removeMediaInside(selfClass);\n\n if (stringAudioTagSource) {\n if (selfClass.$mediaNode_) {\n\n jQuery(selfClass.$mediaNode_).append(stringAudioTagSource);\n if (selfClass.$mediaNode_.load) {\n selfClass.$mediaNode_.load();\n }\n\n } else {\n setupMediaElement(selfClass, stringAudioElementHtml);\n return false;\n }\n } else {\n selfClass.$theMedia.append(stringAudioElementHtml);\n }\n selfClass.$mediaNode_ = (selfClass.$theMedia.children('audio').get(0));\n\n\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function destroy_cmedia(selfClass) {\n // -- destroy cmedia\n const $ = selfClass.$;\n\n $(selfClass.$mediaNode_).remove();\n selfClass.$mediaNode_ = null;\n selfClass.isSetupedMedia = false;\n selfClass.isPlayerLoaded = false;\n}\n\nexport function destroy_media(selfClass, pause_media) {\n const o = selfClass.initOptions;\n pause_media();\n\n\n if (selfClass.$mediaNode_) {\n\n if (selfClass.$mediaNode_.children) {\n\n }\n\n if (o.type === 'audio') {\n selfClass.$mediaNode_.innerHTML = '';\n selfClass.$mediaNode_.load();\n }\n }\n\n if (selfClass.$theMedia) {\n\n selfClass.$theMedia.children().remove();\n selfClass.$mediaNode_ = null;\n selfClass.isPlayerLoaded = false;\n }\n\n destroy_cmedia(selfClass);\n\n}\n\nexport const setupMediaListeners = function (selfClass, setupMediaAttrs, action_initLoaded, volume_lastVolume, volume_setVolume) {\n\n let attempt_reload = 0;\n\n\n if (typeof (selfClass.$mediaNode_) !== \"undefined\" && selfClass.$mediaNode_) {\n selfClass.$mediaNode_.addEventListener('error', handleAudioError, true);\n selfClass.$mediaNode_.addEventListener('loadedmetadata', handleMediaMetaLoaded, true);\n if (selfClass.$mediaNode_.nodeName === 'AUDIO') {\n selfClass.$mediaNode_.addEventListener('ended', media_handleEnd);\n }\n }\n\n\n function media_handleEnd(pargs) {\n selfClass.handle_end(pargs);\n }\n\n function handleAudioError(e) {\n\n const $audioElement_ = this;\n\n var noSourcesLoaded = ($audioElement_.networkState === HTMLMediaElement.NETWORK_NO_SOURCE);\n if (noSourcesLoaded && dzsap_is_mobile() === false) {\n if (selfClass.cthis.hasClass(ConstantsDzsAp.ERRORED_OUT_CLASS) === false) {\n\n if (attempt_reload < ConstantsDzsAp.ERRORED_OUT_MAX_ATTEMPTS) {\n setTimeout(function (earg) {\n if (selfClass.$mediaNode_) {\n selfClass.$mediaNode_.src = '';\n }\n\n\n setTimeout(function () {\n if (selfClass.$mediaNode_) {\n selfClass.$mediaNode_.src = selfClass.data_source;\n selfClass.$mediaNode_.load();\n }\n }, 1000)\n }, 1000, e)\n attempt_reload++;\n } else {\n\n // -- IT FAILED LOADING\n\n if (selfClass.initOptions.notice_no_media === 'on') {\n selfClass.cthis.addClass(ConstantsDzsAp.ERRORED_OUT_CLASS);\n var txt = 'error - file does not exist...';\n if (e.target.error) {\n txt = e.target.error.message;\n }\n selfClass.cthis.append(setupTooltip({\n tooltipConClass: ' feedback-tooltip-con',\n tooltipIndicatorText: '',\n tooltipInnerHTML: 'cannot load - ( ' + selfClass.data_source + ' ) - error: ' + txt,\n }));\n }\n }\n }\n }\n }\n\n\n function handleMediaMetaLoaded(e) {\n\n\n player_view_addMetaLoaded(selfClass);\n\n /** @type {HTMLAudioElement} */\n const $audio_ = e.currentTarget;\n\n if (isValidTotalTime($audio_.duration)) {\n selfClass.timeModel.actualTotalTime = Math.ceil($audio_.duration);\n }\n selfClass.service_checkIfWeShouldUpdateTotalTime();\n\n\n if (setupMediaAttrs.called_from === 'change_media') {\n\n action_initLoaded({\n 'call_from': 'force_reload_change_media'\n })\n }\n\n if (setupMediaAttrs.called_from === 'change_media' || selfClass._sourcePlayer) {\n if (volume_lastVolume) {\n setTimeout(() => {\n volume_setVolume(selfClass, volume_lastVolume, {\n call_from: \"change_media\"\n });\n }, 50);\n }\n }\n\n if (selfClass._sourcePlayer) {\n if (isValidTotalTime($audio_.duration)) {\n selfClass._sourcePlayer.get(0).api_set_timeVisualTotal($audio_.duration)\n\n }\n }\n\n\n selfClass.view_drawCurrentTime();\n }\n\n}\n\n\nexport const buildAudioElementHtml = function (selfClass, type_normal_stream_type, calledFrom) {\n\n var stringAudioTagOpen = '';\n var stringAudioTagSource = '';\n var stringAudioTagClose = '';\n var o = selfClass.initOptions;\n\n\n if (selfClass.data_source) {\n if (selfClass.data_source.indexOf('get_track_source') > -1) {\n o.preload_method = 'none';\n }\n }\n\n stringAudioTagOpen += '';\n if (selfClass.cthis.attr('data-sourceogg') !== undefined) {\n stringAudioTagSource += '';\n }\n } else {\n selfClass.cthis.addClass('meta-loaded meta-fake');\n }\n }\n stringAudioTagClose += '';\n\n\n return {\n stringAudioElementHtml: stringAudioTagOpen + stringAudioTagSource + stringAudioTagClose,\n stringAudioTagSource\n };\n\n}\n\nexport const makeMediaPreloadInTheFuture = function (selfClass, stringAudioElementHtml) {\n\n setTimeout(function () {\n if (selfClass.$mediaNode_) {\n jQuery(selfClass.$mediaNode_).attr('preload', 'metadata');\n }\n }, (Number(window.dzsap_player_index) * 10000));\n}\nexport const repairMediaElement = function (selfClass, stringAudioElementHtml) {\n\n var o = selfClass.initOptions;\n setTimeout(function () {\n\n if (selfClass.$theMedia.children().eq(0).get(0) && selfClass.$theMedia.children().eq(0).get(0).nodeName === \"AUDIO\") {\n\n return false;\n }\n selfClass.$theMedia.html('');\n selfClass.$mediaNode_ = null;\n selfClass.$theMedia.append(stringAudioElementHtml);\n\n var isWasPlaying = selfClass.isPlayerPlaying;\n\n selfClass.pause_media();\n selfClass.$mediaNode_ = (selfClass.$theMedia.children('audio').get(0));\n\n\n if (isWasPlaying) {\n setTimeout(function () {\n\n selfClass.play_media({\n 'called_from': 'aux_was_playing'\n });\n }, 20);\n }\n }, o.failsafe_repair_media_element);\n\n o.failsafe_repair_media_element = '';\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param callbackFn\n */\nexport const media_pause = function (selfClass, callbackFn) {\n\n var $ = selfClass.$;\n\n\n if (selfClass.audioType === 'youtube') {\n\n\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.pauseVideo) {\n selfClass.$mediaNode_.pauseVideo();\n }\n }\n if (selfClass.audioType === 'selfHosted') {\n\n if (0) {\n } else {\n if (selfClass.$mediaNode_) {\n\n if (selfClass.initOptions.pause_method == 'stop') {\n\n selfClass.$mediaNode_.pause();\n selfClass.$mediaNode_.src = '';\n\n\n selfClass.destroy_cmedia();\n $(selfClass.$mediaNode_).remove();\n selfClass.$mediaNode_ = null;\n } else {\n\n if (selfClass.$mediaNode_.pause) {\n selfClass.$mediaNode_.pause();\n }\n }\n }\n\n }\n\n\n }\n\n callbackFn();\n\n}\n\nexport const isValidTotalTime = (duration) => {\n return Boolean(duration && duration !== Infinity);\n}\n\n\nconst mediaSetupElement = (setupMediaAttrs, selfClass, stringAudioElement, stringAudioElementHtml) => {\n\n const stringAudioTagSource = stringAudioElement.stringAudioTagSource;\n if (setupMediaAttrs.called_from === 'change_media' || setupMediaAttrs.called_from === 'nonce generated') {\n\n if (is_ios() || is_android()) {\n\n // -- we append only the source to mobile devices as we need the thing to autoplay without user action\n setupMediaElement(selfClass, stringAudioElementHtml, stringAudioTagSource);\n\n } else {\n // -- normal desktop\n if (!(setupMediaAttrs.called_from === 'nonce generated' && selfClass._actualPlayer)) {\n\n setupMediaElement(selfClass, stringAudioElementHtml);\n }\n }\n // -- end change media\n } else {\n setupMediaElement(selfClass, stringAudioElementHtml);\n\n }\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param {object} pargs\n * @param init_loaded\n * @param pause_media\n * @param init_checkIfReady\n * @param handleClick_playPause\n * @returns {void}\n */\nexport const mediaSetup = (selfClass, pargs, init_loaded, pause_media, init_checkIfReady, handleClick_playPause) => {\n var stringAudioElementHtml = '';\n\n var setupMediaAttrs = {\n\n 'do_not_autoplay': false,\n 'called_from': 'default',\n 'newSource': '',\n };\n\n var $ = jQuery;\n var o = selfClass.initOptions;\n var cthis = selfClass.cthis;\n\n if (pargs) {\n setupMediaAttrs = $.extend(setupMediaAttrs, pargs);\n }\n\n if (selfClass.cthis && selfClass.cthis.attr('data-pcm')) {\n assignPcmData(selfClass);\n }\n\n // -- these types should not exist\n if (selfClass.audioType === 'icecast' || selfClass.audioType === 'shoutcast') {\n selfClass.audioType = 'selfHosted';\n }\n\n if (o.cueMedia === 'off') {\n if (selfClass.ajax_view_submitted === 'auto') {\n // -- why is view submitted ?\n selfClass.increment_views = 1;\n selfClass.ajax_view_submitted = 'off';\n }\n }\n\n if (selfClass.isPlayerLoaded) {\n return;\n }\n if (cthis.attr('data-original-type') === 'youtube') {\n return;\n }\n\n\n if (selfClass.audioType === 'youtube') {\n dzsap_youtube_setupMedia(selfClass, setupMediaAttrs);\n }\n // -- END youtube\n\n\n if (setupMediaAttrs.newSource) {\n selfClass.data_source = setupMediaAttrs.newSource;\n }\n\n if (is_ios()) {\n o.preload_method = 'metadata';\n }\n\n const stringAudioElement = buildAudioElementHtml(selfClass, selfClass.audioTypeSelfHosted_streamType, 'setup_media');\n stringAudioElementHtml = stringAudioElement.stringAudioElementHtml;\n\n if (selfClass.audioType === 'selfHosted' || selfClass.audioType === 'soundcloud') {\n\n mediaSetupElement(setupMediaAttrs, selfClass, stringAudioElement, stringAudioElementHtml);\n\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.addEventListener && selfClass.cthis.attr('data-source') !== 'fake') {\n setupMediaListeners(selfClass, setupMediaAttrs, init_loaded, selfClass.volume_lastVolume, volume_setVolume)\n }\n\n }\n\n selfClass.cthis.addClass('media-setuped');\n\n\n if (setupMediaAttrs.called_from === 'change_media') {\n return;\n }\n\n if (selfClass.audioType !== 'youtube') {\n if (selfClass.cthis.attr('data-source') === 'fake') {\n if (is_ios() || is_android()) {\n init_loaded(setupMediaAttrs);\n }\n } else {\n if (is_ios()) {\n\n setTimeout(function () {\n init_loaded(setupMediaAttrs);\n }, 1000);\n\n\n } else {\n\n // -- check_ready() will fire init_loaded()\n selfClass.inter_checkReady = setInterval(function () {\n init_checkIfReady(setupMediaAttrs);\n }, 50);\n }\n\n }\n\n\n if (o.preload_method === 'none') {\n makeMediaPreloadInTheFuture(selfClass);\n }\n\n\n if (o.design_skin === 'skin-customcontrols' || o.design_skin === 'skin-customhtml') {\n cthis.find('.custom-play-btn,.custom-pause-btn').off('click');\n cthis.find('.custom-play-btn,.custom-pause-btn').on('click', handleClick_playPause);\n }\n\n if (o.failsafe_repair_media_element) {\n repairMediaElement(selfClass, stringAudioElementHtml);\n\n }\n }\n\n if (o.skinwave_enableSpectrum === 'on') {\n player_initSpectrumOnUserAction(selfClass);\n }\n\n selfClass.isSetupedMedia = true;\n}\n\n","import {isValidTotalTime} from \"./media/_media_functions\";\n\n/**\n * @property actualTotalTime\n */\nexport class PlayerTime {\n\n /**\n *\n * @param {DzsAudioPlayer} selfClass\n */\n constructor(selfClass) {\n\n this.timeCurrent = 0;\n this.timeTotal = 0;\n this.sampleTimeStart = null;\n this.sampleTimeEnd = null;\n this.sampleTimeTotal = null;\n\n this.referenceMediaCurrentTime = 0;\n this.referenceMediaTotalTime = 0;\n\n this.visualCurrentTime = null;\n this.visualTotalTime = null;\n\n this.actualTotalTime = null;\n\n\n this.dzsapInstance = selfClass;\n this.init();\n }\n\n init() {\n\n\n }\n\n initObjects() {\n\n var selfClass = this.dzsapInstance;\n var timeInstance = this;\n\n\n // -- set current time\n selfClass.cthis.get(0).api_set_timeVisualCurrent = function (arg) {\n timeInstance.visualCurrentTime = arg;\n\n\n }\n selfClass.cthis.get(0).api_get_time_total = function () {\n\n return timeInstance.getVisualTotalTime();\n }\n selfClass.cthis.get(0).api_get_time_curr = function () {\n return timeInstance.getVisualCurrentTime();\n };\n\n // -- set total time\n selfClass.cthis.get(0).api_set_timeVisualTotal = function (arg) {\n\n\n timeInstance.visualTotalTime = arg;\n timeInstance.refreshTimes();\n\n\n };\n }\n\n\n /**\n * called from enterFrame and other places\n */\n refreshTimes() {\n\n const getCurrentTime = () => {\n if (0 && selfClass.spectrum_audioContext_buffer && selfClass.spectrum_audioContext_buffer !== 'placeholder' && selfClass.spectrum_audioContext_buffer !== 'waiting') {\n\n if (selfClass._actualPlayer === null) {\n return selfClass.spectrum_audioContext.currentTime;\n }\n\n } else {\n\n // -- normal\n if (selfClass.$mediaNode_) {\n if (selfClass._actualPlayer === null) {\n return selfClass.$mediaNode_.currentTime;\n }\n }\n }\n\n }\n\n var selfClass = this.dzsapInstance;\n\n\n // -- trying to get current time\n\n if ((selfClass.audioType === 'selfHosted' || (selfClass.audioType === 'fake' && selfClass._actualPlayer))) {\n if (selfClass.audioTypeSelfHosted_streamType === '') {\n\n\n if (selfClass.$mediaNode_ && isValidTotalTime(selfClass.$mediaNode_.duration)) {\n this.referenceMediaTotalTime = selfClass.$mediaNode_.duration;\n }\n\n this.referenceMediaCurrentTime = getCurrentTime();\n\n\n\n if (selfClass.playFrom === 'last' && selfClass.playFrom_ready) {\n if (typeof Storage !== 'undefined') {\n localStorage['dzsap_' + selfClass.the_player_id + '_lastpos'] = selfClass.timeCurrent;\n }\n }\n\n\n }\n\n\n }\n\n\n\n if ((selfClass.audioType === 'youtube')) {\n\n if(selfClass.$mediaNode_ && selfClass.$mediaNode_.getDuration){\n this.referenceMediaCurrentTime = selfClass.$mediaNode_.getCurrentTime();\n this.referenceMediaTotalTime = selfClass.$mediaNode_.getDuration();\n }\n\n }\n\n if (selfClass._sourcePlayer && selfClass._sourcePlayer.get(0)) {\n\n\n if (selfClass._sourcePlayer.get(0).api_get_time_curr) {\n if (isNaN(selfClass._sourcePlayer.get(0).api_get_time_total()) || selfClass._sourcePlayer.get(0).api_get_time_total() === '' || selfClass._sourcePlayer.get(0).api_get_time_total() < 1) {\n selfClass._sourcePlayer.get(0).api_set_timeVisualTotal(this.getVisualTotalTime());\n }\n }\n }\n\n\n // -- setting real times ( if actual player is not there )\n if (selfClass._actualPlayer === null && this.referenceMediaCurrentTime > -1) {\n selfClass.timeCurrent = this.referenceMediaCurrentTime;\n }\n\n if (selfClass._actualPlayer === null && this.referenceMediaTotalTime > -1) {\n selfClass.timeTotal = this.referenceMediaTotalTime;\n }\n\n\n if (this.sampleTimeStart) {\n if (this.sampleTimeEnd) {\n if (selfClass.timeCurrent > this.sampleTimeEnd) {\n var args = {\n 'call_from': 'time_curr>sample_time_end'\n }\n selfClass.handle_end(args);\n\n selfClass.isMediaEnded = true;\n\n clearTimeout(selfClass.inter_isEnded);\n selfClass.inter_isEnded = setTimeout(function () {\n\n selfClass.isMediaEnded = false;\n }, 1000);\n }\n }\n }\n }\n\n /**\n * call on every playing frame\n */\n processCurrentFrame() {\n\n var selfClass = this.dzsapInstance;\n if (selfClass._sourcePlayer) {\n if (selfClass._sourcePlayer.get(0)) {\n if (selfClass._sourcePlayer.get(0).api_get_time_curr) {\n selfClass._sourcePlayer.get(0).api_set_timeVisualCurrent(selfClass.timeCurrent);\n }\n }\n\n\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_seek_to_visual) {\n var temp_time_curr = selfClass.timeCurrent;\n // TODO: to be continued\n\n\n selfClass._sourcePlayer.get(0).api_seek_to_visual(temp_time_curr / selfClass.timeTotal);\n } else {\n }\n\n }\n\n\n // -- check end track\n if (selfClass.isSafeToChangeTrack && this.timeTotal > 1 && this.timeCurrent >= this.timeTotal - 0.07) {\n var args = {\n 'call_from': 'selfClass.timeTotal > 0 && selfClass.timeCurrent >= selfClass.timeTotal - 0.07 ... '\n }\n\n if (!selfClass._actualPlayer) {\n\n selfClass.handle_end(args);\n selfClass.isMediaEnded = true;\n\n\n clearTimeout(selfClass.inter_isEnded);\n selfClass.inter_isEnded = setTimeout(function () {\n selfClass.isMediaEnded = false;\n }, 1000);\n }\n }\n\n }\n\n getVisualCurrentTime() {\n\n var selfClass = this.dzsapInstance;\n\n\n if (selfClass._actualPlayer === null && this.referenceMediaCurrentTime > -1) {\n return this.referenceMediaCurrentTime;\n }\n\n\n if (this.visualCurrentTime) {\n return this.visualCurrentTime;\n }\n\n\n if (selfClass.playFrom) {\n return selfClass.playFrom;\n }\n\n // todo: offsetVisual\n\n\n return 0;\n }\n\n getActualTotalTime() {\n return this.actualTotalTime;\n }\n\n /**\n *\n * @returns {null|number}\n */\n getVisualTotalTime() {\n var selfClass = this.dzsapInstance;\n\n\n if (this.sampleTimeTotal) {\n return this.sampleTimeTotal;\n }\n\n\n if (selfClass._actualPlayer === null) {\n if (this.referenceMediaTotalTime > -1) {\n return this.referenceMediaTotalTime;\n }\n } else {\n // -- has footer player\n\n if (this.visualTotalTime) {\n return this.visualTotalTime;\n }\n //-- last resort\n if (this.referenceMediaTotalTime > -1) {\n return this.referenceMediaTotalTime;\n }\n }\n\n\n return 0;\n }\n\n /**\n * compare target scrub time with sample times\n * @param targetTime\n * @returns {*}\n */\n getActualTargetTime(targetTime) {\n if (this.sampleTimeStart) {\n if (targetTime < this.sampleTimeStart) {\n targetTime = this.sampleTimeStart;\n }\n if (targetTime > this.sampleTimeEnd) {\n targetTime = this.sampleTimeEnd;\n }\n }\n\n return targetTime;\n }\n\n getSampleTimesFromDom($targetPlayer = null) {\n var selfClass = this.dzsapInstance;\n\n selfClass.sample_time_start = 0;\n selfClass.sample_time_total = 0;\n selfClass.sample_time_start = 0;\n selfClass.pseudo_sample_time_end = 0;\n\n\n if ($targetPlayer === null) {\n $targetPlayer = selfClass.cthis;\n }\n\n\n if ($targetPlayer.attr('data-sample_time_start')) {\n this.sampleTimeStart = Number($targetPlayer.attr('data-sample_time_start'));\n }\n if ($targetPlayer.attr('data-sample_time_end')) {\n this.sampleTimeEnd = Number($targetPlayer.attr('data-sample_time_end'));\n }\n if ($targetPlayer.attr('data-sample_time_total')) {\n this.sampleTimeTotal = Number($targetPlayer.attr('data-sample_time_total'));\n }\n\n\n // -- *side-effect: send to selfClass\n selfClass.sample_perc_start = selfClass.sample_time_start / selfClass.sample_time_total;\n selfClass.sample_perc_end = selfClass.sample_time_end / selfClass.sample_time_total;\n\n\n selfClass.isSample = !!((this.sampleTimeTotal && this.sampleTimeStart) || (this.sampleTimeStart && this.sampleTimeEnd));\n\n }\n}\n","import {dzs_clean_string, htmlEncode} from './_dzsap_helpers';\nimport {decode_json} from '../js_common/_dzs_helpers';\nimport {DZSAP_AJAX_ACTION_LIKE, DZSAP_CLASS_NAME_AJAX_LIKE} from \"../configs/_constants\";\n\nexport const ajax_submit_views = function (argp) {\n\n\n var selfClass = this;\n var $ = jQuery;\n var data = {\n action: 'dzsap_submit_views',\n postdata: 1,\n playerid: selfClass.the_player_id,\n currip: selfClass.currIp,\n playerSource: selfClass.data_source\n };\n\n\n\n if (selfClass.cthis.attr('data-playerid-for-views')) {\n data.playerid = selfClass.cthis.attr('data-playerid-for-views');\n }\n\n\n if (data.playerid == '') {\n data.playerid = dzs_clean_string(selfClass.data_source);\n }\n\n\n // -- submit view\n if (selfClass.urlToAjaxHandler) {\n $.ajax({\n type: \"POST\",\n url: selfClass.urlToAjaxHandler,\n data: data,\n success: function (response) {\n\n // -- increase number of hits\n let auxnr = selfClass.cthis.find('.counter-hits .the-number').html();\n auxnr = parseInt(auxnr, 10);\n if (selfClass.increment_views != 2) {\n auxnr++;\n }\n if (response) {\n if (decode_json(response)) {\n auxnr = decode_json(response)['number'];\n }\n }\n\n selfClass.cthis.find('.counter-hits .the-number').html(auxnr);\n\n selfClass.ajax_view_submitted = 'on';\n },\n error: function (arg) {\n\n\n var auxlikes = selfClass.cthis.find('.counter-hits .the-number').html();\n auxlikes = parseInt(auxlikes, 10);\n auxlikes++;\n selfClass.cthis.find('.counter-hits .the-number').html(auxlikes);\n\n selfClass.ajax_view_submitted = 'on';\n }\n });\n selfClass.ajax_view_submitted = 'on';\n }\n\n}\n\nexport const ajax_submit_like = function (argp) {\n var selfClass = this;\n var $ = jQuery;\n\n //only handles ajax call + result\n var mainarg = argp;\n var data = {\n action: DZSAP_AJAX_ACTION_LIKE,\n postdata: mainarg,\n playerid: selfClass.the_player_id,\n playerSource: selfClass.data_source\n };\n\n\n selfClass.cthis.find(`.${DZSAP_CLASS_NAME_AJAX_LIKE}`).addClass('disabled');\n\n if (selfClass.urlToAjaxHandler || selfClass.cthis.hasClass('is-preview')) {\n\n $.ajax({\n type: \"POST\",\n url: selfClass.urlToAjaxHandler,\n data: data,\n success: function (response) {\n\n\n selfClass.cthis.find(`.${DZSAP_CLASS_NAME_AJAX_LIKE}`).addClass('active');\n selfClass.cthis.find(`.${DZSAP_CLASS_NAME_AJAX_LIKE}`).removeClass('disabled');\n var auxlikes = selfClass.cthis.find('.counter-likes .the-number').html();\n auxlikes = parseInt(auxlikes, 10);\n auxlikes++;\n selfClass.cthis.find('.counter-likes .the-number').html(auxlikes);\n },\n error: function (arg) {\n\n\n selfClass.cthis.find(`.${DZSAP_CLASS_NAME_AJAX_LIKE}`).addClass('active');\n selfClass.cthis.find(`.${DZSAP_CLASS_NAME_AJAX_LIKE}`).removeClass('disabled');\n var auxlikes = selfClass.cthis.find('.counter-likes .the-number').html();\n auxlikes = parseInt(auxlikes, 10);\n auxlikes++;\n selfClass.cthis.find('.counter-likes .the-number').html(auxlikes);\n }\n });\n }\n}\n\n\n\n\n\nexport const ajax_submit_total_time = function (selfClass) {\n\n const isTheNeedToSendTotalTime = () => {\n\n return !selfClass.cthis.attr('data-sample_time_total') || (selfClass.cthis.attr('data-sample_time_total') && selfClass.timeModel.getActualTotalTime() && selfClass.timeModel.getActualTotalTime() != selfClass.cthis.attr('data-sample_time_total') && !selfClass.cthis.attr('data-sample_time_end'));\n }\n\n if (!selfClass.isSentCacheTotalTime) {\n if (isTheNeedToSendTotalTime()) {\n if (window.dzsap_settings && window.dzsap_settings.action_received_time_total) {\n selfClass.timeModel.refreshTimes();\n window['dzsap_functions'][window.dzsap_settings.action_received_time_total](selfClass.timeModel.getActualTotalTime(), selfClass.cthis);\n }\n }\n selfClass.isSentCacheTotalTime = true;\n }\n}\n\n\nexport const ajax_submit_download = function (argp) {\n //only handles ajax call + result\n var mainarg = argp;\n var selfClass = this;\n var data = {\n action: 'dzsap_submit_download',\n postdata: mainarg,\n playerid: selfClass.the_player_id\n };\n\n if (selfClass.starrating_alreadyrated > -1) {\n return;\n }\n\n if (selfClass.urlToAjaxHandler) {\n\n jQuery.ajax({\n type: \"POST\",\n url: selfClass.urlToAjaxHandler,\n data: data,\n success: function (response) {\n\n\n },\n error: function (arg) {\n\n\n }\n });\n }\n};\n\n","\n\nexport class _ClassMetaParts{\n constructor(selfClass) {\n this.selfClass = selfClass;\n }\n\n set_extraHtmlFloatRight(extraHtml){\n\n\n this.selfClass.cthis.find('.extrahtml-in-float-right').eq(0).html(extraHtml);\n }\n\n}\n","\n\n\nexport const playbtn_svg = ' ';\nexport const pausebtn_svg = ' ';\n\n\n\n\n\nexport const svg_share_icon = ' ';\n\n\n\n\n\nexport const svg_prev_btn = ' ';\nexport const svg_next_btn = ' ';\n\n\n\n\n\nexport const svg_menu_state = ' ';\nexport const svg_embed_btn = ' ';\n\n\n\n\n","/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function player_setupStructure_thumbnailCon(selfClass){\n\n\n var cthis = selfClass.cthis;\n var o = selfClass.initOptions;\n\n if (cthis.attr('data-thumb')) {\n cthis.addClass('has-thumb');\n var aux_thumb_con_str = '';\n\n if (cthis.attr('data-thumb_link')) {\n aux_thumb_con_str += '
';\n\n\n if (cthis.attr('data-thumb_link')) {\n aux_thumb_con_str += '';\n } else {\n aux_thumb_con_str += '';\n }\n\n\n if (cthis.children('.the-thumb-con').length) {\n aux_thumb_con_str = cthis.children('.the-thumb-con').eq(0);\n }\n\n\n if (o.design_skin !== 'skin-customcontrols') {\n if (o.design_skin === 'skin-wave' && (selfClass.skinwave_mode === 'small' || selfClass.skinwave_mode === 'alternate')) {\n\n if (selfClass.skinwave_mode === 'alternate') {\n selfClass._audioplayerInner.prepend(aux_thumb_con_str);\n } else {\n\n selfClass._apControlsLeft.prepend(aux_thumb_con_str);\n }\n } else if (o.design_skin === 'skin-steel') {\n selfClass._apControlsLeft.prepend(aux_thumb_con_str);\n } else {\n\n selfClass._audioplayerInner.prepend(aux_thumb_con_str);\n }\n }\n\n } else {\n\n cthis.removeClass('has-thumb');\n }\n}\n\nexport function player_constructArtistAndSongCon(margs) {\n\n var selfClass = this;\n\n if (selfClass.cthis.find('.meta-artist').length === 0) {\n if (selfClass.cthis.find('.feed-artist-name').length || selfClass.cthis.find('.feed-song-name').length) {\n let structHtmlMeta = '';\n if (selfClass.cthis.find('.feed-artist-name').length) {\n structHtmlMeta += '' + selfClass.cthis.find('.feed-artist-name').eq(0).html() + '';\n }\n if (selfClass.cthis.find('.feed-song-name').length) {\n structHtmlMeta += '' + selfClass.cthis.find('.feed-song-name').eq(0).html() + '';\n }\n structHtmlMeta += '';\n selfClass.cthis.append(structHtmlMeta);\n }\n }\n\n if (selfClass.cthis.attr(\"data-type\") === 'fake') {\n if (selfClass.cthis.find('.meta-artist').length === 0) {\n selfClass.cthis.append('')\n }\n }\n\n if (!selfClass._metaArtistCon || margs.call_from === 'reconstruct') {\n\n if (selfClass.cthis.children('.meta-artist').length > 0) {\n if (selfClass.cthis.hasClass('skin-wave-mode-alternate')) {\n if (selfClass._conControls.children().last().hasClass('clear')) {\n selfClass._conControls.children().last().remove();\n }\n selfClass._conControls.append(selfClass.cthis.children('.meta-artist'));\n } else {\n if (selfClass._audioplayerInner) {\n selfClass._audioplayerInner.append(selfClass.cthis.children('.meta-artist'));\n }\n }\n }\n\n\n selfClass._audioplayerInner.find('.meta-artist').eq(0).wrap('
');\n\n\n selfClass._metaArtistCon = selfClass._audioplayerInner.find('.meta-artist-con').eq(0);\n\n\n const o = selfClass.initOptions;\n\n\n if (selfClass._apControls.find('.ap-controls-right').length > 0) {\n selfClass._apControlsRight = selfClass.cthis.find('.ap-controls-right').eq(0);\n }\n if (selfClass._apControls.find('.ap-controls-left').length > 0) {\n selfClass._apControlsLeft = selfClass._apControls.find('.ap-controls-left').eq(0);\n }\n\n\n if (o.design_skin === 'skin-pro') {\n selfClass._apControlsRight = selfClass.cthis.find('.con-controls--right').eq(0)\n }\n\n if (o.design_skin === 'skin-wave') {\n\n\n if (selfClass.cthis.find('.dzsap-repeat-button').length) {\n selfClass.cthis.find('.dzsap-repeat-button').after(selfClass._metaArtistCon);\n } else {\n\n\n if (selfClass.cthis.find('.dzsap-loop-button').length && selfClass.cthis.find('.dzsap-loop-button').eq(0).parent().hasClass('feed-dzsap-for-extra-html-right') === false) {\n selfClass.cthis.find('.dzsap-loop-button').after(selfClass._metaArtistCon);\n } else {\n\n selfClass._conPlayPauseCon.after(selfClass._metaArtistCon);\n }\n }\n\n if (selfClass.skinwave_mode === 'alternate') {\n selfClass._apControlsRight.before(selfClass._metaArtistCon);\n }\n\n\n }\n if (o.design_skin === 'skin-aria') {\n selfClass._apControlsRight.prepend(selfClass._metaArtistCon);\n }\n if (o.design_skin === 'skin-redlights' || o.design_skin === 'skin-steel') {\n\n selfClass._apControlsRight.prepend(selfClass._metaArtistCon);\n\n\n }\n if (o.design_skin === 'skin-silver') {\n selfClass._apControlsRight.append(selfClass._metaArtistCon);\n }\n if (o.design_skin === 'skin-default') {\n selfClass._apControlsRight.before(selfClass._metaArtistCon);\n }\n\n\n }\n\n\n}\n","import {extraHtmlBottomFunctionality, feedEmbedFunctionality} from \"../extra-functionality/_extraHtmlFunctions\";\nimport {pausebtn_svg, playbtn_svg, svg_embed_btn, svg_menu_state, svg_next_btn, svg_prev_btn} from '../_dzsap_svgs';\nimport {player_constructArtistAndSongCon} from \"../view/player/_view_playerStructure\";\nimport {\n dzsap_generate_keyboard_tooltip,\n formatTime,\n player_radio_isNameUpdatable,\n waitForScriptToBeAvailableThenExecute\n} from \"../_dzsap_helpers\";\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param o\n */\nexport function setup_structure_extras(selfClass, o) {\n\n\n if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'bigwavo') {\n selfClass._audioplayerInner.after(selfClass._scrubbar);\n\n if (selfClass.cthis.find('.feed-description')) {\n selfClass.$conControls.after(selfClass.cthis.find('.feed-description').eq(0));\n selfClass.$conControls.next().removeClass('feed-description').addClass('song-desc');\n }\n }\n\n\n selfClass.radio_isGoingToUpdateSongName = player_radio_isNameUpdatable(selfClass, selfClass.radio_isGoingToUpdateSongName, '.the-songname');\n selfClass.radio_isGoingToUpdateArtistName = player_radio_isNameUpdatable(selfClass, selfClass.radio_isGoingToUpdateArtistName, '.the-artist');\n\n\n if (o.disable_scrub === 'on') {\n selfClass.cthis.addClass('disable-scrubbar');\n }\n\n\n const struct_embedButtonWithTooltip = `
${svg_embed_btn}
`;\n\n if (selfClass.feedEmbedCode !== '') {\n feedEmbedFunctionality(selfClass, jQuery, struct_embedButtonWithTooltip)\n }\n\n if (o.footer_btn_playlist === 'on') {\n if (selfClass._apControlsRight.find('.btn-footer-playlist').length === 0) {\n waitForScriptToBeAvailableThenExecute(window.dzsap_inner_playlist_is_loaded, () => {\n\n selfClass.classFunctionalityInnerPlaylist = new DzsapInnerPlaylist(selfClass);\n selfClass.classFunctionalityInnerPlaylist.init();\n })\n\n }\n\n }\n\n\n setTimeout(function () {\n\n if (selfClass.cthis.find('.extra-html').length) {\n extraHtmlBottomFunctionality(selfClass);\n }\n }, 100);\n\n setTimeout(function () {\n if (selfClass.cthis.html().indexOf('dzsap-multisharer-but') > -1) {\n selfClass.isMultiSharer = true;\n selfClass.check_multisharer();\n }\n }, 1002);\n\n\n if (selfClass.cthis.find('.afterplayer').length > 0) {\n\n selfClass.cthis.append(selfClass.cthis.find('.afterplayer'));\n }\n\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nfunction structure_generatePlayPauseString(selfClass) {\n\n const o = selfClass.initOptions;\n\n let structConPlayPause = '';\n if (o.settings_extrahtml_before_play_pause) {\n structConPlayPause += o.settings_extrahtml_before_play_pause;\n\n\n }\n\n\n structConPlayPause += '
';\n\n structConPlayPause = addExtraHtmlInPlace(selfClass, '.feed-dzsap-before-playpause', '') + structConPlayPause;\n\n structConPlayPause += '
';\n\n\n structConPlayPause += playbtn_svg;\n\n\n structConPlayPause += `
\"preloader\"
`;\n structConPlayPause += '
'; // -- end playbtn\n\n\n structConPlayPause += '
');\n selfClass._audioplayerInner = selfClass.cthis.children('.audioplayer-inner');\n }\n\n\n // -- end setup inner\n\n\n if (!margs.setup_otherstructure) {\n return false;\n }\n\n\n if (selfClass.cthis.attr('data-wrapper-image')) {\n setup_structure__setup_wrapper_image(selfClass);\n }\n\n\n var structure_str_scrubbar = '
';\n var aux_str_con_controls = '';\n\n var aux_str_time = '';\n\n\n structure_str_scrubbar += '
';\n\n structure_str_scrubbar += '
'\n }\n if (selfClass.sample_perc_end) {\n\n structure_str_scrubbar += '
'\n }\n\n structure_str_scrubbar += '
'; // -- end scrubbar\n\n\n if (o.controls_external_scrubbar) {\n structure_str_scrubbar = '';\n }\n\n\n var struct_con_playpause = '';\n\n struct_con_playpause += structure_generatePlayPauseString(selfClass);\n\n\n aux_str_con_controls += '
' + struct_con_playpause;\n\n\n if (selfClass.extraHtmlAreas.controlsLeft) {\n aux_str_con_controls += selfClass.extraHtmlAreas.controlsLeft;\n }\n\n\n if (o.design_skin === 'skin-pro') {\n aux_str_con_controls += '
';\n aux_str_con_controls += '
';\n }\n\n\n var aux_str_con_volume = '
';\n if (o.disable_volume === 'on') {\n aux_str_con_volume = '';\n }\n\n\n if (o.design_skin === 'skin-default' || o.design_skin === 'skin-wave') {\n\n aux_str_con_controls += '
';\n if (o.disable_volume !== 'on') {\n aux_str_con_controls += '
';\n }\n\n\n aux_str_con_controls += '
';\n\n\n }\n\n aux_str_con_controls += '
'; // -- end con-controls\n\n\n/// -- end STR\n\n\n if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'small') {\n aux_str_con_controls = '
' + struct_con_playpause + '
' + structure_str_scrubbar + '
' + aux_str_con_volume + '
' + selfClass.extraHtmlAreas.controlsRight + '
';\n\n\n } else {\n\n\n // -- other skins\n\n if (o.design_skin === 'skin-aria' || o.design_skin === 'skin-silver' || o.design_skin === 'skin-redlights' || o.design_skin === 'skin-steel') {\n\n\n let playbtnSvg = playbtn_svg;\n let pausebtnSvg = pausebtn_svg;\n if (o.design_skin === 'skin-steel') {\n playbtnSvg = '';\n pausebtnSvg = '';\n }\n\n aux_str_con_controls = '
';\n\n\n if (o.design_skin === 'skin-silver') {\n\n aux_str_con_controls += struct_con_playpause;\n } else {\n\n\n aux_str_con_controls += '
'; // -- enc con-playpause\n\n }\n\n\n // todo: check\n // addExtraHtmlInPlace(selfClass, '.feed-dzsap-after-playpause', struct_con_playpause);\n\n\n aux_str_con_controls += '
';\n\n\n if (selfClass.extraHtmlAreas.controlsRight) {\n aux_str_con_controls += '
' + selfClass.extraHtmlAreas.controlsRight + '
';\n\n\n if (o.design_skin === 'skin-redlights') {\n\n\n if (o.parentgallery && o.parentgallery.get(0).api_skin_redlights_give_controls_right_to_all) {\n o.parentgallery.get(0).api_skin_redlights_give_controls_right_to_all();\n }\n }\n }\n\n\n aux_str_con_controls += '
';\n\n if (o.design_skin === 'skin-silver') {\n\n aux_str_con_controls += '
';\n\n\n aux_str_con_controls += '
' + structure_str_scrubbar;\n } else {\n\n\n if (o.design_skin === 'skin-redlights') {\n\n if (o.disable_volume != 'on') {\n aux_str_con_controls += '
';\n }\n }\n\n aux_str_con_controls += structure_str_scrubbar;\n\n\n if (o.disable_timer != 'on') {\n aux_str_con_controls += '
00:00
';\n }\n }\n\n\n if (o.design_skin === 'skin-silver') {\n\n } else {\n aux_str_con_controls += '';\n }\n\n\n }\n\n\n }\n\n\n// -- end strings\n// --------------\n\n if (margs.setup_media) {\n selfClass._audioplayerInner.append('
');\n selfClass.$theMedia = selfClass._audioplayerInner.children('.the-media').eq(0);\n }\n if (o.design_skin !== 'skin-customcontrols') {\n selfClass._audioplayerInner.append(structure_str_apControls);\n }\n\n selfClass._apControls = selfClass._audioplayerInner.children('.ap-controls').eq(0);\n selfClass._apControls.append(aux_str_con_controls);\n\n\n if (selfClass.cthis.hasClass('skin-wave-mode-alternate')) {\n if (selfClass.cthis.find('.scrubbar').length === 0) {\n selfClass._apControls.append(structure_str_scrubbar);\n }\n } else {\n if (selfClass.cthis.find('.scrubbar').length === 0) {\n selfClass._apControls.prepend(structure_str_scrubbar);\n }\n }\n\n\n selfClass._apControlsRight = null;\n\n if (selfClass._apControls.find('.ap-controls-right').length > 0) {\n selfClass._apControlsRight = selfClass.cthis.find('.ap-controls-right');\n }\n if (selfClass._apControls.find('.ap-controls-left').length > 0) {\n selfClass._apControlsLeft = selfClass._apControls.find('.ap-controls-left').eq(0);\n }\n\n\n if (o.design_skin === 'skin-pro') {\n selfClass._apControlsRight = selfClass.cthis.find('.con-controls--right').eq(0)\n }\n\n\n// -- Todo: if we have footer, playlist btn we can place it in ap-controls-right\n\n\n addExtraHtmlInPlace(selfClass, '.feed-dzsap--custom-controls', null, selfClass._audioplayerInner);\n addExtraHtmlInPlace(selfClass, '.feed-dzsap-after-con-controls', null, selfClass._apControls);\n\n\n if (o.controls_external_scrubbar) {\n selfClass._scrubbar = $(o.controls_external_scrubbar).children('.scrubbar').eq(0);\n } else {\n selfClass._scrubbar = selfClass._apControls.find('.scrubbar').eq(0);\n }\n\n if (selfClass._scrubbar.length === 0) {\n selfClass.initOptions.scrubbar_type = 'none';\n }\n\n\n selfClass.$$scrubbProg = selfClass._scrubbar.find('.scrub-prog').get(0);\n\n\n selfClass.$conControls = selfClass._apControls.children('.con-controls');\n selfClass.$conPlayPause = selfClass.cthis.find('.con-playpause').eq(0);\n selfClass._conPlayPauseCon = selfClass.cthis.find('.con-playpause-con').eq(0);\n selfClass.$controlsVolume = selfClass.cthis.find('.controls-volume').eq(0);\n\n\n (player_constructArtistAndSongCon.bind(selfClass))(margs);\n\n\n selfClass._scrubbar.addClass('scrubbar-inited');\n if (o.scrubbar_type === 'wave' && o.disable_timer != 'on') {\n // -- no sense in adding time if external\n if (o.controls_external_scrubbar === '') {\n selfClass._scrubbar.append(aux_str_time);\n }\n }\n\n\n if (o.design_skin != 'skin-wave' && o.disable_timer != 'on') {\n // aux_str_con_controls += '
00:00
00:00
';\n\n // -- all skins\n selfClass._apControls.append(aux_str_time);\n }\n\n\n// -- end structure\n\n\n// -- start assocations\n if (o.disable_timer != 'on') {\n selfClass.$currTime = selfClass.cthis.find('.curr-time').eq(0);\n selfClass.$totalTime = selfClass.cthis.find('.total-time').eq(0);\n\n if (o.design_skin === 'skin-steel') {\n if (selfClass.$currTime.length === 0) {\n selfClass.$totalTime.before('
00:00
/ ');\n\n\n selfClass.$currTime = selfClass.$totalTime.prev().prev();\n\n }\n }\n\n\n }\n\n\n if (Number(o.sample_time_total) > 0) {\n\n selfClass.timeTotal = Number(o.sample_time_total);\n\n\n if (selfClass.$totalTime) {\n\n\n selfClass.$totalTime.html(formatTime(selfClass.time_total_for_visual));\n }\n\n\n }\n\n\n selfClass.setupStructure_thumbnailCon();\n\n\n if (o.design_skin === 'skin-wave' && o.parentgallery && typeof (o.parentgallery) != 'undefined' && o.design_menu_show_player_state_button === 'on') {\n if (o.design_skin === 'skin-wave') {\n if (selfClass._apControlsRight) {\n\n selfClass._apControlsRight.appendOnce('
' + svg_menu_state + '
');\n } else {\n }\n } else {\n selfClass._audioplayerInner.appendOnce('
');\n }\n }\n\n if (o.skinwave_place_metaartist_after_volume === 'on') {\n\n selfClass.$controlsVolume.before(selfClass._metaArtistCon);\n }\n\n\n if (o.skinwave_place_thumb_after_volume === 'on') {\n\n selfClass.$controlsVolume.before(selfClass.cthis.find('.the-thumb-con'));\n }\n\n\n if (o.design_skin === 'skin-wave') {\n\n\n // -- structure setup\n\n selfClass.setup_structure_scrub();\n\n\n if (o.skinwave_timer_static === 'on') {\n if (selfClass.$currTime) {\n selfClass.$currTime.addClass('static');\n }\n if (selfClass.$totalTime) {\n selfClass.$totalTime.addClass('static');\n }\n }\n\n\n selfClass._apControls.css({\n //'height': design_thumbh\n })\n\n\n if (o.skinwave_wave_mode === 'canvas') {\n\n setTimeout(function () {\n selfClass.cthis.addClass('scrubbar-loaded');\n selfClass._scrubbar.parent().addClass('scrubbar-loaded');\n\n\n }, 700); // -- tbc\n\n }\n\n }\n// --- END skin-wave\n\n\n selfClass.check_multisharer();\n\n if (selfClass.cthis.hasClass('skin-minimal')) {\n // -- here is skin-minimal\n\n selfClass.cthis.find('.the-bg').before('
')\n selfClass.cthis.find('.the-bg').append('')\n selfClass.skin_minimal_canvasplay = selfClass.cthis.find('.playbtn-canvas').eq(0).get(0);\n\n if (selfClass.$conPlayPause) {\n\n selfClass.$conPlayPause.children('.playbtn').append(playbtn_svg);\n selfClass.$conPlayPause.children('.pausebtn').append(pausebtn_svg);\n }\n\n setTimeout(function () {\n selfClass.isCanvasFirstDrawn = false;\n }, 200);\n }\n\n\n if (selfClass.cthis.hasClass('skin-minion')) {\n if (selfClass.cthis.find('.menu-description').length > 0) {\n\n selfClass.$conPlayPause.addClass('with-tooltip');\n selfClass.$conPlayPause.prepend('' + selfClass.cthis.find('.menu-description').html() + '');\n selfClass.$conPlayPause.children('span').eq(0).css('width', selfClass.$conPlayPause.children('span').eq(0).textWidth() + 10);\n }\n }\n\n\n if (o.player_navigation === 'default') {\n\n if (o.parentgallery) {\n\n o.player_navigation = 'on';\n }\n\n\n if (o.parentgallery && o.parentgallery.hasClass('mode-showall')) {\n o.player_navigation = 'off';\n }\n }\n\n if (o.disable_player_navigation === 'on') {\n\n o.player_navigation = 'off';\n }\n\n if (o.player_navigation === 'default') {\n\n o.player_navigation = 'off';\n }\n\n\n if (o.player_navigation === 'on') {\n\n var prev_btn_str = '
' + svg_prev_btn + '
';\n\n var next_btn_str = '
' + svg_next_btn + '
';\n\n\n var auxs = prev_btn_str + next_btn_str;\n\n\n // -- create player navigation here\n if ((o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'small') || o.design_skin === 'skin-aria') {\n\n\n selfClass.$conPlayPause.before(prev_btn_str)\n selfClass.$conPlayPause.after(next_btn_str)\n\n\n } else {\n if (o.design_skin === 'skin-wave') {\n\n\n if (o.player_navigation === 'on') {\n\n selfClass._conPlayPauseCon.prependOnce(prev_btn_str, '.prev-btn');\n selfClass._conPlayPauseCon.appendOnce(next_btn_str, '.next-btn');\n }\n\n } else if (o.design_skin === 'skin-steel') {\n\n selfClass._apControlsLeft.prependOnce(prev_btn_str, '.prev-btn');\n\n if (selfClass._apControlsLeft.children('.the-thumb-con').length > 0) {\n\n\n if (selfClass._apControlsLeft.children('.the-thumb-con').eq(0).length > 0) {\n if (selfClass._apControlsLeft.children('.the-thumb-con').eq(0).prev().hasClass('next-btn') === false) {\n selfClass._apControlsLeft.children('.the-thumb-con').eq(0).before(next_btn_str);\n }\n }\n\n } else {\n\n selfClass._apControlsLeft.appendOnce(next_btn_str, '.next-btn');\n }\n } else {\n\n selfClass._audioplayerInner.appendOnce(auxs, '.prev-btn');\n }\n }\n\n }\n\n\n if (selfClass.cthis.hasClass('skinvariation-wave-bigtitles')) {\n if (selfClass.cthis.find('.controls-volume').length && selfClass._metaArtistCon.find('.controls-volume').length === 0) {\n selfClass._metaArtistCon.append('
');\n selfClass._metaArtistCon.append(selfClass.cthis.find('.controls-volume'));\n }\n\n }\n\n if (selfClass.cthis.hasClass('skinvariation-wave-righter')) {\n\n selfClass._apControls.appendOnce('
');\n var _c = selfClass.cthis.find('.playbuttons-con').eq(0);\n _c.append(selfClass.cthis.find('.con-playpause-con'));\n\n }\n\n\n if (o.design_skin === 'skin-pro') {\n\n selfClass._apControlsRight.append(selfClass.$currTime);\n selfClass._apControlsRight.append(selfClass.$totalTime);\n }\n\n\n if (o.design_skin === 'skin-silver') {\n selfClass._scrubbar.after(selfClass._apControlsRight);\n selfClass._apControlsLeft.prepend(selfClass._metaArtistCon);\n selfClass._apControlsLeft.append(selfClass.$currTime);\n selfClass._apControlsRight.append(selfClass.$totalTime);\n\n\n }\n\n\n if (o.design_skin === 'skin-redlights') {\n selfClass._apControlsRight.append('
');\n selfClass._apControlsRight.append('
');\n selfClass._apControlsRight.find('.ap-controls-right--top').append(selfClass._apControlsRight.find('.meta-artist-con'));\n selfClass._apControlsRight.find('.ap-controls-right--top').append(selfClass._apControlsRight.find('.controls-volume'));\n selfClass._apControlsRight.find('.ap-controls-right--bottom').append(selfClass._apControlsRight.find('.scrubbar'));\n }\n\n\n if (margs.call_from === 'reconstruct') {\n if (selfClass.cthis.hasClass('skin-silver')) {\n selfClass._apControlsLeft.append(selfClass.cthis.find('.con-playpause'));\n }\n }\n\n\n if (selfClass.isMultiSharer) {\n selfClass.check_multisharer();\n }\n\n selfClass.setup_structure_sanitizers();\n setup_structure_extras(selfClass, o);\n\n\n selfClass.cthis.addClass('structure-setuped');\n\n\n if (selfClass.extraHtmlAreas.afterArtist) {\n selfClass._metaArtistCon.find('.the-artist').append(selfClass.extraHtmlAreas.afterArtist);\n }\n\n\n if (selfClass.extraHtmlAreas.bottom !== '') {\n selfClass.cthis.append('
' + selfClass.extraHtmlAreas.bottom + '
');\n }\n\n\n var settings_extrahtml_in_float_right_str = '';\n\n\n if (String(selfClass.extraHtmlAreas.controlsRight).indexOf('dzsap-multisharer-but') > -1) {\n selfClass.isMultiSharer = true;\n }\n\n if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'small') {\n\n } else {\n\n settings_extrahtml_in_float_right_str += '
' + selfClass.extraHtmlAreas.controlsRight + '
';\n }\n\n\n if (settings_extrahtml_in_float_right_str) {\n if (o.design_skin === 'skin-wave' || o.design_skin === 'skin-default') {\n\n selfClass.cthis.find('.ap-controls-right').eq(0).append(settings_extrahtml_in_float_right_str);\n\n }\n if (o.design_skin === 'skin-pro') {\n\n selfClass.cthis.find('.con-controls--right').eq(0).append(settings_extrahtml_in_float_right_str);\n\n }\n }\n\n\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param {string} feedSelector\n * @param {string|null} addToString\n * @param $appendElement\n * @returns {null|string|any}\n */\nfunction addExtraHtmlInPlace(selfClass, feedSelector, addToString = null, $appendElement = null) {\n\n if (selfClass.cthis.find(feedSelector).length) {\n if (addToString !== null) {\n\n addToString += selfClass.cthis.find(feedSelector).eq(0).html();\n }\n\n if ($appendElement !== null) {\n\n $appendElement.append(selfClass.cthis.find(feedSelector).eq(0).html())\n return $appendElement;\n }\n selfClass.cthis.find(feedSelector).remove();\n if (addToString !== null) {\n\n return addToString;\n }\n }\n\n\n if (typeof addToString == 'string') {\n return addToString;\n }\n\n return null;\n}\n","import {ajax_submit_views} from \"../_dzsap_ajax\";\nimport {select_all} from \"../_dzsap_helpers\";\n\nexport function extraHtmlBottomFunctionality(selfClass ){\n\n\n var o = selfClass.initOptions;\n\n\n\n\n\n if (selfClass.increment_views === 1) {\n (ajax_submit_views.bind(selfClass))();\n selfClass.increment_views = 2;\n }\n\n\n\n if (selfClass.index_extrahtml_toloads === 0) {\n\n\n selfClass.cthis.find('.extra-html').addClass('active');\n }\n setTimeout(function () {\n selfClass.cthis.find('.extra-html').addClass('active');\n if (selfClass.cthis.find('.float-left').length === 0) {\n selfClass.cthis.find('.extra-html').append(selfClass.cthis.find('.extra-html-extra'));\n } else {\n selfClass.cthis.find('.extra-html .float-left').append(selfClass.cthis.find('.extra-html-extra'));\n }\n\n\n var _c = selfClass.cthis.find('.extra-html-extra').children().eq(0);\n\n selfClass.cthis.find('.extra-html-extra').children().unwrap();\n\n\n\n\n\n\n\n }, 2000);\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param $\n * @param struct_embedButtonWithTooltip\n */\nexport function feedEmbedFunctionality(selfClass,$, struct_embedButtonWithTooltip){\n\n var o = selfClass.initOptions;\n\n if (o.design_skin === 'skin-wave') {\n\n if (o.enable_embed_button === 'on') {\n if (selfClass._apControlsRight) {\n\n selfClass._apControlsRight.appendOnce(struct_embedButtonWithTooltip);\n selfClass.$embedButton = selfClass._apControlsRight.find('.btn-embed-code-con').eq(0);\n selfClass.$embedButton.find('.btn-embed-code').addClass('player-but');\n }\n }\n\n } else {\n if (o.enable_embed_button === 'on') {\n selfClass._audioplayerInner.appendOnce(struct_embedButtonWithTooltip);\n selfClass.$embedButton = selfClass._audioplayerInner.find('.btn-embed-code-con').eq(0);\n }\n }\n if (selfClass.$embedButton) {\n\n selfClass.$embedButton.find('.embed-code--text').html(selfClass.feedEmbedCode);\n }\n\n\n selfClass.cthis.on('click', '.btn-embed-code-con, .btn-embed', function () {\n var _t = $(this);\n\n\n select_all(_t.find('.dzstooltip').get(0));\n document.execCommand('copy');\n })\n selfClass.cthis.on('click', '.copy-embed-code-btn', function () {\n var _t = $(this);\n\n select_all(_t.parent().parent().find('.dzstooltip--inner > span').get(0));\n\n document.execCommand('copy');\n setTimeout(function () {\n select_all(_t.get(0));\n }, 100)\n })\n}\n","export const defaultPlayerOptions = {\n design_skin: 'skin-default', // -- the skin of the player - can be set from the html as well,autoplay: 'off' // -- autoplay the track ( only works is cue is set to \"on\"\n call_from: 'default', // -- call from a specific api\n autoplay_on_scrub_click: 'off', // -- autoplay the track ( only works is cue is set to \"on\"\n cueMedia: 'on', // -- this chooses wheter \"on\" or not \"off\" a part .. what part is decided by the preload_method below\n preload_method: 'metadata', // -- \"none\" or \"metadata\" or \"auto\" ( whole track )\n loop: 'off', // -- loop the track\n pause_method: 'pause', // -- loop the track\n // -- extra HTML\n settings_extrahtml: '', // -- some extra html - can be rates, plays, likes\n settings_extrahtml_before_play_pause: '', // -- some extra html that you may want before play button\n settings_extrahtml_after_play_pause: '', // -- some extra html that you may want after play button\n\n settings_trigger_resize: '0', // -- check the player dimensions every x milli seconds\n design_thumbh: \"default\", // -- thumbnail size\n extra_classes_player: '',\n disable_volume: 'default',\n disable_scrub: 'default',\n disable_timer: 'default', // -- disable timer display\n disable_player_navigation: 'off',\n scrub_show_scrub_time: 'on',\n player_navigation: 'default', // -- auto decide if we need player navigation\n type: 'audio'\n , enable_embed_button: 'off' // -- enable the embed button\n , embed_code: '' // -- embed code\n , skinwave_dynamicwaves: 'off' // -- dynamic scale based on volume for no spectrum wave\n , soundcloud_apikey: '', // -- set the sound cloud api key\n skinwave_enableSpectrum: 'off', // -- off or on\n skinwave_place_thumb_after_volume: 'off', // -- place the thumbnail after volume button\n skinwave_place_metaartist_after_volume: 'off', // -- place metaartist after volume button\n php_retriever: 'soundcloudretriever.php', // -- the soundcloud php file used to render soundcloud files,\n skinwave_mode: 'normal', // -- \"normal\" or \"small\" or \"alternate\"\n skinwave_wave_mode: 'canvas', // -- \"normal\" or \"canvas\" or \"line\"\n skinwave_wave_mode_canvas_mode: 'normal', // -- \"normal\" or \"reflecto\"\n skinwave_wave_mode_canvas_normalize: 'on' // -- normalize wave to look more natural\n\n // -- wave settings\n , skinwave_wave_mode_canvas_waves_number: '3' // -- the number of waves in the canvas ( \"1\" pixel waves, \"2\" 2 pixel width waves, \"3\" 3 pixel width waves, \"anything more then 3\" means number of waves in the container, for example 100 means 100 waves in 1000px container if the container is 1000px width )\n , skinwave_wave_mode_canvas_waves_padding: '1' // -- padding between waves ( \"1\" 1 pixel between < - > \"0\" no reflection )\n , skinwave_wave_mode_canvas_reflection_size: '0.25', // -- the reflection size ( \"1\" full size < - > \"0\" no reflection )\n wavesurfer_pcm_length: '200', // -- define the precision of the wave generation; higher is more precise, but occupies more space\n\n pcm_data_try_to_generate: 'on', // -- try to find out the pcm data and sent it via ajax ( maybe send it via php_handler\n pcm_data_try_to_generate_wait_for_real_pcm: 'on', // -- if set to on, the fake pcm data will not be generated\n pcm_notice: 'off', // -- show a notice for pcm\n notice_no_media: 'on', // -- show a notice for when the media errors out\n\n sampleTimesMode: 'realPrevivew', // -- \"realPreview\" or \"pseudoPreview\"\n mobile_delete: \"off\", // -- delete the whole player on mobile, useful for unwanted footer players in mobile\n footer_btn_playlist: \"off\", // -- construct inner player playlist\n mobile_disable_fakeplayer: \"off\", // -- disable feeding to other players on mobile\n skinwave_comments_displayontime: 'on', // -- display the comment when the scrub header is over it\n skinwave_comments_allow_post_if_not_logged_in: 'on', // -- allow posting in comments section if not looged in, to be logged in, skinwave_comments_account must be an account id\n\n skinwave_comments_links_to: '', // -- clicking the comments bar will lead to this link ( optional )\n skinwave_comments_enable: 'off', // -- enable the comments, publisher.php must be in the same folder as this html\n skinwave_comments_mode_outer_selector: '', // -- the outer selector if it has one\n skinwave_comments_playerid: '',\n\n skinwave_timer_static: 'off', // -- Timer indicators are static\n default_volume: 'default', // -- number / set the default volume 0-1 or \"last\" for the last known volume\n volume_from_gallery: '',// -- the volume set from the gallery item select, leave blank if the player is not called from the gallery\n design_menu_show_player_state_button: 'off', // -- show a button that allows to hide or show the menu\n playfrom: 'off', // -- off or specific number of settings or set to \"last\"\n design_animateplaypause: 'default'\n , embedded: 'off', // // -- if embedded in a iframe\n embedded_iframe_id: '', // // -- if embedded in a iframe, specify the iframe id here\n google_analytics_send_play_event: 'off' // -- send the play event to google analytics, you need to have google analytics script already on your page\n , fakeplayer: null // -- if this is a fake player, it will feed\n , failsafe_repair_media_element: '' // -- some scripts might effect the media element used by zoomsounds, this is how we replace the media element in a certain time\n , action_audio_play: null // -- set a outer play function ( for example for tracking your analytics )\n , action_audio_play2: null // -- set a outer play function ( for example for tracking your analytics )\n , action_audio_pause: null, // -- set a outer play function ( for example for tracking your analytics )\n action_audio_end: null, // -- set a outer ended function ( for example for tracking your analytics )\n action_audio_comment: null, // -- set a outer commented function ( for example for tracking your analytics )\n action_received_time_total: null // -- event triggers at receiving time total\n , action_audio_change_media: null, // -- set a outer on change track function\n action_audio_loaded_metadata: null, // -- set a outer commented function ( for example for tracking your analytics )\n action_video_contor_60secs: null, // -- fire every 30s\n type_audio_stop_buffer_on_unfocus: 'off', // -- if set to on, when the audio player goes out of focus, it will unbuffer the file so that it will not load anymore, useful if you want to stop buffer on large files\n\n\n settings_exclude_from_list: 'off', // -- a audioplayer list is formed at runtime so that when\n design_wave_color_bg: '222222', // -- waveform background color.. 000000,ffffff gradient is allowed\n design_wave_color_progress: 'ea8c52', // -- waveform progress color\n\n\n skin_minimal_button_size: '100',\n gallery_gapless_play: 'off', // -- play without pause\n preview_on_hover: 'off', // -- on mouseenter autoplay the track\n controls_external_scrubbar: '', // -- on mouseenter autoplay the track\n parentgallery: null, // -- the parent gallery of the player\n scrubbar_type: 'auto', // -- \"wave\" or \"spectrum\" or \"bar\"\n scrubbar_type_wave__has_reveal_animation: 'off',\n\n settings_php_handler: '', // -- the path of the publisher.php file, this is used to handle comments, likes etc. - can be \"wpdefault\"\n};\n\n// settings_extrahtml -- for plays use
{{get_plays}}
\n","import {add_query_arg} from \"../../_dzsap_helpers\";\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport function checkIfNeedsSongNameRefresh(selfClass){\n\n if (selfClass.audioTypeSelfHosted_streamType === 'icecast' || selfClass.audioTypeSelfHosted_streamType === 'shoutcast') {\n // -- if we have icecast we can update currently playing song\n\n\n if (selfClass.audioTypeSelfHosted_streamType === 'icecast' || (selfClass.radio_isGoingToUpdateArtistName || selfClass.radio_isGoingToUpdateSongName)) {\n\n player_icecastOrShoutcastRefresh(selfClass);\n }\n setInterval(function () {\n player_icecastOrShoutcastRefresh(selfClass);\n }, 10000)\n }\n}\n\n\nexport function player_icecastOrShoutcastRefresh(selfClass) {\n\n\n let url = selfClass.cthis.attr('data-source');\n\n if (selfClass.audioTypeSelfHosted_streamType === 'shoutcast') {\n url = add_query_arg(selfClass.urlToAjaxHandler, 'action', 'dzsap_shoutcast_get_streamtitle');\n url = add_query_arg(url, 'source', (selfClass.data_source));\n }\n\n\n jQuery.ajax({\n type: \"GET\",\n url: url,\n crossDomain: true,\n success: function (response) {\n\n if (response.documentElement && response.documentElement.innerHTML) {\n response = response.documentElement.innerHTML;\n }\n\n\n let regex_title = '';\n let regex_creator = '';\n let new_title = '';\n let new_artist = '';\n\n if (selfClass.audioTypeSelfHosted_streamType === 'icecast') {\n\n var regex_location = /(.*?)<\\/location>/g\n\n var regexMatches = null;\n if (regexMatches = regex_location.exec(response)) {\n\n\n if (regexMatches[1] !== selfClass.data_source) {\n selfClass.data_source = regexMatches[1];\n selfClass.setup_media({\n 'called_from': 'icecast setup'\n });\n }\n }\n }\n\n if (selfClass.radio_isGoingToUpdateSongName) {\n if (selfClass.audioTypeSelfHosted_streamType === 'icecast') {\n regex_title = /(.*?)<\\/title>/g\n\n if (regexMatches = regex_title.exec(response)) {\n new_title = regexMatches[1];\n }\n }\n if (selfClass.audioTypeSelfHosted_streamType === 'shoutcast') {\n new_title = response;\n }\n\n }\n if (selfClass.radio_isGoingToUpdateArtistName) {\n if (selfClass.audioTypeSelfHosted_streamType === 'icecast') {\n\n regex_creator = /<creator>(.*?)<\\/creator>/g;\n\n if (regexMatches = regex_creator.exec(response)) {\n new_artist = regexMatches[1];\n }\n }\n if (selfClass.audioTypeSelfHosted_streamType === 'shoutcast') {\n }\n }\n\n if (selfClass.radio_isGoingToUpdateSongName) {\n selfClass._metaArtistCon.find('.the-name').html(new_title);\n }\n\n if (selfClass.radio_isGoingToUpdateArtistName) {\n selfClass._metaArtistCon.find('.the-artist').html(new_artist)\n }\n },\n error: function (err) {\n\n }\n });\n\n}\n","import {player_syncPlayers_gotoItem} from \"../_dzsap_helpers\";\n\nexport const player_nextPrevButtonsSetup = (selfClass, cthis, o) => {\n\n cthis.on('click', '.prev-btn,.next-btn', handle_mouse);\n\n\n function handle_mouse(e) {\n let _target;\n const $t = jQuery(this);\n\n if (e.type === 'click') {\n if ($t.hasClass('prev-btn')) {\n handleClick_prevBtn();\n }\n if ($t.hasClass('next-btn')) {\n handleClick_nextBtn();\n }\n }\n }\n\n\n function handleClick_prevBtn() {\n if (o.parentgallery && (o.parentgallery.get(0))) {\n o.parentgallery.get(0).api_goto_prev();\n } else {\n\n syncPlayers_gotoPrev(selfClass);\n }\n }\n\n function handleClick_nextBtn() {\n if (o.parentgallery && (o.parentgallery.get(0))) {\n o.parentgallery.get(0).api_goto_next();\n } else {\n\n syncPlayers_gotoNext(selfClass);\n }\n }\n}\n\n\nexport function syncPlayers_gotoPrev(selfClass) {\n\n\n if (selfClass._actualPlayer) {\n selfClass._actualPlayer.get(0).api_sync_players_goto_prev();\n\n return false;\n }\n\n\n syncPlayers_gotoItem(selfClass, -1);\n\n}\n\n\n/**\n * go to next inner playlistItem for single player\n * @returns {boolean}\n */\nexport function syncPlayers_gotoNext(selfClass) {\n\n if (selfClass._actualPlayer) {\n selfClass._actualPlayer.get(0).api_sync_players_goto_next();\n\n return false;\n }\n syncPlayers_gotoItem(selfClass, 1);\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param targetIncrement\n */\nexport function syncPlayers_gotoItem(selfClass, targetIncrement = 0) {\n\n\n let targetIndex = 0;\n if (selfClass.classFunctionalityInnerPlaylist) {\n // -- playlist Inner\n\n targetIndex = selfClass.playlist_inner_currNr + targetIncrement;\n if (targetIndex >= 0) {\n selfClass.classFunctionalityInnerPlaylist.playlistInner_gotoItem(targetIndex, {\n 'call_from': 'api_sync_players_prev'\n });\n }\n } else {\n if (window.dzsap_syncList_players && window.dzsap_syncList_players.length > 0) {\n player_syncPlayers_gotoItem(selfClass, targetIncrement);\n } else {\n console.log('[dzsap] [syncPlayers] no players found')\n }\n }\n\n if (window.dzsap_syncList_players && window.dzsap_syncList_index >= window.dzsap_syncList_players.length) {\n window.dzsap_syncList_index = 0;\n }\n}\n","import {ajax_submit_views} from \"../_dzsap_ajax\";\n\n\nexport function player_sourcePlayerPauseVisual(selfClass){\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_pause_media_visual) {\n selfClass._sourcePlayer.get(0).api_pause_media_visual({\n 'call_from': 'pause_media in child player'\n });\n }\n}\nexport function player_sourcePlayerPlayVisual(selfClass){\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_play_media_visual) {\n selfClass._sourcePlayer.get(0).api_play_media_visual({\n 'api_report_play_media': false\n });\n }\n}\nexport function player_actualPlayerPlay(selfClass, margs, seek_to){\n\n const cthis = selfClass.cthis;\n const o = selfClass.initOptions;\n\n const output = {\n itShouldReturn : false\n }\n // -- the actual player is the footer player\n\n let args = {\n type: selfClass.actualDataTypeOfMedia,\n fakeplayer_is_feeder: 'on',\n call_from: 'play_media_audioplayer'\n }\n\n try {\n if (margs.called_from === 'click_playpause') {\n // -- let us reset up the playlist\n\n\n if (o.parentgallery) {\n o.parentgallery.get(0).api_regenerate_sync_players_with_this_playlist();\n selfClass._actualPlayer.get(0).api_regenerate_playerlist_inner();\n }\n\n }\n\n if (selfClass._actualPlayer && selfClass._actualPlayer.length && selfClass._actualPlayer.data('feeding-from') !== cthis.get(0)) {\n\n args.called_from = 'play_media from player 22 ' + cthis.attr('data-source') + ' < - ' + 'old call from - ' + margs.called_from;\n\n if (selfClass._actualPlayer.get(0).api_change_media) {\n selfClass._actualPlayer.get(0).api_change_media(cthis, args);\n }\n\n if (!cthis.hasClass('first-played')) {\n if (cthis.data('promise-to-play-footer-player-from')) {\n seek_to(cthis.data('promise-to-play-footer-player-from'));\n setTimeout(function () {\n cthis.data('promise-to-play-footer-player-from', '');\n }, 1000);\n }\n }\n\n }\n setTimeout(function () {\n if (selfClass._actualPlayer.get(0) && selfClass._actualPlayer.get(0).api_play_media) {\n selfClass._actualPlayer.get(0).api_play_media({\n 'called_from': '[feed_to_feeder]'\n });\n }\n }, 100);\n\n\n if (selfClass.ajax_view_submitted === 'off') {\n (ajax_submit_views.bind(selfClass))();\n }\n\n output.itShouldReturn = true;\n\n\n } catch (err) {\n console.log('no fake player..', err);\n }\n\n return output;\n}\nexport function player_actualPlayerPause(selfClass){\n\n const cthis = selfClass.cthis;\n\n\n let args = {\n type: selfClass.actualDataTypeOfMedia,\n fakeplayer_is_feeder: 'on'\n }\n if (selfClass._actualPlayer && selfClass._actualPlayer.length && selfClass._actualPlayer.data('feeding-from') !== cthis.get(0)) {\n args.called_from = 'pause_media from player ' + cthis.attr('data-source');\n selfClass._actualPlayer.get(0).api_change_media(cthis, args);\n }\n setTimeout(function () {\n if (selfClass._actualPlayer.get(0) && selfClass._actualPlayer.get(0).api_pause_media) {\n selfClass._actualPlayer.get(0).api_pause_media();\n }\n }, 100);\n}\nexport function player_feederSeekTo(selfClass, margs, targetTimeMediaScrub){\n\n const cthis = selfClass.cthis;\n\n let args = {\n type: selfClass.actualDataTypeOfMedia,\n fakeplayer_is_feeder: 'on'\n }\n if (selfClass._actualPlayer.length && selfClass._actualPlayer.data('feeding-from') !== cthis.get(0)) {\n // -- the actualPlayer is not rendering this feed player\n if (margs.call_from !== 'handle_end' && margs.call_from !== 'from_playfrom' && margs.call_from !== 'last_pos' && margs.call_from !== 'playlist_seek_from_0') {\n // -- if it is not user action, ( handle_end or anything else )\n args.called_from = 'seek_to from player source->' + (cthis.attr('data-source')) + ' < - ' + 'old call from - ' + margs.call_from;\n if (selfClass._actualPlayer.get(0).api_change_media) {\n selfClass._actualPlayer.get(0).api_change_media(cthis, args);\n } else {\n console.log('not inited ? ', selfClass._actualPlayer);\n }\n } else {\n // -- NORMAL call\n\n cthis.data('promise-to-play-footer-player-from', targetTimeMediaScrub);\n }\n }\n\n\n setTimeout(function () {\n\n if (selfClass._actualPlayer.get(0) && selfClass._actualPlayer.get(0).api_pause_media) {\n if (margs.call_from !== 'from_playfrom' && margs.call_from !== 'last_pos') {\n selfClass._actualPlayer.get(0).api_seek_to(targetTimeMediaScrub, {\n 'call_from': 'from_feeder_to_feed'\n });\n }\n }\n }, 50);\n}\n","/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport const view_resizeHandleTreatSkins = (selfClass) => {\n var isResolveThumbHeight = false\n\n var cthis = selfClass.cthis;\n var o = selfClass.initOptions;\n selfClass.scrubbarWidth = selfClass._scrubbar.outerWidth(false);\n if (o.design_skin === 'skin-default') {\n selfClass.scrubbarWidth = selfClass.cthisWidth;\n }\n if (o.design_skin === 'skin-pro') {\n selfClass.scrubbarWidth = selfClass.cthisWidth;\n }\n if (o.design_skin === 'skin-silver' || o.design_skin === 'skin-aria') {\n selfClass.scrubbarWidth = selfClass.cthisWidth;\n selfClass.scrubbarWidth = selfClass._scrubbar.width();\n }\n\n\n if (o.design_skin === 'skin-justthumbandbutton') {\n selfClass.cthisWidth = cthis.children('.audioplayer-inner').outerWidth();\n selfClass.scrubbarWidth = selfClass.cthisWidth;\n }\n if (o.design_skin === 'skin-redlights' || o.design_skin === 'skin-steel') {\n selfClass.scrubbarWidth = selfClass._scrubbar.width();\n }\n\n if (o.design_skin === 'skin-wave') {\n selfClass.scrubbarWidth = selfClass._scrubbar.outerWidth(false);\n\n if (selfClass._commentsHolder) {\n\n selfClass._commentsHolder.css({\n 'width': selfClass.scrubbarWidth\n })\n selfClass._commentsHolder.addClass('active');\n }\n\n }\n\n}\nexport const view_resizeEmbedded = (selfClass) => {\n\n var cthis = selfClass.cthis;\n if (window.frameElement) {\n\n let args = {\n height: cthis.outerHeight()\n };\n\n\n if (o.embedded_iframe_id) {\n\n args.embedded_iframe_id = o.embedded_iframe_id;\n }\n\n\n var message = {\n name: \"resizeIframe\",\n params: args\n };\n window.parent.postMessage(message, '*');\n }\n}\n","import {dzs_clean_string, is_android, is_ios, player_reinit_findIfPcmNeedsGenerating} from \"../_dzsap_helpers\";\nimport {string_curateClassName} from \"../../js_common/_dzs_helpers\";\nimport {svg_share_icon} from \"../_dzsap_svgs\";\n\n/**\n *\n * @param {jQuery} cthis\n * @param {object} o\n * @param {DzsAudioPlayer} selfClass\n */\nexport function configureAudioPlayerOptionsInitial(cthis, o, selfClass) {\n\n\n selfClass.cthis.addClass('preload-method-' + o.preload_method);\n\n o.wavesurfer_pcm_length = Number(o.wavesurfer_pcm_length);\n\n\n o.settings_trigger_resize = parseInt(o.settings_trigger_resize, 10);\n\n\n if (isNaN(parseInt(o.design_thumbh, 10)) === false) {\n o.design_thumbh = parseInt(o.design_thumbh, 10);\n }\n\n if (o.skinwave_wave_mode === '') {\n o.skinwave_wave_mode = 'canvas';\n }\n if (o.skinwave_enableSpectrum === 'on') {\n o.skinwave_wave_mode = 'canvas';\n }\n if (o.skinwave_wave_mode_canvas_normalize === '') {\n o.skinwave_wave_mode_canvas_normalize = 'on';\n }\n if (o.skinwave_wave_mode_canvas_waves_number === '' || isNaN(Number(o.skinwave_wave_mode_canvas_waves_number))) {\n o.skinwave_wave_mode_canvas_waves_number = 3;\n }\n\n\n if (o.autoplay === 'on' && o.cue === 'on') {\n o.preload_method = 'auto';\n }\n\n cthis.addClass(o.extra_classes_player)\n\n if (o.design_skin === '') {\n o.design_skin = 'skin-default';\n }\n\n\n if (selfClass.cthis.find('.feed-dzsap--embed-code').length) {\n\n selfClass.feedEmbedCode = selfClass.cthis.find('.feed-dzsap--embed-code').eq(0).html();\n } else {\n if (o.embed_code !== '') {\n selfClass.feedEmbedCode = o.embed_code;\n }\n }\n\n if (is_ios()) {\n\n if (selfClass.initOptions.skinwave_enableSpectrum === 'on') {\n selfClass.initOptions.skinwave_enableSpectrum = 'off';\n }\n\n }\n\n const skin_regex = / skin-/g;\n\n\n if (skin_regex.test(cthis.attr('class'))) {\n\n } else {\n\n cthis.addClass(o.design_skin);\n }\n\n\n if (cthis.hasClass('skin-default')) {\n o.design_skin = 'skin-default';\n }\n if (cthis.hasClass('skin-wave')) {\n o.design_skin = 'skin-wave';\n }\n if (cthis.hasClass('skin-justthumbandbutton')) {\n o.design_skin = 'skin-justthumbandbutton';\n }\n if (cthis.hasClass('skin-pro')) {\n o.design_skin = 'skin-pro';\n }\n if (cthis.hasClass('skin-aria')) {\n o.design_skin = 'skin-aria';\n }\n if (cthis.hasClass('skin-silver')) {\n o.design_skin = 'skin-silver';\n }\n if (cthis.hasClass('skin-redlights')) {\n o.design_skin = 'skin-redlights';\n }\n if (cthis.hasClass('skin-steel')) {\n o.design_skin = 'skin-steel';\n }\n if (cthis.hasClass('skin-customcontrols')) {\n o.design_skin = 'skin-customcontrols';\n }\n\n\n if (o.design_skin === 'skin-wave') {\n if (o.scrubbar_type === 'auto') {\n o.scrubbar_type = 'wave';\n }\n }\n if (o.scrubbar_type === 'auto') {\n o.scrubbar_type = 'bar';\n }\n\n if (o.settings_php_handler === 'wpdefault') {\n o.settings_php_handler = window.ajaxurl;\n }\n if (o.action_received_time_total === 'wpdefault') {\n o.action_received_time_total = window.dzsap_send_total_time;\n }\n if (o.action_video_contor_60secs === 'wpdefault') {\n o.action_video_contor_60secs = window.action_video_contor_60secs;\n }\n\n\n if (is_ios() || is_android()) {\n o.autoplay = 'off';\n o.disable_volume = 'on';\n if (o.cueMedia === 'off') {\n o.cueMedia = 'on';\n }\n o.cueMedia = 'on';\n }\n\n if (cthis.attr('data-viewsubmitted') === 'on') {\n selfClass.ajax_view_submitted = 'on';\n\n\n }\n if (cthis.attr('data-userstarrating')) {\n selfClass.starrating_alreadyrated = Number(cthis.attr('data-userstarrating'));\n }\n\n if (cthis.attr('data-loop') === 'on') {\n selfClass.initOptions.loop = 'on';\n }\n\n\n if (cthis.hasClass('skin-minimal')) {\n o.design_skin = 'skin-minimal';\n if (o.disable_volume === 'default') {\n o.disable_volume = 'on';\n }\n\n if (o.disable_scrub === 'default') {\n o.disable_scrub = 'on';\n }\n o.disable_timer = 'on';\n }\n if (cthis.hasClass('skin-minion')) {\n o.design_skin = 'skin-minion';\n if (o.disable_volume === 'default') {\n o.disable_volume = 'on';\n }\n\n if (o.disable_scrub === 'default') {\n o.disable_scrub = 'on';\n }\n\n o.disable_timer = 'on';\n }\n\n\n if (o.design_color_bg) {\n o.design_wave_color_bg = o.design_color_bg;\n }\n\n\n if (o.design_color_highlight) {\n o.design_wave_color_progress = o.design_color_highlight;\n }\n\n\n if (o.design_skin === 'skin-justthumbandbutton') {\n if (o.design_thumbh === 'default') {\n o.design_thumbh = '';\n\n }\n o.disable_timer = 'on';\n o.disable_volume = 'on';\n\n if (o.design_animateplaypause === 'default') {\n o.design_animateplaypause = 'on';\n }\n }\n if (o.design_skin === 'skin-redlights') {\n o.disable_timer = 'on';\n o.disable_volume = 'off';\n if (o.design_animateplaypause === 'default') {\n o.design_animateplaypause = 'on';\n }\n\n }\n if (o.design_skin === 'skin-steel') {\n if (o.disable_timer === 'default') {\n\n o.disable_timer = 'off';\n }\n o.disable_volume = 'on';\n if (o.design_animateplaypause === 'default') {\n o.design_animateplaypause = 'on';\n }\n\n\n if (o.disable_scrub === 'default') {\n o.disable_scrub = 'on';\n }\n\n }\n if (o.design_skin === 'skin-customcontrols') {\n if (o.disable_timer === 'default') {\n\n o.disable_timer = 'on';\n }\n o.disable_volume = 'on';\n if (o.design_animateplaypause === 'default') {\n o.design_animateplaypause = 'on';\n }\n\n\n if (o.disable_scrub === 'default') {\n o.disable_scrub = 'on';\n }\n\n }\n\n if (o.skinwave_wave_mode_canvas_mode === 'reflecto') {\n o.skinwave_wave_mode_canvas_reflection_size = 0.5;\n\n\n }\n\n if (o.skinwave_wave_mode_canvas_mode === 'reflecto') {\n o.skinwave_wave_mode_canvas_reflection_size = 0.5;\n\n }\n\n\n if (o.embed_code === '') {\n if (cthis.find('div.feed-embed-code').length > 0) {\n o.embed_code = cthis.find('div.feed-embed-code').eq(0).html();\n }\n }\n\n if (o.design_animateplaypause === 'default') {\n o.design_animateplaypause = 'off';\n }\n\n if (o.design_animateplaypause === 'on') {\n cthis.addClass('design-animateplaypause');\n }\n\n if (window.dzsap_settings) {\n if (window.dzsap_settings.ajax_url) {\n if (!o.settings_php_handler) {\n\n o.settings_php_handler = window.dzsap_settings.ajax_url;\n }\n }\n }\n\n if (o.settings_php_handler) {\n selfClass.urlToAjaxHandler = o.settings_php_handler;\n } else {\n if (window.dzsap_settings && window.dzsap_settings.php_handler) {\n\n selfClass.urlToAjaxHandler = window.dzsap_settings.php_handler;\n }\n }\n\n\n player_reinit_findIfPcmNeedsGenerating(selfClass);\n\n}\n\nexport function player_detect_skinwave_mode() {\n\n const selfClass = this;\n\n\n selfClass.skinwave_mode = selfClass.initOptions.skinwave_mode;\n\n if (selfClass.cthis.hasClass('skin-wave-mode-small')) {\n selfClass.skinwave_mode = 'small'\n }\n if (selfClass.cthis.hasClass('skin-wave-mode-alternate')) {\n selfClass.skinwave_mode = 'alternate'\n }\n if (selfClass.cthis.hasClass('skin-wave-mode-bigwavo')) {\n selfClass.skinwave_mode = 'bigwavo'\n }\n}\n\n\n\nexport function player_viewApplySkinWaveModes(selfClass) {\n\n\n var o = selfClass.initOptions;\n\n selfClass.cthis.removeClass('skin-wave-mode-normal');\n\n if (o.design_skin === 'skin-wave') {\n selfClass.cthis.addClass('skin-wave-mode-' + selfClass.skinwave_mode);\n\n\n selfClass.cthis.addClass('skin-wave-wave-mode-' + o.skinwave_wave_mode);\n if (o.skinwave_enableSpectrum === 'on') {\n selfClass.cthis.addClass('skin-wave-is-spectrum');\n }\n selfClass.cthis.addClass('skin-wave-wave-mode-canvas-mode-' + o.skinwave_wave_mode_canvas_mode);\n }\n\n\n}\n\nexport function player_determineHtmlAreas(selfClass) {\n\n var o = selfClass.initOptions;\n\n\n let extraHtmlBottom = '';\n let extraHtmlControlsLeft = '';\n let extraHtmlControlsRight = '';\n\n\n if (selfClass.cthis.children('.feed-dzsap--extra-html').length > 0 && o.settings_extrahtml === '') {\n selfClass.cthis.children('.feed-dzsap--extra-html').each(function () {\n\n let newExtraHtmlSectionClassName = string_curateClassName(this.className);\n extraHtmlBottom += `<section class=\"dzsap-extra-html--section-bottom ${newExtraHtmlSectionClassName}\">${this.innerHTML}</section>`;\n })\n selfClass.cthis.children('.feed-dzsap--extra-html').remove();\n } else {\n if (o.settings_extrahtml) {\n extraHtmlBottom = o.settings_extrahtml;\n }\n }\n\n\n if (selfClass.cthis.children('.feed-dzsap--extra-html-in-controls-left').length > 0) {\n extraHtmlControlsLeft = selfClass.cthis.children('.feed-dzsap--extra-html-in-controls-left').eq(0).html();\n }\n if (selfClass.cthis.children('.feed-dzsap--extra-html-in-controls-right').length > 0) {\n extraHtmlControlsRight = selfClass.cthis.children('.feed-dzsap--extra-html-in-controls-right').eq(0).html();\n }\n if (selfClass.cthis.children('.feed-dzsap--extra-html-bottom').length > 0) {\n extraHtmlBottom = selfClass.cthis.children('.feed-dzsap--extra-html-bottom').eq(0).html();\n }\n\n\n selfClass.extraHtmlAreas.controlsLeft = extraHtmlControlsLeft;\n selfClass.extraHtmlAreas.controlsRight = extraHtmlControlsRight;\n selfClass.extraHtmlAreas.bottom = extraHtmlBottom;\n\n\n if (selfClass.extraHtmlAreas.controlsRight) {\n selfClass.extraHtmlAreas.controlsRight = String(selfClass.extraHtmlAreas.controlsRight).replace(/{{svg_share_icon}}/g, svg_share_icon);\n }\n\n\n for (var key in selfClass.extraHtmlAreas) {\n\n selfClass.extraHtmlAreas[key] = String(selfClass.extraHtmlAreas[key]).replace('{{heart_svg}}', '\\t♥');\n selfClass.extraHtmlAreas[key] = String(selfClass.extraHtmlAreas[key]).replace('{{embed_code}}', selfClass.feedEmbedCode);\n }\n}\n\n\nexport function player_determineActualPlayer(selfClass) {\n\n var $ = jQuery;\n var $fakePlayer = $(selfClass.cthis.attr('data-fakeplayer'));\n\n\n if ($fakePlayer.length === 0) {\n $fakePlayer = $(String(selfClass.cthis.attr('data-fakeplayer')).replace('#', '.'));\n if ($fakePlayer.length) {\n selfClass._actualPlayer = $(String(selfClass.cthis.attr('data-fakeplayer')).replace('#', '.'));\n selfClass.cthis.attr('data-fakeplayer', String(selfClass.cthis.attr('data-fakeplayer')).replace('#', '.'));\n }\n }\n\n if ($fakePlayer.length === 0) {\n selfClass.cthis.attr('data-fakeplayer', '');\n } else {\n selfClass.cthis.addClass('player-is-feeding is-source-player-for-actual-player');\n if (selfClass.cthis.attr('data-type')) {\n selfClass._actualPlayer = $(selfClass.cthis.attr('data-fakeplayer')).eq(0);\n selfClass._actualPlayer.addClass('player-is-feeded');\n selfClass.actualDataTypeOfMedia = selfClass.cthis.attr('data-type');\n selfClass.cthis.attr('data-original-type', selfClass.actualDataTypeOfMedia);\n }\n }\n}\n\n\nexport function player_adjustIdentifiers(selfClass) {\n\n selfClass.identifier_pcm = selfClass.the_player_id;\n\n\n var _feed_obj = null;\n\n if (selfClass.$feed_fakeButton) {\n _feed_obj = selfClass.$feed_fakeButton;\n } else {\n if (selfClass._sourcePlayer) {\n _feed_obj = selfClass._sourcePlayer;\n } else {\n _feed_obj = null;\n }\n }\n\n\n if (selfClass.identifier_pcm === 'dzs_footer') {\n selfClass.identifier_pcm = dzs_clean_string(selfClass.cthis.attr('data-source'));\n }\n\n if (_feed_obj) {\n if (_feed_obj.attr('data-playerid')) {\n selfClass.identifier_pcm = _feed_obj.attr('data-playerid');\n } else {\n if (_feed_obj.attr('data-source')) {\n selfClass.identifier_pcm = _feed_obj.attr('data-source');\n }\n }\n }\n\n if (typeof selfClass.identifier_pcm === 'string') {\n selfClass.identifier_pcm = selfClass.identifier_pcm.replace('ap', '');\n }\n\n}\n","/*\n * Author: Audio Player with Playlist\n * Website: https://digitalzoomstudio.net/\n * Portfolio: https://bit.ly/nM4R6u\n * Version: 6.41\n * */\n\"use strict\";\n\nimport {\n assignHelperFunctionsToJquery,\n convertPluginOptionsToFinalOptions,\n dzsap_is_mobile,\n dzsap_singleton_ready_calls,\n formatTime,\n is_android,\n is_ios,\n is_safari,\n jQueryAuxBindings,\n player_delete,\n player_determineStickToBottomContainer,\n player_getPlayFromTime,\n player_identifySource,\n player_identifyTypes,\n player_isGoingToSetupMediaNow,\n player_service_getSourceProtection,\n player_stickToBottomContainerDetermineClasses,\n player_stopOtherPlayers,\n player_syncPlayers_buildList,\n player_view_addMetaLoaded,\n playerFunctions,\n playerRegisterWindowFunctions,\n sanitizeToIntFromPointTime,\n view_player_globalDetermineSyncPlayersIndex,\n view_player_playMiscEffects,\n waitForScriptToBeAvailableThenExecute\n} from './jsinc/_dzsap_helpers';\nimport {dzsap_jQueryInit, getBaseUrl, isInt, loadScriptIfItDoesNotExist} from './js_common/_dzs_helpers';\nimport {\n destroy_cmedia,\n destroy_media,\n media_handleEventEnd,\n media_pause,\n media_tryToPlay,\n mediaSetup,\n} from \"./jsinc/media/_media_functions\";\nimport {PlayerTime} from './jsinc/_dzsap_time_model';\nimport {ajax_submit_download, ajax_submit_total_time, ajax_submit_views} from \"./jsinc/_dzsap_ajax\";\n\nimport {\n DZSAP_PLAYER_ATTR_PLAY_FROM_LAST_POS,\n DZSAP_PLAYER_CLASS_LOADED, DZSAP_PLAYER_TYPE_FOR_ACCEPTING_FEED,\n DZSAP_VIEW_PLAYER_PLAYING_EASED_TIMEOUT\n} from \"./configs/_constants\";\nimport {_ClassMetaParts} from \"./jsinc/helper-classes/_ClassMetaParts\";\nimport {pausebtn_svg, playbtn_svg, svg_share_icon} from \"./jsinc/_dzsap_svgs\";\nimport {retrieve_soundcloud_url} from \"./jsinc/_dzsap_misc\";\nimport {setup_structure} from \"./jsinc/components/_structure\";\nimport {\n scrubModeWave__checkIfWeShouldTryToGetPcm,\n view_drawCanvases,\n} from \"./jsinc/wave-render/_wave-render-functions\";\nimport {defaultPlayerOptions} from \"./configs/_settingsPlayer\";\nimport {dzsap_oneTimeSetups} from \"./jsinc/player/_player-one-time-setups\";\nimport {dzsap_generate_keyboard_controls} from \"./jsinc/player/_player_keyboard\";\nimport {checkIfNeedsSongNameRefresh} from \"./jsinc/player/features/_zoomsounds-radio-features\";\nimport {player_initSpectrum, view_spectrum_drawMeter} from \"./jsinc/player/_player_scrubModeWave_spectrum\";\nimport {player_commentsSelectorInit} from \"./jsinc/player/_player_commentsSelector\";\nimport {player_setupMiscButtons} from \"./jsinc/player/_player_setupMiscButtons\";\nimport {dzsap_player_touchFunctionalitySetup} from \"./jsinc/player/_player_touchFunctionality\";\nimport {player_menuStateSetup} from \"./jsinc/player/_player_menuState\";\nimport {\n player_nextPrevButtonsSetup,\n syncPlayers_gotoNext,\n syncPlayers_gotoPrev\n} from \"./jsinc/player/_player_nextPrevButtons\";\nimport {\n getDefaultVolume,\n player_volumeSetup,\n volume_setOnlyVisual,\n volume_setVolume\n} from \"./jsinc/player/_player_volume\";\nimport {\n player_actualPlayerPause,\n player_actualPlayerPlay,\n player_feederSeekTo,\n player_sourcePlayerPauseVisual,\n player_sourcePlayerPlayVisual\n} from \"./jsinc/player/_player_feederFunctions\";\nimport {player_scrubbarSetup} from \"./jsinc/player/_player_scrubbar\";\nimport {\n scrubbar_modeWave_setupCanvas,\n view_player_scrubModeWaveAdjustCurrTimeAndTotalTime\n} from \"./jsinc/player/_player_scrubModeWave\";\nimport {view_resizeEmbedded, view_resizeHandleTreatSkins} from \"./jsinc/player/_player_viewSetup\";\nimport {\n player_setupStructure_thumbnailCon,\n} from \"./jsinc/view/player/_view_playerStructure\";\nimport {\n configureAudioPlayerOptionsInitial, player_adjustIdentifiers,\n player_detect_skinwave_mode, player_determineActualPlayer, player_determineHtmlAreas,\n player_viewApplySkinWaveModes\n} from \"./jsinc/player/_player_config\";\n\n/** list for autoplay -- this is for the players */\nwindow.dzsap_list = [];\n\nlet dzsap_globalidind = 1;\n\nwindow.dzsap_inited = true;\nwindow.loading_multi_sharer = false;\n\nwindow.dzsap_player_interrupted_by_dzsap = null;\nwindow.dzsap_audio_ctx = null;\nwindow.dzsap__style = null;\nwindow.dzsap_sticktobottom_con = null;\n\nwindow.dzsap_self_options = {};\n\nwindow.dzsap_generating_pcm = false;\nwindow.dzsap_box_main_con = null;\nwindow.dzsap_lasto = null;\n\n/** list for sync -- used for next .. prev .. footer playlist */\nwindow.dzsap_syncList_players = [];\nwindow.dzsap_syncList_index = 0; // -- used for next .. prev .. footer playlist\nwindow.dzsap_base_url = '';\n\nwindow.dzsap_player_index = 0; // -- the player index on the page\n\n\n/** announcers can subscribe to this action */\nif (!window.dzsap_action_play_listeners) {\n window.dzsap_action_play_listeners = [];\n}\n\n/**\n * @property {boolean} isAlreadyHasRealPcm\n * @property {boolean} isPcmRequiredToGenerate\n * @property {boolean} isMultiSharer\n * @property {string} identifier_pcm\n * @property {string} urlToAjaxHandler\n * @property {array<number>} pcmSource\n * @property {array<number>} last_lastArray\n * @property {object} last_lastArray\n * @property {AnalyserNode} spectrum_analyser\n * @property {HTMLElement} _sourcePlayer\n * @property {HTMLElement} $mediaNode_\n * @constructor\n * @public\n */\nclass DzsAudioPlayer {\n constructor(argThis, argOptions, $) {\n\n this.argThis = argThis;\n this.argOptions = Object.assign({}, argOptions);\n this.$ = $;\n this.cthis = null;\n\n this.ajax_view_submitted = 'auto';\n this.increment_views = 0;\n this.the_player_id = '';\n this.currIp = '127.0.0.1';\n this.index_extrahtml_toloads = 0;\n this.starrating_alreadyrated = -1;\n this.data_source = '';\n this.pcmSource = null;\n\n this.urlToAjaxHandler = null;\n\n\n this.playFrom = '';\n\n\n this._actualPlayer = null;\n this._audioplayerInner = null;\n this._metaArtistCon = null;\n this._conControls = null;\n this._conPlayPauseCon = null;\n this._apControls = null;\n this._apControlsLeft = null;\n this._apControlsRight = null;\n this._commentsHolder = null;\n this.$mediaNode_ = null;\n this._scrubbar = null;\n this._scrubbarbg_canvas = null;\n this._scrubBgCanvasCtx = null;\n this._scrubbarprog_canvas = null;\n this.$feed_fakeButton = null;\n this._sourcePlayer = null;\n this.$theMedia = null;\n this.$conPlayPause = null; // -- [selector] .con-playpause\n this.$conControls = null;\n this.$$scrubbProg = null;\n this.$controlsVolume = null;\n this.$currTime = null;\n this.$parentPlaylist = null;\n this.$totalTime = null;\n this.$commentsWritter = null;\n this.$commentsChildren = null;\n this.$commentsSelector = null;\n this.$embedButton = null;\n /** a reflection object for triggering the player from outside */\n this.$reflectionVisualObject = null;\n\n\n this.audioType = 'normal';\n this.audioTypeSelfHosted_streamType = '';\n this.skinwave_mode = 'normal';\n this.action_audio_comment = null; // -- set a outer ended function ( for example for tracking your analytics\n\n this.commentPositionPerc = 0;// -- the % at which the comment will be placed\n\n this.spectrum_audioContext = null;\n this.spectrum_audioContextBufferSource = null;\n this.spectrum_audioContext_buffer = null;\n this.spectrum_mediaElementSource = null;\n this.spectrum_analyser = null;\n this.spectrum_gainNode = null;\n\n this.isMultiSharer = false;\n this.hasInitialPcmData = false;\n\n this.lastArray = null;\n this.last_lastArray = null;\n\n this.isPlayerPlaying = false;\n /** leaves a easing before ending play */\n this.isPlayerPlayingEased = false;\n this.isPlayerPlayingEasedInterval = null;\n\n this.actualDataTypeOfMedia = 'audio'; // \"audio\" or\n\n this.youtube_retryPlayTimeout = 0;\n this.lastTimeInSeconds = 0;\n this.inter_checkReady = 0;\n this.cthisWidth = 0;\n\n // -- sticky player\n\n this.isStickyPlayer = false;\n this.$stickToBottomContainer = null;\n\n\n // -- pcm\n this.uniqueId = '';\n this.identifier_pcm = ''; // -- can be either player id or source if player id is not set\n this.isAlreadyHasRealPcm = false;\n this.isPcmTryingToGenerate = false;\n this.isPlayPromised = false // -- we are promising generating on meta load\n this.isCanvasFirstDrawn = false // -- the first draw on canvas\n this.isPlayerLoaded = false;\n\n this.original_real_mp3 = '' // -- this is the original real mp3 for sainvg and identifying in the database\n\n // -- theme specific\n this.skin_minimal_canvasplay = null;\n\n this.classFunctionalityInnerPlaylist = null;\n this.feedEmbedCode = '';\n\n this.youtube_currentId = 0;\n this.youtube_isInited = false;\n\n this.extraHtmlAreas = {\n bottom: '',\n afterArtist: '',\n controlsLeft: '',\n controlsRight: '',\n }\n\n // -- time vars\n this.sample_time_start = 0;\n this.sample_time_end = 0;\n this.sample_time_total = 0;\n\n this.playlist_inner_currNr = 0\n this.canvasWidth = null;\n this.heightCanvas = null;\n\n this.timeCurrent = 0; // -- *deprecated\n this.timeModel = new PlayerTime(this);\n\n this.isSample = false;\n this.isSafeToChangeTrack = false // -- only after 2 seconds of init is it safe to change track\n this.isMediaEnded = false;\n /** is first setuped media */\n this.isSetupedMedia = false;\n this.isSentCacheTotalTime = false;\n this.isPcmRequiredToGenerate = false;\n this.radio_isGoingToUpdateSongName = false;\n this.radio_isGoingToUpdateArtistName = false;\n this.mediaProtectionStatus = 'unprotected';\n\n this.classMetaParts = new _ClassMetaParts(this);\n\n this.inter_isEnded = 0;\n\n\n argThis.SelfInstance = this;\n this.classInit();\n }\n\n set_sourcePlayer($arg) {\n if ($arg) {\n if ($arg.get(0) != this.cthis.get(0)) {\n this._sourcePlayer = $arg;\n }\n } else {\n this._sourcePlayer = $arg;\n }\n }\n\n\n reinit_beforeChangeMedia() {\n this.hasInitialPcmData = false;\n this.isPcmRequiredToGenerate = false;\n this.isAlreadyHasRealPcm = false;\n this.cthis.attr('data-pcm', '');\n }\n\n reinit_resetMetrics() {\n this.isPlayerLoaded = false;\n }\n\n\n service_checkIfWeShouldUpdateTotalTime() {\n ajax_submit_total_time(this);\n }\n\n classInit() {\n\n const $ = this.$;\n const o = this.argOptions;\n let cthis = $(this.argThis);\n\n const selfClass = this;\n\n\n selfClass.cthis = cthis;\n selfClass.initOptions = o;\n\n selfClass.volume_lastVolume = 1;\n selfClass.isScrubShowingCurrentTime = false;\n selfClass.scrubbarWidth = 0;\n selfClass.scrubbarProgX = 0;\n selfClass.currTime_outerWidth = 0;\n\n var cthisId = 'ap1'\n ;\n var ww, th // -- controls width\n ;\n var\n isDestroyed = false,\n isDestroyedForRebuffer = false\n , media_isLoopActive = false // -- if loop_active the track will loop\n , curr_time_first_set = false\n , isListenersSetup = false\n ;\n var last_time_total = 0\n , player_index_in_gallery = -1 // -- the player index in gallery\n ;\n\n\n var inter_60_secs_contor = 0\n , inter_trigger_resize;\n var data_station_main_url = ''\n ;\n\n var is_under_400 = false\n\n\n ; // resize thumb height\n\n\n var skin_minimal_button_size = 0;\n\n\n var action_audio_end = null\n , action_audio_play = null\n , action_audio_play2 = null\n , action_audio_pause = null\n\n\n let isRenderingFrame = false,\n isRenderingFrameInterval = null,\n spectrum_fakeItMode = 'auto'\n ;\n\n\n var draw_canvas_inter = 0;\n\n\n window.dzsap_player_index++;\n\n\n selfClass.timeModel.getSampleTimesFromDom();\n\n\n init();\n\n function init() {\n\n\n if (cthis.hasClass('dzsap-inited')) {\n return false;\n }\n\n selfClass.play_media_visual = play_media_visual;\n selfClass.play_media = play_media;\n selfClass.pause_media = pause_media;\n selfClass.pause_media_visual = pause_media_visual;\n selfClass.seek_to = seek_to;\n selfClass.reinit = reinit;\n\n selfClass.handle_end = media_handleEnd;\n selfClass.init_loaded = init_loaded;\n selfClass.scrubbar_reveal = scrubbar_reveal;\n selfClass.calculate_dims_time = calculate_dims_time;\n selfClass.check_multisharer = check_multisharer;\n selfClass.setup_structure_scrub = setup_structure_scrub;\n selfClass.setup_structure_sanitizers = setup_structure_sanitizers;\n selfClass.destroy_cmedia = () => {\n destroy_cmedia(selfClass);\n };\n selfClass.view_drawCurrentTime = view_drawCurrentTime;\n selfClass.setupStructure_thumbnailCon = setupStructure_thumbnailCon;\n selfClass.setup_pcm_random_for_now = view_wave_setupRandomPcm;\n selfClass.handleResize = view_handleResize;\n selfClass.destroy_media = () => {\n destroy_media(selfClass, pause_media);\n };\n\n cthis.css({'opacity': ''});\n cthis.addClass('dzsap-inited');\n window.dzsap_player_index++;\n\n\n if (o.parentgallery) {\n selfClass.$parentPlaylist = o.parentgallery;\n }\n selfClass.keyboard_controls = dzsap_generate_keyboard_controls();\n\n configureAudioPlayerOptionsInitial(cthis, o, selfClass);\n\n if (o.loop === 'on') {\n media_isLoopActive = true;\n }\n\n\n (player_detect_skinwave_mode.bind(selfClass))()\n\n\n if (dzsap_is_mobile()) {\n $('body').addClass('is-mobile');\n if (o.mobile_delete === 'on') {\n player_delete(selfClass);\n }\n // -- disable fakeplayer on mobile for some reason\n if (o.mobile_disable_fakeplayer === 'on') {\n selfClass.cthis.attr('data-fakeplayer', '');\n }\n }\n\n\n player_viewApplySkinWaveModes(selfClass);\n\n\n playerFunctions(selfClass, 'detectIds');\n\n\n if (cthis.attr('data-fakeplayer')) {\n player_determineActualPlayer(selfClass);\n }\n\n selfClass.cthis.addClass('scrubbar-type-' + o.scrubbar_type);\n\n\n player_determineHtmlAreas(selfClass);\n\n\n // -- syncPlayers build\n if (window.dzsap_settings.syncPlayers_buildList === 'on') {\n player_syncPlayers_buildList()\n }\n\n\n player_getPlayFromTime(selfClass);\n\n\n player_adjustIdentifiers(selfClass);\n player_identifySource(selfClass);\n player_identifyTypes(selfClass);\n\n\n if (selfClass.audioType === 'youtube') {\n window.dzsap_get_base_url();\n const scriptUrl = window.dzsap_base_url ? window.dzsap_base_url + '/parts/youtube/dzsap-youtube-functions.js' : '';\n loadScriptIfItDoesNotExist(scriptUrl, window.dzsap_youtube_functions_inited).then((resolveStr) => {\n window.dzsap_youtube_functions_init(selfClass);\n });\n }\n\n\n selfClass.audioTypeSelfHosted_streamType = '';\n\n\n if (selfClass.audioType === 'selfHosted') {\n if (cthis.attr('data-streamtype') && cthis.attr('data-streamtype') !== 'off') {\n selfClass.audioTypeSelfHosted_streamType = cthis.attr('data-streamtype');\n data_station_main_url = selfClass.data_source;\n cthis.addClass('is-radio-type');\n } else {\n selfClass.audioTypeSelfHosted_streamType = '';\n }\n }\n\n // -- no shoutcast autoupdate at the moment 2 3 4 5 6 7 8\n if (selfClass.audioTypeSelfHosted_streamType === 'shoutcast') {\n\n // -- todo: we\n }\n\n\n // -- we disable the function if audioplayer inited\n if (cthis.hasClass('audioplayer')) {\n return;\n }\n\n if (cthis.attr('id') !== undefined) {\n cthisId = cthis.attr('id');\n } else {\n cthisId = 'ap' + dzsap_globalidind++;\n }\n\n\n selfClass.youtube_currentId = 'ytplayer_' + cthisId;\n\n\n cthis.removeClass('audioplayer-tobe');\n cthis.addClass('audioplayer');\n\n view_drawScrubProgress();\n setTimeout(function () {\n view_drawScrubProgress()\n }, 1000);\n\n\n // -- ios does not support volume controls so just let it die\n // -- .. or autoplay FORCE STAFF\n\n\n if (o.cueMedia === 'off') {\n\n // -- cue is forcing autoplay on\n cthis.addClass('cue-off');\n o.autoplay = 'on';\n }\n\n\n //====sound cloud INTEGRATION //\n if (selfClass.audioType === 'soundcloud') {\n retrieve_soundcloud_url(selfClass);\n }\n // -- END soundcloud INTEGRATION//\n\n\n setup_structure(selfClass, {}); // -- inside init()\n\n // -- trying to access the youtube api with ios did not work\n\n\n if (o.scrubbar_type === 'wave' && (selfClass.audioType === 'selfHosted' || selfClass.audioType === 'soundcloud' || selfClass.audioType === 'fake') && o.skinwave_comments_enable === 'on') {\n\n waitForScriptToBeAvailableThenExecute(window.dzsap_part_comments_loaded, () => {\n window.comments_setupCommentsInitial(selfClass);\n })\n }\n\n\n if (o.autoplay === 'on' && o.cueMedia === 'on') {\n selfClass.increment_views = 1;\n }\n\n\n // -- soundcloud will setupmedia when api done\n\n if (o.cueMedia === 'on' && selfClass.audioType !== 'soundcloud') {\n if (is_android() || is_ios()) {\n cthis.find('.playbtn').on('click', play_media);\n }\n\n\n if (selfClass.data_source && selfClass.data_source.indexOf('{{generatenonce}}') > -1) {\n\n\n selfClass.mediaProtectionStatus = 'fetchingProtection';\n player_service_getSourceProtection(selfClass).then((response) => {\n if (response) {\n cthis.attr('data-source', response);\n setup_media({'called_from': 'nonce generated', 'newSource': response});\n\n selfClass.mediaProtectionStatus = 'protectedMode';\n }\n\n });\n } else {\n\n const isGoingToSetupMediaNow = player_isGoingToSetupMediaNow(selfClass);\n\n if (selfClass.audioType === 'selfHosted') {\n checkIfNeedsSongNameRefresh(selfClass);\n }\n\n if (isGoingToSetupMediaNow) {\n setup_media({'called_from': 'normal setup media .. --- icecast must wait'});\n }\n\n }\n\n\n } else {\n\n\n cthis.find('.playbtn').on('click', handleClickForSetupMedia);\n cthis.find('.scrubbar').on('click', handleClickForSetupMedia);\n view_handleResize(null, {\n called_from: 'init'\n });\n }\n\n\n // -- we call the api functions here\n\n\n player_determineStickToBottomContainer(selfClass);\n player_stickToBottomContainerDetermineClasses(selfClass);\n\n\n selfClass.timeModel.initObjects();\n\n // -- api calls\n selfClass.setup_media = setup_media;\n\n cthis.get(0).classInstance = selfClass;\n\n cthis.get(0).api_init_loaded = init_loaded; // -- force resize event\n cthis.get(0).api_destroy = destroy_it; // -- destroy the player and the listeners\n\n cthis.get(0).api_play = play_media; // -- play the media\n\n cthis.get(0).api_set_volume = (arg, pargs) => {\n volume_setVolume(selfClass, arg, pargs);\n }; // -- set a volume\n cthis.get(0).api_get_last_vol = volume_getLast; // -- play the media\n\n cthis.get(0).api_get_source = () => {\n return selfClass.data_source;\n }; // -- play the media\n\n cthis.get(0).api_click_for_setup_media = handleClickForSetupMedia; // -- play the media\n\n cthis.get(0).api_handleResize = view_handleResize; // -- force resize event\n cthis.get(0).api_set_playback_speed = set_playback_speed; // -- set the playback speed, only works for local hosted mp3\n cthis.get(0).api_seek_to_perc = seek_to_perc; // -- seek to percentage ( for example seek to 0.5 skips to half of the song )\n cthis.get(0).api_seek_to = seek_to; // -- seek to percentage ( for example seek to 0.5 skips to half of the song )\n cthis.get(0).api_seek_to_visual = seek_to_visual; // -- seek to perchange but only visually ( does not actually skip to that ) , good for a fake player\n cthis.get(0).api_visual_set_volume = (arg, pargs) => {\n volume_setOnlyVisual(selfClass, arg, pargs);\n } // -- set a volume\n cthis.get(0).api_destroy_listeners = destroy_listeners; // -- set a volume\n\n cthis.get(0).api_pause_media = pause_media; // -- pause the media\n cthis.get(0).api_get_media_isLoopActive = () => {\n return media_isLoopActive;\n }; // -- pause the media\n cthis.get(0).api_media_toggleLoop = media_toggleLoop; // -- pause the media\n cthis.get(0).api_pause_media_visual = pause_media_visual; // -- pause the media, but only visually\n cthis.get(0).api_play_media = play_media; // -- play the media\n cthis.get(0).api_play_media_visual = play_media_visual; // -- play the media, but only visually\n cthis.get(0).api_handle_end = media_handleEnd; // -- play the media, but only visually\n cthis.get(0).api_change_visual_target = change_visual_target; // -- play the media, but only visually\n cthis.get(0).api_change_design_color_highlight = view_updateColorHighlight; // -- play the media, but only visually\n cthis.get(0).api_draw_scrub_prog = view_drawScrubProgress; // -- render the scrub progress\n cthis.get(0).api_draw_curr_time = view_drawCurrentTime; // -- render the current time\n cthis.get(0).api_get_times = selfClass.timeModel.refreshTimes; // -- refresh the current time\n cthis.get(0).api_check_time = handleEnterFrame; // -- do actions required in the current frame\n cthis.get(0).api_sync_players_goto_next = () => {\n syncPlayers_gotoNext(selfClass);\n }; // -- in the sync playlist, go to the next song\n cthis.get(0).api_sync_players_goto_prev = () => {\n syncPlayers_gotoPrev(selfClass);\n }; // -- in the sync playlist, go to the previous song\n\n\n cthis.get(0).api_step_back = function (nrSeconds) {\n if (!nrSeconds) {\n nrSeconds = selfClass.keyboard_controls.step_back_amount;\n }\n seek_to(selfClass.timeCurrent - nrSeconds);\n }\n cthis.get(0).api_step_forward = function (nrSeconds) {\n\n if (nrSeconds) {\n\n } else {\n nrSeconds = selfClass.keyboard_controls.step_back_amount;\n }\n seek_to(selfClass.timeCurrent + nrSeconds);\n } // --\n /**\n *\n * @param {number} argSpeed - 0 to 1\n */\n cthis.get(0).api_playback_speed = function (argSpeed) {\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.playbackRate) {\n selfClass.$mediaNode_.playbackRate = argSpeed;\n }\n } // -- slow to 2/3 of the current song\n\n\n cthis.get(0).api_set_action_audio_play = function (arg) {\n action_audio_play = arg;\n }; // -- set action on audio play\n cthis.get(0).api_set_action_audio_pause = function (arg) {\n action_audio_pause = arg;\n }; // -- set action on audio pause\n cthis.get(0).api_set_action_audio_end = function (arg) {\n action_audio_end = arg;\n cthis.data('has-action-end', 'on');\n }; // -- set action on audio end\n cthis.get(0).api_set_action_audio_comment = function (arg) {\n selfClass.action_audio_comment = arg;\n }; // -- set the function to call on audio song comment\n cthis.get(0).api_try_to_submit_view = service_submitView; // -- try to submit a new play analytic\n\n\n waitForScriptToBeAvailableThenExecute(window.dzsap_part_mediaChange_loaded, () => {\n window.dzsap_part_mediaChange_init(selfClass, $);\n })\n\n\n if (o.action_audio_play) {\n action_audio_play = o.action_audio_play;\n }\n\n if (o.action_audio_pause) {\n action_audio_pause = o.action_audio_pause;\n }\n\n if (o.action_audio_play2) {\n action_audio_play2 = o.action_audio_play2;\n }\n\n\n if (o.action_audio_end) {\n action_audio_end = o.action_audio_end;\n cthis.data('has-action-end', 'on');\n }\n\n\n handleEnterFrame({\n 'fire_only_once': true\n });\n\n\n if (o.design_skin === 'skin-minimal') {\n handleEnterFrame({\n 'fire_only_once': true\n });\n }\n\n\n player_setupMiscButtons(selfClass, $, seek_to)\n cthis.on('click', '.dzsap-loop-button', handle_mouse);\n cthis.on('mouseenter', handle_mouse);\n cthis.on('mouseleave', handle_mouse);\n\n\n selfClass.$conPlayPause.on('click', handleClick_playPause);\n\n\n $(window).on('resize.dzsap', view_handleResize);\n view_handleResize(null, {\n called_from: 'init'\n });\n\n dzsap_player_touchFunctionalitySetup(selfClass, seek_to_perc, $)\n\n if (o.skinwave_comments_mode_outer_selector) {\n waitForScriptToBeAvailableThenExecute(window.dzsap_part_comments_loaded, () => {\n\n window.player_commentsSelectorInit(selfClass, $, cthis, o);\n })\n }\n\n\n waitForScriptToBeAvailableThenExecute(window.dzsap_part_starRatings_loaded, function () {\n window.dzsap_init_starRatings_from_dzsap(selfClass);\n })\n\n\n setTimeout(function () {\n\n view_handleResize(null, {\n called_from: 'init_timeout'\n });\n\n\n if (o.skinwave_wave_mode === 'canvas') {\n\n calculate_dims_time();\n\n setTimeout(function () {\n calculate_dims_time();\n\n\n }, 100)\n }\n\n }, 100)\n\n\n player_menuStateSetup(cthis, o);\n\n player_nextPrevButtonsSetup(selfClass, cthis, o);\n }\n\n\n function calculate_dims_time() {\n var reflection_size = parseFloat(o.skinwave_wave_mode_canvas_reflection_size);\n\n reflection_size = 1 - reflection_size;\n\n var scrubbarh = selfClass._scrubbar.height();\n if (selfClass.initOptions.scrubbar_type === 'wave') {\n if (selfClass.skinwave_mode === 'small') {\n scrubbarh = 60;\n }\n\n if (selfClass._commentsHolder) {\n if (reflection_size === 0) {\n selfClass._commentsHolder.css('top', selfClass._scrubbar.offset().top - cthis.offset().top + scrubbarh * reflection_size - selfClass._commentsHolder.height());\n } else {\n selfClass._commentsHolder.css('top', selfClass._scrubbar.offset().top - selfClass._scrubbar.parent().offset().top + scrubbarh * reflection_size);\n selfClass.$commentsWritter.css('top', selfClass._scrubbar.offset().top - selfClass._scrubbar.parent().offset().top + scrubbarh * reflection_size);\n }\n }\n\n if (o.design_skin === 'skin-wave') {\n if (selfClass.$currTime) {\n selfClass.$currTime.css('top', scrubbarh * reflection_size - selfClass.$currTime.outerHeight());\n }\n if (selfClass.$totalTime) {\n selfClass.$totalTime.css('top', scrubbarh * reflection_size - selfClass.$totalTime.outerHeight());\n }\n }\n }\n\n cthis.attr('data-reflection-size', reflection_size);\n }\n\n /**\n * change the visual target, the main is the main player selfClass.isPlayerPlaying and the visual target is the player which is a visual representation of this\n * @param arg\n * @param pargs\n */\n function change_visual_target(arg, pargs) {\n\n var margs = {}\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n if (selfClass._sourcePlayer && selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_pause_media_visual) {\n selfClass._sourcePlayer.get(0).api_pause_media_visual({\n 'call_from': 'change_visual_target'\n });\n }\n\n selfClass.set_sourcePlayer(arg);\n\n var $sourcePlayer_ = selfClass._sourcePlayer.get(0);\n if (selfClass.isPlayerPlaying) {\n if (selfClass._sourcePlayer && $sourcePlayer_ && $sourcePlayer_.api_play_media_visual) {\n $sourcePlayer_.api_play_media_visual();\n }\n }\n\n if ($sourcePlayer_ && $sourcePlayer_.api_draw_curr_time) {\n\n\n $sourcePlayer_.api_set_timeVisualCurrent(selfClass.timeCurrent);\n $sourcePlayer_.api_get_times({\n 'call_from': ' change visual target .. in api '\n });\n $sourcePlayer_.api_check_time({\n 'fire_only_once': true\n });\n $sourcePlayer_.api_draw_curr_time();\n $sourcePlayer_.api_draw_scrub_prog();\n }\n\n setTimeout(function () {\n\n if ($sourcePlayer_ && $sourcePlayer_.api_draw_curr_time) {\n $sourcePlayer_.api_get_times();\n $sourcePlayer_.api_check_time({\n 'fire_only_once': true\n });\n $sourcePlayer_.api_draw_curr_time();\n $sourcePlayer_.api_draw_scrub_prog();\n }\n }, 800);\n\n }\n\n function view_updateColorHighlight(arg) {\n\n o.design_wave_color_progress = arg;\n if (o.skinwave_wave_mode === 'canvas') {\n view_drawCanvases(selfClass, cthis.attr('data-pcm'), 'canvas_change_pcm');\n }\n\n }\n\n /**\n * called in init_loaded()\n */\n function reinit() {\n\n if (selfClass.audioType === 'normal' || selfClass.audioType === 'detect' || selfClass.audioType === 'audio') {\n selfClass.audioType = 'selfHosted';\n }\n }\n\n\n function destroy_listeners() {\n\n\n if (isDestroyed) {\n return false;\n }\n\n\n isRenderingFrame = false;\n\n }\n\n\n function destroy_it() {\n\n\n if (isDestroyed) {\n return false;\n }\n\n if (selfClass.isPlayerPlaying) {\n pause_media();\n }\n\n\n $(window).off('resize.dzsap');\n\n cthis.remove();\n cthis = null;\n\n isDestroyed = true;\n }\n\n function handleClickForSetupMedia(e, pargs) {\n\n var margs = {\n\n 'do_not_autoplay': false\n };\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n cthis.find('.playbtn').unbind('click', handleClickForSetupMedia);\n cthis.find('.scrubbar').unbind('click', handleClickForSetupMedia);\n\n setup_media(margs);\n\n\n if (is_android() || is_ios()) {\n play_media({\n 'called_from': 'click_for_setup_media'\n });\n }\n }\n\n\n function init_checkIfReady(pargs) {\n var margs = {\n\n 'do_not_autoplay': false\n };\n\n if (selfClass._actualPlayer && is_ios()) {\n return false;\n }\n\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n if (selfClass.audioType === 'youtube') {\n init_loaded(margs);\n } else {\n if (typeof (selfClass.$mediaNode_) !== 'undefined' && selfClass.$mediaNode_) {\n\n\n if (selfClass.$mediaNode_.nodeName !== \"AUDIO\" || o.type === 'shoutcast') {\n init_loaded(margs);\n } else {\n if (is_safari()) {\n\n if (selfClass.$mediaNode_.readyState >= 1) {\n\n if (selfClass.isPlayerLoaded === false) {\n }\n\n init_loaded(margs);\n clearInterval(selfClass.inter_checkReady);\n\n if (o.action_audio_loaded_metadata) {\n o.action_audio_loaded_metadata(cthis);\n }\n }\n } else {\n if (selfClass.$mediaNode_.readyState >= 2) {\n if (selfClass.isPlayerLoaded === false) {\n }\n init_loaded(margs);\n clearInterval(selfClass.inter_checkReady);\n\n if (o.action_audio_loaded_metadata) {\n o.action_audio_loaded_metadata(cthis);\n }\n }\n }\n\n }\n }\n\n }\n\n }\n\n function scrubbar_reveal() {\n setTimeout(function () {\n selfClass.cthis.addClass('scrubbar-loaded');\n }, 1000);\n }\n\n\n function setupStructure_thumbnailCon() {\n player_setupStructure_thumbnailCon(selfClass);\n }\n\n\n function setup_structure_sanitizers() {\n\n if (cthis.hasClass('zoomsounds-wrapper-bg-bellow') && cthis.find('.dzsap-wrapper-buts').length === 0) {\n\n cthis.append('<div class=\"temp-wrapper\"></div>');\n cthis.find('.temp-wrapper').append(selfClass.extraHtmlAreas.controlsRight);\n cthis.find('.temp-wrapper').children('*:not(.dzsap-wrapper-but)').remove();\n cthis.find('.temp-wrapper > .dzsap-wrapper-but').unwrap();\n cthis.find('.dzsap-wrapper-but').each(function () {\n var aux = $(this).html();\n\n aux = aux.replace('{{heart_svg}}', '\\t♥');\n aux = aux.replace('{{svg_share_icon}}', svg_share_icon);\n\n\n if ($(this).get(0) && $(this).get(0).outerHTML.indexOf('dzsap-multisharer-but') > -1) {\n selfClass.isMultiSharer = true;\n\n }\n\n $(this).html(aux);\n }).wrapAll('<div class=\"dzsap-wrapper-buts\"></div>');\n }\n\n if (o.design_skin === 'skin-customcontrols') {\n cthis.html(String(cthis.html()).replace('{{svg_play_icon}}', playbtn_svg));\n cthis.html(String(cthis.html()).replace('{{svg_pause_icon}}', pausebtn_svg));\n }\n }\n\n\n /**\n * called if we have .dzsap-multisharer-but in html\n */\n function check_multisharer() {\n\n // -- we setup a box main here as a child of body\n\n selfClass.cthis.find('.dzsap-multisharer-but').data('cthis', cthis);\n selfClass.cthis.data('embed_code', selfClass.feedEmbedCode);\n }\n\n function view_wave_setupRandomPcm(pargs) {\n\n\n var margs = {\n call_from: 'default'\n }\n\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n var default_pcm = [];\n\n if (!(o.pcm_data_try_to_generate === 'on' && o.pcm_data_try_to_generate_wait_for_real_pcm === 'on')) {\n for (var i3 = 0; i3 < 200; i3++) {\n default_pcm[i3] = Number(Math.random()).toFixed(2);\n }\n default_pcm = JSON.stringify(default_pcm);\n\n cthis.addClass('rnd-pcm-for-now')\n cthis.attr('data-pcm', default_pcm);\n }\n\n\n scrubbar_modeWave_setupCanvas({}, selfClass);\n\n\n }\n\n\n /**\n * called from setup_structure\n */\n function setup_structure_scrub() {\n\n\n if (o.skinwave_enableSpectrum === 'on') {\n\n\n // -- spectrum ON\n scrubbar_modeWave_setupCanvas({}, selfClass);\n // -- old spectrum code\n selfClass._scrubbarbg_canvas = selfClass.cthis.find('.scrub-bg-img').eq(0);\n selfClass._scrubBgCanvasCtx = selfClass._scrubbarbg_canvas.get(0).getContext(\"2d\");\n } else {\n\n if (o.skinwave_wave_mode === 'canvas') {\n if (cthis.attr('data-pcm')) {\n scrubbar_modeWave_setupCanvas({}, selfClass);\n } else {\n view_wave_setupRandomPcm();\n }\n }\n }\n\n }\n ;\n\n\n /**\n * order -> init, setup_media, init_loaded\n * called from init() if not icecast or soundcloud\n * @param pargs\n * @returns {boolean}\n */\n function setup_media(pargs) {\n mediaSetup(selfClass, pargs, init_loaded, pause_media, init_checkIfReady, handleClick_playPause);\n }\n\n function setup_listeners() {\n\n\n if (isListenersSetup) {\n return false;\n }\n\n isListenersSetup = true;\n\n\n // -- adding scrubbar listeners\n selfClass._scrubbar.unbind('mousemove');\n selfClass._scrubbar.unbind('mouseleave');\n selfClass._scrubbar.unbind('click');\n player_scrubbarSetup(selfClass, $, o, view_drawCurrentTime, viewCalculateScrubbarWidth, play_media, seek_to);\n\n player_volumeSetup(selfClass, selfClass.volume_lastVolume, $, o);\n\n cthis.find('.playbtn').unbind('click');\n\n setTimeout(view_handleResize, 300);\n setTimeout(view_handleResize, 2000);\n\n if (o.settings_trigger_resize > 0) {\n inter_trigger_resize = setInterval(view_handleResize, o.settings_trigger_resize);\n }\n\n cthis.addClass('listeners-setuped');\n\n return false;\n }\n\n\n function volume_getLast() {\n return selfClass.volume_lastVolume;\n }\n\n /**\n * init laoded\n * @param pargs\n */\n function init_loaded(pargs) {\n if (cthis.hasClass('dzsap-loaded')) {\n return;\n }\n\n let margs = {\n 'do_not_autoplay': false,\n 'call_from': 'init'\n };\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n setTimeout(function () {\n selfClass.isSafeToChangeTrack = true;\n }, 5000);\n\n\n clearInterval(selfClass.inter_checkReady);\n clearTimeout(selfClass.inter_checkReady);\n setup_listeners();\n\n\n setTimeout(function () {\n if (selfClass.$currTime && selfClass.$currTime.outerWidth() > 0) {\n selfClass.currTime_outerWidth = selfClass.$currTime.outerWidth();\n }\n }, 1000);\n\n\n // -- this comes from cue off, no pcm data\n\n\n if (selfClass.isPcmRequiredToGenerate) {\n scrubModeWave__checkIfWeShouldTryToGetPcm(selfClass, {\n called_from: 'init_loaded()'\n });\n }\n\n if (selfClass.audioType !== 'fake' && margs.call_from !== 'force_reload_change_media') {\n if (o.settings_exclude_from_list !== 'on' && dzsap_list && dzsap_list.indexOf(cthis) === -1) {\n if (selfClass._actualPlayer === null) {\n dzsap_list.push(cthis);\n }\n }\n if (o.type_audio_stop_buffer_on_unfocus === 'on') {\n cthis.data('type_audio_stop_buffer_on_unfocus', 'on');\n cthis.get(0).api_destroy_for_rebuffer = function () {\n if (o.type === 'audio') {\n selfClass.playFrom = selfClass.$mediaNode_.currentTime;\n }\n destroy_media(selfClass, pause_media);\n isDestroyedForRebuffer = true;\n }\n\n }\n }\n\n if (selfClass.ajax_view_submitted === 'auto') {\n setTimeout(function () {\n if (selfClass.ajax_view_submitted === 'auto') {\n selfClass.ajax_view_submitted = 'off';\n }\n }, 1000);\n }\n\n selfClass.isPlayerLoaded = true;\n\n\n if (selfClass.data_source !== DZSAP_PLAYER_TYPE_FOR_ACCEPTING_FEED) {\n cthis.addClass(DZSAP_PLAYER_CLASS_LOADED);\n\n\n if (selfClass.isStickyPlayer) {\n\n if (window['dzsap_stickyPlayer_show']) {\n setTimeout(() => {\n dzsap_stickyPlayer_show(selfClass);\n }, 500);\n }\n }\n }\n\n\n volume_setVolume(selfClass, getDefaultVolume(o, selfClass), {\n call_from: \"from_init_loaded\"\n });\n\n\n if (isInt(selfClass.playFrom)) {\n seek_to(selfClass.playFrom, {\n call_from: 'from_playfrom'\n });\n }\n\n\n if (selfClass.playFrom === DZSAP_PLAYER_ATTR_PLAY_FROM_LAST_POS) {\n // -- here we save last position\n if (typeof Storage !== 'undefined') {\n setTimeout(function () {\n selfClass.playFrom_ready = true;\n })\n\n\n if (typeof localStorage['dzsap_' + selfClass.the_player_id + '_lastpos'] !== 'undefined') {\n seek_to(localStorage['dzsap_' + selfClass.the_player_id + '_lastpos'], {\n 'call_from': 'last_pos'\n });\n }\n }\n }\n\n if (margs.do_not_autoplay !== true) {\n if (o.autoplay === 'on' && o.cueMedia === 'on') {\n play_media({\n 'called_from': 'do not autoplay not true ( init_loaded() ) '\n });\n }\n\n }\n\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.duration) {\n player_view_addMetaLoaded(selfClass);\n }\n\n reinit();\n\n handleEnterFrame({\n 'fire_only_once': false\n });\n\n if (o.autoplay === 'off') {\n isRenderingFrame = false;\n }\n\n cthis.addClass('init-loaded');\n\n setTimeout(function () {\n\n selfClass.timeModel.refreshTimes({\n 'call_from': 'set timeout 500'\n });\n handleEnterFrame({\n 'fire_only_once': true\n });\n\n cthis.find('.wave-download').on('click', handle_mouse);\n }, 500);\n\n setTimeout(function () {\n selfClass.timeModel.refreshTimes({\n 'call_from': 'set timeout 1000'\n });\n\n handleEnterFrame({\n 'fire_only_once': true\n });\n\n\n }, 1000);\n\n\n if (inter_60_secs_contor === 0 && o.action_video_contor_60secs) {\n inter_60_secs_contor = setInterval(count_60secs, 30000);\n }\n }\n\n\n function count_60secs() {\n if (o.action_video_contor_60secs && cthis.hasClass('is-playing')) {\n o.action_video_contor_60secs(cthis, '');\n }\n }\n\n /**\n *\n * @param {boolean} isGoingToActivate\n */\n function media_toggleLoop(isGoingToActivate) {\n media_isLoopActive = isGoingToActivate;\n }\n\n function handle_mouse(e) {\n const $t = $(this);\n\n if (e.type === 'click') {\n if ($t.hasClass('wave-download')) {\n (ajax_submit_download.bind(selfClass))();\n }\n if ($t.hasClass('dzsap-loop-button')) {\n if ($t.hasClass('active')) {\n $t.removeClass('active');\n media_isLoopActive = false;\n } else {\n\n $t.addClass('active');\n media_isLoopActive = true;\n\n }\n }\n }\n if (e.type === 'mouseover') {\n }\n if (e.type === 'mouseenter') {\n\n if (o.preview_on_hover === 'on') {\n seek_to_perc(0);\n\n play_media({\n 'called_from': 'preview_on_hover'\n });\n }\n\n window.dzsap_mouseover = true;\n }\n if (e.type === 'mouseleave') {\n\n if (o.preview_on_hover === 'on') {\n seek_to_perc(0);\n pause_media();\n }\n window.dzsap_mouseover = false;\n }\n }\n\n\n function view_drawCurrentTime() {\n\n // -- draw current time -- called onEnterFrame when playing\n\n let currentTime = selfClass.timeModel.getVisualCurrentTime();\n let totalTime = selfClass.timeModel.getVisualTotalTime();\n\n if (selfClass.initOptions.scrubbar_type === 'wave') {\n if (selfClass.initOptions.skinwave_enableSpectrum === 'on') {\n\n\n if (!selfClass.isPlayerPlayingEased) {\n return false;\n }\n view_spectrum_drawMeter(selfClass, selfClass._scrubbarbg_canvas, spectrum_fakeItMode, selfClass.heightCanvas);\n\n\n // -- end spectrum\n }\n\n if (selfClass.$currTime && selfClass.$currTime.length) {\n\n if (selfClass.initOptions.skinwave_timer_static !== 'on') {\n view_player_scrubModeWaveAdjustCurrTimeAndTotalTime(selfClass);\n\n }\n\n }\n }\n\n if (totalTime !== last_time_total) {\n view_updateTotalTime(totalTime)\n }\n\n if (selfClass.$currTime) {\n if (selfClass.isScrubShowingCurrentTime === false) {\n selfClass.$currTime.html(formatTime(currentTime));\n }\n\n if (selfClass.timeModel.getVisualTotalTime() && selfClass.timeModel.getVisualTotalTime() > -1) {\n selfClass.cthis.addClass('time-total-visible');\n }\n }\n\n\n if (selfClass.spectrum_audioContext) {\n if (selfClass.$totalTime) {\n selfClass.$totalTime.html(formatTime(totalTime));\n }\n }\n\n }\n\n\n function view_updateTotalTime(totalTime) {\n\n if (selfClass.$totalTime) {\n selfClass.$totalTime.html(formatTime(totalTime));\n selfClass.$totalTime.fadeIn('fast');\n }\n }\n\n /**\n * draw the scrub width\n * @returns {void}\n */\n function view_drawScrubProgress() {\n let currentTime = selfClass.timeModel.getVisualCurrentTime();\n let totalTime = selfClass.timeModel.getVisualTotalTime();\n\n selfClass.scrubbarProgX = (currentTime / totalTime) * selfClass.scrubbarWidth;\n\n if (isNaN(selfClass.scrubbarProgX)) {\n selfClass.scrubbarProgX = 0;\n }\n if (selfClass.scrubbarProgX > selfClass.scrubbarWidth) {\n selfClass.scrubbarProgX = selfClass.scrubbarWidth;\n }\n\n if (currentTime < 0) {\n selfClass.scrubbarProgX = 0;\n }\n\n if (totalTime === 0 || isNaN(totalTime)) {\n selfClass.scrubbarProgX = 0;\n }\n\n if (selfClass.scrubbarProgX < 2 && cthis.data('promise-to-play-footer-player-from')) {\n return;\n }\n\n if (selfClass.spectrum_audioContext_buffer === null) {\n if (selfClass.$$scrubbProg) {\n selfClass.$$scrubbProg.style.width = parseInt(selfClass.scrubbarProgX, 10) + 'px';\n }\n }\n\n }\n\n /**\n * fired on requestAnimationFrame\n * @param pargs\n * @returns {boolean}\n */\n function handleEnterFrame(pargs) {\n\n\n // -- enter frame\n const margs = $.extend({\n 'fire_only_once': false\n }, pargs || {});\n\n if (isDestroyed) {\n return false;\n }\n\n\n selfClass.timeModel.refreshTimes({\n 'call_from': 'checK_time'\n });\n\n if (selfClass.audioType === 'selfHosted') {\n\n }\n\n\n view_drawScrubProgress();\n\n\n selfClass.timeModel.processCurrentFrame();\n\n\n // -- skin minimal\n if (o.design_skin === 'skin-minimal') {\n waitForScriptToBeAvailableThenExecute(window.dzsap_view_player_skinMinimal_drawFrame, function () {\n window.dzsap_view_player_skinMinimal_drawFrame(selfClass, selfClass.scrubbarProgX);\n })\n }\n\n\n // -- enter_frame\n view_drawCurrentTime();\n\n\n if (margs.fire_only_once !== true) {\n requestAnimationFrame(handleEnterFrame);\n }\n }\n\n function handleClick_playPause(e) {\n\n if (cthis.hasClass('prevent-bubble')) {\n if (e && e.stopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n const $conPlayPause = $(this);\n\n let isToggleCancelled = false;\n\n if (!cthis.hasClass('listeners-setuped')) {\n\n\n $(selfClass.$mediaNode_).attr('preload', 'auto');\n\n setup_listeners();\n init_loaded();\n\n\n const inter_checkTotalTime = setInterval(function () {\n\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.duration && isNaN(selfClass.$mediaNode_.duration) === false) {\n\n\n clearInterval(inter_checkTotalTime);\n }\n }, 1000);\n }\n\n\n if (o.design_skin === 'skin-minimal') {\n waitForScriptToBeAvailableThenExecute(window.dzsap_skin_minimal_inited, function () {\n window.dzsap_view_player_skinMinimal_onClickPlayPause(selfClass, $conPlayPause, seek_to_perc, handleEnterFrame, e, togglePlayPause);\n })\n\n isToggleCancelled = true;\n }\n\n if (!isToggleCancelled) {\n togglePlayPause()\n }\n\n\n return false;\n }\n\n function togglePlayPause() {\n if (!selfClass.isPlayerPlaying) {\n play_media({\n 'called_from': 'click_playpause'\n });\n } else {\n pause_media();\n }\n }\n\n\n /**\n *\n * @param pargs\n * @returns {boolean|void}\n */\n function media_handleEnd(pargs) {\n\n media_handleEventEnd(selfClass, pargs, media_isLoopActive, seek_to, play_media, pause_media, o, syncPlayers_gotoNext, action_audio_end);\n }\n\n\n function view_handleResize(e, pargs) {\n\n\n if (cthis) {\n\n }\n\n ww = $(window).width();\n selfClass.cthisWidth = cthis.width();\n th = cthis.height();\n\n\n if (selfClass._scrubbarbg_canvas && typeof (selfClass._scrubbarbg_canvas.width) === 'function') {\n selfClass.canvasWidth = selfClass._scrubbarbg_canvas.width();\n selfClass.heightCanvas = selfClass._scrubbarbg_canvas.height();\n }\n\n\n if (selfClass.cthisWidth <= 720) {\n cthis.addClass('under-720');\n } else {\n\n cthis.removeClass('under-720');\n }\n if (selfClass.cthisWidth <= 500) {\n // -- width under 500\n\n cthis.addClass('under-500');\n\n\n } else {\n // -- width under 500\n\n\n cthis.removeClass('under-500');\n }\n\n\n view_resizeHandleTreatSkins(selfClass);\n\n\n // -- display none + overflow hidden hack does not work .. yeah\n\n if (cthis.css('display') !== 'none') {\n selfClass._scrubbar.find('.scrub-bg-img').eq(0).css({\n 'width': selfClass._scrubbar.children('.scrub-bg').width()\n });\n selfClass._scrubbar.find('.scrub-prog-img').eq(0).css({\n 'width': selfClass._scrubbar.children('.scrub-bg').width()\n });\n }\n\n cthis.removeClass('under-240 under-400');\n if (selfClass.cthisWidth <= 240) {\n cthis.addClass('under-240');\n }\n if (selfClass.cthisWidth <= 500) {\n cthis.addClass('under-400');\n\n if (is_under_400 === false) {\n is_under_400 = true;\n }\n if (selfClass.$controlsVolume) {\n }\n\n } else {\n\n\n if (is_under_400 === true) {\n is_under_400 = false;\n }\n }\n\n\n var aux2 = 50;\n\n // -- skin-wave\n if (o.design_skin === 'skin-wave') {\n // ---------- calculate dims small\n if (selfClass.skinwave_mode === 'small') {\n selfClass.scrubbarWidth = selfClass._scrubbar.width();\n }\n\n\n if (o.skinwave_wave_mode === 'canvas') {\n if (cthis.attr('data-pcm')) {\n if (selfClass._scrubbarbg_canvas.width() === 100) {\n selfClass._scrubbarbg_canvas.width(selfClass._scrubbar.width());\n }\n if (selfClass.data_source !== 'fake') {\n // -- if inter definied then clear timeout and call\n if (draw_canvas_inter) {\n clearTimeout(draw_canvas_inter);\n draw_canvas_inter = setTimeout(draw_canvas_inter_func, 300);\n } else {\n draw_canvas_inter_func();\n draw_canvas_inter = 1;\n }\n }\n }\n }\n }\n\n\n if (['skin-minimal', 'skin-minion'].indexOf(o.design_skin) > -1) {\n\n if (window.dzsap_skinFunctions_handleResize[o.design_skin]) {\n window.dzsap_skinFunctions_handleResize[o.design_skin](selfClass);\n }\n\n }\n\n\n if (o.design_skin === 'skin-default') {\n if (selfClass.$currTime) {\n\n if (selfClass._metaArtistCon.css('display') === 'none') {\n selfClass._metaArtistCon_w = 0;\n }\n if (isNaN(selfClass._metaArtistCon_l)) {\n selfClass._metaArtistCon_l = 20;\n }\n }\n\n }\n\n\n if (o.embedded === 'on') {\n view_resizeEmbedded(selfClass);\n }\n\n\n view_drawScrubProgress();\n\n if (o.settings_trigger_resize > 0) {\n if (o.parentgallery && $(o.parentgallery).get(0) !== undefined && $(o.parentgallery).get(0).api_handleResize !== undefined) {\n $(o.parentgallery).get(0).api_handleResize();\n }\n }\n\n }\n\n\n function draw_canvas_inter_func() {\n view_drawCanvases(selfClass, cthis.attr('data-pcm'), 'canvas_normal_pcm');\n\n draw_canvas_inter = 0;\n }\n\n\n function viewCalculateScrubbarWidth() {\n\n\n if (selfClass.scrubbarWidth === 0) {\n selfClass.scrubbarWidth = selfClass._scrubbar.width();\n }\n if (selfClass.scrubbarWidth === 0) {\n selfClass.scrubbarWidth = 300;\n }\n }\n\n function seek_to_perc(argperc, pargs) {\n seek_to((argperc * selfClass.timeModel.getVisualTotalTime()), pargs);\n }\n\n /**\n * seek to seconds\n * @param targetTimeMediaScrub - number of seconds\n * @param pargs -- optiona arguments\n * @returns {boolean}\n */\n function seek_to(targetTimeMediaScrub, pargs = {}) {\n\n var margs = {\n 'call_from': 'default'\n , 'deeplinking': 'off' // -- default or \"auto\" or \"user action\"\n , 'call_from_type': 'default' // -- default or \"auto\" or \"user action\"\n };\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n if (margs.call_from === 'from_feeder_to_feed') {\n\n }\n\n if (margs.deeplinking === 'on') {\n var newlink = add_query_arg(window.location.href, 'audio_time', targetTimeMediaScrub);\n\n\n var stateObj = {foo: \"bar\"};\n history.pushState(stateObj, null, newlink);\n }\n\n targetTimeMediaScrub = sanitizeToIntFromPointTime(targetTimeMediaScrub);\n\n targetTimeMediaScrub = selfClass.timeModel.getActualTargetTime(targetTimeMediaScrub);\n\n if (selfClass._actualPlayer) {\n player_feederSeekTo(selfClass, margs, targetTimeMediaScrub);\n\n return false;\n }\n\n\n if (selfClass.audioType === 'youtube') {\n try {\n selfClass.$mediaNode_.seekTo(targetTimeMediaScrub);\n } catch (err) {\n\n }\n }\n\n handleEnterFrame({\n 'fire_only_once': true\n })\n setTimeout(function () {\n handleEnterFrame({\n 'fire_only_once': true\n })\n }, 20);\n\n\n if (selfClass.audioType === 'selfHosted') {\n if (0) {\n\n selfClass.lastTimeInSeconds = targetTimeMediaScrub;\n\n pause_media({\n 'audioapi_setlasttime': false\n });\n play_media({\n 'called_from': 'audio_buffer ( seek_to() )'\n });\n } else {\n\n if (selfClass.$mediaNode_ && typeof (selfClass.$mediaNode_.currentTime) !== 'undefined') {\n\n try {\n selfClass.$mediaNode_.currentTime = targetTimeMediaScrub;\n } catch (e) {\n }\n\n }\n\n return false;\n\n }\n\n }\n\n\n }\n\n /**\n * seek to ( only visual )\n * @param argperc\n */\n function seek_to_visual(argperc) {\n\n\n curr_time_first_set = true;\n\n\n handleEnterFrame({\n 'fire_only_once': true\n })\n setTimeout(function () {\n handleEnterFrame({\n 'fire_only_once': true\n })\n }, 20);\n }\n\n /**\n * playback speed\n * @param {float} arg 0 - 10\n */\n function set_playback_speed(arg) {\n\n if (selfClass.audioType === 'youtube') {\n selfClass.$mediaNode_.setPlaybackRate(arg);\n }\n if (selfClass.audioType === 'selfHosted') {\n selfClass.$mediaNode_.playbackRate = arg;\n\n }\n\n }\n\n\n function pause_media_visual(pargs) {\n\n\n var margs = {\n 'call_from': 'default'\n };\n\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n selfClass.$conPlayPause.removeClass('playing');\n cthis.removeClass('is-playing');\n selfClass.isPlayerPlaying = false;\n clearTimeout(selfClass.isPlayerPlayingEasedInterval);\n selfClass.isPlayerPlayingEasedInterval = setTimeout(() => {\n selfClass.isPlayerPlayingEased = false;\n }, DZSAP_VIEW_PLAYER_PLAYING_EASED_TIMEOUT);\n\n\n if (cthis.parent().hasClass('zoomsounds-wrapper-bg-center')) {\n cthis.parent().removeClass('is-playing');\n }\n if (selfClass.$reflectionVisualObject) {\n selfClass.$reflectionVisualObject.removeClass('is-playing');\n }\n\n if (o.parentgallery) {\n o.parentgallery.removeClass('player-is-playing');\n }\n\n\n clearTimeout(isRenderingFrameInterval);\n isRenderingFrameInterval = setTimeout(() => {\n\n isRenderingFrame = false;\n }, DZSAP_VIEW_PLAYER_PLAYING_EASED_TIMEOUT);\n\n\n if (action_audio_pause) {\n action_audio_pause(cthis);\n }\n }\n\n function pause_media(pargs) {\n\n var margs = {\n 'audioapi_setlasttime': true,\n 'donot_change_media': false,\n 'call_actual_player': true,\n };\n\n if (isDestroyed) {\n return false;\n }\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n pause_media_visual({\n 'call_from': 'pause_media'\n });\n\n\n if (margs.call_actual_player && margs.donot_change_media !== true) {\n if (selfClass._actualPlayer !== null) {\n player_actualPlayerPause(selfClass);\n\n return;\n }\n }\n\n\n media_pause(selfClass, () => {\n if (selfClass._sourcePlayer) {\n player_sourcePlayerPauseVisual(selfClass);\n }\n })\n\n\n }\n\n function play_media_visual(margs) {\n\n\n selfClass.isPlayerPlaying = true;\n clearTimeout(selfClass.isPlayerPlayingEasedInterval);\n selfClass.isPlayerPlayingEased = true;\n clearTimeout(isRenderingFrameInterval);\n isRenderingFrame = true;\n\n cthis.addClass('is-playing');\n cthis.addClass('first-played');\n\n if (selfClass.$reflectionVisualObject) {\n selfClass.$reflectionVisualObject.addClass('is-playing');\n }\n if (o.parentgallery) {\n o.parentgallery.addClass('player-is-playing');\n }\n\n if (selfClass.classFunctionalityInnerPlaylist) {\n selfClass.classFunctionalityInnerPlaylist.player_determineSyncPlayersIndex(selfClass, selfClass._sourcePlayer);\n }\n view_player_globalDetermineSyncPlayersIndex(selfClass);\n\n view_player_playMiscEffects(selfClass);\n\n\n if (selfClass.isStickyPlayer) {\n\n\n if (window['dzsap_stickyPlayer_show']) {\n dzsap_stickyPlayer_show(selfClass);\n }\n }\n\n\n if (action_audio_play) {\n action_audio_play(cthis);\n }\n if (action_audio_play2) {\n action_audio_play2(cthis);\n }\n\n\n }\n\n function play_media(pargs) {\n\n var margs = {\n 'api_report_play_media': true,\n 'called_from': 'default',\n 'retry_call': 0\n }\n if (pargs) {\n margs = $.extend(margs, pargs)\n }\n\n if (!selfClass.isSetupedMedia) {\n setup_media({'called_from': margs.called_from + '[play_media .. not setuped]'});\n }\n\n\n if (margs.called_from === 'api_sync_players_prev') {\n\n player_index_in_gallery = cthis.parent().children('.audioplayer,.audioplayer-tobe').index(cthis);\n\n if (o.parentgallery && o.parentgallery.get(0) && o.parentgallery.get(0).api_goto_item) {\n o.parentgallery.get(0).api_goto_item(player_index_in_gallery);\n }\n }\n\n if ((is_ios() && selfClass.spectrum_audioContext_buffer === 'waiting') || selfClass.mediaProtectionStatus === 'fetchingProtection') {\n setTimeout(function () {\n if (!pargs) {\n pargs = {};\n }\n pargs.call_from_aux = 'waiting audioCtx_buffer or ios';\n play_media(pargs);\n }, 500);\n return false;\n }\n\n if (margs.called_from === 'click_playpause') {\n // -- lets setup the playlist\n }\n\n\n if (!cthis.hasClass('media-setuped') && selfClass._actualPlayer === null) {\n console.log('[dzsap][warning] media not setuped, there might be issues', cthis.attr('id'));\n }\n\n\n if (margs.called_from.indexOf('feed_to_feeder') > -1) {\n if (!cthis.hasClass('dzsap-loaded')) {\n init_loaded();\n let delay = 300;\n if (is_android()) {\n delay = 0;\n }\n if (margs.call_from_aux !== 'with delay') {\n if (delay) {\n setTimeout(function () {\n margs.call_from_aux = 'with delay';\n play_media(margs);\n }, delay);\n } else {\n play_media(margs);\n }\n return false;\n }\n\n }\n }\n\n player_stopOtherPlayers(dzsap_list, selfClass);\n\n\n if (isDestroyedForRebuffer) {\n setup_media({\n 'called_from': 'play_media() .. destroyed for rebuffer'\n });\n if (isInt(selfClass.playFrom)) {\n seek_to(selfClass.playFrom, {\n 'call_from': 'destroyed_for_rebuffer_playfrom'\n });\n }\n isDestroyedForRebuffer = false;\n }\n\n\n // -- media functions\n\n if (selfClass._sourcePlayer) {\n player_sourcePlayerPlayVisual(selfClass);\n }\n\n\n if (selfClass._actualPlayer) {\n var output = player_actualPlayerPlay(selfClass, margs, seek_to);\n if (output.itShouldReturn) {\n return;\n }\n }\n\n\n if (selfClass.audioType === 'youtube') {\n dzsap_youtube_playMedia(selfClass, margs, selfClass.youtube_currentId);\n }\n if (selfClass.audioType === 'selfHosted') {\n\n\n }\n\n\n if (selfClass.audioType === 'youtube') {\n play_media_visual(margs);\n }\n\n media_tryToPlay(selfClass, () => {\n\n play_media_visual(margs);\n if (o.skinwave_enableSpectrum === 'on') {\n player_initSpectrum(selfClass);\n }\n\n if (selfClass._sourcePlayer) {\n window.dzsap_currplayer_focused = selfClass._sourcePlayer.get(0);\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_pause_media_visual) {\n selfClass._sourcePlayer.get(0).api_try_to_submit_view();\n }\n } else {\n window.dzsap_currplayer_focused = cthis.get(0);\n service_submitView();\n }\n\n\n if (selfClass.keyboard_controls.play_trigger_step_back === 'on') {\n if (dzsap_currplayer_focused) {\n dzsap_currplayer_focused.api_step_back(selfClass.keyboard_controls.step_back_amount);\n }\n }\n }, (err) => {\n console.log('error autoplay playing - ', err);\n setTimeout(() => {\n pause_media();\n console.log('trying to pause')\n }, 30);\n })\n\n\n }\n\n\n function service_submitView() {\n if (selfClass.ajax_view_submitted === 'auto') {\n selfClass.ajax_view_submitted = 'off';\n }\n if (selfClass.ajax_view_submitted === 'off') {\n\n (ajax_submit_views.bind(selfClass))();\n }\n }\n\n\n }\n}\n\n\nfunction register_dzsap_plugin() {\n if (!window.dzsap_settings) {\n window.dzsap_settings = {};\n }\n (function ($) {\n\n\n assignHelperFunctionsToJquery($);\n\n\n // -- define player here\n $.fn.audioplayer = function (argOptions) {\n let finalOptions = {};\n const defaultOptions = Object.assign({}, defaultPlayerOptions);\n finalOptions = convertPluginOptionsToFinalOptions(this, defaultOptions, argOptions);\n\n\n this.each(function () {\n return new DzsAudioPlayer(this, Object.assign({}, finalOptions), $);\n })\n }\n })(jQuery);\n}\n\nwindow.dzsap_singleton_ready_calls_is_called = false;\n\n\n/**\n * not reliable\n */\nwindow.dzsap_get_base_url = function () {\n\n window.dzsap_base_url = (window.dzsap_settings && window.dzsap_settings.pluginurl) ? window.dzsap_settings.pluginurl : getBaseUrl('dzsap_base_url', 'audioplayer.js');\n\n}\n\n\nwindow.dzsap_currplayer_focused = null;\nwindow.dzsap_currplayer_from_share = null;\nwindow.dzsap_mouseover = false;\n\n\nwindow.dzsap_init_allPlayers = function ($) {\n\n const $feed_dzsapConfigs = $('.dzsap-feed--dzsap-configs');\n if ($feed_dzsapConfigs.length) {\n window.dzsap_apconfigs = JSON.parse($feed_dzsapConfigs.last().html());\n }\n\n $('.audioplayer.auto-init,.audioplayer-tobe.auto-init').each(function () {\n const $playerTarget = $(this);\n if ($playerTarget.hasClass('audioplayer-tobe')) {\n if (window.dzsap_init) {\n dzsap_init($playerTarget);\n }\n }\n })\n}\n\n\ndzsap_jQueryInit().then(() => {\n register_dzsap_plugin();\n window.dzsap_get_base_url();\n jQuery(document).ready(function ($) {\n\n\n // -- defined gallery here\n // --\n // AUDIO GALLERY\n // --\n\n\n // -- main call\n\n if (!window.dzsap_singleton_ready_calls_is_called) {\n dzsap_singleton_ready_calls();\n }\n\n\n jQueryAuxBindings($);\n\n window.dzsap_init_allPlayers($)\n });\n\n\n if (!window.dzsap_player_isOneTimeSetuped) {\n dzsap_oneTimeSetups();\n window.dzsap_player_isOneTimeSetuped = true;\n }\n}).catch((err) => {\n console.log(err);\n})\n\n\nwindow.dzsap_init = function (selector, settings) {\n jQuery(selector).audioplayer(Object.assign({}, settings));\n\n window.dzsap_lasto = settings;\n};\nplayerRegisterWindowFunctions();\n","import {formatTime} from \"../_dzsap_helpers\";\nimport {view_calculateTargetPositionOnScrub} from \"../view/player/_view_dimensionHelpers\";\n\nexport function player_scrubbarSetup(selfClass, $, o, view_drawCurrentTime, viewCalculateScrubbarWidth, play_media, seek_to) {\n const cthis = selfClass.cthis;\n selfClass._scrubbar.on('mousemove', handleMouseOnScrubbar);\n selfClass._scrubbar.on('mouseleave', handleMouseOnScrubbar);\n selfClass._scrubbar.on('click', handleMouseOnScrubbar);\n\n\n function handleMouseOnScrubbar(e) {\n var mousex = e.pageX;\n\n\n if ($(e.target).hasClass('sample-block-start') || $(e.target).hasClass('sample-block-end')) {\n return false;\n }\n\n if (e.type === 'mousemove') {\n selfClass._scrubbar.children('.scrubBox-hover').css({\n 'left': (mousex - selfClass._scrubbar.offset().left)\n });\n\n\n if (o.scrub_show_scrub_time === 'on') {\n\n\n if (selfClass.timeModel.getVisualTotalTime()) {\n var aux = (mousex - selfClass._scrubbar.offset().left) / selfClass._scrubbar.outerWidth() * selfClass.timeModel.getVisualTotalTime();\n\n\n if (selfClass.$currTime) {\n selfClass.$currTime.html(formatTime(aux));\n selfClass.$currTime.addClass('scrub-time');\n\n }\n\n selfClass.isScrubShowingCurrentTime = true;\n }\n }\n\n }\n if (e.type === 'mouseleave') {\n\n selfClass.isScrubShowingCurrentTime = false;\n\n if (selfClass.$currTime) {\n selfClass.$currTime.removeClass('scrub-time');\n\n }\n\n view_drawCurrentTime();\n\n }\n if (e.type === 'click') {\n\n\n if (cthis.hasClass('prevent-bubble')) {\n if (e && e.stopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n viewCalculateScrubbarWidth();\n let targetPositionOnScrub = view_calculateTargetPositionOnScrub(selfClass, selfClass.scrubbarWidth, e);\n\n if (selfClass._actualPlayer) {\n setTimeout(function () {\n if (selfClass._actualPlayer.get(0) && selfClass._actualPlayer.get(0).api_pause_media) {\n\n selfClass._actualPlayer.get(0).api_seek_to_perc(targetPositionOnScrub / selfClass.timeModel.getVisualTotalTime(), {\n 'call_from': 'from_feeder_to_feed'\n });\n }\n }, 50);\n }\n\n\n seek_to(targetPositionOnScrub, {\n 'call_from': 'handleMouseOnScrubbar'\n });\n\n if (o.autoplay_on_scrub_click === 'on') {\n if (!selfClass.isPlayerPlaying) {\n play_media({\n 'called_from': 'handleMouseOnScrubbar'\n });\n }\n }\n\n if (cthis.hasClass('from-wc_loop')) {\n return false;\n }\n }\n\n }\n\n}\n","export function view_calculateTargetPositionOnScrub(selfClass, scrubbarWidth, e) {\n let targetPositionOnScrub = ((e.pageX - (selfClass._scrubbar.offset().left)) / (scrubbarWidth) * selfClass.timeModel.getVisualTotalTime());\n\n\n if (selfClass.sample_time_start > 0) {\n targetPositionOnScrub -= selfClass.sample_time_start;\n }\n\n\n return targetPositionOnScrub;\n}\n","import {ConstantsDzsAp} from \"../configs/_constants\";\n\n\nexport function retrieve_soundcloud_url(selfClass, pargs) {\n\n\n var o = selfClass.initOptions;\n\n if (o.soundcloud_apikey == '') {\n alert('soundcloud api key not defined, read docs!');\n }\n var aux = 'https://api.' + 'soundcloud.com' + '/resolve?url=' + selfClass.data_source + '&format=json&consumer_key=' + o.soundcloud_apikey;\n\n\n\n aux = encodeURIComponent(aux);\n\n\n var soundcloud_retriever = o.php_retriever + '?scurl=' + aux;\n\n\n jQuery.ajax({\n type: \"GET\",\n url: soundcloud_retriever\n , data: {}\n , async: true\n , dataType: 'text'\n , error: function (err, q, t) {\n\n }\n , success: function (response) {\n\n\n var data = [];\n\n\n let newSource = '';\n try {\n data = JSON.parse(response);\n\n selfClass.audioType = 'selfHosted';\n\n\n if (data == '') {\n selfClass.cthis.addClass(ConstantsDzsAp.ERRORED_OUT_CLASS);\n selfClass.cthis.append('<div class=\"feedback-text\">soundcloud track does not seem to serve via api</div>');\n }\n\n\n\n selfClass.original_real_mp3 = selfClass.cthis.attr('data-source');\n if (data.stream_url) {\n\n newSource = data.stream_url + '?consumer_key=' + o.soundcloud_apikey + '&origin=localhost';\n selfClass.cthis.attr('data-source', newSource);\n\n\n if (selfClass.$feed_fakeButton) {\n selfClass.$feed_fakeButton.attr('data-source', newSource);\n }\n if (selfClass._sourcePlayer) {\n selfClass._sourcePlayer.attr('data-source', newSource);\n }\n } else {\n\n selfClass.cthis.addClass(ConstantsDzsAp.ERRORED_OUT_CLASS);\n selfClass.cthis.append('<div class=\"feedback-text \">this soundcloud track does not allow streaming </div>');\n }\n selfClass.data_source = newSource;\n\n\n if (selfClass.cthis.attr('data-pcm')) {\n selfClass.isAlreadyHasRealPcm = true;\n }\n if (o.design_skin == 'skin-wave') {\n if (o.skinwave_wave_mode == 'canvas') {\n if (selfClass.isAlreadyHasRealPcm == false) {\n if ((o.pcm_data_try_to_generate == 'on' && o.pcm_data_try_to_generate_wait_for_real_pcm == 'on') == false) {\n window.scrubModeWave__initGenerateWaveData(selfClass, {\n 'call_from': 'soundcloud init(), pcm not real..'\n });\n }\n }\n }\n }\n\n selfClass.setup_media({\n 'called_from': 'change_media'\n });\n\n\n setTimeout(function () {\n\n\n if (selfClass.isPlayPromised) {\n selfClass.play_media({\n 'call_from': 'change_media'\n })\n selfClass.isPlayPromised = false;\n }\n }, 300);\n } catch (err) {\n console.log('soduncloud parse error -', response, ' - ', soundcloud_retriever);\n }\n }\n });\n\n}\n","import {ajax_submit_download} from \"../_dzsap_ajax\";\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param {jQuery} $\n * @param {function} seek_to\n */\nexport const player_setupMiscButtons = (selfClass, $, seek_to) => {\n var cthis = selfClass.cthis;\n\n cthis.on('click', '.dzsap-repeat-button,.btn-zoomsounds-download,.zoomsounds-btn-step-backward,.zoomsounds-btn-step-forward,.zoomsounds-btn-go-beginning,.zoomsounds-btn-slow-playback,.zoomsounds-btn-reset, .tooltip-indicator--btn-footer-playlist, .wave-download', handle_mouse);\n cthis.find('.wave-download').on('click', handle_mouse);\n\n\n\n cthis.on('click', '.skip-15-sec', function () {\n cthis.get(0).api_step_forward(15);\n });\n\n function handle_mouse(e) {\n let _target;\n const $t = $(this);\n\n // if ($t.hasClass('wave-download')) {\n // (ajax_submit_download.bind(selfClass))();\n // }\n if ($t.hasClass('tooltip-indicator--btn-footer-playlist')) {\n\n $t.parent().find('.dzstooltip').toggleClass('active');\n }\n if ($t.hasClass('zoomsounds-btn-go-beginning')) {\n\n _target = cthis;\n if (selfClass._actualPlayer) {\n _target = selfClass._actualPlayer;\n }\n\n _target.get(0).api_seek_to(0);\n }\n if ($t.hasClass('zoomsounds-btn-step-backward')) {\n\n _target = cthis;\n if (selfClass._actualPlayer) {\n _target = selfClass._actualPlayer;\n }\n\n _target.get(0).api_step_back();\n }\n if ($t.hasClass('zoomsounds-btn-step-forward')) {\n\n _target = cthis;\n if (selfClass._actualPlayer) {\n _target = selfClass._actualPlayer;\n }\n\n _target.get(0).api_step_forward();\n }\n if ($t.hasClass('zoomsounds-btn-slow-playback')) {\n _target = cthis;\n if (selfClass._actualPlayer) {\n _target = selfClass._actualPlayer;\n }\n\n _target.get(0).api_playback_slow();\n }\n if ($t.hasClass('zoomsounds-btn-reset')) {\n _target = cthis;\n if (selfClass._actualPlayer) {\n _target = selfClass._actualPlayer;\n }\n\n _target.get(0).api_playback_reset();\n }\n if ($t.hasClass('btn-zoomsounds-download')) {\n (ajax_submit_download.bind(selfClass))();\n }\n if ($t.hasClass('dzsap-repeat-button')) {\n\n if (selfClass.isPlayerPlaying) {\n }\n seek_to(0, {\n call_from: \"repeat\"\n });\n }\n\n\n }\n\n}\n","export const dzsap_player_touchFunctionalitySetup = (selfClass, seek_to_perc, $) => {\n // -- touch controls\n var scrubbar_moving = false\n , scrubbar_moving_x = 0\n , aux3 = 0\n ;\n\n\n if (selfClass._scrubbar && selfClass._scrubbar.get(0)) {\n\n selfClass._scrubbar.get(0).addEventListener('touchstart', function (e) {\n if (selfClass.isPlayerPlaying) {\n scrubbar_moving = true;\n }\n }, {passive: true})\n }\n\n $(document).on('touchmove', function (e) {\n if (scrubbar_moving) {\n scrubbar_moving_x = e.originalEvent.touches[0].pageX;\n\n\n aux3 = scrubbar_moving_x - selfClass._scrubbar.offset().left;\n\n if (aux3 < 0) {\n aux3 = 0;\n }\n if (aux3 > selfClass._scrubbar.width()) {\n aux3 = selfClass._scrubbar.width();\n }\n\n seek_to_perc(aux3 / selfClass._scrubbar.width(), {\n call_from: \"touch move\"\n });\n\n\n return false;\n\n }\n });\n\n $(document).on('touchend', function (e) {\n scrubbar_moving = false;\n });\n}\n","export const player_menuStateSetup = (cthis,o) => {\n\n cthis.find('.btn-menu-state').eq(0).on('click', handleClickMenuState);\n\n\n function handleClickMenuState(e) {\n if (o.parentgallery && typeof (o.parentgallery.get(0)) !== \"undefined\") {\n o.parentgallery.get(0).api_toggle_menu_state();\n }\n }\n}\n","export const dzsap_oneTimeSetups = ()=>{\n\n if(!window.dzsap_skinFunctions_handleResize){\n window.dzsap_skinFunctions_handleResize = {};\n }\n\n window.dzsap_generate_list_for_sync_players = function (pargs) {\n var $ = jQuery;\n\n var margs = {\n 'force_regenerate': false\n\n };\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n window.dzsap_syncList_players = [];\n\n\n if ((window.dzsap_settings.syncPlayers_buildList === 'on') || margs.force_regenerate) {\n\n jQuery('.audioplayer,.audioplayer-tobe').each(function () {\n var _t2 = jQuery(this);\n if (_t2.attr('data-do-not-include-in-list') !== 'on') {\n if (_t2.attr('data-type') !== 'fake' || _t2.attr('data-fakeplayer')) {\n window.dzsap_syncList_players.push(_t2);\n }\n }\n })\n\n\n }\n }\n\n\n jQuery(document).off('click.dzsap_global');\n jQuery(document).on('click.dzsap_global', '.dzsap-btn-info', function () {\n\n var _t = jQuery(this);\n if (_t.hasClass('dzsap-btn-info')) {\n\n _t.find('.dzstooltip').toggleClass('active');\n return;\n }\n\n })\n jQuery(document).on('mouseover.dzsap_global', '.dzsap-btn-info', function () {\n\n var _t = jQuery(this);\n if (_t.hasClass('dzsap-btn-info')) {\n\n if (window.innerWidth < 500) {\n\n if (_t.offset().left < (window.innerWidth / 2)) {\n _t.find('.dzstooltip').removeClass('talign-end').addClass('talign-start');\n }\n } else {\n _t.find('.dzstooltip').addClass('talign-end').removeClass('talign-start');\n }\n }\n\n });\n}\n"],"names":["ConstantsDzsAp","PLAYLIST_TRANSITION_DURATION","URL_WAVESURFER_HELPER_BACKUP","WAVESURFER_MAX_TIMEOUT","DEBUG_STYLE_PLAY_FUNCTIONS","URL_JQUERY","ERRORED_OUT_CLASS","ERRORED_OUT_MAX_ATTEMPTS","DZSAP_PLAYER_CLASS_FOOTER_PLAYER","DZSAP_PLAYER_CLASS_LOADED","DZSAP_PLAYER_CLASS_STICK_TO_BOTTOM","DZSAP_PLAYER_TYPE_FOR_ACCEPTING_FEED","DZSAP_PLAYER_ATTR_PLAY_FROM_LAST_POS","DZSAP_SCRIPT_SELECTOR_KEYBOARD","DZSAP_VIEW_PLAYER_PLAYING_EASED_TIMEOUT","DZSAP_VIEW_SONG_CHANGER_CLASS","decode_json","arg","fout","JSON","parse","err","dzsap_jQueryInit","callback","reject","Promise","resolve","window","jQuery","script","document","createElement","onload","src","head","appendChild","setTimeout","string_curateClassName","replace","loadScriptIfItDoesNotExist","scriptSrc","checkForVar","onerror","getBaseUrl","baseUrlVar","scriptName","scripts","getElementsByTagName","scriptKey","String","indexOf","baseUrl_arr","split","splice","url","result","join","substr","setupTooltip","args","mainArgs","Object","assign","tooltipInnerHTML","tooltipIndicatorText","tooltipConClass","isInt","n","Math","round","isValid","formatTime","s","m","h","isFinite","can_history_api","history","pushState","dzs_clean_string","get_query_arg","purl","key","regtest","RegExp","exec","splitterS","aux","add_query_arg","value","pair","encodeURIComponent","r","regex_attr","dzsap_is_mobile","is_ios","is_android","navigator","platform","can_canvas","getContext","is_safari","prototype","toString","call","HTMLElement","userAgent","toLowerCase","select_all","el","getSelection","createRange","range","selectNodeContents","sel","removeAllRanges","addRange","selection","body","createTextRange","textRange","moveToElementText","select","is_android_good","htmlEncode","text","html","dzsap_generate_keyboard_tooltip","keyboard_controls","lab","structureDzsTooltipCommentAfterSubmit","hexToRgb","hex","targetAlpha","str","alpha","parseInt","g","b","assignHelperFunctionsToJquery","$","easeIn","t","c","d","checkIfHasClass","argfind","auxarr","fn","prependOnce","_t","this","children","length","prepend","appendOnce","append","registerTextWidth","textWidth","html_org","nodeName","val","html_calcS","_lastspan","last","css","width","remove","player_checkIfWeShouldShowAComment","selfClass","real_time_curr","real_time_total","timer_curr_perc","audioType","timeCurrent","timeTotal","_commentsHolder","each","hasClass","_t_posx","offset","left","parseFloat","outerWidth","abs","find","removeClass","addClass","sanitizeObjectForChangeMediaArgs","_sourceForChange","changeMediaArgs","_feed_fakePlayer","data","source","attr","pcm","thumb_link","artist","eq","song_name","thumb","utils_sanitizeToColor","colorString","dzsapInitjQueryRegisters","player_radio_isNameUpdatable","radio_update_song_name","targetKey","_metaArtistCon","playerRegisterWindowFunctions","argtime","argcthis","Infinity","action","id_track","postdata","ceil","post","dzsap_ajaxurl","response","dzs_open_social_link","argthis","leftPosition","topPosition","windowFeatures","screen","height","location","href","auxa","cid","cid_gallery","dzsap_currplayer_from_share","parent","index","shareurl","open","dzsap_wp_send_contor_60_secs","argtitle","video_title","video_analytics_id","curr_user","dzsap_curr_user","theajaxurl","dzsap_settings","dzsap_site_url","ajax","type","success","error","dzsap_init_multisharer","assignPcmData","pcmSource","string_jsonConvertToArray","cthis","initOptions","skinwave_enableSpectrum","pcmSourceLen","desiredSize","i","ar_str","waves","dzsap_singleton_ready_calls","dzsap_singleton_ready_calls_is_called","$feed_dzsapMainSettings","$feed_dzsapMainSettingsAll","querySelectorAll","innerHTML","ajaxurl","ajax_url","dzsap__style","after","on","dzsap_currplayer_focused","dzsap_keyboardSetup","jQueryAuxBindings","off","e","$t","preventDefault","stopPropagation","stopImmediatePropagation","_c","get","api_change_media","view_player_playMiscEffects","$conPlayPause","view_player_globalDetermineSyncPlayersIndex","_sourcePlayer","dzsap_syncList_players","forEach","$syncPlayer","dzsap_syncList_index","player_view_addMetaLoaded","$totalTime","timeModel","refreshTimes","getVisualTotalTime","htmlEntities","waitForScriptToBeAvailableThenExecute","verifyVar","callbackFn","checkInterval","checkIfVarExists","clearInterval","setInterval","then","player_reinit_findIfPcmNeedsGenerating","o","hasInitialPcmData","skinwave_wave_mode","design_skin","isPcmRequiredToGenerate","scrubbar_type","is_inited_from_playlist","scrubbar_type_wave__has_reveal_animation","playerFunctions","functionType","skinwave_comments_playerid","the_player_id","uniqueId","identifier_pcm","skinwave_comments_enable","player_delete","_con","prev","sanitizeToHexColor","hexcolor","player_identifySource","data_source","player_identifyTypes","disable_timer","audioTypeSelfHosted_streamType","disable_scrub","player_getPlayFromTime","playFrom","playfrom","isNaN","sanitizeToIntFromPointTime","sampleTimeStart","arr","Number","player_determineStickToBottomContainer","$conTest","$stickToBottomContainer","isStickyPlayer","player_stickToBottomContainerDetermineClasses","player_service_getSourceProtection","player_isGoingToSetupMediaNow","player_stopOtherPlayers","dzsap_list","api_pause_media","api_destroy_for_rebuffer","player_syncPlayers_gotoItem","targetIncrement","syncPlayers_autoplayEnabled","$playerInSyncList","keySyncPlayer","targetIndex","$currentSyncPlayer_","api_play_media","player_syncPlayers_buildList","syncPlayers_isDzsapListBuilt","_t23","push","clearTimeout","syncPlayers_buildTimeout","convertPluginOptionsToFinalOptions","elThis","defaultOptions","argOptions","searchedAttr","$es","finalOptions","tempOptions","isSetFromJson","undefined","$elThis","isArgOptionsDefinedViaJs","Boolean","keys","eval","generateFakeArrayForPcm","it1","random","dzsap_generate_keyboard_controls","$keyboardControlsInfo","dzsap_keyboard_controls","extend","step_back_amount","handle_keypresses","dzsap_isTextFieldFocused","isKeyPressed","pause_play","dzsap_mouseover","step_back","api_step_back","step_forward","api_step_forward","sync_players_goto_next","api_sync_players_goto_next","sync_players_goto_prev","api_sync_players_goto_prev","checkKeyCode","ctrlKey","keyCode","currentTarget","$audioGallery","api_filter","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","definition","defineProperty","enumerable","obj","prop","hasOwnProperty","volume_setOnlyVisual","margs","$controlsVolume","skinwave_dynamicwaves","_scrubbar","localStorage","setItem","volume_lastVolume","volume_setVolume","pargs","volume_isSetByUser","call_from","default_volume","$mediaNode_","setVolume","volume","api_visual_set_volume","_actualPlayer","api_set_volume","scrubbar_modeWave_setupCanvas_context","_canvas","_canvasContext","imageSmoothingEnabled","imageSmoothing","imageSmoothingQuality","webkitImageSmoothing","scrubbar_modeWave_setupCanvas","prepare_for_transition_in","struct_scrubBg_str","struct_scrubProg_str","_scrubbarbg_canvas","_scrubbarprog_canvas","hide","scrubModeWave__checkIfWeShouldTryToGetPcm","dzsap_wavesurfer_is_trying_to_generate","call_attempt","isAlreadyHasRealPcm","isWeCanGeneratePcm","dzsap_get_base_url","wavesurferUrl","dzsap_base_url","scrubModeWave__view_transitionIn","scrubModeWave__initedGenerateWave","resolveStr","scrubModeWave__initGenerateWaveData","view_drawCanvases","argpcm","calledFrom","draw_canvas","design_wave_color_bg","skinwave_wave_mode_canvas_waves_number","skinwave_wave_mode_canvas_waves_padding","design_wave_color_progress","scrubbar_modeWave_clearObsoleteCanvas","scrubbar_reveal","waveCalculateWaveArray","waveArrayTemp","max","waveArrayNew","barIndex","waveArray","view_drawBars","isReflection","isProgressScrubContext","barCount","widthCanvas","heightCanvas","reflection_size","playerOptions","bar_space","isWithinSample","searched_index","lastBarHeight","gradient","spectrum_isBarWithinProgress","temp_hex","hexcolors","widthBar","sizeRatioNormal","progress_hexcolor","progress_hexcolors","save","targetRatio","barHeight","skinwave_wave_mode_canvas_normalize","lineWidth","floor","barPositionTop","beginPath","rect","isSample","isBeforeOrAfterSample","skinwave_wave_mode_canvas_mode","fillStyle","startColor","endColor","createLinearGradient","addColorStop","fill","closePath","restore","currBarIndex","sampleTimeTotal","sampleTimeEnd","$canvas_","pcm_arr","__canvas","skinwave_wave_mode_canvas_reflection_size","clearRect","player_initSpectrum","dzsap_audio_ctx","AudioContext","spectrum_audioContext","webkitAudioContext","spectrum_analyser","createAnalyser","smoothingTimeConstant","fftSize","crossOrigin","spectrum_mediaElementSource","createMediaElementSource","connect","createGain","spectrum_gainNode","destination","gain","frameCount","sampleRate","spectrum_audioContext_buffer","createBuffer","canvasWidth","dzsap_wavesurfer_load_attempt","media_removeMediaInside","$theMedia","setupMediaElement","stringAudioElementHtml","stringAudioTagSource","load","destroy_cmedia","isSetupedMedia","isPlayerLoaded","destroy_media","pause_media","isValidTotalTime","duration","PlayerTime","referenceMediaCurrentTime","referenceMediaTotalTime","visualCurrentTime","visualTotalTime","actualTotalTime","dzsapInstance","init","timeInstance","api_set_timeVisualCurrent","api_get_time_total","api_get_time_curr","getVisualCurrentTime","api_set_timeVisualTotal","currentTime","getCurrentTime","playFrom_ready","Storage","getDuration","handle_end","isMediaEnded","inter_isEnded","api_seek_to_visual","temp_time_curr","isSafeToChangeTrack","targetTime","$targetPlayer","sample_time_start","sample_time_total","pseudo_sample_time_end","sample_perc_start","sample_perc_end","sample_time_end","ajax_submit_views","argp","playerid","currip","currIp","playerSource","urlToAjaxHandler","auxnr","increment_views","ajax_view_submitted","auxlikes","ajax_submit_download","starrating_alreadyrated","_ClassMetaParts","extraHtml","playbtn_svg","pausebtn_svg","svg_share_icon","player_constructArtistAndSongCon","structHtmlMeta","_conControls","_audioplayerInner","wrap","_apControls","_apControlsRight","_apControlsLeft","_conPlayPauseCon","skinwave_mode","before","setup_structure","structure_str_apControls","setup_inner_player","setup_otherstructure","img","Image","setup_structure__setup_wrapper_image","aux_str_time","structure_str_scrubbar","aux_str_con_controls","controls_external_scrubbar","struct_con_playpause","structConPlayPause","settings_extrahtml_before_play_pause","addExtraHtmlInPlace","show_tooltips","structure_generatePlayPauseString","extraHtmlAreas","controlsLeft","aux_str_con_volume","disable_volume","controlsRight","playbtnSvg","pausebtnSvg","parentgallery","api_skin_redlights_give_controls_right_to_all","setup_media","$$scrubbProg","$conControls","bind","$currTime","time_total_for_visual","setupStructure_thumbnailCon","design_menu_show_player_state_button","skinwave_place_metaartist_after_volume","skinwave_place_thumb_after_volume","setup_structure_scrub","skinwave_timer_static","check_multisharer","skin_minimal_canvasplay","isCanvasFirstDrawn","player_navigation","disable_player_navigation","prev_btn_str","next_btn_str","auxs","isMultiSharer","setup_structure_sanitizers","next","radio_isGoingToUpdateSongName","radio_isGoingToUpdateArtistName","struct_embedButtonWithTooltip","feedEmbedCode","enable_embed_button","$embedButton","execCommand","feedEmbedFunctionality","footer_btn_playlist","dzsap_inner_playlist_is_loaded","classFunctionalityInnerPlaylist","DzsapInnerPlaylist","index_extrahtml_toloads","unwrap","extraHtmlBottomFunctionality","setup_structure_extras","afterArtist","bottom","settings_extrahtml_in_float_right_str","feedSelector","addToString","$appendElement","defaultPlayerOptions","autoplay_on_scrub_click","cueMedia","preload_method","loop","pause_method","settings_extrahtml","settings_extrahtml_after_play_pause","settings_trigger_resize","design_thumbh","extra_classes_player","scrub_show_scrub_time","embed_code","soundcloud_apikey","php_retriever","wavesurfer_pcm_length","pcm_data_try_to_generate","pcm_data_try_to_generate_wait_for_real_pcm","pcm_notice","notice_no_media","sampleTimesMode","mobile_delete","mobile_disable_fakeplayer","skinwave_comments_displayontime","skinwave_comments_allow_post_if_not_logged_in","skinwave_comments_links_to","skinwave_comments_mode_outer_selector","volume_from_gallery","design_animateplaypause","embedded","embedded_iframe_id","google_analytics_send_play_event","fakeplayer","failsafe_repair_media_element","action_audio_play","action_audio_play2","action_audio_pause","action_audio_end","action_audio_comment","action_received_time_total","action_audio_change_media","action_audio_loaded_metadata","action_video_contor_60secs","type_audio_stop_buffer_on_unfocus","settings_exclude_from_list","skin_minimal_button_size","gallery_gapless_play","preview_on_hover","settings_php_handler","player_icecastOrShoutcastRefresh","crossDomain","documentElement","new_title","new_artist","regexMatches","syncPlayers_gotoPrev","syncPlayers_gotoItem","syncPlayers_gotoNext","playlist_inner_currNr","playlistInner_gotoItem","console","log","player_feederSeekTo","targetTimeMediaScrub","actualDataTypeOfMedia","fakeplayer_is_feeder","called_from","api_seek_to","view_resizeEmbedded","frameElement","outerHeight","message","name","params","postMessage","player_detect_skinwave_mode","dzsap_globalidind","dzsap_inited","loading_multi_sharer","dzsap_player_interrupted_by_dzsap","dzsap_sticktobottom_con","dzsap_self_options","dzsap_generating_pcm","dzsap_box_main_con","dzsap_lasto","dzsap_player_index","dzsap_action_play_listeners","DzsAudioPlayer","argThis","_scrubBgCanvasCtx","$feed_fakeButton","$parentPlaylist","$commentsWritter","$commentsChildren","$commentsSelector","$reflectionVisualObject","commentPositionPerc","spectrum_audioContextBufferSource","lastArray","last_lastArray","isPlayerPlaying","isPlayerPlayingEased","isPlayerPlayingEasedInterval","youtube_retryPlayTimeout","lastTimeInSeconds","inter_checkReady","cthisWidth","isPcmTryingToGenerate","isPlayPromised","original_real_mp3","youtube_currentId","youtube_isInited","isSentCacheTotalTime","mediaProtectionStatus","classMetaParts","SelfInstance","classInit","$arg","getActualTotalTime","isScrubShowingCurrentTime","scrubbarWidth","scrubbarProgX","currTime_outerWidth","cthisId","isDestroyed","isDestroyedForRebuffer","media_isLoopActive","isListenersSetup","player_index_in_gallery","inter_60_secs_contor","is_under_400","isRenderingFrameInterval","draw_canvas_inter","calculate_dims_time","scrubbarh","top","change_visual_target","api_pause_media_visual","set_sourcePlayer","$sourcePlayer_","api_play_media_visual","api_draw_curr_time","api_get_times","api_check_time","api_draw_scrub_prog","view_updateColorHighlight","reinit","destroy_listeners","destroy_it","handleClickForSetupMedia","unbind","play_media","init_checkIfReady","init_loaded","readyState","aux_thumb_con_str","player_setupStructure_thumbnailCon","outerHTML","wrapAll","view_wave_setupRandomPcm","default_pcm","i3","toFixed","stringify","handleClick_playPause","setupMediaAttrs","dzsap_youtube_setupMedia","newSource","stringAudioElement","type_normal_stream_type","stringAudioTagOpen","stringAudioTagClose","buildAudioElementHtml","mediaSetupElement","addEventListener","action_initLoaded","attempt_reload","networkState","HTMLMediaElement","NETWORK_NO_SOURCE","earg","txt","target","$audio_","service_checkIfWeShouldUpdateTotalTime","view_drawCurrentTime","setupMediaListeners","makeMediaPreloadInTheFuture","isWasPlaying","repairMediaElement","handleMouseDown","once","player_initSpectrumOnUserAction","mediaSetup","setup_listeners","viewCalculateScrubbarWidth","seek_to","handleMouseOnScrubbar","mousex","pageX","targetPositionOnScrub","view_calculateTargetPositionOnScrub","api_seek_to_perc","player_scrubbarSetup","last_vol_before_mute","isMuted","volume_dragging","volume_handleMouse","mouseXRelativeToVolume","pageY","player_volumeSetup","view_handleResize","volume_getLast","dzsap_stickyPlayer_show","defaultVolume","getItem","getDefaultVolume","do_not_autoplay","autoplay","handleEnterFrame","handle_mouse","count_60secs","media_toggleLoop","isGoingToActivate","seek_to_perc","totalTime","$scrubBgCanvas","spectrum_fakeItMode","duration_viy","begin_viy","change_viy","Uint8Array","frequencyBinCount","getByteFrequencyData","len","last_lastarray","slice","view_spectrum_drawMeter","view_player_scrubModeWaveAdjustCurrTimeAndTotalTime","fadeIn","view_updateTotalTime","view_drawScrubProgress","style","processCurrentFrame","dzsap_view_player_skinMinimal_drawFrame","fire_only_once","requestAnimationFrame","isToggleCancelled","inter_checkTotalTime","dzsap_skin_minimal_inited","dzsap_view_player_skinMinimal_onClickPlayPause","togglePlayPause","media_handleEnd","api_get_media_isLoopActive","api_gallery_handle_end","$parentPlaylistForSource","SelfPlaylist","autoplayNextMethod","autoplayNext","getAutoplayNextMethod","api_handle_end","media_handleEventEnd","view_resizeHandleTreatSkins","draw_canvas_inter_func","dzsap_skinFunctions_handleResize","_metaArtistCon_w","_metaArtistCon_l","api_handleResize","argperc","deeplinking","newlink","stateObj","foo","getActualTargetTime","seekTo","seek_to_visual","set_playback_speed","setPlaybackRate","playbackRate","pause_media_visual","call_actual_player","donot_change_media","player_actualPlayerPause","pauseVideo","pause","media_pause","player_sourcePlayerPauseVisual","play_media_visual","player_determineSyncPlayersIndex","api_goto_item","call_from_aux","delay","player_sourcePlayerPlayVisual","output","itShouldReturn","api_regenerate_sync_players_with_this_playlist","api_regenerate_playerlist_inner","player_actualPlayerPlay","dzsap_youtube_playMedia","errorFn","tryToPlay","play","createBufferSource","buffer","start","async_media_tryToPlay","media_tryToPlay","api_try_to_submit_view","service_submitView","play_trigger_step_back","getSampleTimesFromDom","setup_pcm_random_for_now","handleResize","cue","test","dzsap_send_total_time","design_color_bg","design_color_highlight","php_handler","configureAudioPlayerOptionsInitial","player_viewApplySkinWaveModes","$fakePlayer","player_determineActualPlayer","extraHtmlBottom","extraHtmlControlsLeft","extraHtmlControlsRight","newExtraHtmlSectionClassName","className","player_determineHtmlAreas","syncPlayers_buildList","_feed_obj","player_adjustIdentifiers","scriptUrl","dzsap_youtube_functions_inited","dzsap_youtube_functions_init","alert","soundcloud_retriever","async","dataType","q","stream_url","retrieve_soundcloud_url","dzsap_part_comments_loaded","comments_setupCommentsInitial","isGoingToSetupMediaNow","checkIfNeedsSongNameRefresh","initObjects","classInstance","api_init_loaded","api_destroy","api_play","api_get_last_vol","api_get_source","api_click_for_setup_media","api_set_playback_speed","api_destroy_listeners","api_media_toggleLoop","api_change_visual_target","api_change_design_color_highlight","nrSeconds","api_playback_speed","argSpeed","api_set_action_audio_play","api_set_action_audio_pause","api_set_action_audio_end","api_set_action_audio_comment","dzsap_part_mediaChange_loaded","dzsap_part_mediaChange_init","_target","toggleClass","api_playback_slow","api_playback_reset","player_setupMiscButtons","scrubbar_moving","scrubbar_moving_x","aux3","passive","originalEvent","touches","dzsap_player_touchFunctionalitySetup","player_commentsSelectorInit","dzsap_part_starRatings_loaded","dzsap_init_starRatings_from_dzsap","api_toggle_menu_state","player_menuStateSetup","api_goto_prev","api_goto_next","player_nextPrevButtonsSetup","pluginurl","dzsap_init_allPlayers","$feed_dzsapConfigs","dzsap_apconfigs","$playerTarget","dzsap_init","audioplayer","ready","dzsap_player_isOneTimeSetuped","dzsap_generate_list_for_sync_players","force_regenerate","_t2","innerWidth","selector","settings"],"sourceRoot":""}