{"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/_dzsap_svgs.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/webpack/runtime/make namespace object","webpack://dzsap--compile-files/../source/audioplayer/jsinc/media/_media_functions.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_misc.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/wave-render/_wave-render-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/components/_comments.js","webpack://dzsap--compile-files/../source/audioplayer/configs/_settingsPlaylist.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/components/_nav.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/_dzsap_playlist.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/extra-functionality/_innerPlaylist.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/_player-one-time-setups.js","webpack://dzsap--compile-files/../source/audioplayer/audioplayer.sourcepack.js","webpack://dzsap--compile-files/../source/audioplayer/jsinc/media/_onePlayer_changeMedia.js"],"sourcesContent":["export 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 : 20000,\n URL_JQUERY : 'https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js',\n DEBUG_STYLE_PLAY_FUNCTIONS: 'background-color: #daffda; color: #222222;',\n ERRORED_OUT_CLASS: 'errored-out',\n ERRORED_OUT_MAX_ATTEMPTS: 5\n}\n\nexport const DZSAP_SCRIPT_SELECTOR_MAIN_SETTINGS = '#dzsap-main-settings';\nexport const DZSAP_SCRIPT_SELECTOR_KEYBOARD = '#dzsap-keyboard-controls';\n","export 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}\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 var 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 {svg_share_icon} from \"./_dzsap_svgs\";\nimport {dzsap_keyboardSetup} from \"./player/_player_keyboard\";\nimport {DZSAP_SCRIPT_SELECTOR_MAIN_SETTINGS} 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_good();\n}\n\nexport function is_ie() {\n return !!window.MSInputMethodContext && !!document.documentMode;\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 if (oCanvas.getContext(\"2d\")) {\n return true;\n }\n return false;\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 return is_android_good();\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 var ua = navigator.userAgent.toLowerCase();\n\n\n return (ua.indexOf(\"android\") > -1);\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 var 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 var 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 var aux = window.location.href;\n\n\n var auxa = aux.split('?');\n\n var cid = '';\n var 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 var $ = 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 window.dzsap_submit_like = function (argp, e) {\n\n var mainarg = argp;\n var data = {\n action: 'dzsap_submit_like',\n playerid: argp\n };\n\n var _t = null;\n\n if (e) {\n _t = jQuery(e.currentTarget);\n }\n\n\n if (window.dzsap_settings && window.dzsap_settings.ajax_url) {\n\n jQuery.ajax({\n type: \"POST\",\n url: window.dzsap_settings.ajax_url,\n data: data,\n success: function (response) {\n\n\n if (_t) {\n\n var htmlaux = _t.html();\n\n _t.html(htmlaux.replace('fa-heart-o', 'fa-heart'));\n }\n\n },\n error: function (arg) {\n\n }\n });\n }\n }\n\n\n window.dzsap_retract_like = function (argp, e) {\n\n var mainarg = argp;\n var data = {\n action: 'dzsap_retract_like',\n playerid: argp\n };\n\n var _t = null;\n\n if (e) {\n _t = jQuery(e.currentTarget);\n }\n\n\n if (window.dzsap_settings && window.dzsap_settings.ajax_url) {\n\n jQuery.ajax({\n type: \"POST\",\n url: window.dzsap_settings.ajax_url,\n data: data,\n success: function (response) {\n\n\n if (_t) {\n var htmlaux = _t.html();\n\n _t.html(htmlaux.replace('fa-heart', 'fa-heart-o'));\n }\n\n },\n error: function (arg) {\n\n }\n });\n }\n }\n\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\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 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 var $t = $(this);\n\n\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n\n if ($t.hasClass('audioplayer-song-changer')) {\n var _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 audioplayer-song-changer'\n });\n }\n\n return false;\n }\n\n if ($t.hasClass('dzsap-wishlist-but')) {\n\n\n var data = {\n action: 'dzsap_add_to_wishlist',\n playerid: $t.attr('data-post_id'),\n wishlist_action: 'add',\n };\n\n\n if ($t.find('.svg-icon').hasClass('fa-star')) {\n data.wishlist_action = 'remove';\n }\n\n\n if (window.dzsap_lasto.settings_php_handler) {\n $.ajax({\n type: \"POST\",\n url: window.dzsap_lasto.settings_php_handler,\n data: data,\n success: function (response) {\n\n\n if ($t.find('.svg-icon').hasClass('fa-star-o')) {\n $t.find('.svg-icon').eq(0).attr('class', 'svg-icon fa fa-star');\n } else {\n\n $t.find('.svg-icon').eq(0).attr('class', 'svg-icon fa fa-star-o');\n }\n\n },\n error: function (arg) {\n\n }\n });\n }\n\n return false;\n\n\n }\n\n }\n\n\n $(document).off('click.dzsap_metas')\n $(document).on('click.dzsap_metas', '.audioplayer-song-changer, .dzsap-wishlist-but', handleClick_onGlobalZoomSoundsButton)\n\n\n $(document).on('click', '.dzsap-like-but', function (e) {\n\n var _t = $(this);\n\n\n var playerid = _t.attr('data-post_id');\n\n if (playerid && playerid != '0') {\n\n } else {\n if (_t.parent().parent().parent().parent().parent().hasClass('audioplayer')) {\n\n playerid = _t.parent().parent().parent().parent().parent().attr('data-feed-playerid');\n }\n }\n window.dzsap_submit_like(playerid, e);\n\n _t.removeClass('dzsap-like-but').addClass('dzsap-retract-like-but');\n\n return false;\n })\n\n $(document).on('click', '.dzsap-retract-like-but', function (e) {\n\n var _t = $(this);\n var playerid = _t.attr('data-post_id');\n\n if (playerid && playerid != '0') {\n\n } else {\n if (_t.parent().parent().parent().parent().parent().hasClass('audioplayer')) {\n\n playerid = _t.parent().parent().parent().parent().parent().attr('data-feed-playerid');\n }\n }\n\n\n window.dzsap_retract_like(playerid, e);\n _t.addClass('dzsap-like-but').removeClass('dzsap-retract-like-but');\n return false;\n })\n\n\n}\n\n\nexport function selectText(arg) {\n\n if (document.selection) {\n var range = document.body.createTextRange();\n range.moveToElementText(arg);\n range.select();\n } else if (window.getSelection) {\n var range = document.createRange();\n range.selectNode(arg);\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(range);\n }\n}\n\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\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\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 var 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 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_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 var regexr = / skin-/g;\n\n\n if (regexr.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\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\n\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\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\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\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\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\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\nexport function player_initSpectrum(selfClass) {\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\n\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\n if (selfClass.audioType === 'selfHosted') {\n\n\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 var 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\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\nexport function player_icecastOrShoutcastRefresh(selfClass) {\n\n\n var 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\n selfClass._metaArtistCon.find('.the-name').html(new_title);\n }\n if (selfClass.radio_isGoingToUpdateArtistName) {\n\n selfClass._metaArtistCon.find('.the-artist').html(new_artist)\n }\n },\n error: function (err) {\n\n }\n });\n\n}\n\n/**\n * called in player init()\n * @param selfClass\n */\nexport function player_determineStickToBottomContainer(selfClass) {\n\n if (selfClass.cthis.parent().hasClass('dzsap-sticktobottom')) {\n selfClass.$stickToBottomContainer = selfClass.cthis.parent();\n selfClass.isStickyPlayer = true;\n\n }\n if (selfClass.cthis.parent().parent().hasClass('dzsap-sticktobottom')) {\n selfClass.$stickToBottomContainer = selfClass.cthis.parent().parent();\n selfClass.isStickyPlayer = true;\n }\n}\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\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 extraHtmlBottom += jQuery(this).html();\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\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 var _t23 = jQuery(this);\n\n\n if (_t23.hasClass('dzsap_footer')) {\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\nexport function player_detect_skinwave_mode() {\n\n var 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 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 var 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 (var it1 = 0; it1 < maxlen; it1++) {\n arr[it1] = Math.random() * 100;\n\n }\n\n return arr;\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(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 = '<canvas class=\"scrubbar-type-wave--canvas scrub-bg-img';\n struct_scrubBg_str += '\" ></canvas>';\n\n struct_scrubProg_str = '<canvas class=\"scrubbar-type-wave--canvas scrub-prog-img';\n struct_scrubProg_str += '\" ></canvas>';\n\n\n selfClass._scrubbar.find('.scrub-bg').eq(0).append(struct_scrubBg_str);\n selfClass._scrubbar.find('.scrub-prog').eq(0).append(struct_scrubProg_str);\n\n\n selfClass._scrubbarbg_canvas = selfClass._scrubbar.find('.scrub-bg-img').last();\n selfClass._scrubbarprog_canvas = selfClass._scrubbar.find('.scrub-prog-img').last();\n\n if (o.skinwave_enableSpectrum === 'on') {\n selfClass._scrubbarprog_canvas.hide();\n }\n\n\n if (margs.prepare_for_transition_in) {\n selfClass._scrubbarbg_canvas.addClass('preparing-transitioning-in');\n selfClass._scrubbarprog_canvas.addClass('preparing-transitioning-in');\n setTimeout(function () {\n selfClass._scrubbarbg_canvas.addClass('transitioning-in');\n selfClass._scrubbarprog_canvas.addClass('transitioning-in');\n }, 20);\n }\n}\n","\n\n\nexport const playbtn_svg = '<svg class=\"svg-icon\" version=\"1.2\" baseProfile=\"tiny\" id=\"Layer_1\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"25px\" height=\"30px\" viewBox=\"0 0 25 30\" xml:space=\"preserve\"> <path d=\"M24.156,13.195L2.406,0.25C2.141,0.094,1.867,0,1.555,0C0.703,0,0.008,0.703,0.008,1.562H0v26.875h0.008 C0.008,29.297,0.703,30,1.555,30c0.32,0,0.586-0.109,0.875-0.266l21.727-12.93C24.672,16.375,25,15.727,25,15 S24.672,13.633,24.156,13.195z\"/> </svg>';\nexport const pausebtn_svg = '<svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_3\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"12px\" height=\"13px\" viewBox=\"0 0 13.415 16.333\" enable-background=\"new 0 0 13.415 16.333\" xml:space=\"preserve\"> <path fill=\"#D2D6DB\" d=\"M4.868,14.59c0,0.549-0.591,0.997-1.322,0.997H2.2c-0.731,0-1.322-0.448-1.322-0.997V1.618 c0-0.55,0.592-0.997,1.322-0.997h1.346c0.731,0,1.322,0.447,1.322,0.997V14.59z\"/> <path fill=\"#D2D6DB\" d=\"M12.118,14.59c0,0.549-0.593,0.997-1.324,0.997H9.448c-0.729,0-1.322-0.448-1.322-0.997V1.619 c0-0.55,0.593-0.997,1.322-0.997h1.346c0.731,0,1.324,0.447,1.324,0.997V14.59z\"/> </svg>';\n\n\n\n\n\nexport const svg_share_icon = '<svg class=\"svg-icon\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Capa_1\" x=\"0px\" y=\"0px\" width=\"512px\" height=\"512px\" viewBox=\"0 0 511.626 511.627\" style=\"enable-background:new 0 0 511.626 511.627;\" xml:space=\"preserve\"> <g> <path d=\"M506.206,179.012L360.025,32.834c-3.617-3.617-7.898-5.426-12.847-5.426s-9.233,1.809-12.847,5.426 c-3.617,3.619-5.428,7.902-5.428,12.85v73.089h-63.953c-135.716,0-218.984,38.354-249.823,115.06C5.042,259.335,0,291.03,0,328.907 c0,31.594,12.087,74.514,36.259,128.762c0.57,1.335,1.566,3.614,2.996,6.849c1.429,3.233,2.712,6.088,3.854,8.565 c1.146,2.471,2.384,4.565,3.715,6.276c2.282,3.237,4.948,4.859,7.994,4.859c2.855,0,5.092-0.951,6.711-2.854 c1.615-1.902,2.424-4.284,2.424-7.132c0-1.718-0.238-4.236-0.715-7.569c-0.476-3.333-0.715-5.564-0.715-6.708 c-0.953-12.938-1.429-24.653-1.429-35.114c0-19.223,1.668-36.449,4.996-51.675c3.333-15.229,7.948-28.407,13.85-39.543 c5.901-11.14,13.512-20.745,22.841-28.835c9.325-8.09,19.364-14.702,30.118-19.842c10.756-5.141,23.413-9.186,37.974-12.135 c14.56-2.95,29.215-4.997,43.968-6.14s31.455-1.711,50.109-1.711h63.953v73.091c0,4.948,1.807,9.232,5.421,12.847 c3.62,3.613,7.901,5.424,12.847,5.424c4.948,0,9.232-1.811,12.854-5.424l146.178-146.183c3.617-3.617,5.424-7.898,5.424-12.847 C511.626,186.92,509.82,182.636,506.206,179.012z\" fill=\"#696969\"/> </g></svg> ';\n\n\n\nexport const svg_embed_button = ' <svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_1\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"10.975px\" height=\"14.479px\" viewBox=\"0 0 10.975 14.479\" enable-background=\"new 0 0 10.975 14.479\" xml:space=\"preserve\"> <g> <path d=\"M2.579,1.907c0.524-0.524,1.375-0.524,1.899,0l4.803,4.804c0.236-0.895,0.015-1.886-0.687-2.587L5.428,0.959 c-1.049-1.05-2.75-1.05-3.799,0L0.917,1.671c-1.049,1.05-1.049,2.751,0,3.801l3.167,3.166c0.7,0.702,1.691,0.922,2.587,0.686 L1.867,4.52c-0.524-0.524-0.524-1.376,0-1.899L2.579,1.907z M5.498,13.553c1.05,1.05,2.75,1.05,3.801,0l0.712-0.713 c1.05-1.05,1.05-2.75,0-3.8L6.843,5.876c-0.701-0.7-1.691-0.922-2.586-0.686l4.802,4.803c0.524,0.525,0.524,1.376,0,1.897 l-0.713,0.715c-0.523,0.522-1.375,0.522-1.898,0L1.646,7.802c-0.237,0.895-0.014,1.886,0.686,2.586L5.498,13.553z\"/> </g> </svg> ';\n\n\n\nexport const svg_prev_btn = '<svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_2\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"14px\" height=\"14px\" viewBox=\"0 0 12.5 12.817\" enable-background=\"new 0 0 12.5 12.817\" xml:space=\"preserve\"> <g> <g> <g> <path fill=\"#D2D6DB\" d=\"M2.581,7.375c-0.744-0.462-1.413-0.94-1.486-1.061C1.021,6.194,1.867,5.586,2.632,5.158l2.35-1.313 c0.765-0.427,1.505-0.782,1.646-0.789s0.257,1.03,0.257,1.905V7.87c0,0.876-0.051,1.692-0.112,1.817 C6.711,9.81,5.776,9.361,5.032,8.898L2.581,7.375z\"/> </g> </g> </g> <g> <g> <g> <path fill=\"#D2D6DB\" d=\"M6.307,7.57C5.413,7.014,4.61,6.441,4.521,6.295C4.432,6.15,5.447,5.42,6.366,4.906l2.82-1.577 c0.919-0.513,1.809-0.939,1.979-0.947s0.309,1.236,0.309,2.288v3.493c0,1.053-0.061,2.033-0.135,2.182S10.144,9.955,9.25,9.4 L6.307,7.57z\"/> </g> </g> </g> </svg>';\nexport const svg_next_btn = '<svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_2\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"14px\" height=\"14px\" viewBox=\"0 0 12.5 12.817\" enable-background=\"new 0 0 12.5 12.817\" xml:space=\"preserve\"> <g> <g> <g> <path fill=\"#D2D6DB\" d=\"M9.874,5.443c0.744,0.462,1.414,0.939,1.486,1.06c0.074,0.121-0.771,0.729-1.535,1.156L7.482,8.967 C6.719,9.394,5.978,9.75,5.837,9.756C5.696,9.761,5.581,8.726,5.581,7.851V4.952c0-0.875,0.05-1.693,0.112-1.816 c0.062-0.124,0.995,0.326,1.739,0.788L9.874,5.443z\"/> </g> </g> </g> <g> <g> <g> <path fill=\"#D2D6DB\" d=\"M6.155,5.248c0.893,0.556,1.696,1.129,1.786,1.274c0.088,0.145-0.928,0.875-1.847,1.389l-2.811,1.57 c-0.918,0.514-1.808,0.939-1.978,0.947c-0.169,0.008-0.308-1.234-0.308-2.287V4.66c0-1.052,0.061-2.034,0.135-2.182 s1.195,0.391,2.089,0.947L6.155,5.248z\"/> </g> </g> </g> </svg>';\n\n\n\n\n\nexport const svg_menu_state = '<svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_2\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"13.25px\" height=\"13.915px\" viewBox=\"0 0 13.25 13.915\" enable-background=\"new 0 0 13.25 13.915\" xml:space=\"preserve\"> <path d=\"M1.327,4.346c-0.058,0-0.104-0.052-0.104-0.115V2.222c0-0.063,0.046-0.115,0.104-0.115H11.58 c0.059,0,0.105,0.052,0.105,0.115v2.009c0,0.063-0.046,0.115-0.105,0.115H1.327z\"/> <path d=\"M1.351,8.177c-0.058,0-0.104-0.051-0.104-0.115V6.054c0-0.064,0.046-0.115,0.104-0.115h10.252 c0.058,0,0.105,0.051,0.105,0.115v2.009c0,0.063-0.047,0.115-0.105,0.115H1.351z\"/> <path d=\"M1.351,12.182c-0.058,0-0.104-0.05-0.104-0.115v-2.009c0-0.064,0.046-0.115,0.104-0.115h10.252 c0.058,0,0.105,0.051,0.105,0.115v2.009c0,0.064-0.047,0.115-0.105,0.115H1.351z\"/> </svg>';\nexport const svg_embed_btn = '<svg class=\"svg-icon\" version=\"1.2\" baseProfile=\"tiny\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"15px\" height=\"15px\" viewBox=\"0 0 15 15\" xml:space=\"preserve\"> <g id=\"Layer_1\"> <polygon fill=\"#E6E7E8\" points=\"1.221,7.067 0.494,5.422 4.963,1.12 5.69,2.767 \"/> <polygon fill=\"#E6E7E8\" points=\"0.5,5.358 1.657,4.263 3.944,10.578 2.787,11.676 \"/> <polygon fill=\"#E6E7E8\" points=\"13.588,9.597 14.887,8.34 12.268,2.672 10.969,3.93 \"/> <polygon fill=\"#E6E7E8\" points=\"14.903,8.278 14.22,6.829 9.714,11.837 10.397,13.287 \"/> </g> <g id=\"Layer_2\"> <rect x=\"6.416\" y=\"1.713\" transform=\"matrix(0.9663 0.2575 -0.2575 0.9663 2.1699 -1.6329)\" fill=\"#E6E7E8\" width=\"1.805\" height=\"11.509\"/> </g> </svg>';\n\n\nexport const svg_footer_playlist = '<svg class=\"svg-icon\" version=\"1.1\" id=\"Layer_2\" xmlns=\"https://www.w3.org/2000/svg\" xmlns:xlink=\"https://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"13.25px\" height=\"13.915px\" viewBox=\"0 0 13.25 13.915\" enable-background=\"new 0 0 13.25 13.915\" xml:space=\"preserve\"> <path d=\"M1.327,4.346c-0.058,0-0.104-0.052-0.104-0.115V2.222c0-0.063,0.046-0.115,0.104-0.115H11.58 c0.059,0,0.105,0.052,0.105,0.115v2.009c0,0.063-0.046,0.115-0.105,0.115H1.327z\"/> <path d=\"M1.351,8.177c-0.058,0-0.104-0.051-0.104-0.115V6.054c0-0.064,0.046-0.115,0.104-0.115h10.252 c0.058,0,0.105,0.051,0.105,0.115v2.009c0,0.063-0.047,0.115-0.105,0.115H1.351z\"/> <path d=\"M1.351,12.182c-0.058,0-0.104-0.05-0.104-0.115v-2.009c0-0.064,0.046-0.115,0.104-0.115h10.252 c0.058,0,0.105,0.051,0.105,0.115v2.009c0,0.064-0.047,0.115-0.105,0.115H1.351z\"/> </svg>';\n\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))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import * as dzsapHelpers from '../_dzsap_helpers';\nimport * as dzsHelpers from '../../js_common/_dzs_helpers';\nimport {ConstantsDzsAp} from \"../../configs/_constants\";\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 (dzsapHelpers.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 if (dzsapHelpers.is_ie()) {\n // -- ie\n selfClass.$mediaNode_.play();\n resolve({\n 'resolve_type': 'started_playing'\n })\n } else {\n // -- normal\n\n selfClass.cthis.addClass('zoomsounds-player--media--is-loading');\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 }\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\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\nexport const setupMediaListeners = function (selfClass, setupMediaAttrs, action_initLoaded, volume_lastVolume, volume_setVolume) {\n\n let attempt_reload = 0;\n\n\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 && dzsapHelpers.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(dzsHelpers.setupTooltip({\n tooltipConClass: ' feedback-tooltip-con',\n tooltipIndicatorText: '<span class=\"player-but\"><span class=\"the-icon-bg\" style=\"background-color: #912c2c\"></span><span class=\"svg-icon dzsap-color-ui-inverse\" >ℹ</span></span>',\n tooltipInnerHTML: 'cannot load - ( ' + selfClass.data_source + ' ) - error: ' + txt,\n }));\n }\n }\n }\n }\n }\n\n\n function handleMediaMetaLoaded(e) {\n\n\n dzsapHelpers.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(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 += '<audio';\n stringAudioTagOpen += ' id=\"' + selfClass.uniqueId + '-audio\"';\n stringAudioTagOpen += ' preload=\"' + o.preload_method + '\"';\n if (o.skinwave_enableSpectrum === 'on') {\n stringAudioTagOpen += ' crossOrigin=\"anonymous\"';\n\n }\n\n if (dzsapHelpers.is_ios()) {\n if (calledFrom === 'change_media') {\n stringAudioTagOpen += ' autoplay';\n }\n }\n\n stringAudioTagOpen += '>';\n stringAudioTagSource = '';\n\n\n if (selfClass.data_source) {\n\n if (!selfClass.data_source && type_normal_stream_type !== 'icecast') {\n selfClass.data_source = selfClass.cthis.attr('data-source');\n }\n\n\n if (selfClass.data_source !== 'fake') {\n stringAudioTagSource += '<source src=\"' + selfClass.data_source + '\" type=\"audio/mpeg\">';\n if (selfClass.cthis.attr('data-sourceogg') !== undefined) {\n stringAudioTagSource += '<source src=\"' + selfClass.cthis.attr('data-sourceogg') + '\" type=\"audio/ogg\">';\n }\n } else {\n selfClass.cthis.addClass('meta-loaded meta-fake');\n }\n }\n stringAudioTagClose += '</audio>';\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.player_playing;\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}\nexport const media_pause = function (selfClass, callbackFn) {\n\n var $ = jQuery;\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","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 * as dzsapHelpers from '../_dzsap_helpers';\n\nimport {ConstantsDzsAp} from \"../../configs/_constants\";\nimport * as dzsHelpers from \"../../js_common/_dzs_helpers\";\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 dzsHelpers.loadScriptIfItDoesNotExist(wavesurferUrl, window.scrubModeWave__initGenerateWaveData).then((resolveStr) => {\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\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 dzsapHelpers.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 dzsapHelpers.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 * draw canvas here\n * @param $canvas_\n * @param pcm_arr\n * @param hexcolor\n * @param pargs\n * @param isProgressScrubContext\n * @returns {boolean}\n */\nexport function draw_canvas($canvas_, pcm_arr, hexcolor, pargs, isProgressScrubContext) {\n var 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 var $ = jQuery;\n if (pargs) {\n margs = Object.assign(margs, pargs);\n }\n\n hexcolor = dzsapHelpers.sanitizeToHexColor(hexcolor);\n\n var _canvas = $($canvas_);\n var __canvas = $canvas_;\n let isWithinSample = false;\n var {selfClass, skinwave_wave_mode_canvas_waves_number, skinwave_wave_mode_canvas_waves_padding} = margs;\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\n skinwave_wave_mode_canvas_waves_padding = 0;\n }\n }\n\n\n if (selfClass) {\n var o = selfClass.initOptions;\n }\n\n\n if (_canvas && _canvas.get(0)) {\n\n } else {\n return false;\n }\n\n var _canvasContext = _canvas.get(0).getContext(\"2d\");\n\n var ar_str = pcm_arr;\n\n\n var waves = [];\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 _canvasContext.imageSmoothingEnabled = false;\n _canvasContext.imageSmoothing = false;\n _canvasContext.imageSmoothingQuality = \"high\";\n _canvasContext.webkitImageSmoothing = false;\n\n if (pcm_arr) {\n\n } else {\n setTimeout(function () {\n\n }, 1000);\n return false;\n }\n\n if (typeof (ar_str) == 'object') {\n waves = ar_str;\n } else {\n try {\n\n waves = JSON.parse(ar_str);\n } catch (err) {\n\n }\n }\n\n\n var barIndex = 0,\n max = 0;\n\n\n // -- normalizing\n for (barIndex = 0; barIndex < waves.length; barIndex++) {\n if ((waves[barIndex]) > max) {\n max = (waves[barIndex]);\n }\n }\n\n var ar_new = [];\n for (barIndex = 0; barIndex < waves.length; barIndex++) {\n ar_new[barIndex] = parseFloat(Math.abs(waves[barIndex]) / Number(max));\n }\n\n waves = ar_new;\n\n\n var widthCanvas;\n var heightCanvas;\n var gradient = null;\n\n\n if (selfClass) {\n\n __canvas.width = selfClass._scrubbar.width();\n }\n\n widthCanvas = __canvas.width;\n heightCanvas = __canvas.height;\n\n\n var barCount = skinwave_wave_mode_canvas_waves_number;\n var bar_space = skinwave_wave_mode_canvas_waves_padding;\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 var reflection_size = parseFloat(o.skinwave_wave_mode_canvas_reflection_size);\n\n if (widthCanvas / barCount < 1) {\n barCount = Math.ceil(barCount / 3);\n\n }\n\n\n var bar_w = Math.ceil(widthCanvas / barCount);\n var normal_size_ratio = 1 - reflection_size;\n\n\n if (bar_w == 0) {\n bar_w = 1;\n bar_space = 0;\n }\n if (bar_w == 1) {\n bar_space = bar_space / 2;\n }\n\n\n var lastBarHeight = 0;\n var searched_index = null;\n\n\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 var progress_hexcolor = '';\n var progress_hexcolors = '';\n\n\n if (margs.call_from == 'spectrum') {\n progress_hexcolor = o.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\n var spectrum_isBarWithinProgress = false; // -- color the bar in progress colors\n\n // -- left right gradient END\n\n\n /**\n * draw with different color\n * @param i\n * @returns {boolean}\n */\n function isBeforeOrAfterSample(currBarIndex) {\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 function view_drawBars(isReflection = false) {\n for (barIndex = 0; barIndex < barCount; barIndex++) {\n isWithinSample = false;\n _canvasContext.save();\n\n\n searched_index = Math.ceil(barIndex * (waves.length / barCount));\n\n // -- we'll try to prevent\n if (barIndex < barCount / 5) {\n if (waves[searched_index] < 0.1) {\n waves[searched_index] = 0.1;\n }\n }\n if (waves.length > barCount * 2.5 && barIndex > 0 && barIndex < waves.length - 1) {\n waves[searched_index] = Math.abs(waves[searched_index] + waves[searched_index - 1] + waves[searched_index + 1]) / 3\n }\n // -- normalize end\n\n\n let targetRatio = normal_size_ratio;\n if (isReflection) {\n targetRatio = reflection_size;\n }\n\n let barHeight = Math.abs(waves[searched_index] * heightCanvas * targetRatio);\n\n\n if (o.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 var barPositionTop = isReflection ? heightCanvas * normal_size_ratio : Math.ceil(heightCanvas * targetRatio - barHeight);\n\n\n _canvasContext.beginPath();\n _canvasContext.rect(barIndex * bar_w, barPositionTop, bar_w - 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);\n }\n\n\n if (spectrum_isBarWithinProgress) {\n if (isReflection && o.skinwave_wave_mode_canvas_mode !== 'reflecto') {\n _canvasContext.fillStyle = dzsapHelpers.hexToRgb(progress_hexcolor, 0.25);\n } else {\n _canvasContext.fillStyle = isWithinSample ? dzsapHelpers.hexToRgb(progress_hexcolor, 0.5) : '#' + progress_hexcolor;\n }\n\n\n if (progress_hexcolors.length) {\n\n const startColor = isReflection && o.skinwave_wave_mode_canvas_mode !== 'reflecto' ? dzsapHelpers.hexToRgb('#' + progress_hexcolors[0], 0.25) : '#' + progress_hexcolors[0];\n const endColor = isReflection && o.skinwave_wave_mode_canvas_mode !== 'reflecto' ? dzsapHelpers.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 && o.skinwave_wave_mode_canvas_mode !== 'reflecto') {\n _canvasContext.fillStyle = dzsapHelpers.hexToRgb(hexcolor, 0.25);\n } else {\n\n _canvasContext.fillStyle = isWithinSample ? dzsapHelpers.hexToRgb(hexcolor, 0.5) : '' + hexcolor;\n }\n\n // -- if we have gradient\n if (hexcolors.length) {\n const startColor = isReflection && o.skinwave_wave_mode_canvas_mode !== 'reflecto' ? dzsapHelpers.hexToRgb(dzsapHelpers.utils_sanitizeToColor(hexcolors[0]), 0.25) : '' + dzsapHelpers.utils_sanitizeToColor(hexcolors[0]);\n const endColor = isReflection && o.skinwave_wave_mode_canvas_mode !== 'reflecto' ? dzsapHelpers.hexToRgb(dzsapHelpers.utils_sanitizeToColor(hexcolors[1]), 0.25) : '' + dzsapHelpers.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 _canvasContext.clearRect(0, 0, widthCanvas, heightCanvas);\n\n view_drawBars();\n view_drawBars(true);\n\n // -- reflection\n setTimeout(function () {\n selfClass.scrubbar_reveal();\n }, 100)\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","\nimport * as dzsapHelpers from './_dzsap_helpers';\nimport {decode_json} from '../js_common/_dzs_helpers';\n\nexport const ajax_submit_views = function (argp) {\n\n\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 };\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 = dzsapHelpers.dzs_clean_string(selfClass.data_source);\n }\n\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 var 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\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_submit_like',\n postdata: mainarg,\n playerid: selfClass.the_player_id\n };\n\n\n selfClass.cthis.find('.btn-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('.btn-like').addClass('active');\n selfClass.cthis.find('.btn-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\n selfClass.cthis.find('.btn-like').addClass('active');\n selfClass.cthis.find('.btn-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\nexport const ajax_retract_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_retract_like',\n postdata: mainarg,\n playerid: selfClass.the_player_id\n };\n\n selfClass.cthis.find('.btn-like').addClass('disabled');\n\n\n if (selfClass.urlToAjaxHandler) {\n $.ajax({\n type: \"POST\",\n url: selfClass.urlToAjaxHandler,\n data: data,\n success: function (response) {\n\n selfClass.cthis.find('.btn-like').removeClass('active');\n selfClass.cthis.find('.btn-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 selfClass.cthis.find('.btn-like').removeClass('active');\n selfClass.cthis.find('.btn-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\nexport const ajax_comment_publish = function (argp) {\n // -- only handles ajax call + result\n var selfClass = this;\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n\n\n var mainarg = argp;\n var data = {\n action: 'dzsap_front_submitcomment',\n postdata: mainarg,\n playerid: selfClass.the_player_id,\n comm_position: selfClass.commentPositionPerc,\n };\n\n if (window.dzsap_settings) {\n data.skinwave_comments_avatar = window.dzsap_settings.comments_avatar;\n data.skinwave_comments_account = window.dzsap_settings.comments_username;\n }\n\n if (selfClass.cthis.find('*[name=comment-email]').length > 0) {\n data.email = selfClass.cthis.find('*[name=comment-email]').eq(0).val();\n }\n\n\n if (selfClass.urlToAjaxHandler) {\n jQuery.ajax({\n type: \"POST\",\n url: selfClass.urlToAjaxHandler,\n data: data,\n success: function (response) {\n if (response.charAt(response.length - 1) == '0') {\n response = response.slice(0, response.length - 1);\n }\n\n\n\n var aux = '';\n\n // -- process php\n aux = '';\n aux += '<span class=\"dzstooltip-con\" style=\"left:' + selfClass.commentPositionPerc + '\"><span class=\"dzstooltip arrow-from-start transition-slidein arrow-bottom skin-black\" style=\"width: 250px;\"><span class=\"the-comment-author\">@' + window.dzsap_settings.comments_username + '</span> says:<br>';\n aux += dzsapHelpers.htmlEncode(data.postdata);\n\n\n aux += '</span><div class=\"the-avatar\" style=\"background-image: url(' + window.dzsap_settings.comments_avatar + ')\"></div></span>';\n\n\n\n\n\n selfClass._commentsHolder.children().each(function () {\n var _t2 = $(this);\n\n if (_t2.hasClass('dzstooltip-con') == false) {\n _t2.addClass('dzstooltip-con');\n }\n })\n\n selfClass._commentsHolder.append(aux);\n\n\n if (selfClass.action_audio_comment) {\n selfClass.action_audio_comment(selfClass.cthis, aux);\n }\n\n\n\n },\n error: function (arg) {\n\n selfClass._commentsHolder.append(data.postdata);\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 },\n error: function (arg) {\n\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","import {ajax_comment_publish} from \"../_dzsap_ajax\";\n\nimport * as dzsapHelpers from '../_dzsap_helpers';\nimport {getRelativeX} from \"../../js_common/_dzs_helpers\";\n\nconst TOOLTIP_ALL_TALIGN_CLASSES = `talign-start talign-center talign-end`;\nconst STRUCTURE_COMMENTS_WRITER = `<div class=\"dzstooltip dzstooltip--comments-writer talign-center arrow-top style-rounded color-dark-light dims-set transition-slidedown \" style=\"width: 330px;\"> <div class=\"dzstooltip--inner\"><div class=\"comments-writer\"><div class=\"comments-writer-inner\">\n<div class=\"comments-writer--form\">\n\n <div class=\"dzsap-comments--section\">\n\n <textarea name=\"comment-text\" placeholder=\"Your comment..\" type=\"text\" class=\"comment-input\"></textarea>\n\n </div>\n <div class=\"dzsap-comments--section\">\n <input placeholder=\"Your email..\" name=\"comment-email\" type=\"text\" class=\"comment-input\">\n </div>\n <div class=\"dzsap-comments--section overflow-and-fixed \">\n\n <div class=\"flex-grow-1 \"><span\n class=\"dzsap-comments--comment-form-label\">commenting on </span> <span\n class=\"dzsap-comments--comment-form-label-time\">1:07</span></div>\n <div class=\"flex-grow-0 margin-left-auto\"><button class=\"submit-ap-comment dzs-button-dzsap float-right\">➤ Submit</button></div>\n <div class=\"clear\"></div>\n\n </div>\n </div>\n\n <div class=\"comments-writer--avatar-con\">\n <div class=\"comments-writer--avatar\" style=\"\"></div>\n </div>\n </div></div><span class=\"dzstooltip--close\"><span\n class=\"label--x-button\">✖</span></span></div></div>`;\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport const hide_comments_writer = function (selfClass) {\n\n\n var $ = jQuery;\n\n\n selfClass.cthis.removeClass('comments-writer-active');\n selfClass._commentsHolder.find('.dzstooltip-con.placeholder').remove();\n selfClass.$commentsWritter.removeClass('active');\n selfClass.$commentsWritter.css({\n 'height': 0\n })\n\n\n if (selfClass.initOptions.parentgallery && $(selfClass.initOptions.parentgallery).get(0) !== undefined && $(selfClass.initOptions.parentgallery).get(0).api_handleResize !== undefined) {\n $(selfClass.initOptions.parentgallery).get(0).api_handleResize();\n }\n\n setTimeout(function () {\n\n selfClass.cthis.find('.comments-writter-temp-css,.dzsap-style-comments').remove();\n }, 300);\n};\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport const comments_setupCommentsInitial = function (selfClass) {\n\n\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n\n if (selfClass.cthis.find('.the-comments').length > 0 && selfClass.cthis.find('.the-comments').eq(0).children().length > 0) {\n selfClass.$commentsChildren = selfClass.cthis.find('.the-comments').eq(0).children();\n }\n\n var str_comments_holder = '<div class=\"comments-holder\">';\n\n\n if (o.skinwave_comments_links_to) {\n\n str_comments_holder += '<a href=\"' + o.skinwave_comments_links_to + '\" target=\"_blank\" class=\"the-bg\"></a>';\n } else {\n\n str_comments_holder += '<div class=\"the-comments-holder-bg\"><div class=\"the-avatar comments-avatar--placeholder\"></div></div>';\n }\n\n\n str_comments_holder += '</div><div class=\"clear\"></div>' + STRUCTURE_COMMENTS_WRITER;\n\n\n selfClass._scrubbar.appendOnce(str_comments_holder);\n selfClass._commentsHolder = selfClass.cthis.find('.comments-holder').eq(0);\n selfClass.$commentsWritter = selfClass.cthis.find('.dzstooltip--comments-writer').eq(0);\n\n\n comments_setupCommentsHolder(selfClass);\n\n\n selfClass._commentsHolder.on('click', function (e) {\n comments_handleClickCommentsBg(selfClass, this, e);\n });\n selfClass._commentsHolder.on('mousemove', function (e) {\n\n selfClass._commentsHolder.find('.comments-avatar--placeholder').css('left', `${getRelativeX(e.pageX, e.currentTarget) - 7}px`)\n\n });\n selfClass.$commentsWritter.find('.dzstooltip--close').on('click', (e) => {\n comments_handleClickCancel(selfClass, e);\n });\n selfClass.$commentsWritter.find('.submit-ap-comment').on('click', (e) => {\n comments_handleClickSubmit(selfClass, e);\n });\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nexport const comments_setupCommentsHolder = function (selfClass) {\n\n\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n if (selfClass._commentsHolder && selfClass.$commentsChildren) {\n\n\n selfClass.$commentsChildren.each(function () {\n\n var _c = $(this);\n\n\n if (o.skinwave_comments_process_in_php === 'on') {\n\n if (_c && _c.hasClass && _c.hasClass('dzstooltip-con')) {\n if (_c.find('.dzstooltip > .dzstooltip--inner').length) {\n\n } else {\n\n\n _c.find('.dzstooltip').wrapInner('<div class=\"dzstooltip--inner\"></div>');\n\n\n _c.find('.the-avatar').addClass('tooltip-indicator');\n _c.find('.dzstooltip').before(_c.find('.tooltip-indicator'));\n _c.find('.dzstooltip').addClass('talign-start style-rounded color-dark-light');\n }\n }\n }\n\n selfClass._commentsHolder.append(_c);\n })\n }\n\n}\n\nfunction comments_updateCommentHolderTimerWhenReady(selfClass, percClickFromScrubWidth) {\n\n\n if (selfClass.timeModel.getVisualTotalTime()) {\n\n selfClass.$commentsWritter.find('.dzsap-comments--comment-form-label-time').html(dzsapHelpers.formatTime(percClickFromScrubWidth * selfClass.timeModel.getVisualTotalTime()));\n } else {\n setTimeout(() => {\n comments_updateCommentHolderTimerWhenReady(selfClass, percClickFromScrubWidth);\n }, 100);\n }\n\n}\n\nexport const comments_handleClickCommentsBg = function (selfClass, argThis, e) {\n\n\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n var $commentsHolder = $(argThis);\n\n var leftMouseX = parseInt(e.clientX, 10) - $commentsHolder.offset().left;\n let percClickFromScrubWidth = leftMouseX / $commentsHolder.width();\n\n\n selfClass.commentPositionPerc = `calc(${(percClickFromScrubWidth) * 100}% - 7px)`;\n\n\n comments_updateCommentHolderTimerWhenReady(selfClass, percClickFromScrubWidth);\n\n if (o.skinwave_comments_links_to) {\n return;\n }\n if (o.skinwave_comments_allow_post_if_not_logged_in === 'off' && !(window.dzsap_settings && window.dzsap_settings.comments_username)) {\n return false;\n }\n\n // -- start\n\n var sw = true;\n\n\n selfClass._commentsHolder.children().each(function () {\n var $commentElement = $(this);\n\n\n if ($commentElement.hasClass('placeholder') || $commentElement.hasClass('the-bg')) {\n return;\n }\n\n var lmx2 = $commentElement.offset().left - $commentsHolder.offset().left;\n\n\n if (Math.abs(lmx2 - leftMouseX) < 20) {\n selfClass._commentsHolder.find('.dzstooltip-con.placeholder').remove();\n sw = false;\n\n return false;\n }\n })\n\n\n if (!sw) {\n return false;\n }\n\n\n // todo: assign left on tooltip\n selfClass.$commentsWritter.css({\n 'left': `${leftMouseX}px`\n })\n\n\n selfClass.$commentsWritter.css('top', ((parseInt(selfClass._commentsHolder.css('top'), 10) + 20) + 'px'))\n\n\n if (selfClass.$commentsWritter.hasClass('active') === false) {\n selfClass.$commentsWritter.addClass('active');\n selfClass.cthis.addClass('comments-writer-active');\n }\n\n\n if (window.dzsap_settings && window.dzsap_settings.comments_username) {\n selfClass.cthis.find('input[name=comment-email]').remove();\n } else {\n selfClass.$commentsWritter.find('.comments-writer--avatar-con').remove();\n }\n\n\n add_comments_placeholder(selfClass);\n\n\n}\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n */\nfunction add_comments_placeholder(selfClass) {\n\n var strCommentsAvatarUrl = '';\n\n if (window.dzsap_settings && window.dzsap_settings.comments_avatar) {\n strCommentsAvatarUrl = window.dzsap_settings.comments_avatar;\n }\n\n selfClass._commentsHolder.remove('.dzsap-style-comments');\n selfClass._commentsHolder.append('<style class=\"dzsap-style-comments\">.dzstooltip-con:not(.placeholder) { opacity: 0.5; }</style>')\n selfClass._commentsHolder.find('.dzstooltip-con.placeholder').remove();\n selfClass._commentsHolder.append('<span class=\"dzstooltip-con placeholder\" style=\"left:' + selfClass.commentPositionPerc + ';\"><div class=\"the-avatar\" style=\"background-image: url(' + strCommentsAvatarUrl + ')\"></div></span>');\n}\n\nexport const comments_handleClickCancel = function (selfClass, e) {\n hide_comments_writer(selfClass);\n}\n\n\nfunction comment_submit(selfClass, comment_text, comment_email, comment_username) {\n\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n var comm_author = '';\n if (comment_email) {\n var regex_mail = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n if (regex_mail.test(comment_email) == false) {\n alert('please insert email, your email is just used for gravatar. it will not be sent or stored anywhere');\n return false;\n }\n\n comm_author = String(comment_email).split('@')[0];\n\n\n if (selfClass.$commentsSelector) {\n\n selfClass.$commentsSelector.find('*[name=comment_email],*[name=comment_user]').remove();\n }\n\n if (!window.dzsap_settings) {\n window.dzsap_settings = {};\n }\n\n window.dzsap_settings.comments_username = comm_author;\n window.dzsap_settings.comments_avatar = 'https://secure.gravatar.com/avatar/' + window.MD5(String(selfClass.cthis.find('input[name=comment-email]').eq(0).val()).toLowerCase()) + '?s=20';\n }\n\n\n var aux = '';\n\n\n // -- process php\n\n aux += comment_text;\n\n\n selfClass.cthis.find('*[name=comment-text]').eq(0).val('');\n\n\n selfClass.cthis.find('.comments-writter-temp-css,.dzsap-style-comments').remove();\n\n\n (ajax_comment_publish.bind(selfClass))(aux);\n\n hide_comments_writer(selfClass);\n\n if (o.parentgallery && $(o.parentgallery).get(0) != undefined && $(o.parentgallery).get(0).api_player_commentSubmitted != undefined) {\n $(o.parentgallery).get(0).api_player_commentSubmitted();\n }\n\n}\n\n\n/**\n *\n * @param selfClass\n * @param e\n * @returns {boolean}\n */\nexport const comments_handleClickSubmit = function (selfClass, e) {\n\n var comment_email = '';\n\n if (selfClass.cthis.find('input[name=comment-email]').length) {\n comment_email = selfClass.cthis.find('input[name=comment-email]').eq(0).val();\n }\n\n\n comment_submit(selfClass, selfClass.cthis.find('*[name=comment-text]').eq(0).val(), comment_email);\n\n\n return false;\n}\n\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param e\n * @returns {boolean}\n */\nexport const comments_selector_event = function (selfClass, e) {\n var $ = jQuery;\n var _t = $(this);\n var _con = null;\n\n\n if (_t.parent().parent().hasClass('zoomsounds-comment-wrapper')) {\n _con = _t.parent().parent();\n }\n if (_t.parent().parent().parent().hasClass('zoomsounds-comment-wrapper')) {\n _con = _t.parent().parent().parent();\n }\n\n if (e.type == 'focusin') {\n\n\n var spx = selfClass.timeCurrent / selfClass.timeTotal * selfClass._commentsHolder.width();\n spx += 'px';\n\n\n selfClass.commentPositionPerc = `calc(${selfClass.timeCurrent / selfClass.timeTotal * 100}% - 7px)`;\n\n _con.addClass('active');\n\n add_comments_placeholder(selfClass);\n }\n if (e.type == 'focusout') {\n\n\n }\n if (e.type == 'click') {\n\n if (_t.hasClass('dzstooltip--close')) {\n\n _con.removeClass('active');\n _con.find('input').val('');\n }\n if (_t.hasClass('comments-btn-submit')) {\n\n\n var comment_email = '';\n\n if (_con.find('.comment_email').length) {\n comment_email = _con.find('.comment_email').eq(0).val();\n }\n\n\n comment_submit(selfClass, _con.find('.comment_text').eq(0).val(), comment_email);\n\n\n _con.removeClass('active');\n _con.find('input').val('');\n\n\n return false;\n }\n\n\n }\n}\n\n","export const default_opts = {\n design_skin: 'skin-default', // -- \"skin-default\" or \"skin-aura\" or \"skin-wave\"\n cueFirstMedia: 'on', // -- preload the mp3 to the first item\n autoplay: 'off', // -- autoplay the first item\n autoplayNext: 'on', // -- autoplay items after the first item\n settings_enable_linking: 'off', // -- use html5 history to remember last position in the gallery\n\n design_menu_position: 'bottom',\n navigation_method: 'mouseover', // -- 'mouseover', 'full', 'legacyscroll' or 'dzsscroll'\n design_menu_state: 'open', // -- options are \"open\" or \"closed\", this sets the initial state of the menu, even if the initial state is \"closed\", it can still be opened by a button if you set design_menu_show_player_state_button to \"on\"\n design_menu_show_player_state_button: 'off', // -- show a button that allows to hide or show the menu\n design_menu_width: 'default',\n design_menu_height: 'default',\n design_menu_space: 'default',\n settings_php_handler: '', // -- link to publisher.php ( auto assigned in wordpress to admin-ajax.php )\n design_menuitem_width: 'default',\n design_menuitem_height: 'default',\n design_menuitem_space: 'default',\n\n disable_menu_navigation: 'off',\n loop_playlist: 'on',\n menu_facebook_share: 'auto' // -- mousemove or scroller or all\n , enable_easing: 'off' // -- enable easing for menu animation\n , settings_ap: 'default' // -- string or array\n , playlistTransition: 'fade' // -- fade or direct\n , embedded: 'off'\n , mode_showall_layout: 'one-per-row' // or \"two-per-row\" or \"three-per-row\"\n , settings_mode: 'mode-normal' // -- mode-normal or mode-showall\n , settings_mode_showall_show_number: 'on' // mode-normal or mode-showall\n , mode_normal_video_mode: 'auto' // -- auto or \"one\" ( only one audio player )\n\n};\n\n","import {is_ios, is_android} from \"../_dzsap_helpers\";\n\n\nimport {sanitizeToCssPx} from \"../../js_common/_dzs_helpers\";\nimport {ajax_submit_like} from \"../_dzsap_ajax\";\n\nexport const ZoomSoundsNav = class {\n\n constructor(parentGallery) {\n this.parentGallery = parentGallery;\n\n this.structZoomsoundsNav = '';\n this._navMain = null;\n this._navClipper = null;\n this.cgallery = null;\n\n this.size_navMainClipSize = null;\n this.size_navMainTotalSize = null;\n this.finish_viy = 0;\n\n this.init();\n\n\n }\n\n init() {\n\n var selfGallery = this.parentGallery;\n\n this.structZoomsoundsNav = '<div class=\"nav-main zoomsounds-nav ' + selfGallery.initOptions.design_skin + ' navigation-method-' + selfGallery.initOptions.navigation_method + '\"><div class=\"nav-clipper\"></div></div>';\n\n\n // -- let us do some sanitize\n if (this.parentGallery.initOptions.navigation_method === 'full') {\n this.parentGallery.initOptions.design_menu_height = 'auto';\n }\n\n }\n\n init_ready() {\n\n\n\n const self = this;\n var selfGallery = this.parentGallery;\n\n if (selfGallery.initOptions.disable_menu_navigation == 'on') {\n this._navMain.hide();\n }\n\n if(!isNaN(Number(selfGallery.initOptions.design_menu_height))){\n this._navMain.css({\n 'height': sanitizeToCssPx(selfGallery.initOptions.design_menu_height)\n })\n }\n\n if (is_ios() || is_android()) {\n this._navMain.css({\n 'overflow': 'auto'\n })\n }\n\n\n if (selfGallery.initOptions.design_menu_state == 'closed') {\n this._navMain.css({\n 'height': 0\n })\n this.cgallery.removeClass('menu-opened');\n this.cgallery.addClass('menu-closed');\n } else {\n this.cgallery.addClass('menu-opened');\n this.cgallery.removeClass('menu-closed');\n }\n\n\n this._navClipper.on('click', '.menu-btn-like,.menu-facebook-share', click_menuitem);\n this._navClipper.on('click', '.menu-item', click_menuitem);\n\n\n function click_menuitem(e) {\n var _t = jQuery(this);\n\n if (e.type == 'click') {\n if (_t.hasClass('menu-item')) {\n var ind = _t.parent().children().index(_t);\n\n selfGallery.goto_item(ind);\n }\n if (_t.hasClass('menu-btn-like')) {\n\n\n if (_t.parent().parent().attr('data-playerid')) {\n (ajax_submit_like.bind(selfGallery))(1, _t.parent().parent().attr('data-playerid'), {\n refferer: _t\n });\n }\n\n\n return false;\n }\n if (_t.hasClass('menu-facebook-share')) {\n if (_t.parent().parent().attr('data-playerid')) {\n (ajax_submit_like.bind(selfGallery))(1, _t.parent().parent().attr('data-playerid'), {\n refferer: _t\n });\n }\n\n\n return false;\n }\n }\n\n }\n\n\n }\n\n\n get_structZoomsoundsNav() {\n return this.structZoomsoundsNav;\n }\n\n set_elements(_navMain, _navClipper, cgallery) {\n this._navMain = _navMain;\n this._navClipper = _navClipper;\n this.cgallery = cgallery;\n }\n\n calculateDims() {\n\n this.size_navMainClipSize = this._navMain.height();\n this.size_navMainTotalSize = this._navClipper.outerHeight();\n\n const self = this;\n\n if (this.parentGallery.initOptions.navigation_method === 'mouseover') {\n\n\n\n if (this.size_navMainTotalSize > this.size_navMainClipSize && this.size_navMainClipSize > 0) {\n this._navMain.off('mousemove', navMain_mousemove);\n this._navMain.on('mousemove', navMain_mousemove);\n } else {\n this._navMain.off('mousemove', navMain_mousemove);\n }\n }\n\n function navMain_mousemove(e) {\n\n var aux_error = 20; //==erroring for the menu scroll\n var $ = jQuery;\n var _t = $(this);\n var mx = e.pageX - _t.offset().left;\n var my = e.pageY - _t.offset().top;\n\n\n if (self.size_navMainTotalSize <= self.size_navMainClipSize) {\n return;\n }\n\n self.size_navMainClipSize = self._navMain.outerHeight();\n\n\n\n var vix = 0;\n var viy = 0;\n\n viy = (my / self.size_navMainClipSize) * -(self.size_navMainTotalSize - self.size_navMainClipSize + 10 + aux_error * 2) + aux_error;\n\n if (viy > 0) {\n viy = 0;\n }\n if (viy < -(self.size_navMainTotalSize - self.size_navMainClipSize + 10)) {\n viy = -(self.size_navMainTotalSize - self.size_navMainClipSize + 10);\n }\n\n self.finish_viy = viy;\n\n\n\n\n if (is_ios() == false && is_android() == false) {\n if (self.parentGallery.initOptions.enable_easing != 'on') {\n\n self._navClipper.css({\n 'transform': 'translateY(' + self.finish_viy + 'px)'\n });\n }\n }\n\n\n }\n\n }\n\n\n\n toggle_menu_state() {\n\n const self = this;\n\n if (this._navMain.height() == 0) {\n this._navMain.css({\n 'height': this.parentGallery.initOptions.design_menu_height\n })\n\n\n this.cgallery.removeClass('menu-closed');\n this.cgallery.addClass('menu-opened');\n } else {\n\n this._navMain.css({\n 'height': 0\n })\n this.cgallery.removeClass('menu-opened');\n this.cgallery.addClass('menu-closed');\n }\n setTimeout(function () {\n self.parentGallery.handleResize();\n }, 400); // -- animation delay\n\n }\n\n parseTrackData(track_data) {\n var foundnr = 0;\n var self = this;\n this._navMain.find('.menu-item-views').each(function () {\n var _t2 = $(this);\n\n var aux_html = _t2.html();\n\n var reg_findid = /{{views_(.*?)}}/g;\n\n\n var aux = reg_findid.exec(aux_html);\n\n\n\n var id = '';\n if (aux && aux[1]) {\n\n id = aux[1];\n\n for (var i in track_data) {\n\n\n\n if (id == track_data[i].label || id == 'ap' + track_data[i].label) {\n aux_html = aux_html.replace(aux[0], track_data[i].views);\n foundnr++;\n break;\n }\n }\n\n\n _t2.html(aux_html);\n\n }\n\n\n })\n\n if (foundnr < track_data.length) {\n\n self._navMain.find('.menu-item-views').each(function () {\n\n var _t2 = jQuery(this);\n\n var aux_html = _t2.html();\n var reg_findid = /{{views_(.*?)}}/g;\n\n var aux = reg_findid.exec(aux_html);\n\n if (aux && aux[0]) {\n\n aux_html = aux_html.replace(aux[0], 0);\n _t2.html(aux_html);\n }\n\n })\n }\n\n\n }\n}\n","import * as dzsapHelpers from './_dzsap_helpers';\nimport {playbtn_svg} from './_dzsap_svgs';\nimport {ConstantsDzsAp} from \"../configs/_constants\";\nimport {default_opts} from '../configs/_settingsPlaylist';\n\nimport * as ZoomSoundsNav from './components/_nav';\n\n\nclass DzsApPlaylist {\n constructor(argThis, argOptions, $) {\n\n this.argThis = argThis;\n this.argOptions = argOptions;\n this.$ = $;\n this.navClass = null;\n\n\n this.init();\n }\n\n init() {\n\n\n var $ = this.$;\n var selfGallery = this;\n\n var o = selfGallery.argOptions;\n var cgallery = $(selfGallery.argThis);\n var cid = 'ag1';\n var currNr = -1 // -- the current player that is playing\n , lastCurrNr = 0\n , nrChildren = 0\n , tempNr = 0;\n\n var i = 0;\n\n\n var dzsap_currplayer_focused = null;\n var _sliderMain, _sliderClipper, _navMain, _navClipper, _cache;\n var busy = false,\n first = true,\n destroyed = true,\n skin_redlight_give_controls_right_to_all_players = false // -- if the mode is mode-showall and the skin of the player is redlights, then make all players with controls right\n ;\n\n\n var trying_to_get_track_data = false;\n\n\n var arr_menuitems = [];\n var track_data = []; // -- the whole track data views / likes etc.\n\n var str_alertBeforeRate = 'You need to comment or rate before downloading.';\n\n\n var duration_viy = 20;\n\n var target_viy = 0;\n\n var begin_viy = 0;\n\n var change_viy = 0;\n\n selfGallery.goto_item = goto_item;\n selfGallery.handleResize = handleResize;\n\n\n selfGallery.initOptions = o;\n if (window.dzsap_settings && typeof (window.dzsap_settings.str_alertBeforeRate) != 'undefined') {\n str_alertBeforeRate = window.dzsap_settings.str_alertBeforeRate;\n }\n\n cgallery.get(0).currNr_2 = -1; // -- we use this as backup currNR for mode-showall ( hack )\n\n init();\n\n function init() {\n // -- init gallery here\n\n\n if (o.settings_ap === 'default') {\n if (cgallery.attr('data-player-options')) {\n o.settings_ap = dzsapHelpers.convertPluginOptionsToFinalOptions(cgallery.get(0), {}, null, 'data-player-options');\n } else {\n const _firstPlayer = cgallery.find('.audioplayer, .audioplayer-tobe').eq(0);\n if (_firstPlayer) {\n\n o.settings_ap = dzsapHelpers.convertPluginOptionsToFinalOptions(_firstPlayer.get(0), {}, null);\n }\n }\n } else {\n if (typeof o.settings_ap == 'string' && window.dzsap_apconfigs) {\n if (typeof window.dzsap_apconfigs[o.settings_ap] === 'object') {\n o.settings_ap = {...window.dzsap_apconfigs[o.settings_ap]};\n }\n }\n }\n\n\n if (o.settings_ap === 'default' || typeof o.settings_ap === 'string') {\n o.settings_ap = {};\n }\n\n\n if (o.design_menu_width === 'default') {\n o.design_menu_width = '100%';\n }\n\n if (o.design_menu_height === 'default') {\n o.design_menu_height = '200';\n }\n\n\n if (cgallery.hasClass('skin-wave')) {\n o.design_skin = 'skin-wave';\n }\n if (cgallery.hasClass('skin-default')) {\n o.design_skin = 'skin-default';\n }\n if (cgallery.hasClass('skin-aura')) {\n o.design_skin = 'skin-aura';\n }\n\n\n cgallery.addClass(o.settings_mode);\n\n\n cgallery.append('<div class=\"slider-main\"><div class=\"slider-clipper\"></div></div>');\n\n cgallery.addClass('menu-position-' + o.design_menu_position);\n\n _sliderMain = cgallery.find('.slider-main').eq(0);\n\n\n var lengthAudioPlayersInPlaylist = cgallery.find('.items').children('.audioplayer-tobe').length;\n\n // --- if there is a single audio player in the gallery - theres no point of a menu\n\n\n o.settings_ap.disable_player_navigation = o.disable_player_navigation;\n if (lengthAudioPlayersInPlaylist === 0 || lengthAudioPlayersInPlaylist === 1) {\n o.design_menu_position = 'none';\n o.settings_ap.disable_player_navigation = 'on';\n }\n\n\n selfGallery.navClass = new ZoomSoundsNav.ZoomSoundsNav(selfGallery);\n\n\n if (o.design_menu_position === 'top') {\n _sliderMain.before(selfGallery.navClass.get_structZoomsoundsNav());\n }\n if (o.design_menu_position === 'bottom') {\n _sliderMain.after(selfGallery.navClass.get_structZoomsoundsNav());\n }\n\n\n if (o.settings_php_handler) {\n\n } else {\n if (o.settings_ap.settings_php_handler) {\n o.settings_php_handler = o.settings_ap.settings_php_handler;\n }\n }\n\n\n if (typeof cgallery.attr('id')) {\n cid = cgallery.attr('id');\n } else {\n\n var ind = 0;\n while ($('ag' + ind).length === 0) {\n ind++;\n }\n\n\n cid = 'ag' + ind;\n\n cgallery.attr('id', cid);\n }\n\n\n _sliderClipper = cgallery.find('.slider-clipper').eq(0);\n _navMain = cgallery.find('.nav-main').eq(0);\n _navClipper = cgallery.find('.nav-clipper').eq(0);\n\n if (cgallery.children('.extra-html').length) {\n cgallery.append(cgallery.children('.extra-html'));\n }\n\n if (o.settings_mode === 'mode-showall') {\n _sliderClipper.addClass('layout-' + o.mode_showall_layout);\n }\n\n selfGallery.navClass.set_elements(_navMain, _navClipper, cgallery);\n\n\n reinit();\n\n\n selfGallery.navClass.init_ready();\n\n\n parse_track_data();\n\n\n if (dzsapHelpers.can_history_api() === false) {\n o.settings_enable_linking = 'off';\n }\n\n $(window).on('resize', handleResize);\n handleResize();\n setTimeout(handleResize, 1000);\n\n\n cgallery.get(0).api_skin_redlights_give_controls_right_to_all = function () {\n\n\n skin_redlight_give_controls_right_to_all_players = true;\n }\n\n\n if (dzsapHelpers.get_query_arg(window.location.href, 'audiogallery_startitem_' + cid)) {\n tempNr = Number(dzsapHelpers.get_query_arg(window.location.href, 'audiogallery_startitem_' + cid));\n\n lastCurrNr = tempNr;\n if (Number(dzsapHelpers.get_query_arg(window.location.href, 'audiogallery_startitem_' + cid)) && Number(dzsapHelpers.get_query_arg(window.location.href, 'audiogallery_startitem_' + cid)) > 0) {\n\n\n // -- caution .. coming from share link will trigger autoplay!!!\n if (o.force_autoplay_when_coming_from_share_link == 'on') {\n o.autoplay = 'on';\n }\n }\n }\n\n\n if (o.settings_mode == 'mode-normal') {\n\n goto_item(tempNr, {\n 'called_from': 'init'\n });\n }\n\n\n if (o.settings_mode === 'mode-showall') {\n // -- mode-showall\n\n _sliderClipper.children().each(function () {\n const _t = $(this);\n\n\n var ind = _t.parent().children('.audioplayer,.audioplayer-tobe').index(_t);\n\n if (_t.hasClass('audioplayer-tobe')) {\n\n\n var player_args = Object.assign({}, o.settings_ap);\n player_args.parentgallery = cgallery;\n player_args.call_from = 'mode show-all';\n player_args.action_audio_play = mode_showall_listen_for_play;\n\n // -- showall\n _t.audioplayer(player_args);\n\n\n ind = String(ind + 1);\n\n if (ind.length < 2) {\n ind = '0' + ind;\n }\n\n if (o.mode_showall_layout === 'one-per-row' && o.settings_mode_showall_show_number !== 'off') {\n\n _t.before('<div class=\"number-wrapper\"><span class=\"the-number\">' + ind + '</span></div>')\n _t.after('<div class=\"clear for-number-wrapper\"></div>')\n }\n }\n\n })\n\n\n if ($.fn.isotope && o.mode_showall_layout !== 'one-per-row') {\n\n // -- we have isotope\n _sliderClipper.find('.audioplayer,.audioplayer-tobe').addClass('isotope-item');\n setTimeout(function () {\n\n _sliderClipper.prepend('<div class=\"grid-sizer\"></div>');\n _sliderClipper.isotope({\n // options\n itemSelector: '.isotope-item',\n layoutMode: 'fitRows',\n percentPosition: true,\n masonry: {\n columnWidth: '.grid-sizer'\n }\n });\n _sliderClipper.addClass('isotoped');\n setTimeout(function () {\n _sliderClipper.isotope('layout')\n }, 900);\n }, ConstantsDzsAp.PLAYLIST_TRANSITION_DURATION);\n\n\n _sliderClipper.append('<div class=\"clear\"></div>');\n }\n\n\n if (skin_redlight_give_controls_right_to_all_players) {\n\n _sliderClipper.children('.audioplayer').each(function () {\n\n var _t = $(this);\n\n\n if (_t.find('.ap-controls-right').eq(0).prev().hasClass('controls-right') === false) {\n _t.find('.ap-controls-right').eq(0).before('<div class=\"controls-right\"> </div>');\n }\n });\n }\n\n }\n\n\n cgallery.find('.download-after-rate').on('click', click_downloadAfterRate);\n\n cgallery.get(0).api_regenerate_sync_players_with_this_playlist = regenerate_sync_players_with_this_playlist;\n cgallery.get(0).api_goto_next = goto_next;\n cgallery.get(0).api_goto_prev = goto_prev;\n cgallery.get(0).api_goto_item = goto_item;\n cgallery.get(0).api_gallery_handle_end = handlePlaylistSongEnd;\n cgallery.get(0).api_toggle_menu_state = toggle_menu_state;\n cgallery.get(0).api_handleResize = handleResize;\n cgallery.get(0).api_player_commentSubmitted = player_commentSubmitted;\n cgallery.get(0).api_player_rateSubmitted = player_rateSubmitted;\n cgallery.get(0).api_reinit = reinit;\n cgallery.get(0).api_play_curr_media = play_curr_media;\n cgallery.get(0).api_get_nr_children = get_nr_children;\n cgallery.get(0).api_init_player_from_gallery = init_player_from_gallery;\n cgallery.get(0).api_filter = filterPlayersInPlaylist;\n cgallery.get(0).api_destroy = destroy_gallery;\n cgallery.get(0).SelfPlaylist = selfGallery;\n\n\n setInterval(calculate_on_interval, 1000);\n\n\n setTimeout(init_loaded, 700);\n\n\n if (o.enable_easing == 'on') {\n\n handle_frame();\n }\n\n\n cgallery.addClass('dzsag-inited');\n\n cgallery.addClass('transition-' + o.playlistTransition);\n cgallery.addClass('playlist-transition-' + o.playlistTransition);\n\n\n }\n\n\n function destroy_gallery() {\n\n\n if (destroyed) {\n return false;\n }\n\n\n cgallery.remove();\n cgallery = null;\n\n destroyed = true;\n }\n\n function filterPlayersInPlaylist(filterBy, searchedString) {\n if (!(filterBy)) {\n filterBy = 'title';\n }\n\n /**\n *\n * @param $audioPlayer_\n * @returns {boolean} true if found\n */\n const filterForIsotope = ($audioPlayer_) => {\n\n var $audioPlayer = $($audioPlayer_);\n var referenceVal = '';\n\n if (filterBy === 'title') {\n referenceVal = $audioPlayer.find('.the-name').text();\n }\n\n\n if (searchedString === '') {\n return true;\n }\n return referenceVal.toLowerCase().indexOf(searchedString.toLowerCase()) > -1;\n\n\n }\n\n _sliderClipper.children().each(function () {\n var isAccordingToSearch = filterForIsotope(this);\n if (isAccordingToSearch) {\n $(this).addClass('is-according-to-search');\n } else {\n $(this).removeClass('is-according-to-search');\n }\n if (_sliderClipper.hasClass('isotoped')) {\n\n _sliderClipper.isotope({\n filter: '.is-according-to-search'\n });\n } else {\n if (isAccordingToSearch) {\n $(this).fadeIn('fast');\n } else {\n $(this).fadeOut('fast');\n }\n }\n });\n\n }\n\n function regenerate_sync_players_with_this_playlist() {\n\n // -- in case we play from playlist we overwrite whole footer playlist\n\n window.dzsap_syncList_players = [];\n\n _sliderClipper.children('.audioplayer,.audioplayer-tobe').each(function () {\n var _t = $(this);\n _t.addClass('feeded-whole-playlist');\n if (_t.attr('data-do-not-include-in-list') != 'on') {\n window.dzsap_syncList_players.push(_t);\n }\n })\n }\n\n\n function init_parse_track_data() {\n\n if (trying_to_get_track_data) {\n return false;\n }\n\n trying_to_get_track_data = true;\n\n var data = {\n action: 'dzsap_get_views_all',\n postdata: '1',\n };\n\n\n if (o.settings_php_handler) {\n $.ajax({\n type: \"POST\",\n url: o.settings_php_handler,\n data: data,\n success: function (response) {\n\n\n cgallery.attr('data-track-data', response);\n parse_track_data();\n\n },\n error: function (arg) {\n\n }\n });\n }\n\n\n }\n\n function parse_track_data() {\n if (cgallery.attr('data-track-data')) {\n try {\n track_data = JSON.parse(cgallery.attr('data-track-data'));\n } catch (err) {\n console.log(err);\n }\n\n if (track_data && track_data.length) {\n\n selfGallery.navClass.parseTrackData(track_data);\n\n }\n\n\n }\n\n\n }\n\n function get_nr_children() {\n return nrChildren;\n }\n\n function find_player_id(arg) {\n if (arg.attr('data-player-id')) {\n return arg.attr('data-player-id');\n } else {\n if (arg.attr('id')) {\n return arg.attr('id');\n } else {\n if (arg.attr('data-source')) {\n return dzsapHelpers.dzs_clean_string(arg.attr('data-source'));\n }\n }\n }\n }\n\n function generateMenuItemObjects(notInitedPlayers) {\n\n const arr_menuitems = [];\n notInitedPlayers.each(function () {\n var _c = $(this);\n let menuDescriptionHtml = '';\n\n if (_c.find('.menu-description').length && _c.find('.menu-description').eq(0).html()) {\n menuDescriptionHtml = _c.find('.menu-description').html();\n } else {\n menuDescriptionHtml = '';\n\n if (_c.find('.feed-artist-name').length || _c.find('.feed-song-name').length) {\n\n menuDescriptionHtml = ``;\n if (_c.attr('data-thumb')) {\n menuDescriptionHtml += `<div class=\"menu-item-thumb-con\"><div class=\"menu-item-thumb\" style=\"background-image: url(${_c.attr('data-thumb')})\"></div></div>`;\n }\n menuDescriptionHtml += `<div class=\"menu-artist-info\"><span class=\"the-artist\">${_c.find('.feed-artist-name').html()}</span><span class=\"the-name\">${_c.find('.feed-song-name').html()}</span></div>`\n }\n }\n\n\n var menuItemObject = {\n 'menu_description': menuDescriptionHtml,\n 'player_id': find_player_id(_c)\n }\n\n arr_menuitems.push(menuItemObject)\n\n\n })\n\n return arr_menuitems;\n }\n\n function reinit() {\n\n\n const notInitedPlayers = cgallery.find('.items').eq(0).children('.audioplayer-tobe');\n arr_menuitems = [];\n\n\n var player_id = '';\n\n arr_menuitems = generateMenuItemObjects(notInitedPlayers);\n _sliderClipper.append(notInitedPlayers);\n\n\n for (i = 0; i < arr_menuitems.length; i++) {\n var extra_class = '';\n if (arr_menuitems[i].menu_description && arr_menuitems[i].menu_description.indexOf('<div class=\"menu-item-thumb-con\"><div class=\"menu-item-thumb\" style=\"') == -1) {\n extra_class += ' no-thumb';\n }\n\n\n var aux = '<div class=\"menu-item' + extra_class + '\" data-menu-index=\"' + i + '\" data-gallery-id=\"' + cid + '\" data-playerid=\"' + arr_menuitems[i].player_id + '\">'\n\n if (cgallery.hasClass('skin-aura')) {\n aux += '<div class=\"menu-item-number\">' + (++nrChildren) + '</div>';\n }\n\n aux += arr_menuitems[i].menu_description;\n\n\n if (cgallery.hasClass('skin-aura') && String(arr_menuitems[i].menu_description).indexOf('menu-item-views') == 1) {\n\n if (track_data && track_data.length > 0) {\n\n aux += '<div class=\"menu-item-views\"></div>';\n } else {\n\n init_parse_track_data();\n aux += '<div class=\"menu-item-views\">' + playbtn_svg + ' ' + '<span class=\"the-count\">{{views_' + arr_menuitems[i].player_id + '}}' + '</span></div>';\n }\n\n }\n\n\n aux += '</div>';\n\n _navClipper.append(aux);\n\n\n if (cgallery.hasClass('skin-aura')) {\n\n if (arr_menuitems[i] && arr_menuitems[i].menu_description && arr_menuitems[i].menu_description.indexOf('float-right') > -1) {\n _navClipper.children().last().addClass('has-extra-info')\n }\n }\n\n }\n }\n\n function init_loaded() {\n // -- gallery\n\n cgallery.addClass('dzsag-loaded');\n }\n\n function click_downloadAfterRate() {\n var _t = $(this);\n\n\n if (!_t.hasClass('active')) {\n alert(str_alertBeforeRate)\n return false;\n }\n }\n\n\n function play_curr_media() {\n\n if (typeof (_sliderClipper.children().eq(currNr).get(0)) != 'undefined') {\n if (typeof (_sliderClipper.children().eq(currNr).get(0).api_play_media) != 'undefined') {\n _sliderClipper.children().eq(currNr).get(0).api_play_media({\n 'call_from': 'play_curr_media_gallery'\n });\n }\n\n }\n }\n\n function mode_showall_listen_for_play(arg) {\n\n\n if (o.settings_mode == 'mode-showall') {\n\n var ind = _sliderClipper.children('.audioplayer,.audioplayer-tobe').index(arg);\n\n currNr = ind;\n cgallery.get(0).currNr_2 = ind;\n\n }\n\n }\n\n function handle_frame() {\n\n // -- cgallery\n\n if (isNaN(target_viy)) {\n target_viy = 0;\n }\n\n if (duration_viy === 0) {\n requestAnimationFrame(handle_frame);\n return false;\n }\n\n begin_viy = target_viy;\n change_viy = selfGallery.navClass.finish_viy - begin_viy;\n\n\n target_viy = Number(Math.easeIn(1, begin_viy, change_viy, duration_viy).toFixed(4));\n ;\n\n\n if (dzsapHelpers.is_ios() == false && dzsapHelpers.is_android() == false) {\n _navClipper.css({\n 'transform': 'translateY(' + target_viy + 'px)'\n });\n }\n\n\n requestAnimationFrame(handle_frame);\n }\n\n\n function toggle_menu_state() {\n selfGallery.navClass.toggle_menu_state();\n }\n\n function handlePlaylistSongEnd() {\n\n console.log('handlePlaylistSongEnd() ', o);\n if (o.autoplayNext == 'on') {\n\n goto_next();\n }\n }\n\n function player_commentSubmitted() {\n _navClipper.children('.menu-item').eq(currNr).find('.download-after-rate').addClass('active');\n\n }\n\n function player_rateSubmitted() {\n _navClipper.children('.menu-item').eq(currNr).find('.download-after-rate').addClass('active');\n }\n\n function calculateDims() {\n\n\n if (o.settings_mode != 'mode-showall' && !_sliderClipper.hasClass('isotoped') && o.mode_normal_video_mode != 'one') {\n // -- mode normal, not isotope\n if (_sliderClipper.children().eq(currNr).hasClass('zoomsounds-wrapper-bg-bellow') == false) {\n _sliderClipper.css('height', _sliderClipper.children().eq(currNr).outerHeight());\n\n }\n }\n\n if (!_sliderClipper.hasClass('isotoped')) {\n // -- not isotope\n setTimeout(function () {\n _sliderClipper.css('height', 'auto');\n }, ConstantsDzsAp.PLAYLIST_TRANSITION_DURATION);\n }\n\n\n selfGallery.navClass.calculateDims();\n\n if (o.embedded == 'on') {\n\n if (window.frameElement) {\n window.frameElement.height = cgallery.height();\n\n }\n }\n }\n\n\n function calculate_on_interval() {\n // -- @called on setInterval\n\n selfGallery.navClass.calculateDims();\n\n // -- this is for player ? todo ...\n if (0 && o.gallery_gapless_play == 'on') {\n var args = {\n 'call_from': 'gapless_play'\n }\n\n if (o.parentgallery && cthis.hasClass('active-from-gallery')) {\n var _c = o.parentgallery;\n\n\n var _cach = _sliderClipper.children().eq(Number(_c.data('currNr')) + 1);\n\n\n if (!(_cach.data('gapless-inited') == true)) {\n\n var args = {\n preload_method: \"auto\"\n , \"autoplay\": \"off\"\n , \"call_from\": \"gapless_play\"\n }\n\n\n _c.get(0).api_init_player_from_gallery(_cach, args);\n\n _cach.data('gapless-inited', true);\n\n setTimeout(function () {\n _cach.get(0).api_handleResize();\n }, 1000)\n }\n }\n }\n\n\n }\n\n\n function handleResize() {\n\n if (o.settings_mode !== 'mode-showall' && _sliderClipper.hasClass('isotoped') === false) {\n setTimeout(function () {\n\n _sliderClipper.css('height', _sliderClipper.children().eq(currNr).outerHeight());\n }, 500);\n }\n\n calculateDims();\n\n }\n\n function transition_end(newCurrNr) {\n _sliderClipper.children().eq(lastCurrNr).removeClass('transitioning-out');\n\n _sliderClipper.children().eq(newCurrNr).removeClass('transitioning-in');\n lastCurrNr = currNr;\n busy = false;\n }\n\n function transition_bg_end() {\n cgallery.parent().children('.the-bg').eq(0).remove();\n busy = false;\n }\n\n function goto_prev() {\n tempNr = currNr;\n tempNr--;\n\n var isGoingToItem = true;\n\n\n if (tempNr < 0) {\n tempNr = _sliderClipper.children().length - 1;\n\n if (o.loop_playlist == 'off') {\n isGoingToItem = false;\n }\n }\n\n if (isGoingToItem) {\n\n goto_item(tempNr);\n }\n }\n\n function goto_next() {\n\n tempNr = currNr;\n\n\n var isGoingToItem = true;\n\n if (o.settings_mode == 'mode-showall') {\n tempNr = cgallery.get(0).currNr_2;\n }\n tempNr++;\n if (tempNr >= _sliderClipper.children().length) {\n tempNr = 0;\n\n if (o.loop_playlist == 'off') {\n isGoingToItem = false;\n }\n }\n\n\n if (isGoingToItem) {\n\n goto_item(tempNr);\n }\n }\n\n function goto_item(newCurrNr, pargs) {\n\n\n var margs = {\n\n 'ignore_arg_currNr_check': false\n , 'ignore_linking': false // -- does not change the link if set to true\n , donotopenlink: \"off\"\n , called_from: \"default\"\n }\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n if (busy == true) {\n return;\n }\n\n if (newCurrNr == \"last\") {\n newCurrNr = _sliderClipper.children().length - 1;\n }\n\n\n if (Boolean(currNr == newCurrNr)) {\n if (_sliderClipper && _sliderClipper.children().eq(currNr).get(0) && _sliderClipper.children().eq(currNr).get(0).api_play_media) {\n _sliderClipper.children().eq(currNr).get(0).api_play_media({\n 'call_from': 'gallery'\n });\n }\n return;\n }\n\n var _audioplayerToBeActive = _sliderClipper.children('.audioplayer,.audioplayer-tobe').eq(newCurrNr);\n\n\n var currNr_last_vol = '';\n\n if (currNr > -1) {\n if (typeof (_sliderClipper.children().eq(currNr).get(0)) != 'undefined') {\n if (typeof (_sliderClipper.children().eq(currNr).get(0).api_pause_media) != 'undefined') {\n _sliderClipper.children().eq(currNr).get(0).api_pause_media();\n }\n if (typeof (_sliderClipper.children().eq(currNr).get(0).api_get_last_vol) != 'undefined') {\n currNr_last_vol = _sliderClipper.children().eq(currNr).get(0).api_get_last_vol();\n }\n\n }\n\n\n _navClipper.children().removeClass('active active-from-gallery');\n\n\n if (o.mode_normal_video_mode == 'one') {\n\n } else {\n\n if (o.settings_mode != 'mode-showall') {\n\n\n _sliderClipper.children().eq(currNr).removeClass('active active-from-gallery');\n _navClipper.children().eq(currNr).removeClass('active active-from-gallery');\n\n\n }\n }\n\n }\n\n\n // -- setting settings\n if (o.settings_ap.design_skin === 'sameasgallery') {\n o.settings_ap.design_skin = o.design_skin;\n }\n\n\n // -- if this is the first audio\n if (currNr == -1 && o.autoplay == 'on') {\n o.settings_ap.autoplay = 'on';\n }\n\n\n // -- if this is not the first audio\n if (currNr > -1 && o.autoplayNext == 'on') {\n o.settings_ap.autoplay = 'on';\n }\n o.settings_ap.parentgallery = cgallery;\n\n o.settings_ap.design_menu_show_player_state_button = o.design_menu_show_player_state_button;\n o.settings_ap.cue = 'on';\n if (first == true) {\n if (o.cueFirstMedia == 'off') {\n o.settings_ap.cue = 'off';\n }\n\n first = false;\n }\n\n // -- setting settings END\n\n\n var args_player = $.extend({}, o.settings_ap);\n\n\n args_player.volume_from_gallery = currNr_last_vol;\n args_player.call_from = 'gotoItem';\n args_player.player_navigation = o.player_navigation;\n\n\n if (o.mode_normal_video_mode == 'one' && newCurrNr > -1 && margs.called_from != 'init') {\n // -- video mode -> one\n\n\n var _c = _sliderClipper.children().eq(0).get(0);\n _audioplayerToBeActive = _sliderClipper.children().eq(0);\n\n if (_c) {\n if (_c.api_play_media) {\n\n\n _c.api_change_media(_sliderClipper.children().eq(newCurrNr), {\n 'called_from': 'goto_item -- mode_normal_video_mode()',\n 'modeOneGalleryIndex': newCurrNr,\n 'source_player_do_not_update': 'on',\n\n });\n\n if (o.autoplayNext == 'on') {\n setTimeout(function () {\n _c.api_play_media();\n }, 200);\n }\n }\n }\n } else {\n\n // -- init player from gallery\n init_player_from_gallery(_audioplayerToBeActive, args_player);\n\n }\n\n\n // -- actions after init\n if (o.autoplayNext === 'on') {\n if (o.settings_mode === 'mode-showall') {\n currNr = cgallery.get(0).currNr_2;\n }\n if (!!(currNr > -1 && _audioplayerToBeActive.get(0) && _audioplayerToBeActive.get(0).api_play)) {\n _audioplayerToBeActive.get(0).api_play();\n }\n }\n\n if (o.settings_ap.playfrom === undefined || o.settings_ap.playfrom === \"0\") {\n if (_audioplayerToBeActive.get(0) && _audioplayerToBeActive.get(0).api_seek_to) {\n _audioplayerToBeActive.get(0).api_seek_to(0, {call_from: 'playlist_seek_from_0'});\n } else {\n console.log('_audioplayerToBeActive not found - ', _audioplayerToBeActive);\n }\n }\n\n\n // -- end actions after init\n\n dzsap_currplayer_focused = _audioplayerToBeActive.get(0);\n\n\n if (o.settings_mode !== 'mode-showall') {\n _sliderClipper.children().eq(currNr).addClass('transitioning-out');\n _audioplayerToBeActive.removeClass('transitioning-out-complete');\n _audioplayerToBeActive.addClass('transitioning-in');\n setTimeout((_arg) => {\n _arg.addClass('transitioning-out-complete')\n }, ConstantsDzsAp.PLAYLIST_TRANSITION_DURATION, _sliderClipper.children().eq(currNr));\n\n if (_audioplayerToBeActive.attr('data-type') != 'link') {\n if (margs.ignore_linking == false && o.settings_enable_linking == 'on') {\n var stateObj = {foo: \"bar\"};\n history.pushState(stateObj, null, dzsapHelpers.add_query_arg(window.location.href, 'audiogallery_startitem_' + cid, (newCurrNr)));\n }\n }\n\n if (o.playlistTransition === 'fade') {\n setTimeout(transition_end, ConstantsDzsAp.PLAYLIST_TRANSITION_DURATION, newCurrNr);\n busy = true;\n }\n if (o.playlistTransition === 'direct') {\n transition_end(newCurrNr);\n }\n }\n\n _audioplayerToBeActive.addClass('active active-from-gallery');\n _navClipper.children().eq(newCurrNr).addClass('active active-from-gallery');\n\n // -- background parent\n\n\n var bgimage = '';\n\n if (_audioplayerToBeActive.attr(\"data-bgimage\")) {\n bgimage = _audioplayerToBeActive.attr(\"data-bgimage\");\n }\n\n if (_audioplayerToBeActive.attr(\"data-wrapper-image\")) {\n bgimage = _audioplayerToBeActive.attr(\"data-wrapper-image\");\n }\n\n\n if (bgimage && cgallery.parent().hasClass('ap-wrapper') && cgallery.parent().children('.the-bg').length > 0) {\n\n\n cgallery.parent().children('.the-bg').eq(0).after('<div class=\"the-bg\" style=\"background-image: url(' + bgimage + ');\"></div>')\n cgallery.parent().children('.the-bg').eq(0).css({\n 'opacity': 1\n })\n\n\n cgallery.parent().children('.the-bg').eq(1).css({\n 'opacity': 0\n })\n cgallery.parent().children('.the-bg').eq(1).animate({\n 'opacity': 1\n }, {\n queue: false,\n duration: 1000,\n complete: transition_bg_end,\n step: function () {\n busy = true;\n }\n })\n busy = true;\n }\n\n\n if (o.settings_mode != 'mode-showall') {\n\n currNr = newCurrNr;\n\n cgallery.data('currNr', currNr);\n }\n\n\n if (_sliderClipper.children().eq(currNr).get(0) && _sliderClipper.children().eq(currNr).get(0).api_handleResize && _sliderClipper.children().eq(currNr).hasClass('media-setuped')) {\n\n\n _sliderClipper.children().eq(currNr).get(0).api_handleResize();\n }\n\n calculateDims();\n }\n\n function init_player_from_gallery(_cache, pargs) {\n\n var player_args = $.extend({}, o.settings_ap);\n\n\n if (pargs) {\n player_args = $.extend(player_args, pargs);\n }\n\n\n if (_cache.hasClass('audioplayer-tobe')) {\n o.settings_ap.call_from = 'init player from gallery';\n\n player_args.is_inited_from_playlist = true;\n _cache.audioplayer(player_args);\n }\n }\n }\n}\n\n\nwindow.dzsap_init_allGalleries = function ($) {\n\n const $feed_dzsapConfigs = document.querySelectorAll('.dzsap-feed--dzsap-configs');\n if ($feed_dzsapConfigs && $feed_dzsapConfigs.length) {\n try {\n window.dzsap_apconfigs = JSON.parse($feed_dzsapConfigs[$feed_dzsapConfigs.length-1].innerHTML);\n\n } catch (err) {\n console.log(err);\n }\n }\n\n $('.audiogallery.auto-init').each(function () {\n const $currGallery = $(this);\n if (!$currGallery.hasClass('dzsag-inited')) {\n if (window.dzsag_init) {\n dzsag_init($currGallery);\n }\n }\n })\n}\n\nexport const registerToJquery = function ($) {\n $.fn.audiogallery = function (argOptions) {\n let finalOptions = {};\n const defaultOptions = {...default_opts};\n finalOptions = dzsapHelpers.convertPluginOptionsToFinalOptions(this, defaultOptions, argOptions);\n\n\n this.each(function () {\n\n\n this.linkedClassInstance = new DzsApPlaylist(this, finalOptions, $);\n });\n }\n\n\n window.dzsag_init = function (selector, settings) {\n $(selector).audiogallery(Object.assign({}, settings));\n }\n}\n","import {svg_footer_playlist} from \"../_dzsap_svgs\";\n\n\nwindow.dzsap_moving_playlist_item = false;\nwindow.dzsap_playlist_con = null;\nwindow.dzsap_playlist_item_moving = null;\nwindow.dzsap_playlist_item_target = null;\n\nexport class DzsapInnerPlaylist{\n constructor(dzsapClass) {\n this.dzsapClass = dzsapClass;\n this.$playlistInner = null;\n }\n init(){\n\n var selfClass = this.dzsapClass;\n\n var thisClass = this;\n\n selfClass._apControlsRight.append('<div class=\"btn-footer-playlist for-hover dzstooltip-con player-but\"> <div class=\"tooltip-indicator tooltip-indicator--btn-footer-playlist\"><div class=\"the-icon-bg\"></div> ' + svg_footer_playlist + ' </div><div class=\"dzstooltip playlist-tooltip style-default color-light-dark arrow-bottom talign-end transition-scaleup active2\"><div class=\"dzstooltip--inner\"> </div></div></div>');\n\n thisClass.$playlistInner = selfClass.cthis.find('.playlist-tooltip');\n selfClass.cthis.on('mousedown', '.the-sort-handle', handle_mouse);\n selfClass.cthis.on('click', '.playlist-menu-item', handle_mouse);\n\n setTimeout(function () {\n thisClass.playlistInner_setupStructureInPlayer();\n }, 100);\n\n\n\n\n function handle_mouse(e){\n\n var $t = jQuery(this);\n if (e.type === 'click') {\n\n if ($t.hasClass('playlist-menu-item')) {\n\n\n var ind = $t.parent().children().index($t);\n\n\n thisClass.playlistInner_gotoItem(ind, {\n 'call_from': 'handle_mouse'\n })\n\n\n }\n }\n if (e.type === 'mousedown') {\n\n\n var _con = $t.parent();\n\n _con.parent().append(_con.clone().addClass('cloner'));\n var _clone = _con.parent().children('.cloner').eq(0);\n\n dzsap_playlist_con = _con.parent();\n dzsap_moving_playlist_item = true;\n\n dzsap_playlist_item_target = _con;\n dzsap_playlist_item_moving = _clone;\n _con.addClass('target-playlist-item');\n\n\n }\n }\n\n\n }\n\n playlistInner_setupStructureInPlayer(pargs) {\n // -- setup playlist for footer\n\n var $ = jQuery;\n var thisClass = this;\n var selfClass = this.dzsapClass;\n\n var margs = {\n 'call_from': \"default\"\n }\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n\n\n\n\n if (thisClass.$playlistInner) {\n (window.dzsap_syncList_players.length) ? thisClass.$playlistInner.parent().removeClass('is-empty') : thisClass.$playlistInner.parent().addClass('is-empty');\n // -- clear all before adding\n thisClass.$playlistInner.find('.dzstooltip--inner').html('');\n var stringPlaylistMenuItems = '';\n for (var keySyncPlayer in window.dzsap_syncList_players) {\n // -- setup inner playlist for sticky player\n\n\n var _c = window.dzsap_syncList_players[keySyncPlayer];\n\n if (_c.hasClass('number-wrapper') || _c.hasClass('for-number-wrapper')) {\n continue;\n }\n\n stringPlaylistMenuItems += '<div class=\"playlist-menu-item\"';\n\n\n $.each(_c.get(0).attributes, function () {\n // -- we remember attributes in case the page has changed and we lost..\n if (this.specified && this.name && this.name !== 'id' && this.name !== 'style') {\n\n stringPlaylistMenuItems += ' ' + this.name + '=\\'' + this.value + '\\'';\n }\n });\n\n\n stringPlaylistMenuItems += '>';\n\n\n if(_c.attr('data-thumb')){\n\n stringPlaylistMenuItems += '<div class=\"pi-thumb-con\">';\n stringPlaylistMenuItems += '<div class=\"pi-thumb divimage\" style=\"background-image: url(' + _c.attr('data-thumb') + ')\">';\n stringPlaylistMenuItems += '</div>'\n stringPlaylistMenuItems += '</div>'\n }\n stringPlaylistMenuItems += '<div class=\"pi-meta-con\">';\n\n stringPlaylistMenuItems += '<div class=\"pi-the-artist\">';\n stringPlaylistMenuItems += _c.find('.the-artist').eq(0).text();\n stringPlaylistMenuItems += '</div>';\n\n stringPlaylistMenuItems += '<div class=\"pi-the-name\">';\n stringPlaylistMenuItems += _c.find('.the-name').eq(0).text();\n stringPlaylistMenuItems += '</div>';\n\n stringPlaylistMenuItems += '</div>';\n\n\n stringPlaylistMenuItems += '<div class=\"the-sort-handle\">';\n stringPlaylistMenuItems += '↕';\n stringPlaylistMenuItems += '</div>';\n stringPlaylistMenuItems += '</div>';\n\n }\n thisClass.$playlistInner.find('.dzstooltip--inner').append(stringPlaylistMenuItems);\n\n\n $(document).on('mousemove.dzsap_playlist_item', function (e) {\n\n if (window.dzsap_moving_playlist_item) {\n\n var my = e.clientY;\n\n my -= dzsap_playlist_con.offset().top;\n\n\n dzsap_playlist_item_moving.css('top', my - 20);\n\n\n dzsap_playlist_item_target.parent().children(':not(\".target-playlist-item\"):not(\".cloner\")').each(function () {\n var _t = $(this);\n\n var tmy = _t.offset().top - dzsap_playlist_con.offset().top;\n\n\n if (my > tmy) {\n _t.after(dzsap_playlist_item_target);\n }\n })\n\n if (my < 50) {\n dzsap_playlist_item_target.parent().prepend(dzsap_playlist_item_target);\n }\n }\n });\n $(document).on('mouseup.dzsap_playlist_item', function (e) {\n\n if (window.dzsap_moving_playlist_item) {\n\n window.dzsap_moving_playlist_item = false;\n\n\n dzsap_playlist_item_moving.parent().children('.cloner').remove();\n dzsap_playlist_item_target.removeClass('target-playlist-item');\n dzsap_playlist_item_moving.remove();\n dzsap_playlist_item_moving = null;\n dzsap_playlist_item_target = null;\n }\n })\n } else {\n console.error('no tooltip .. why, should be here?');\n }\n\n\n }\n\n player_determineSyncPlayersIndex(selfClass, $targetPlayer){\n\n\n if (this.$playlistInner) {\n var _cach = this.$playlistInner.children('.dzstooltip--inner').eq(0);\n _cach.children().removeClass('current-playlist-item');\n _cach.children().each(function () {\n var _t = jQuery(this);\n\n if (_t.attr('data-playerid') === $targetPlayer.attr('data-playerid')) {\n _t.addClass('current-playlist-item');\n selfClass.playlist_inner_currNr = _t.parent().children().index(_t);\n }\n })\n }\n\n }\n\n\n /**\n * this is the function called from playlist menu item ( footer )\n * @param arg\n * @param pargs\n */\n playlistInner_gotoItem(arg, pargs) {\n // --\n\n var $ = jQuery;\n var thisClass = this;\n var selfClass = this.dzsapClass;\n\n var margs = {\n 'call_from': \"default\"\n }\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n\n\n var _cach_con = null;\n\n\n if (thisClass.$playlistInner) {\n _cach_con = thisClass.$playlistInner.find('.dzstooltip--inner');\n\n var _cach = _cach_con.children().eq(arg);\n\n\n var playerId = _cach.attr('data-playerid');\n\n\n\n\n var $targetPlayer = $('.audioplayer[data-playerid=\"' + playerId + '\"],.audioplayer-tobe[data-playerid=\"' + playerId + '\"]');\n\n\n if (playerId && $targetPlayer.length && $targetPlayer.eq(0).get(0) && $targetPlayer.eq(0).get(0).api_play_media) {\n\n\n $('.audioplayer[data-playerid=\"' + playerId + '\"]').eq(0).get(0).api_play_media({\n\n 'called_from': 'api_sync_players_prev'\n });\n\n } else {\n\n\n if ($targetPlayer.parent().parent().parent().hasClass('audiogallery')) {\n $targetPlayer.parent().parent().parent().get(0).api_goto_item(arg);\n } else {\n\n // -- in case we change the page ;)\n\n var $dzsapFooter = $('.dzsap_footer');\n if($dzsapFooter.length && $dzsapFooter.get(0).api_change_media){\n $dzsapFooter.get(0).api_change_media($targetPlayer);\n }\n\n }\n\n\n }\n\n selfClass.playlist_inner_currNr = arg;\n\n }\n }\n\n}\n","export 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 = '<span class=\"meta-artist player-artistAndSong\">';\n if (selfClass.cthis.find('.feed-artist-name').length) {\n structHtmlMeta += '<span class=\"the-artist\">' + selfClass.cthis.find('.feed-artist-name').eq(0).html() + '</span>';\n }\n if (selfClass.cthis.find('.feed-song-name').length) {\n structHtmlMeta += '<span class=\"the-name player-meta--songname\">' + selfClass.cthis.find('.feed-song-name').eq(0).html() + '</span>';\n }\n structHtmlMeta += '</span>';\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('<span class=\"meta-artist\"><span class=\"the-artist\"></span><span class=\"the-name\"></span></span>')\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('<div class=\"meta-artist-con\"></div>');\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 * as dzsapHelpers from '../_dzsap_helpers';\nimport {DzsapInnerPlaylist} from '../extra-functionality/_innerPlaylist';\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\";\n\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 = dzsapHelpers.player_radio_isNameUpdatable(selfClass, selfClass.radio_isGoingToUpdateSongName, '.the-songname');\n selfClass.radio_isGoingToUpdateArtistName = dzsapHelpers.player_radio_isNameUpdatable(selfClass, selfClass.radio_isGoingToUpdateArtistName, '.the-artist');\n\n\n\n\n if (o.disable_scrub === 'on') {\n selfClass.cthis.addClass('disable-scrubbar');\n }\n\n\n const struct_embedButtonWithTooltip = `<div class=\"btn-embed-code-con dzstooltip-con \"><div class=\"btn-embed-code player-but \"> <div class=\"the-icon-bg\"></div>${svg_embed_btn}</div><span class=\"dzstooltip transition-slidein arrow-bottom talign-end style-rounded color-dark-light \" style=\"width: 350px; \"><span class=\"dzstooltip--inner\"><span class=\"embed-code--text\"></span></span></span></div>`;\n\n if (selfClass.feedEmbedCode !== '') {\n feedEmbedFunctionality(selfClass, jQuery, dzsapHelpers, struct_embedButtonWithTooltip)\n }\n\n if (o.footer_btn_playlist === 'on') {\n if (selfClass._apControlsRight.find('.btn-footer-playlist').length === 0) {\n\n selfClass.classFunctionalityInnerPlaylist = new DzsapInnerPlaylist(selfClass);\n selfClass.classFunctionalityInnerPlaylist.init();\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 if (selfClass.cthis.find('.con-after-playpause').length) {\n selfClass.$conPlayPause.after(selfClass.cthis.find('.con-after-playpause').eq(0));\n }\n\n if (selfClass.cthis.find('.afterplayer').length > 0) {\n\n selfClass.cthis.append(selfClass.cthis.find('.afterplayer'));\n }\n\n}\n\nfunction structure_generatePlayPauseString(selfClass) {\n\n var o = selfClass.initOptions;\n\n let struct_con_playpause = '';\n if (o.settings_extrahtml_before_play_pause) {\n struct_con_playpause += o.settings_extrahtml_before_play_pause;\n\n\n }\n\n\n struct_con_playpause += '<div class=\"con-playpause-con\">';\n\n struct_con_playpause = addExtraHtmlInPlace(selfClass, '.feed-dzsap-before-playpause', struct_con_playpause) + struct_con_playpause;\n\n struct_con_playpause += '<div class=\"con-playpause';\n\n if (selfClass.keyboard_controls.show_tooltips === 'on') {\n struct_con_playpause += ' dzstooltip-con';\n }\n\n struct_con_playpause += '\">';\n if (selfClass.keyboard_controls.show_tooltips === 'on') {\n struct_con_playpause += dzsapHelpers.dzsap_generate_keyboard_tooltip(selfClass.keyboard_controls, 'pause_play');\n }\n\n\n struct_con_playpause += '<div class=\"playbtn player-but\" aria-controls=\"' + selfClass.uniqueId + '-audio\"><div class=\"the-icon-bg\"></div><div class=\"dzsap-play-icon\">';\n\n\n\n struct_con_playpause += playbtn_svg;\n\n\n struct_con_playpause += `</div><div class=\"media-load--preloader\"><img alt=\"preloader\" class=\"\" src=\"${window.dzsap_base_url}parts/assets/view-preloader.svg\"/></div>`;\n struct_con_playpause += '</div>'; // -- end playbtn\n\n\n struct_con_playpause += '<div class=\"pausebtn player-but\"';\n\n\n struct_con_playpause += '><div class=\"the-icon-bg\"></div><div class=\"pause-icon\">';\n\n\n struct_con_playpause += pausebtn_svg;\n\n\n struct_con_playpause += '</div>';// -- end pause-icon\n struct_con_playpause += '</div>'; // -- end pausebtn\n\n\n struct_con_playpause += '';\n\n\n struct_con_playpause += '</div>';\n\n struct_con_playpause += addExtraHtmlInPlace(selfClass, '.feed-dzsap-after-playpause', struct_con_playpause);\n\n\n struct_con_playpause += '</div>';\n\n return struct_con_playpause;\n}\n\nfunction setup_structure__setup_wrapper_image(selfClass) {\n\n var img = new Image();\n\n\n if (selfClass.cthis.hasClass('zoomsounds-no-wrapper') === false) {\n\n img.onload = function () {\n\n\n\n selfClass.cthis.css('background-image', 'url(' + this.src + ')');\n\n setTimeout(function () {\n\n selfClass.cthis.find('.zoomsounds-bg').addClass('loaded');\n\n\n if (selfClass.cthis.hasClass('zoomsounds-wrapper-bg-bellow')) {\n\n selfClass.cthis.css('padding-top', 200);\n }\n }, 100);\n }\n\n img.src = selfClass.cthis.attr('data-wrapper-image');\n }\n\n}\n\n/**\n * setup player structure , called from init\n * @param selfClass\n * @param pargs\n * @returns {boolean}\n */\nexport const setup_structure = function (selfClass, pargs) {\n\n\n// -- setup structure here\n var $ = jQuery;\n var o = selfClass.initOptions;\n\n\n var margs = {\n 'setup_inner_player': true\n , 'setup_media': true\n , 'setup_otherstructure': true\n , 'call_from': \"default\"\n\n\n }\n\n\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n\n\n\n if (margs.call_from === 'reconstruct') {\n if (selfClass._metaArtistCon) {\n\n\n }\n\n\n selfClass._metaArtistCon = null;\n if (selfClass.cthis.hasClass('skin-wave')) {\n o.design_skin = 'skin-wave';\n }\n if (selfClass.cthis.hasClass('skin-silver')) {\n o.design_skin = 'skin-silver';\n }\n }\n\n\n var structure_str_apControls = '<div class=\"ap-controls';\n\n if (o.design_skin === 'skin-default') {\n structure_str_apControls += ' dzsap-color_inverse_ui_fill';\n }\n structure_str_apControls += '\"></div>'\n\n if (margs.setup_inner_player) {\n selfClass.cthis.appendOnce('<div class=\"audioplayer-inner\"></div>');\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 = '<div class=\"scrubbar\">';\n var aux_str_con_controls = '';\n\n var aux_str_time = '';\n\n\n structure_str_scrubbar += '<div class=\"scrub-bg\"></div><div class=\"scrub-buffer\"></div>';\n\n structure_str_scrubbar += '<div class=\"scrub-prog';\n\n if (o.scrubbar_type !== 'wave') {\n structure_str_scrubbar += ' dzsap-color_brand_bg';\n }\n\n structure_str_scrubbar += '\"></div><div class=\"scrubBox\"></div><div class=\"scrubBox-prog\"></div><div class=\"scrubBox-hover\"></div>';\n aux_str_time = '<div class=\"total-time\">00:00</div><div class=\"curr-time\">00:00</div>';\n\n\n if (selfClass.sample_perc_start) {\n\n structure_str_scrubbar += '<div class=\"sample-block-start\" style=\"width: ' + (selfClass.sample_perc_start * 100) + '%\"></div>'\n }\n if (selfClass.sample_perc_end) {\n\n structure_str_scrubbar += '<div class=\"sample-block-end\" style=\"left: ' + (selfClass.sample_perc_end * 100) + '%; width: ' + (100 - (selfClass.sample_perc_end * 100)) + '%\"></div>'\n }\n\n structure_str_scrubbar += '</div>'; // -- 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\n\n\n\n aux_str_con_controls += '<div class=\"con-controls\"><div class=\"the-bg\"></div>' + struct_con_playpause;\n\n\n if (selfClass.extraHtmlAreas.controlsLeft) {\n aux_str_con_controls += selfClass.extraHtmlAreas.controlsLeft;\n }\n\n\n\n\n\n if (o.design_skin === 'skin-pro') {\n aux_str_con_controls += '<div class=\"con-controls--right\">';\n aux_str_con_controls += '</div>';\n }\n\n\n var aux_str_con_volume = '<div class=\"controls-volume\"><div class=\"volumeicon\"></div><div class=\"volume_static\"></div><div class=\"volume_active\"></div><div class=\"volume_cut\"></div></div>';\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 += '<div class=\"ap-controls-right\">';\n if (o.disable_volume !== 'on') {\n aux_str_con_controls += '<div class=\"controls-volume\"><div class=\"volumeicon\"></div><div class=\"volume_static\"></div><div class=\"volume_active\"></div><div class=\"volume_cut\"></div></div>';\n }\n\n\n\n\n aux_str_con_controls += '</div>';\n\n\n\n }\n\n aux_str_con_controls += '</div>'; // -- end con-controls\n\n\n/// -- end STR\n\n\n\n\n if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'small') {\n aux_str_con_controls = '<div class=\"the-bg\"></div><div class=\"ap-controls-left\">' + struct_con_playpause + '</div>' + structure_str_scrubbar + '<div class=\"ap-controls-right\">' + aux_str_con_volume + '<div class=\"extrahtml-in-float-right for-skin-wave-small\">' + selfClass.extraHtmlAreas.controlsRight + '</div></div>';\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\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 = '<div class=\"the-bg\"></div><div class=\"ap-controls-left\">';\n\n\n if (o.design_skin === 'skin-silver') {\n\n aux_str_con_controls += struct_con_playpause;\n } else {\n\n\n\n\n aux_str_con_controls += '<div class=\"con-playpause';\n\n if (selfClass.keyboard_controls.show_tooltips === 'on') {\n aux_str_con_controls += ' dzstooltip-con';\n }\n\n aux_str_con_controls += '\">';\n\n\n if (selfClass.keyboard_controls.show_tooltips === 'on') {\n aux_str_con_controls += dzsapHelpers.dzsap_generate_keyboard_tooltip(selfClass.keyboard_controls, 'pause_play');\n }\n\n\n aux_str_con_controls += '<div class=\"playbtn player-but playbtn-not-skin-silver\"><div class=\"dzsap-play-icon\">' + playbtnSvg + '</div></div><div class=\"pausebtn player-but\" ';\n\n\n aux_str_con_controls += '><div class=\"pause-icon\">' + pausebtnSvg + '</div></div></div>'; // -- enc con-playpause\n\n }\n\n\n\n\n addExtraHtmlInPlace(selfClass, '.feed-dzsap-after-playpause', struct_con_playpause);\n\n\n aux_str_con_controls += '</div>';\n\n\n if (selfClass.extraHtmlAreas.controlsRight) {\n aux_str_con_controls += '<div class=\"controls-right\">' + selfClass.extraHtmlAreas.controlsRight + '</div>';\n\n\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\n\n aux_str_con_controls += '<div class=\"ap-controls-right\">';\n\n if (o.design_skin === 'skin-silver') {\n\n aux_str_con_controls += '<div class=\"controls-volume controls-volume-vertical\"><div class=\"volumeicon\"></div><div class=\"volume-holder\"><div class=\"volume_static\"></div><div class=\"volume_active\"></div><div class=\"volume_cut\"></div></div></div>';\n\n\n aux_str_con_controls += '</div>' + 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 += '<div class=\"controls-volume\"><div class=\"volumeicon\"></div><div class=\"volume_static\"></div><div class=\"volume_active\"></div><div class=\"volume_cut\"></div></div>';\n }\n }\n\n aux_str_con_controls += structure_str_scrubbar;\n\n\n if (o.disable_timer != 'on') {\n aux_str_con_controls += '<div class=\"total-time\">00:00</div>';\n }\n }\n\n\n if (o.design_skin === 'skin-silver') {\n\n } else {\n aux_str_con_controls += '</div>';\n }\n\n\n }\n\n\n }\n\n\n// -- end strings\n// --------------\n\n if (margs.setup_media) {\n selfClass._audioplayerInner.append('<div class=\"the-media\"></div>');\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\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\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\n\n (player_constructArtistAndSongCon.bind(selfClass))(margs);\n\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 += '<div class=\"curr-time\">00:00</div><div class=\"total-time\">00:00</div>';\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('<div class=\"curr-time\">00:00</div> <span class=\"separator-slash\">/</span> ');\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(dzsapHelpers.formatTime(selfClass.time_total_for_visual));\n }\n\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('<div class=\"btn-menu-state player-but\"> <div class=\"the-icon-bg\"></div> ' + svg_menu_state + ' </div></div>');\n } else {\n }\n } else {\n selfClass._audioplayerInner.appendOnce('<div class=\"btn-menu-state\"></div>');\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\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\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\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('<div class=\"skin-minimal-bg skin-minimal--outer-bg\"></div><div class=\"skin-minimal-bg skin-minimal--inner-bg-under dzsap-color_brand_bg\"></div><div class=\"skin-minimal-bg skin-minimal--inner-bg\"></div><div class=\"skin-minimal-bg skin-minimal--inner-inner-bg dzsap-color_brand_bg\"></div>')\n selfClass.cthis.find('.the-bg').append('<canvas width=\"100\" height=\"100\" class=\"playbtn-canvas\"/>')\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('<span class=\"dzstooltip\" style=\"left:-7px;\">' + selfClass.cthis.find('.menu-description').html() + '</span>');\n selfClass.$conPlayPause.children('span').eq(0).css('width', selfClass.$conPlayPause.children('span').eq(0).textWidth() + 10);\n }\n }\n\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\n\n\n if (o.player_navigation === 'on') {\n\n var prev_btn_str = '<div class=\"prev-btn player-but\"><div class=\"the-icon-bg\"></div>' + svg_prev_btn + ' </div>';\n\n var next_btn_str = '<div class=\"next-btn player-but\"><div class=\"the-icon-bg\"></div>' + svg_next_btn + ' </div>';\n\n\n var auxs = prev_btn_str + next_btn_str;\n\n\n\n\n\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\n\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\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('<br>');\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('<div class=\"playbuttons-con\"></div>');\n var _c = selfClass.cthis.find('.playbuttons-con').eq(0);\n _c.append(selfClass.cthis.find('.con-playpause-con'));\n\n }\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\n }\n\n\n if (o.design_skin === 'skin-redlights') {\n selfClass._apControlsRight.append('<div class=\"ap-controls-right--top\"></div>');\n selfClass._apControlsRight.append('<div class=\"ap-controls-right--bottom\"></div>');\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\n if (selfClass.extraHtmlAreas.bottom !== '') {\n selfClass.cthis.append('<div class=\"extra-html\">' + selfClass.extraHtmlAreas.bottom + '</div>');\n }\n\n\n\n var settings_extrahtml_in_float_right_str = '';\n\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 += '<div class=\"extrahtml-in-float-right from-setup_structure from-js-setup_structure\">' + selfClass.extraHtmlAreas.controlsRight + '</div>';\n }\n\n\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 '';\n }\n\n return null;\n}\n","import {ajax_submit_views} from \"../_dzsap_ajax\";\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\nexport function feedEmbedFunctionality(selfClass,$, dzsapHelpers, 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 dzsapHelpers.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 dzsapHelpers.select_all(_t.parent().parent().find('.dzstooltip--inner > span').get(0));\n\n document.execCommand('copy');\n setTimeout(function () {\n dzsapHelpers.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 <div class=\"dzsap-counter counter-hits\"><i class=\"fa fa-play\"></i><span class=\"the-number\">{{get_plays}}</span></div>\n","export const dzsap_oneTimeSetups = ()=>{\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","/*\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 configureAudioPlayerOptionsInitial,\n convertPluginOptionsToFinalOptions,\n dzsap_is_mobile,\n dzsap_singleton_ready_calls,\n formatTime,\n generateFakeArrayForPcm,\n is_android,\n is_android_good,\n is_ios,\n is_safari,\n jQueryAuxBindings,\n player_adjustIdentifiers,\n player_delete,\n player_detect_skinwave_mode,\n player_determineActualPlayer,\n player_determineHtmlAreas,\n player_determineStickToBottomContainer,\n player_getPlayFromTime,\n player_icecastOrShoutcastRefresh,\n player_identifySource,\n player_identifyTypes,\n player_initSpectrum,\n player_initSpectrumOnUserAction,\n player_isGoingToSetupMediaNow,\n player_service_getSourceProtection,\n player_stickToBottomContainerDetermineClasses,\n player_stopOtherPlayers,\n player_syncPlayers_buildList,\n player_syncPlayers_gotoItem,\n player_view_addMetaLoaded,\n player_viewApplySkinWaveModes,\n playerFunctions,\n playerRegisterWindowFunctions,\n sanitizeToIntFromPointTime,\n scrubbar_modeWave_setupCanvas,\n view_player_globalDetermineSyncPlayersIndex,\n view_player_playMiscEffects,\n waitForScriptToBeAvailableThenExecute\n} from './jsinc/_dzsap_helpers';\nimport {getBaseUrl, isInt, loadScriptIfItDoesNotExist} from './js_common/_dzs_helpers';\nimport {\n buildAudioElementHtml,\n makeMediaPreloadInTheFuture,\n media_pause,\n media_tryToPlay,\n repairMediaElement,\n setupMediaElement,\n setupMediaListeners\n} from \"./jsinc/media/_media_functions\";\nimport {media_changeMedia} from './jsinc/media/_onePlayer_changeMedia';\nimport {PlayerTime} from './jsinc/_dzsap_time_model';\nimport {\n ajax_retract_like,\n ajax_submit_download,\n ajax_submit_like,\n ajax_submit_total_time,\n ajax_submit_views\n} from \"./jsinc/_dzsap_ajax\";\n\nimport {ConstantsDzsAp} from \"./configs/_constants\";\nimport {_ClassMetaParts} from \"./jsinc/helper-classes/_ClassMetaParts\";\nimport {comments_selector_event, comments_setupCommentsInitial} from \"./jsinc/components/_comments\";\nimport {pausebtn_svg, playbtn_svg, svg_share_icon} from \"./jsinc/_dzsap_svgs\";\nimport {registerToJquery} from \"./jsinc/_dzsap_playlist\";\nimport {retrieve_soundcloud_url} from \"./jsinc/_dzsap_misc\";\nimport {setup_structure} from \"./jsinc/components/_structure\";\nimport {\n draw_canvas,\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\";\n\n/** list for autoplay -- this is for the players */\nwindow.dzsap_list = [];\n\nvar dzsap_globalidind = 20;\n\n\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 * Main player class\n * @class\n * @property {boolean} isAlreadyHasRealPcm\n * @property {boolean} isPcmRequiredToGenerate\n * @property {boolean} isMultiSharer\n * @property {string} identifier_pcm\n * @property {string} urlToAjaxHandler\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\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._scrubbarprog_canvas = null;\n this.$feed_fakeButton = null;\n this._sourcePlayer = null;\n this.$realVisualPlayer = null; // -- real visual player can be _sourcePlayer if this is a fake feed or this if not\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.player_playing = false;\n\n this.actualDataTypeOfMedia = 'audio'; // \"audio\" or\n\n this.youtube_retryPlayTimeout = 0;\n this.lastTimeInSeconds = 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\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 var $ = this.$;\n var o = this.argOptions;\n var cthis = $(this.argThis);\n\n var selfClass = this;\n\n\n selfClass.cthis = cthis;\n selfClass.initOptions = o;\n\n var cthisId = 'ap1'\n ;\n var ww, cthisWidth, th // -- controls width\n , scrubbarWidth = 0 // -- scrubbar width\n , scrubbarProgX = 0 // -- scrubbar prog pos\n ;\n var _theThumbCon\n , $scrubBgCanvas = null,\n _scrubBgCanvasCtx = null;\n var isMuted = false,\n isDestroyed = false,\n google_analytics_sent_play_event = false,\n destroyed_for_rebuffer = false\n , media_isLoopActive = false // -- if loop_active the track will loop\n , curr_time_first_set = false\n , isScrubShowingCurrentTime = false\n , isListenersSetup = false\n ;\n var last_time_total = 0\n , currTime_outerWidth = 0\n , player_index_in_gallery = -1 // -- the player index in gallery\n ;\n\n\n var volume_lastVolume = 1,\n last_vol_before_mute = 1\n ;\n var inter_checkReady\n , inter_60_secs_contor = 0\n , inter_trigger_resize;\n var data_station_main_url = ''\n ;\n\n var isResolveThumbHeight = false\n , volume_dragging = false\n , volume_set_by_user = false // -- this shows if the user actioned on the volume\n , is_under_400 = false\n\n\n ; // resize thumb height\n\n\n var skin_minimal_button_size = 0;\n\n // -- touch controls\n var scrubbar_moving = false\n , scrubbar_moving_x = 0\n , aux3 = 0\n ;\n\n\n var dataSrc = '';\n var canvasWidth = 100;\n var canh = 100;\n var scrubbar_h = 75\n , design_thumbh\n ;\n\n\n var stringAudioElementHtml = '';\n\n\n var defaultVolume = 1;\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 var isNotRenderingEnterFrame = true\n , sw_spectrum_fakeit = 'auto'\n ;\n\n\n var duration_viy = 20;\n var begin_viy = 0;\n var change_viy = 0;\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 = destroy_cmedia;\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 = destroy_media;\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 (player_detect_skinwave_mode.bind(selfClass))()\n\n\n if (o.design_skin === 'skin-default') {\n if (o.design_thumbh === 'default') {\n design_thumbh = cthis.height() - 40;\n isResolveThumbHeight = true;\n }\n }\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 if (o.design_thumbh === 'default') {\n design_thumbh = 200;\n }\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 comments_setupCommentsInitial(selfClass);\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 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 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 = volume_setVolume; // -- 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_change_media = media_changeMedia(selfClass, $); // -- change the media file from the API\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 = volume_setOnlyVisual; // -- 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 = syncPlayers_gotoNext; // -- in the sync playlist, go to the next song\n cthis.get(0).api_sync_players_goto_prev = syncPlayers_gotoPrev; // -- in the sync playlist, go to the previous song\n cthis.get(0).api_regenerate_playerlist_inner = function () {\n // -- call with window.dzsap_generate_list_for_sync_players({'force_regenerate': true})\n if (selfClass.classFunctionalityInnerPlaylist) {\n selfClass.classFunctionalityInnerPlaylist.playlistInner_setupStructureInPlayer();\n }\n\n }; // -- regenerate the playlist innter\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 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 cthis.on('click', '.dzsap-repeat-button,.dzsap-loop-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', 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 cthis.on('click', '.skip-15-sec', function () {\n cthis.get(0).api_step_forward(15);\n });\n\n\n $(window).on('resize.dzsap', view_handleResize);\n view_handleResize(null, {\n called_from: 'init'\n });\n\n if (selfClass._scrubbar && selfClass._scrubbar.get(0)) {\n\n selfClass._scrubbar.get(0).addEventListener('touchstart', function (e) {\n if (selfClass.player_playing) {\n\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 if (o.skinwave_comments_mode_outer_selector) {\n selfClass.$commentsSelector = $(o.skinwave_comments_mode_outer_selector);\n\n if (selfClass.$commentsSelector.data) {\n\n selfClass.$commentsSelector.data('parent', cthis);\n\n if (window.dzsap_settings.comments_username) {\n selfClass.$commentsSelector.find('.comment_email,*[name=comment_user]').remove();\n }\n\n selfClass.$commentsSelector.on('click', '.dzstooltip--close,.comments-btn-submit', comments_selector_event);\n selfClass.$commentsSelector.on('focusin', 'input', comments_selector_event);\n selfClass.$commentsSelector.on('focusout', 'input', comments_selector_event);\n\n } else {\n console.log('%c, data not available .. ', 'color: #990000;', $(o.skinwave_comments_mode_outer_selector));\n }\n }\n\n cthis.off('click', '.btn-like');\n cthis.on('click', '.btn-like', handleClickLike);\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 cthis.find('.btn-menu-state').eq(0).on('click', handleClickMenuState);\n\n cthis.on('click', '.prev-btn,.next-btn', handle_mouse);\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 (o.design_skin === 'skin-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 (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 cthis.attr('data-reflection-size', reflection_size);\n }\n\n /**\n * change the visual target, the main is the main player selfClass.player_playing 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.player_playing) {\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 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 isNotRenderingEnterFrame = true;\n\n }\n\n function handleClickLike() {\n var _t = $(this);\n if (cthis.has(_t).length === 0) {\n return;\n }\n\n if (_t.hasClass('active')) {\n (ajax_retract_like.bind(selfClass))();\n } else {\n (ajax_submit_like.bind(selfClass))();\n }\n }\n\n\n function destroy_it() {\n\n\n if (isDestroyed) {\n return false;\n }\n\n if (selfClass.player_playing) {\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 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\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(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(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 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 += '<a href=\"' + cthis.attr('data-thumb_link') + '\"';\n } else {\n aux_thumb_con_str += '<div';\n }\n aux_thumb_con_str += ' class=\"the-thumb-con\"><div class=\"the-thumb\" style=\" background-image:url(' + cthis.attr('data-thumb') + ')\"></div>';\n\n\n if (cthis.attr('data-thumb_link')) {\n aux_thumb_con_str += '</a>';\n } else {\n aux_thumb_con_str += '</div>';\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\n\n selfClass._apControlsLeft.prepend(aux_thumb_con_str);\n } else {\n\n selfClass._audioplayerInner.prepend(aux_thumb_con_str);\n }\n }\n\n _theThumbCon = selfClass._audioplayerInner.children('.the-thumb-con').eq(0);\n } else {\n\n cthis.removeClass('has-thumb');\n }\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 if (o.skinwave_enableSpectrum !== 'on') {\n if (o.skinwave_wave_mode === 'canvas') {\n\n if (cthis.attr('data-pcm')) {\n scrubbar_modeWave_setupCanvas({}, selfClass);\n } else {\n view_wave_setupRandomPcm();\n }\n }\n } else {\n\n // -- spectrum ON\n scrubbar_modeWave_setupCanvas({}, selfClass);\n // -- old spectrum code\n $scrubBgCanvas = selfClass.cthis.find('.scrub-bg-img').eq(0);\n _scrubBgCanvasCtx = $scrubBgCanvas.get(0).getContext(\"2d\");\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 var setupMediaAttrs = {\n\n 'do_not_autoplay': false,\n 'called_from': 'default',\n 'newSource': '',\n };\n\n\n if (pargs) {\n setupMediaAttrs = $.extend(setupMediaAttrs, pargs);\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 const stringAudioTagSource = stringAudioElement.stringAudioTagSource;\n\n if (selfClass.audioType === 'selfHosted' || selfClass.audioType === 'soundcloud') {\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\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 if (is_ios() || is_android()) {\n if (setupMediaAttrs.called_from === 'retrieve_soundcloud_url') {\n setTimeout(function () {\n pause_media();\n }, 500);\n }\n }\n }\n\n\n if (selfClass.$mediaNode_ && selfClass.$mediaNode_.addEventListener && selfClass.cthis.attr('data-source') !== 'fake') {\n setupMediaListeners(selfClass, setupMediaAttrs, init_loaded, 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 false;\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 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.scrubbar_type === 'wave' && o.skinwave_enableSpectrum === 'on') {\n player_initSpectrumOnUserAction(selfClass);\n\n }\n\n selfClass.isSetupedMedia = true;\n }\n\n function destroy_cmedia() {\n // -- destroy cmedia\n\n $(selfClass.$mediaNode_).remove();\n selfClass.$mediaNode_ = null;\n selfClass.isSetupedMedia = false;\n selfClass.isPlayerLoaded = false;\n }\n\n function destroy_media() {\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();\n\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 selfClass._scrubbar.on('mousemove', handleMouseOnScrubbar);\n selfClass._scrubbar.on('mouseleave', handleMouseOnScrubbar);\n selfClass._scrubbar.on('click', handleMouseOnScrubbar);\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 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 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 var 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\n clearInterval(inter_checkReady);\n clearTimeout(inter_checkReady);\n setup_listeners();\n\n\n setTimeout(function () {\n if (selfClass.$currTime && selfClass.$currTime.outerWidth() > 0) {\n 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();\n destroyed_for_rebuffer = 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 if (selfClass.data_source !== 'fake') {\n\n cthis.addClass('dzsap-loaded');\n }\n\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\n defaultVolume = 1;\n }\n } else {\n\n defaultVolume = 1;\n }\n }\n }\n\n if (o.volume_from_gallery) {\n defaultVolume = o.volume_from_gallery;\n }\n\n volume_setVolume(defaultVolume, {\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 === 'last') {\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 isNotRenderingEnterFrame = true;\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 var $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('prev-btn')) {\n handleClick_prevBtn();\n }\n if ($t.hasClass('next-btn')) {\n handleClick_nextBtn();\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 var _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 var _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 var _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 var _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 var _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.player_playing) {\n }\n seek_to(0, {\n call_from: \"repeat\"\n });\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 }\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 // -- spectrum ON\n // -- easing\n if (selfClass.player_playing) {\n\n } else {\n return false;\n }\n if ($scrubBgCanvas) {\n\n canvasWidth = $scrubBgCanvas.width();\n canh = $scrubBgCanvas.height();\n\n $scrubBgCanvas.get(0).width = canvasWidth;\n $scrubBgCanvas.get(0).height = canh;\n }\n\n\n var drawMeter = function () {\n if (selfClass.initOptions.type === 'soundcloud' || sw_spectrum_fakeit === 'on') {\n\n selfClass.lastArray = generateFakeArrayForPcm();\n\n } else {\n\n if (selfClass.spectrum_analyser) {\n selfClass.lastArray = new Uint8Array(selfClass.spectrum_analyser.frequencyBinCount);\n selfClass.spectrum_analyser.getByteFrequencyData(selfClass.lastArray);\n }\n }\n\n\n if (selfClass.lastArray && selfClass.lastArray.length) {\n\n\n //fix when some sounds end the value still not back to zero\n var len = selfClass.lastArray.length;\n for (var i = len - 1; i >= 0; i--) {\n\n if (i < len / 2) {\n\n selfClass.lastArray[i] = selfClass.lastArray[i] / 255 * canh;\n } else {\n\n selfClass.lastArray[i] = selfClass.lastArray[len - i] / 255 * canh;\n }\n }\n ;\n\n\n if (selfClass.last_lastarray) {\n for (var i3 = 0; i3 < selfClass.last_lastarray.length; i3++) {\n begin_viy = selfClass.last_lastarray[i3]; // -- last value\n change_viy = selfClass.lastArray[i3] - begin_viy; // -- target value - last value\n duration_viy = 3;\n selfClass.lastArray[i3] = Math.easeIn(1, begin_viy, change_viy, duration_viy);\n }\n }\n // -- easing END\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 })\n\n\n if (selfClass.lastArray) {\n selfClass.last_lastarray = selfClass.lastArray.slice();\n }\n\n\n }\n\n }\n\n drawMeter();\n\n\n // -- end spectrum\n }\n\n if (selfClass.$currTime && selfClass.$currTime.length) {\n\n if (selfClass.initOptions.skinwave_timer_static !== 'on') {\n\n if (scrubbarProgX < 0) {\n scrubbarProgX = 0;\n }\n scrubbarProgX = parseInt(scrubbarProgX, 10);\n\n\n if (scrubbarProgX < 2 && cthis.data('promise-to-play-footer-player-from')) {\n return false;\n }\n\n // -- move currTime\n selfClass.$currTime.css({\n 'left': scrubbarProgX\n });\n\n if (scrubbarProgX > scrubbarWidth - currTime_outerWidth) {\n selfClass.$currTime.css({\n 'left': scrubbarWidth - currTime_outerWidth\n })\n }\n if (scrubbarProgX > scrubbarWidth - 30 && scrubbarWidth) {\n selfClass.$totalTime.css({\n 'opacity': 1 - (((scrubbarProgX - (scrubbarWidth - 30)) / 30))\n });\n } else {\n if (selfClass.$totalTime.css('opacity') !== '1') {\n selfClass.$totalTime.css({\n 'opacity': ''\n });\n }\n }\n ;\n }\n ;\n }\n }\n\n if (totalTime !== last_time_total) {\n view_updateTotalTime(totalTime)\n }\n\n if (selfClass.$currTime) {\n\n\n if (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\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 {string|boolean}\n */\n function view_drawScrubProgress() {\n let currentTime = selfClass.timeModel.getVisualCurrentTime();\n let totalTime = selfClass.timeModel.getVisualTotalTime();\n\n scrubbarProgX = (currentTime / totalTime) * scrubbarWidth;\n\n if (isNaN(scrubbarProgX)) {\n scrubbarProgX = 0;\n }\n if (scrubbarProgX > scrubbarWidth) {\n scrubbarProgX = scrubbarWidth;\n }\n\n if (currentTime < 0) {\n scrubbarProgX = 0;\n }\n\n if (totalTime === 0 || isNaN(totalTime)) {\n scrubbarProgX = 0;\n }\n\n if (scrubbarProgX < 2 && cthis.data('promise-to-play-footer-player-from')) {\n return false;\n }\n\n if (selfClass.spectrum_audioContext_buffer === null) {\n if (selfClass.$$scrubbProg) {\n selfClass.$$scrubbProg.style.width = parseInt(scrubbarProgX, 10) + 'px';\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();\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();\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 var margs = {\n 'fire_only_once': false\n }\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n if (isDestroyed) {\n return false;\n }\n\n if (margs.fire_only_once === false && isNotRenderingEnterFrame) {\n requestAnimationFrame(handleEnterFrame);\n return false;\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 // -- skin minimal\n if (o.design_skin === 'skin-minimal') {\n\n\n if (selfClass.player_playing || selfClass.isCanvasFirstDrawn === false) {\n\n\n var ctx_minimal = selfClass.skin_minimal_canvasplay.getContext('2d');\n\n var ctx_w = selfClass.skin_minimal_canvasplay.width;\n var ctx_h = selfClass.skin_minimal_canvasplay.height;\n\n var pw = ctx_w / 100;\n var ph = ctx_h / 100;\n\n if (selfClass._actualPlayer) {\n\n }\n scrubbarProgX = Math.PI * 2 * (selfClass.timeModel.getVisualCurrentTime() / selfClass.timeModel.getVisualTotalTime());\n\n if (isNaN(scrubbarProgX)) {\n scrubbarProgX = 0;\n }\n if (scrubbarProgX > Math.PI * 2) {\n scrubbarProgX = Math.PI * 2;\n }\n\n ctx_minimal.clearRect(0, 0, ctx_w, ctx_h);\n\n\n // -- use design_wave_color_progress for drawing skin-minimal circle\n\n\n ctx_minimal.beginPath();\n ctx_minimal.arc((50 * pw), (50 * ph), (40 * pw), 0, Math.PI * 2, false);\n ctx_minimal.fillStyle = \"rgba(0,0,0,0.1)\";\n ctx_minimal.fill();\n\n\n ctx_minimal.beginPath();\n ctx_minimal.arc((50 * pw), (50 * ph), (34 * pw), 0, scrubbarProgX, false);\n ctx_minimal.lineWidth = (10 * pw);\n ctx_minimal.strokeStyle = 'rgba(0,0,0,0.3)';\n ctx_minimal.stroke();\n\n\n selfClass.isCanvasFirstDrawn = true;\n\n\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\n if (e && e.stopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n ;\n }\n\n }\n\n var _t = $(this);\n\n var 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 var 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\n var center_x = _t.offset().left + skin_minimal_button_size / 2;\n var center_y = _t.offset().top + skin_minimal_button_size / 2;\n var mouse_x = e.pageX;\n var mouse_y = e.pageY;\n\n var perc = -(mouse_x - center_x - (skin_minimal_button_size / 2)) * 0.005;\n if (mouse_y < center_y) {\n perc = 0.5 + (0.5 - perc)\n }\n\n if (Math.abs(mouse_y - center_y) > 20 || Math.abs(mouse_x - center_x) > 20) {\n\n seek_to_perc(perc, {\n call_from: \"skin_minimal_scrub\"\n })\n isToggleCancelled = true;\n\n handleEnterFrame({\n 'fire_only_once': true\n });\n }\n }\n\n if (!isToggleCancelled) {\n if (!selfClass.player_playing) {\n play_media({\n 'called_from': 'click_playpause'\n });\n } else {\n pause_media();\n }\n }\n\n\n return false;\n }\n\n\n /**\n *\n * @param targetIncrement\n */\n function syncPlayers_gotoItem(targetIncrement = 0) {\n\n\n var 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\n function syncPlayers_gotoPrev() {\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(-1);\n\n }\n\n\n /**\n * go to next inner playlistItem for single player\n * @returns {boolean}\n */\n function syncPlayers_gotoNext() {\n\n if (selfClass._actualPlayer) {\n selfClass._actualPlayer.get(0).api_sync_players_goto_next();\n\n return false;\n }\n syncPlayers_gotoItem(1);\n }\n\n /**\n *\n * @param pargs\n * @returns {boolean|void}\n */\n function media_handleEnd(pargs) {\n\n\n var margs = {\n 'called_from': 'default'\n }\n\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n if (selfClass.isMediaEnded) {\n return false;\n }\n\n selfClass.isMediaEnded = true;\n\n selfClass.inter_isEnded = setTimeout(function () {\n selfClass.isMediaEnded = false;\n }, 1000);\n\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 false;\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 false;\n } else {\n pause_media();\n }\n\n if (o.parentgallery) {\n o.parentgallery.get(0).api_gallery_handle_end();\n }\n\n\n let autoplayNextMethod = 'default';\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 if($parentPlaylistForSource){\n\n if($parentPlaylistForSource.initOptions.autoplayNext==='on'){\n autoplayNextMethod = 'nextInSourcePlayist';\n }\n }\n }\n\n if (autoplayNextMethod === 'default') {\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 autoplayNextMethod = 'syncPlayerNext';\n }\n }\n }\n\n if (autoplayNextMethod === 'default') {\n if (selfClass._sourcePlayer && (selfClass._sourcePlayer.hasClass('is-single-player') || selfClass._sourcePlayer.hasClass('feeded-whole-playlist'))) {\n autoplayNextMethod = 'handleEndForSourcePlayer';\n }\n }\n\n if (autoplayNextMethod === 'default') {\n autoplayNextMethod = 'nothingAfter';\n }\n\n // -- decided autoplayNextMethod\n\n if (autoplayNextMethod === 'nextInSourcePlayist') {\n\n if($parentPlaylistForSource.argThis){\n $parentPlaylistForSource.argThis.api_gallery_handle_end();\n }\n }\n if (autoplayNextMethod === 'syncPlayerNext') {\n setTimeout(function () {\n syncPlayers_gotoNext();\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(cthis, args);\n }, 200);\n }\n\n }\n\n\n function view_handleResize(e, pargs) {\n\n\n if (cthis) {\n\n }\n\n ww = $(window).width();\n cthisWidth = cthis.width();\n th = cthis.height();\n\n\n if ($scrubBgCanvas && typeof ($scrubBgCanvas.width) === 'function') {\n canvasWidth = $scrubBgCanvas.width();\n canh = $scrubBgCanvas.height();\n\n }\n\n\n if (cthisWidth <= 720) {\n cthis.addClass('under-720');\n } else {\n\n cthis.removeClass('under-720');\n }\n if (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 scrubbarWidth = cthisWidth;\n if (o.design_skin === 'skin-default') {\n scrubbarWidth = cthisWidth;\n }\n if (o.design_skin === 'skin-pro') {\n scrubbarWidth = cthisWidth;\n }\n if (o.design_skin === 'skin-silver' || o.design_skin === 'skin-aria') {\n scrubbarWidth = cthisWidth;\n\n scrubbarWidth = selfClass._scrubbar.width();\n }\n\n\n if (o.design_skin === 'skin-justthumbandbutton') {\n cthisWidth = cthis.children('.audioplayer-inner').outerWidth();\n scrubbarWidth = cthisWidth;\n }\n if (o.design_skin === 'skin-redlights' || o.design_skin === 'skin-steel') {\n scrubbarWidth = selfClass._scrubbar.width();\n }\n\n if (o.design_skin === 'skin-wave') {\n scrubbarWidth = selfClass._scrubbar.outerWidth(false);\n scrubbar_h = selfClass._scrubbar.outerHeight(false);\n\n if (selfClass._commentsHolder) {\n\n selfClass._commentsHolder.css({\n 'width': scrubbarWidth\n })\n\n selfClass._commentsHolder.addClass('active');\n\n\n }\n\n }\n\n // -- *deprecated todo: remove\n if (isResolveThumbHeight === true) {\n\n if (o.design_skin === 'skin-default') {\n\n if (cthis.get(0)) {\n // if the height is auto then\n if (cthis.get(0).style.height === 'auto') {\n cthis.height(200);\n }\n }\n\n var cthis_height = selfClass._audioplayerInner.height();\n if (cthis.attr('data-initheight')) {\n cthis.attr('data-initheight', selfClass._audioplayerInner.height());\n } else {\n cthis_height = Number(cthis.attr('data-initheight'));\n }\n\n if (o.design_thumbh === 'default') {\n\n design_thumbh = cthis_height - 44;\n }\n\n }\n\n selfClass._audioplayerInner.find('.the-thumb').eq(0).css({})\n }\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 (cthisWidth <= 240) {\n cthis.addClass('under-240');\n }\n if (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\n\n var sh = selfClass._scrubbar.eq(0).height();\n\n\n if (selfClass.skinwave_mode === 'small') {\n sh = 5;\n\n\n }\n\n\n // ---------- calculate dims small\n if (selfClass.skinwave_mode === 'small') {\n 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 (o.design_skin === 'skin-minimal') {\n\n skin_minimal_button_size = selfClass._apControls.width();\n if (selfClass.skin_minimal_canvasplay) {\n selfClass.skin_minimal_canvasplay.style.width = skin_minimal_button_size;\n selfClass.skin_minimal_canvasplay.width = skin_minimal_button_size;\n selfClass.skin_minimal_canvasplay.style.height = skin_minimal_button_size;\n selfClass.skin_minimal_canvasplay.height = skin_minimal_button_size;\n\n $(selfClass.skin_minimal_canvasplay).css({\n 'width': skin_minimal_button_size\n , 'height': skin_minimal_button_size\n });\n }\n\n\n }\n\n\n if (o.design_skin === 'skin-default') {\n if (selfClass.$currTime) {\n var _metaArtistCon_l = parseInt(selfClass._metaArtistCon.css('left'), 10);\n var _metaArtistCon_w = selfClass._metaArtistCon.outerWidth();\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 if (o.design_skin === 'skin-minion') {\n aux2 = parseInt(selfClass.$conControls.find('.con-playpause').eq(0).offset().left, 10) - parseInt(selfClass.$conControls.eq(0).offset().left, 10) - 18;\n selfClass.$conControls.find('.prev-btn').eq(0).css({\n 'top': 0,\n 'left': aux2\n })\n aux2 += 36;\n selfClass.$conControls.find('.next-btn').eq(0).css({\n 'top': 0,\n 'left': aux2\n })\n }\n\n\n if (o.embedded === 'on') {\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 }\n\n\n view_drawScrubProgress();\n\n if (o.settings_trigger_resize > 0) {\n\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 function volume_handleMouse(e) {\n var _t = $(this);\n /**\n * from 0 to 1\n * @type number\n */\n var 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(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(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(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 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 isScrubShowingCurrentTime = true;\n }\n }\n\n }\n if (e.type === 'mouseleave') {\n\n 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\n if (e && e.stopPropagation) {\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n\n if (scrubbarWidth === 0) {\n\n scrubbarWidth = selfClass._scrubbar.width();\n }\n if (scrubbarWidth === 0) {\n scrubbarWidth = 300;\n }\n var 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 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\n if (selfClass.player_playing === false) {\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 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 settings\n * @param pargs -- optiona arguments\n * @returns {boolean}\n */\n function seek_to(targetTimeMediaScrub, pargs) {\n //arg = nr seconds\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 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 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 }\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 * outputs a volume from 0 to 1\n * @param {number} arg 0 <-> 1\n * @param pargs\n * @returns {boolean}\n */\n function volume_setVolume(arg, pargs) {\n\n var margs = {\n\n 'call_from': 'default'\n };\n\n if (pargs) {\n margs = $.extend(margs, pargs);\n }\n\n if (arg > 1) {\n arg = 1;\n }\n if (arg < 0) {\n arg = 0;\n }\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_set_by_user = true;\n }\n if (volume_set_by_user) {\n return false;\n } else {\n volume_set_by_user = true;\n }\n }\n }\n\n if (margs.call_from === 'set_by_mouseclick' || margs.call_from === 'set_by_mousemove') {\n volume_set_by_user = 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(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\n function volume_setOnlyVisual(arg, margs) {\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 volume_lastVolume = arg;\n }\n\n\n function volume_handleClickMuteIcon(e) {\n\n if (isMuted === false) {\n last_vol_before_mute = volume_lastVolume;\n volume_setVolume(0, {\n call_from: \"from_mute\"\n });\n isMuted = true;\n } else {\n volume_setVolume(last_vol_before_mute, {\n call_from: \"from_unmute\"\n });\n isMuted = false;\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.player_playing = false;\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 isNotRenderingEnterFrame = true;\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 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\n selfClass.player_playing = false;\n return;\n }\n }\n\n\n media_pause(selfClass, () => {\n if (selfClass._sourcePlayer) {\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 }\n })\n\n\n selfClass.player_playing = false;\n\n\n }\n\n function play_media_visual(margs) {\n\n\n selfClass.player_playing = true;\n isNotRenderingEnterFrame = false;\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 selfClass.$stickToBottomContainer.addClass('audioplayer-loaded');\n\n\n const $dzsapStickToBottomPlaceholder = $('.dzsap-sticktobottom-placeholder');\n\n\n selfClass.$stickToBottomContainer.addClass('audioplayer-loaded')\n\n $dzsapStickToBottomPlaceholder.eq(0).addClass('active');\n $dzsapStickToBottomPlaceholder.css({\n height: (selfClass.$stickToBottomContainer.outerHeight()) + 'px'\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_good()) {\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 (destroyed_for_rebuffer) {\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 destroyed_for_rebuffer = false;\n }\n\n if (o.google_analytics_send_play_event === 'on' && window._gaq && google_analytics_sent_play_event === false) {\n window._gaq.push(['_trackEvent', 'ZoomSounds Play', 'Play', 'zoomsounds play - ' + dataSrc]);\n google_analytics_sent_play_event = true;\n }\n\n if (!window.ga) {\n if (window.__gaTracker) {\n window.ga = window.__gaTracker;\n }\n }\n\n if (o.google_analytics_send_play_event === 'on' && window.ga && google_analytics_sent_play_event === false) {\n google_analytics_sent_play_event = true;\n window.ga('send', {\n hitType: 'event',\n eventCategory: 'zoomsounds play - ' + dataSrc,\n eventAction: 'play',\n eventLabel: 'zoomsounds play - ' + dataSrc\n });\n }\n\n // -- media functions\n\n if (selfClass._sourcePlayer) {\n\n if (selfClass._sourcePlayer.get(0) && selfClass._sourcePlayer.get(0).api_pause_media_visual) {\n selfClass._sourcePlayer.get(0).api_play_media_visual({\n 'api_report_play_media': false\n });\n }\n\n }\n\n\n if (selfClass._actualPlayer) {\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 return;\n\n\n } catch (err) {\n console.log('no fake player..', err);\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\n\n if (o.scrubbar_type === 'wave' && 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 var finalOptions = {};\n var 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\n\n registerToJquery($);\n\n })(jQuery);\n}\n\nwindow.dzsap_singleton_ready_calls_is_called = false;\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\nasync function dzsap_jQueryInit(callback, reject) {\n\n return new Promise((resolve, reject) => {\n\n if (window.jQuery) {\n resolve('jQuery loaded');\n } else {\n var 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\ndzsap_jQueryInit().then(() => {\n register_dzsap_plugin();\n jQuery(document).ready(function ($) {\n\n\n window.dzsap_get_base_url();\n // -- defined gallery here\n // --\n // AUDIO GALLERY\n // --\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 window.dzsap_init_allGalleries($);\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\n\n\n jQuery(selector).audioplayer(Object.assign({}, settings));\n\n window.dzsap_lasto = settings;\n\n\n};\nplayerRegisterWindowFunctions();\n","import * as dzsapHelpers from \"../_dzsap_helpers\";\n\nimport {ConstantsDzsAp} from \"../../configs/_constants\";\nimport {retrieve_soundcloud_url} from \"../_dzsap_misc\";\nimport {scrubModeWave__checkIfWeShouldTryToGetPcm, scrubModeWave__view_transitionIn} from \"../wave-render/_wave-render-functions\";\n\n/**\n *\n * @param {DzsAudioPlayer} selfClass\n * @param $\n * @returns {function(*, *=): (boolean|undefined)}\n */\nexport function media_changeMedia(selfClass, $) {\n /**\n * change media source for the player / change_media(\"song.mp3\", {type:\"audio\", fakeplayer_is_feeder:\"off\"});\n * @param {HTMLElement|string} $playerSource - can be player dom element\n * @param pargs - {type:\"audio\", fakeplayer_is_feeder:\"off\"}\n * @returns {boolean}\n */\n return function ($playerSource, pargs = {}) {\n\n\n const changeMediaArgsDefaults = {\n type: '',\n fakeplayer_is_feeder: 'off' // -- this is OFF in case there is a button feeding it, and on if it's an actual player\n , called_from: 'default'\n , source: 'default'\n , pcm: ''\n , artist: \"\"\n , song_name: \"\"\n , thumb: \"\"\n , thumb_link: \"\"\n , autoplay: \"on\"\n , cue: \"on\"\n , feeder_type: \"player\"\n , source_player_do_not_update: \"off\"\n , playerid: \"\"\n };\n\n\n selfClass.ajax_view_submitted = 'on'; // -- view submitted from caller\n\n\n\n var handle_resize_delay = 500;\n let changeMediaArgs = {...changeMediaArgsDefaults, ...pargs};\n var o = selfClass.initOptions;\n\n\n\n\n var _sourceForChange = $playerSource;\n\n\n // -- let us decide if we pause old player\n var isGoingToPauseTheOldPlayer = true; // pause previous player\n var isGoingToPauseTheActualPlayer = false; // pause if\n var isSourceAStringSource = false;\n var isSourceAZoomSoundsAudioplayer = false;\n let isSourceA$Object = false;\n\n let newSource = '';\n\n\n if(_sourceForChange && _sourceForChange.attr){\n isSourceA$Object = true;\n }\n\n\n selfClass.reinit_resetMetrics();\n selfClass.reinit_beforeChangeMedia();\n\n if (typeof _sourceForChange === 'string') {\n isSourceAStringSource = true;\n }\n\n if(!isSourceAStringSource){\n if($playerSource.hasClass('audioplayer') || $playerSource.hasClass('audioplayer-tobe')){\n isSourceAZoomSoundsAudioplayer = true;\n }\n }\n\n $('.current-feeder-for-parent-player').removeClass('current-feeder-for-parent-player');\n\n if(selfClass.$reflectionVisualObject){\n selfClass.$reflectionVisualObject.removeClass('is-playing');\n }\n\n\n\n if(isSourceAStringSource){\n newSource = _sourceForChange;\n }\n if (isSourceA$Object) {\n\n newSource = _sourceForChange.attr('data-source');\n selfClass.$reflectionVisualObject = _sourceForChange;\n changeMediaArgs = {...changeMediaArgs, ...dzsapHelpers.sanitizeObjectForChangeMediaArgs(_sourceForChange)};\n }\n if(changeMediaArgs.source && changeMediaArgs.source!='default'){\n newSource = changeMediaArgs.source;\n }\n\n\n\n if (selfClass.data_source === newSource) {\n isGoingToPauseTheOldPlayer = false;\n }\n\n // -- old feed fake player\n\n if (isGoingToPauseTheOldPlayer && selfClass._sourcePlayer) {\n selfClass._sourcePlayer.get(0).api_pause_media_visual({\n 'call_from': 'change_media'\n });\n selfClass._sourcePlayer.get(0).api_set_timeVisualTotal(0);\n }\n\n // -- we are in one mode, so we need to preserve the originalSettings of the first item\n if (!(selfClass.cthis.data('original-settings')) && selfClass.data_source !== 'fake') {\n selfClass.cthis.data('original-settings', dzsapHelpers.sanitizeObjectForChangeMediaArgs(selfClass.cthis))\n }\n\n\n\n\n\n const oldSource = selfClass.data_source;\n selfClass.data_source = newSource;\n\n const isSourceHasClassForDomSource = !isSourceAStringSource && !!(_sourceForChange.hasClass('audioplayer') || _sourceForChange.hasClass('is-zoomsounds-source-player'));\n\n\n if ((isSourceHasClassForDomSource) || changeMediaArgs.fakeplayer_is_feeder === 'on') {\n\n selfClass.set_sourcePlayer(_sourceForChange)\n if(selfClass._sourcePlayer){\n\n selfClass.cthis.data('feeding-from', selfClass._sourcePlayer.get(0));\n selfClass._sourcePlayer.addClass('current-feeder-for-parent-player');\n }\n }\n\n if (!isSourceAStringSource && _sourceForChange) {\n if (_sourceForChange && _sourceForChange.attr('data-playerid')) {\n selfClass.cthis.attr('data-feed-playerid', _sourceForChange.attr('data-playerid'));\n } else {\n selfClass.cthis.attr('data-feed-playerid', '');\n changeMediaArgs.playerid = '';\n }\n }\n\n\n\n\n if (oldSource === newSource) {\n if(selfClass.cthis.hasClass('is-playing')){\n selfClass.pause_media();\n }else{\n selfClass.play_media();\n }\n return false;\n }\n\n\n if (changeMediaArgs.type === 'detect' || changeMediaArgs.type === 'audio' || changeMediaArgs.type === 'normal') {\n changeMediaArgs.type = 'selfHosted';\n }\n\n\n selfClass.cthis.removeClass('meta-loaded');\n\n\n // -- footer placeholder\n if (selfClass.cthis.parent().hasClass('audioplayer-was-loaded')) {\n\n selfClass.cthis.parent().addClass('audioplayer-loaded');\n $('body').addClass('footer-audioplayer-loaded');\n selfClass.cthis.parent().removeClass('audioplayer-was-loaded');\n }\n\n if (selfClass.$stickToBottomContainer) {\n selfClass.$stickToBottomContainer.addClass('audioplayer-loaded');\n }\n\n\n selfClass.cthis.removeClass(ConstantsDzsAp.ERRORED_OUT_CLASS);\n\n\n selfClass.destroy_media();\n\n\n selfClass.cthis.attr('data-source', changeMediaArgs.source);\n\n\n\n\n\n\n var original_type = changeMediaArgs.type;\n if (changeMediaArgs.type === 'mediafile') {\n changeMediaArgs.type = 'audio';\n }\n if (changeMediaArgs.type) {\n if (changeMediaArgs.type === 'soundcloud') {\n changeMediaArgs.type = 'audio';\n }\n if (changeMediaArgs.type === 'album_part') {\n changeMediaArgs.type = 'audio';\n }\n selfClass.cthis.attr('data-type', changeMediaArgs.type);\n selfClass.audioType = changeMediaArgs.type;\n o.type = changeMediaArgs.type;\n }\n\n\n\n if (o.design_skin === 'skin-wave') {\n if (o.skinwave_wave_mode === 'canvas') {\n if (selfClass._sourcePlayer) {\n selfClass.data_source = _sourceForChange.attr('data-source');\n } else {\n if (typeof _sourceForChange === 'string') {\n\n selfClass.data_source = _sourceForChange;\n }\n }\n\n if (_sourceForChange && changeMediaArgs.pcm) {\n\n selfClass.cthis.attr('data-pcm', _sourceForChange.attr('data-pcm'));\n scrubModeWave__view_transitionIn(selfClass, _sourceForChange.attr('data-pcm'));\n } else {\n\n dzsapHelpers.player_reinit_findIfPcmNeedsGenerating(selfClass);\n\n scrubModeWave__checkIfWeShouldTryToGetPcm(selfClass);\n }\n\n }\n\n\n\n\n\n // -- inside skin-wave\n if (changeMediaArgs.thumb) {\n\n if (selfClass.cthis.find('.the-thumb').length) {\n\n selfClass.cthis.find('.the-thumb').css('background-image', 'url(' + changeMediaArgs.thumb + ')');\n } else {\n selfClass.cthis.attr('data-thumb', changeMediaArgs.thumb);\n selfClass.setupStructure_thumbnailCon();\n }\n\n }\n }\n\n\n if (changeMediaArgs.thumb) {\n\n if (selfClass.cthis.find('.the-thumb').length) {\n\n selfClass.cthis.find('.the-thumb').css('background-image', 'url(' + changeMediaArgs.thumb + ')');\n } else {\n selfClass.cthis.attr('data-thumb', changeMediaArgs.thumb);\n selfClass.setupStructure_thumbnailCon()\n }\n\n selfClass.cthis.removeClass('does-not-have-thumb');\n selfClass.cthis.addClass('has-thumb');\n } else {\n selfClass.cthis.addClass('does-not-have-thumb');\n selfClass.cthis.removeClass('has-thumb');\n }\n\n\n if (changeMediaArgs.pcm === '') {\n selfClass.setup_pcm_random_for_now();\n }\n\n\n\n\n dzsapHelpers.player_adjustIdentifiers (selfClass);\n\n\n\n handle_resize_delay = 100;\n\n\n\n if (!isSourceAStringSource && _sourceForChange) {\n\n\n // -- .feed-dzsap-for-extra-html-right will be appended to the footer player\n\n var selector = '';\n var $feedExtraHtmlRightFromSource = null;\n if (_sourceForChange.find('.feed-dzsap-for-extra-html-right').length) {\n $feedExtraHtmlRightFromSource = _sourceForChange.find('.feed-dzsap-for-extra-html-right').eq(0);\n } else {\n // -- we use this for Shop Builder\n if(selfClass._sourcePlayer){\n\n if (selfClass._sourcePlayer.attr('data-playerid') && $(document).find('.feed-dzsap-for-extra-html-right[data-playerid=\"' + selfClass._sourcePlayer.attr('data-playerid') + '\"]').length) {\n $feedExtraHtmlRightFromSource = $(document).find('.feed-dzsap-for-extra-html-right[data-playerid=\"' + selfClass._sourcePlayer.attr('data-playerid') + '\"]').eq(0);\n }\n }\n }\n\n if ($feedExtraHtmlRightFromSource) {\n selfClass.classMetaParts.set_extraHtmlFloatRight($feedExtraHtmlRightFromSource.html());\n\n }\n }\n\n if (changeMediaArgs.artist) {\n selfClass.cthis.find('.the-artist').html(changeMediaArgs.artist);\n }\n if (changeMediaArgs.song_name) {\n selfClass.cthis.find('.the-name').html(changeMediaArgs.song_name);\n }\n\n\n if (changeMediaArgsDefaults.source_player_do_not_update === 'on') {\n selfClass.set_sourcePlayer(null);\n }\n\n\n\n if (original_type === 'soundcloud' && changeMediaArgs.source.indexOf('api.soundcloud') === -1) {\n selfClass.data_source = changeMediaArgs.source;\n\n selfClass.isPlayPromised = true;\n setTimeout(function () {\n selfClass.isPlayPromised = true;\n }, 501);\n retrieve_soundcloud_url(selfClass);\n\n } else {\n\n // -- setup media for all sources\n // -- make sure source is not fake\n selfClass.setup_media({\n 'called_from': 'change_media'\n });\n }\n\n\n selfClass.timeModel.getSampleTimesFromDom(selfClass._sourcePlayer);\n\n\n if (selfClass.audioType === 'fake') {\n return false;\n }\n\n if (selfClass.initOptions.action_audio_change_media) {\n selfClass.initOptions.action_audio_change_media(changeMediaArgs.source, changeMediaArgs);\n }\n\n\n\n\n\n\n if (changeMediaArgs.autoplay === 'on') {\n selfClass.play_media_visual();\n\n if(!isSourceAZoomSoundsAudioplayer){\n\n setTimeout(function () {\n selfClass.play_media({\n 'called_from': 'changeMediaArgs.autoplay'\n });\n }, 100);\n }\n }\n selfClass.reinit();\n setTimeout(function () {\n\n selfClass.handleResize(null, {\n called_from: 'change_media'\n });\n }, handle_resize_delay)\n }\n}\n"],"names":["ConstantsDzsAp","PLAYLIST_TRANSITION_DURATION","URL_WAVESURFER_HELPER_BACKUP","WAVESURFER_MAX_TIMEOUT","URL_JQUERY","DEBUG_STYLE_PLAY_FUNCTIONS","ERRORED_OUT_CLASS","ERRORED_OUT_MAX_ATTEMPTS","DZSAP_SCRIPT_SELECTOR_KEYBOARD","decode_json","arg","fout","JSON","parse","err","loadScriptIfItDoesNotExist","scriptSrc","checkForVar","Promise","resolve","reject","script","document","createElement","onload","onerror","src","head","appendChild","getBaseUrl","baseUrlVar","scriptName","window","scripts","getElementsByTagName","scriptKey","String","indexOf","baseUrl_arr","split","splice","result","url","join","substr","sanitizeToCssPx","setupTooltip","args","mainArgs","Object","assign","tooltipInnerHTML","tooltipIndicatorText","tooltipConClass","isInt","n","Math","round","isValid","getRelativeX","mouseX","$el_","jQuery","offset","left","formatTime","s","m","h","isFinite","can_history_api","history","pushState","dzs_clean_string","replace","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_good","is_ie","MSInputMethodContext","documentMode","navigator","platform","can_canvas","getContext","is_safari","prototype","toString","call","HTMLElement","is_android","select_all","el","getSelection","createRange","range","selectNodeContents","sel","removeAllRanges","addRange","selection","body","createTextRange","textRange","moveToElementText","select","userAgent","toLowerCase","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","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","dzsap_submit_like","argp","e","playerid","currentTarget","ajax_url","htmlaux","dzsap_retract_like","dzsap_singleton_ready_calls","dzsap_singleton_ready_calls_is_called","$feed_dzsapMainSettings","$feed_dzsapMainSettingsAll","querySelectorAll","innerHTML","ajaxurl","dzsap__style","after","on","dzsap_currplayer_focused","jQueryAuxBindings","off","$t","preventDefault","stopPropagation","stopImmediatePropagation","_c","get","api_change_media","wishlist_action","dzsap_lasto","settings_php_handler","selectText","selectNode","view_player_playMiscEffects","$conPlayPause","cthis","view_player_globalDetermineSyncPlayersIndex","_sourcePlayer","dzsap_syncList_players","forEach","$syncPlayer","dzsap_syncList_index","player_view_addMetaLoaded","$totalTime","timeModel","refreshTimes","getVisualTotalTime","player_determineActualPlayer","$fakePlayer","_actualPlayer","actualDataTypeOfMedia","htmlEntities","waitForScriptToBeAvailableThenExecute","verifyVar","callbackFn","checkInterval","checkIfVarExists","clearInterval","setInterval","setTimeout","then","catch","configureAudioPlayerOptionsInitial","o","preload_method","wavesurfer_pcm_length","Number","settings_trigger_resize","isNaN","design_thumbh","skinwave_wave_mode","skinwave_wave_mode_canvas_normalize","skinwave_wave_mode_canvas_waves_number","autoplay","cue","extra_classes_player","design_skin","feedEmbedCode","embed_code","initOptions","skinwave_enableSpectrum","test","scrubbar_type","action_received_time_total","dzsap_send_total_time","action_video_contor_60secs","disable_volume","cueMedia","ajax_view_submitted","starrating_alreadyrated","loop","disable_scrub","disable_timer","design_color_bg","design_wave_color_bg","design_color_highlight","design_wave_color_progress","design_animateplaypause","skinwave_wave_mode_canvas_mode","skinwave_wave_mode_canvas_reflection_size","urlToAjaxHandler","php_handler","player_reinit_findIfPcmNeedsGenerating","hasInitialPcmData","isPcmRequiredToGenerate","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","player_viewApplySkinWaveModes","skinwave_mode","sanitizeToHexColor","hexcolor","player_identifySource","data_source","player_identifyTypes","player_adjustIdentifiers","_feed_obj","$feed_fakeButton","player_getPlayFromTime","playFrom","playfrom","sanitizeToIntFromPointTime","sampleTimeStart","arr","player_initSpectrum","dzsap_audio_ctx","AudioContext","spectrum_audioContext","webkitAudioContext","spectrum_analyser","createAnalyser","smoothingTimeConstant","fftSize","$mediaNode_","crossOrigin","spectrum_mediaElementSource","createMediaElementSource","connect","createGain","spectrum_gainNode","destination","gain","frameCount","sampleRate","spectrum_audioContext_buffer","createBuffer","player_initSpectrumOnUserAction","handleMouseDown","addEventListener","once","player_icecastOrShoutcastRefresh","audioTypeSelfHosted_streamType","crossDomain","documentElement","regex_title","regex_creator","new_title","new_artist","regexMatches","setup_media","radio_isGoingToUpdateSongName","radio_isGoingToUpdateArtistName","player_determineStickToBottomContainer","$stickToBottomContainer","isStickyPlayer","player_stickToBottomContainerDetermineClasses","player_service_getSourceProtection","player_isGoingToSetupMediaNow","player_determineHtmlAreas","extraHtmlBottom","extraHtmlControlsLeft","extraHtmlControlsRight","settings_extrahtml","extraHtmlAreas","controlsLeft","controlsRight","bottom","player_stopOtherPlayers","dzsap_list","i","api_pause_media","api_destroy_for_rebuffer","player_syncPlayers_gotoItem","targetIncrement","syncPlayers_autoplayEnabled","keySyncPlayer","$playerInSyncList","targetIndex","$currentSyncPlayer_","api_play_media","player_syncPlayers_buildList","syncPlayers_isDzsapListBuilt","_t23","push","clearTimeout","syncPlayers_buildTimeout","player_detect_skinwave_mode","convertPluginOptionsToFinalOptions","elThis","defaultOptions","argOptions","searchedAttr","$es","finalOptions","tempOptions","isSetFromJson","undefined","$elThis","isArgOptionsDefinedViaJs","Boolean","keys","eval","generateFakeArrayForPcm","it1","random","scrubbar_modeWave_clearObsoleteCanvas","_scrubbar","scrubbar_modeWave_setupCanvas","pargs","margs","prepare_for_transition_in","struct_scrubBg_str","struct_scrubProg_str","_scrubbarbg_canvas","_scrubbarprog_canvas","hide","playbtn_svg","pausebtn_svg","svg_share_icon","svg_prev_btn","svg_next_btn","svg_menu_state","svg_embed_btn","svg_footer_playlist","dzsap_generate_keyboard_controls","$keyboardControlsInfo","dzsap_keyboard_controls","extend","step_back_amount","handle_keypresses","dzsap_isTextFieldFocused","isKeyPressed","checkKeyCode","ctrlKey","keyCode","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","dzsap_keyboardSetup","$audioGallery","api_filter","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","definition","defineProperty","enumerable","obj","prop","hasOwnProperty","Symbol","toStringTag","setupMediaElement","stringAudioElementHtml","stringAudioTagSource","$theMedia","media_removeMediaInside","load","isValidTotalTime","duration","retrieve_soundcloud_url","soundcloud_apikey","alert","soundcloud_retriever","php_retriever","async","dataType","q","newSource","original_real_mp3","stream_url","isAlreadyHasRealPcm","pcm_data_try_to_generate","pcm_data_try_to_generate_wait_for_real_pcm","scrubModeWave__initGenerateWaveData","isPlayPromised","play_media","console","log","scrubModeWave__checkIfWeShouldTryToGetPcm","dzsap_wavesurfer_is_trying_to_generate","call_attempt","isWeCanGeneratePcm","dzsap_get_base_url","wavesurferUrl","dzsap_base_url","scrubModeWave__view_transitionIn","resolveStr","view_drawCanvases","argpcm","calledFrom","draw_canvas","call_from","skinwave_wave_mode_canvas_waves_padding","scrubbar_reveal","$canvas_","pcm_arr","isProgressScrubContext","_canvas","__canvas","isWithinSample","_canvasContext","ar_str","waves","imageSmoothingEnabled","imageSmoothing","imageSmoothingQuality","webkitImageSmoothing","barIndex","max","widthCanvas","heightCanvas","ar_new","gradient","barCount","bar_space","reflection_size","bar_w","normal_size_ratio","lastBarHeight","searched_index","temp_hex","hexcolors","progress_hexcolor","progress_hexcolors","spectrum_isBarWithinProgress","view_drawBars","isReflection","save","targetRatio","barHeight","lineWidth","floor","barPositionTop","beginPath","rect","isSample","currBarIndex","sampleTimeTotal","sampleTimeEnd","fillStyle","startColor","endColor","createLinearGradient","addColorStop","fill","closePath","restore","clearRect","dzsap_wavesurfer_load_attempt","PlayerTime","constructor","referenceMediaCurrentTime","referenceMediaTotalTime","visualCurrentTime","visualTotalTime","actualTotalTime","dzsapInstance","init","initObjects","timeInstance","api_set_timeVisualCurrent","api_get_time_total","api_get_time_curr","getVisualCurrentTime","api_set_timeVisualTotal","currentTime","getCurrentTime","playFrom_ready","Storage","localStorage","getDuration","handle_end","isMediaEnded","inter_isEnded","processCurrentFrame","api_seek_to_visual","temp_time_curr","isSafeToChangeTrack","getActualTotalTime","getActualTargetTime","targetTime","getSampleTimesFromDom","$targetPlayer","sample_time_start","sample_time_total","pseudo_sample_time_end","sample_perc_start","sample_perc_end","sample_time_end","ajax_submit_views","currip","currIp","auxnr","increment_views","auxlikes","ajax_submit_like","ajax_retract_like","ajax_comment_publish","comm_position","commentPositionPerc","skinwave_comments_avatar","comments_avatar","skinwave_comments_account","comments_username","email","charAt","slice","_t2","action_audio_comment","ajax_submit_download","_ClassMetaParts","set_extraHtmlFloatRight","extraHtml","hide_comments_writer","$commentsWritter","parentgallery","api_handleResize","comments_updateCommentHolderTimerWhenReady","percClickFromScrubWidth","comments_handleClickCommentsBg","argThis","$commentsHolder","leftMouseX","clientX","skinwave_comments_links_to","skinwave_comments_allow_post_if_not_logged_in","sw","$commentElement","lmx2","add_comments_placeholder","strCommentsAvatarUrl","comment_submit","comment_text","comment_email","comment_username","comm_author","$commentsSelector","MD5","bind","api_player_commentSubmitted","comments_selector_event","default_opts","cueFirstMedia","autoplayNext","settings_enable_linking","design_menu_position","navigation_method","design_menu_state","design_menu_show_player_state_button","design_menu_width","design_menu_height","design_menu_space","design_menuitem_width","design_menuitem_height","design_menuitem_space","disable_menu_navigation","loop_playlist","menu_facebook_share","enable_easing","settings_ap","playlistTransition","embedded","mode_showall_layout","settings_mode","settings_mode_showall_show_number","mode_normal_video_mode","ZoomSoundsNav","parentGallery","structZoomsoundsNav","_navMain","_navClipper","cgallery","size_navMainClipSize","size_navMainTotalSize","finish_viy","selfGallery","init_ready","click_menuitem","ind","goto_item","refferer","get_structZoomsoundsNav","set_elements","calculateDims","outerHeight","self","navMain_mousemove","my","pageX","pageY","top","viy","aux_error","toggle_menu_state","handleResize","parseTrackData","track_data","foundnr","aux_html","id","label","views","DzsApPlaylist","navClass","_sliderMain","_sliderClipper","currNr","lastCurrNr","nrChildren","tempNr","busy","first","destroyed","skin_redlight_give_controls_right_to_all_players","trying_to_get_track_data","arr_menuitems","str_alertBeforeRate","target_viy","begin_viy","change_viy","destroy_gallery","filterPlayersInPlaylist","filterBy","searchedString","$audioPlayer","referenceVal","isAccordingToSearch","isotope","filter","fadeIn","fadeOut","regenerate_sync_players_with_this_playlist","init_parse_track_data","parse_track_data","get_nr_children","reinit","notInitedPlayers","menuDescriptionHtml","menuItemObject","generateMenuItemObjects","extra_class","menu_description","player_id","init_loaded","click_downloadAfterRate","play_curr_media","mode_showall_listen_for_play","currNr_2","handle_frame","toFixed","requestAnimationFrame","handlePlaylistSongEnd","goto_next","player_commentSubmitted","player_rateSubmitted","frameElement","calculate_on_interval","transition_end","newCurrNr","transition_bg_end","goto_prev","isGoingToItem","donotopenlink","called_from","_audioplayerToBeActive","currNr_last_vol","api_get_last_vol","args_player","volume_from_gallery","player_navigation","init_player_from_gallery","api_play","api_seek_to","_arg","ignore_linking","foo","bgimage","animate","queue","complete","step","_cache","player_args","audioplayer","_firstPlayer","dzsap_apconfigs","lengthAudioPlayersInPlaylist","disable_player_navigation","before","api_skin_redlights_give_controls_right_to_all","force_autoplay_when_coming_from_share_link","action_audio_play","itemSelector","layoutMode","percentPosition","masonry","columnWidth","api_regenerate_sync_players_with_this_playlist","api_goto_next","api_goto_prev","api_goto_item","api_gallery_handle_end","api_toggle_menu_state","api_player_rateSubmitted","api_reinit","api_play_curr_media","api_get_nr_children","api_init_player_from_gallery","api_destroy","SelfPlaylist","dzsap_init_allGalleries","$feed_dzsapConfigs","$currGallery","dzsag_init","dzsap_moving_playlist_item","dzsap_playlist_con","dzsap_playlist_item_moving","dzsap_playlist_item_target","DzsapInnerPlaylist","dzsapClass","$playlistInner","thisClass","handle_mouse","playlistInner_gotoItem","clone","_clone","_apControlsRight","playlistInner_setupStructureInPlayer","stringPlaylistMenuItems","attributes","specified","name","clientY","tmy","player_determineSyncPlayersIndex","_cach","playlist_inner_currNr","playerId","$dzsapFooter","player_constructArtistAndSongCon","structHtmlMeta","_conControls","_audioplayerInner","wrap","_apControls","_apControlsLeft","_conPlayPauseCon","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","settings_extrahtml_before_play_pause","addExtraHtmlInPlace","show_tooltips","structure_generatePlayPauseString","aux_str_con_volume","playbtnSvg","pausebtnSvg","$$scrubbProg","$conControls","$controlsVolume","$currTime","time_total_for_visual","setupStructure_thumbnailCon","skinwave_place_metaartist_after_volume","skinwave_place_thumb_after_volume","setup_structure_scrub","skinwave_timer_static","check_multisharer","skin_minimal_canvasplay","isCanvasFirstDrawn","prev_btn_str","next_btn_str","auxs","isMultiSharer","setup_structure_sanitizers","next","struct_embedButtonWithTooltip","dzsapHelpers","enable_embed_button","$embedButton","execCommand","feedEmbedFunctionality","footer_btn_playlist","classFunctionalityInnerPlaylist","index_extrahtml_toloads","unwrap","extraHtmlBottomFunctionality","setup_structure_extras","afterArtist","settings_extrahtml_in_float_right_str","feedSelector","addToString","$appendElement","defaultPlayerOptions","autoplay_on_scrub_click","pause_method","settings_extrahtml_after_play_pause","scrub_show_scrub_time","skinwave_dynamicwaves","pcm_notice","notice_no_media","sampleTimesMode","mobile_delete","mobile_disable_fakeplayer","skinwave_comments_displayontime","skinwave_comments_mode_outer_selector","default_volume","embedded_iframe_id","google_analytics_send_play_event","fakeplayer","failsafe_repair_media_element","action_audio_play2","action_audio_pause","action_audio_end","action_audio_change_media","action_audio_loaded_metadata","type_audio_stop_buffer_on_unfocus","settings_exclude_from_list","skin_minimal_button_size","gallery_gapless_play","preview_on_hover","dzsap_oneTimeSetups","dzsap_generate_list_for_sync_players","syncPlayers_buildList","force_regenerate","toggleClass","innerWidth","dzsap_globalidind","loading_multi_sharer","dzsap_player_interrupted_by_dzsap","dzsap_sticktobottom_con","dzsap_self_options","dzsap_generating_pcm","dzsap_box_main_con","dzsap_player_index","DzsAudioPlayer","$realVisualPlayer","$parentPlaylist","$commentsChildren","$reflectionVisualObject","spectrum_audioContextBufferSource","lastArray","last_lastArray","player_playing","youtube_retryPlayTimeout","lastTimeInSeconds","isPcmTryingToGenerate","isPlayerLoaded","youtube_currentId","youtube_isInited","isSetupedMedia","isSentCacheTotalTime","mediaProtectionStatus","classMetaParts","SelfInstance","classInit","set_sourcePlayer","$arg","reinit_beforeChangeMedia","reinit_resetMetrics","service_checkIfWeShouldUpdateTotalTime","cthisWidth","inter_checkReady","cthisId","scrubbarWidth","scrubbarProgX","$scrubBgCanvas","isMuted","isDestroyed","google_analytics_sent_play_event","destroyed_for_rebuffer","media_isLoopActive","isScrubShowingCurrentTime","isListenersSetup","currTime_outerWidth","player_index_in_gallery","volume_lastVolume","last_vol_before_mute","inter_60_secs_contor","isResolveThumbHeight","volume_dragging","volume_set_by_user","is_under_400","scrubbar_moving","scrubbar_moving_x","aux3","canvasWidth","canh","defaultVolume","isNotRenderingEnterFrame","duration_viy","draw_canvas_inter","calculate_dims_time","scrubbarh","change_visual_target","api_pause_media_visual","$sourcePlayer_","api_play_media_visual","api_draw_curr_time","api_get_times","api_check_time","api_draw_scrub_prog","view_updateColorHighlight","destroy_listeners","handleClickLike","has","destroy_it","pause_media","handleClickForSetupMedia","unbind","handleClickMenuState","aux_thumb_con_str","outerHTML","wrapAll","view_wave_setupRandomPcm","default_pcm","i3","stringify","setupMediaAttrs","dzsap_youtube_setupMedia","stringAudioElement","type_normal_stream_type","stringAudioTagOpen","stringAudioTagClose","buildAudioElementHtml","action_initLoaded","volume_setVolume","attempt_reload","networkState","HTMLMediaElement","NETWORK_NO_SOURCE","earg","txt","target","message","$audio_","view_drawCurrentTime","setupMediaListeners","readyState","init_checkIfReady","makeMediaPreloadInTheFuture","handleClick_playPause","isWasPlaying","repairMediaElement","destroy_cmedia","destroy_media","setup_listeners","handleMouseOnScrubbar","volume_handleClickMuteIcon","volume_handleMouse","view_handleResize","volume_getLast","getItem","seek_to","do_not_autoplay","handleEnterFrame","count_60secs","media_toggleLoop","isGoingToActivate","syncPlayers_gotoPrev","syncPlayers_gotoNext","_target","api_seek_to_0","api_playback_slow","api_playback_reset","seek_to_perc","totalTime","Uint8Array","frequencyBinCount","getByteFrequencyData","len","last_lastarray","drawMeter","view_updateTotalTime","view_drawScrubProgress","style","fire_only_once","ctx_minimal","ctx_w","ctx_h","pw","ph","PI","arc","strokeStyle","stroke","isToggleCancelled","inter_checkTotalTime","center_x","center_y","mouse_x","mouse_y","perc","syncPlayers_gotoItem","media_handleEnd","api_get_media_isLoopActive","autoplayNextMethod","$parentPlaylistForSource","api_handle_end","aux2","draw_canvas_inter_func","_metaArtistCon_w","_metaArtistCon_l","params","postMessage","mouseXRelativeToVolume","mousex","targetPositionOnScrub","api_seek_to_perc","argperc","targetTimeMediaScrub","deeplinking","newlink","fakeplayer_is_feeder","seekTo","seek_to_visual","set_playback_speed","setPlaybackRate","playbackRate","setVolume","volume","volume_setOnlyVisual","api_visual_set_volume","api_set_volume","setItem","pause_media_visual","call_actual_player","donot_change_media","pauseVideo","pause","media_pause","play_media_visual","$dzsapStickToBottomPlaceholder","call_from_aux","delay","_gaq","ga","__gaTracker","hitType","eventCategory","eventAction","eventLabel","api_regenerate_playerlist_inner","dzsap_youtube_playMedia","errorFn","play","createBufferSource","buffer","start","finally","tryToPlay","async_media_tryToPlay","media_tryToPlay","api_try_to_submit_view","service_submitView","play_trigger_step_back","setup_pcm_random_for_now","scriptUrl","dzsap_youtube_functions_inited","dzsap_youtube_functions_init","str_comments_holder","skinwave_comments_process_in_php","wrapInner","comments_setupCommentsHolder","comments_handleClickCancel","comments_handleClickSubmit","comments_setupCommentsInitial","isGoingToSetupMediaNow","classInstance","api_init_loaded","api_get_source","api_click_for_setup_media","api_set_playback_speed","$playerSource","changeMediaArgsDefaults","feeder_type","source_player_do_not_update","isGoingToPauseTheOldPlayer","isSourceAStringSource","isSourceAZoomSoundsAudioplayer","isSourceA$Object","oldSource","original_type","$feedExtraHtmlRightFromSource","media_changeMedia","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","passive","originalEvent","touches","dzsap_part_starRatings_loaded","dzsap_init_starRatings_from_dzsap","pluginurl","dzsap_init_allPlayers","$playerTarget","dzsap_init","callback","dzsap_jQueryInit","audiogallery","linkedClassInstance","selector","settings","registerToJquery","ready","dzsap_player_isOneTimeSetuped"],"sourceRoot":""}