{"version":3,"sources":["webpack://dzsap_webpack_external/../source/audioplayer/configs/_constants.js","webpack://dzsap_webpack_external/../source/audioplayer/js_common/_dzs_helpers.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_helpers.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_svgs.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/player/_player_keyboard.js","webpack://dzsap_webpack_external/webpack/bootstrap","webpack://dzsap_webpack_external/webpack/runtime/define property getters","webpack://dzsap_webpack_external/webpack/runtime/hasOwnProperty shorthand","webpack://dzsap_webpack_external/webpack/runtime/make namespace object","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/media/_media_functions.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_misc.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/wave-render/_wave-render-functions.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_time_model.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_ajax.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/helper-classes/_ClassMetaParts.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/components/_comments.js","webpack://dzsap_webpack_external/../source/audioplayer/configs/_settingsPlaylist.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/components/_nav.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/_dzsap_playlist.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/extra-functionality/_innerPlaylist.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/components/_structure.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/extra-functionality/_extraHtmlFunctions.js","webpack://dzsap_webpack_external/../source/audioplayer/configs/_settingsPlayer.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/player/_player-one-time-setups.js","webpack://dzsap_webpack_external/../source/audioplayer/audioplayer.sourcepack.js","webpack://dzsap_webpack_external/../source/audioplayer/jsinc/media/_onePlayer_changeMedia.js"],"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_MAIN_SETTINGS","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","$","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","$mainSettings","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","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","innerHTML","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","player_constructArtistAndSongCon","margs","structHtml","call_from","_conControls","_audioplayerInner","wrap","_apControls","_apControlsRight","_apControlsLeft","_conPlayPauseCon","before","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","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","exports","module","__webpack_modules__","d","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","t","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","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","referenceMediaCurrentTime","referenceMediaTotalTime","visualCurrentTime","visualTotalTime","actualTotalTime","dzsapInstance","init","timeInstance","api_set_timeVisualCurrent","api_get_time_total","api_get_time_curr","getVisualCurrentTime","api_set_timeVisualTotal","currentTime","getCurrentTime","playFrom_ready","Storage","localStorage","getDuration","handle_end","isMediaEnded","inter_isEnded","api_seek_to_visual","temp_time_curr","isSafeToChangeTrack","targetTime","$targetPlayer","sample_time_start","sample_time_total","pseudo_sample_time_end","sample_perc_start","sample_perc_end","sample_time_end","ajax_submit_views","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","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","click_menuitem","ind","goto_item","refferer","outerHeight","self","navMain_mousemove","my","pageX","pageY","top","viy","aux_error","handleResize","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","parseTrackData","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","easeIn","toFixed","requestAnimationFrame","toggle_menu_state","gallery_handle_end","goto_next","player_commentSubmitted","player_rateSubmitted","calculateDims","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","get_structZoomsoundsNav","set_elements","init_ready","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","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","playlistInner_setupStructureInPlayer","stringPlaylistMenuItems","attributes","specified","name","clientY","tmy","_cach","playlist_inner_currNr","playerId","$dzsapFooter","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","$commentsChildren","$reflectionVisualObject","spectrum_audioContextBufferSource","lastArray","last_lastArray","player_playing","youtube_retryPlayTimeout","lastTimeInSeconds","isPcmTryingToGenerate","isPlayerLoaded","youtube_currentId","youtube_isInited","isSetupedMedia","isSentCacheTotalTime","mediaProtectionStatus","classMetaParts","SelfInstance","classInit","$arg","getActualTotalTime","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","set_sourcePlayer","$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_","service_checkIfWeShouldUpdateTotalTime","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","media_handleEnd","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","processCurrentFrame","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","api_get_media_isLoopActive","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","getActualTargetTime","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","player_determineSyncPlayersIndex","$dzsapStickToBottomPlaceholder","call_from_aux","delay","_gaq","ga","__gaTracker","hitType","eventCategory","eventAction","eventLabel","api_regenerate_playerlist_inner","dzsap_youtube_playMedia","errorFn","play","createBufferSource","buffer","start","tryToPlay","async_media_tryToPlay","media_tryToPlay","api_try_to_submit_view","service_submitView","play_trigger_step_back","getSampleTimesFromDom","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","initObjects","classInstance","api_init_loaded","api_get_source","api_click_for_setup_media","api_set_playback_speed","_argSource","changeMediaArgsDefaults","feeder_type","source_player_do_not_update","isGoingToPauseTheOldPlayer","isSourceAStringSource","isSourceA$Object","reinit_resetMetrics","reinit_beforeChangeMedia","oldSource","original_type","$feedExtraHtmlRightFromSource","set_extraHtmlFloatRight","media_changeMedia","api_destroy_listeners","api_media_toggleLoop","api_change_visual_target","api_change_design_color_highlight","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","dzsap_init","callback","dzsap_jQueryInit","c","$feed_dzsapConfigs","audiogallery","linkedClassInstance","dzsag_init","selector","settings","registerToJquery","ready","dzsap_player_isOneTimeSetuped"],"mappings":"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","file":"audioplayer.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 `<div class=\"dzstooltip-con ${mainArgs.tooltipConClass}\"><span class=\"dzstooltip main-tooltip   talign-end arrow-bottom style-rounded color-dark-light  dims-set transition-slidedown \" style=\"width: 280px;\"><span class=\"dzstooltip--inner\">${mainArgs.tooltipInnerHTML}</span> </span></span><span class=\"tooltip-indicator\">${mainArgs.tooltipIndicatorText}</span></div>`;\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('<div/>').text(arg).html();\n}\n\nexport function dzsap_generate_keyboard_tooltip(keyboard_controls, lab) {\n\n\n  var structureDzsTooltipCommentAfterSubmit = '<span class=\"dzstooltip color-dark-light talign-start transition-slidein arrow-bottom style-default\" style=\"width: auto;  white-space:nowrap;\"><span class=\"dzstooltip--inner\">' + 'Shortcut' + ': ' + keyboard_controls[lab] + '</span></span>';\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   *\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 = '<span class=\"forcalc\">' + html_org + '</span>';\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\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  const $mainSettings = jQuery(DZSAP_SCRIPT_SELECTOR_MAIN_SETTINGS);\n  if ($mainSettings.length) {\n    window.dzsap_settings = JSON.parse($mainSettings.html());\n    window.ajaxurl = window.dzsap_settings.ajax_url;\n    window.dzsap_curr_user = window.dzsap_settings.dzsap_curr_user;\n  }\n\n\n  jQuery('body').append('<style class=\"dzsap--style\"></style>');\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('<div class=\"audioplayer-tobe auto-init skin-silver\" data-source=\"' + _t.attr('src') + '\"></div>');\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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\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  }\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      var regex_title = '';\n      var regex_creator = '';\n      var new_title = '';\n      var new_artist = '';\n\n      if (selfClass.audioTypeSelfHosted_streamType === 'icecast') {\n\n        var regex_location = /<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>(.*?)<\\/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&hearts;');\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  var 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 (var keySyncPlayer in window.dzsap_syncList_players) {\n      var $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          let $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\nexport function player_constructArtistAndSongCon(margs) {\n\n  var selfClass = this;\n\n  if (selfClass.cthis.find('.meta-artist').length === 0) {\n    if (selfClass.cthis.find('.feed-artist-name').length || selfClass.cthis.find('.feed-song-name').length) {\n      var structHtml = '<span class=\"meta-artist player-artistAndSong\">';\n      if (selfClass.cthis.find('.feed-artist-name').length) {\n        structHtml += '<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        structHtml += '<span class=\"the-name player-meta--songname\">' + selfClass.cthis.find('.feed-song-name').eq(0).html() + '</span>';\n      }\n      structHtml += '</span>';\n      selfClass.cthis.append(structHtml);\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\n      if (selfClass.cthis.hasClass('skin-wave-mode-alternate')) {\n\n\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\n\n        if (selfClass._audioplayerInner) {\n\n          selfClass._audioplayerInner.append(selfClass.cthis.children('.meta-artist'));\n        }\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    var 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    }\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\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\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].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        // -- no audioCtx_buffer\n        if (selfClass.$mediaNode_) {\n          if (selfClass.$mediaNode_.play) {\n\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                selfClass.$mediaNode_.play();\n                resolve({\n                  'resolve_type': 'started_playing'\n                })\n              } else {\n\n                selfClass.$mediaNode_.play().then(r => {\n                  resolve({\n                    'resolve_type': 'started_playing'\n                  })\n                }).catch(err => {\n                  reject({\n                    'error_type': 'did not want to play',\n                    'error_message': err\n                  });\n                });\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  var attempt_reload = 0;\n\n\n  selfClass.$mediaNode_.addEventListener('error', handleAudioError, true);\n  selfClass.$mediaNode_.addEventListener('loadedmetadata', handleMediaMetaLoaded, true);\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\" >&#x2139;</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\">&#10148; 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\">&#10006;</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          var _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 = gallery_handle_end;\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\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 gallery_handle_end() {\n\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\nexport const registerToJquery = function ($) {\n  $.fn.audiogallery = function (argOptions) {\n    var 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 += '&#x2195;';\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","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';\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>';\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  (dzsapHelpers.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  configureAudioPlayerOptionsInitial,\n  dzsap_is_mobile,\n  dzsap_singleton_ready_calls,\n  is_android,\n  is_ios,\n  is_safari,\n  is_android_good,\n  player_adjustIdentifiers,\n  player_delete,\n  player_detect_skinwave_mode,\n  player_determineActualPlayer,\n  player_determineHtmlAreas,\n  player_getPlayFromTime,\n  generateFakeArrayForPcm,\n  player_identifySource,\n  player_identifyTypes,\n  player_stopOtherPlayers,\n  player_syncPlayers_buildList,\n  player_syncPlayers_gotoItem,\n  player_viewApplySkinWaveModes,\n  playerFunctions,\n  player_service_getSourceProtection,\n  player_isGoingToSetupMediaNow,\n  player_icecastOrShoutcastRefresh,\n  player_determineStickToBottomContainer,\n  player_stickToBottomContainerDetermineClasses,\n  waitForScriptToBeAvailableThenExecute,\n  scrubbar_modeWave_setupCanvas,\n  player_initSpectrumOnUserAction,\n  player_view_addMetaLoaded,\n  formatTime,\n  sanitizeToIntFromPointTime,\n  view_player_globalDetermineSyncPlayersIndex,\n  view_player_playMiscEffects,\n  player_initSpectrum,\n  assignHelperFunctionsToJquery,\n  convertPluginOptionsToFinalOptions,\n  jQueryAuxBindings, playerRegisterWindowFunctions\n} from './jsinc/_dzsap_helpers';\nimport {getBaseUrl, isInt, loadScriptIfItDoesNotExist} from './js_common/_dzs_helpers';\nimport {\n  buildAudioElementHtml,\n  makeMediaPreloadInTheFuture,\n  media_tryToPlay,\n  repairMediaElement,\n  setupMediaElement,\n  media_pause,\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\nwindow.dzsap_list = []; // -- this is for the players\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;\nwindow.dzsap_syncList_players = []; // -- used for next .. prev .. footer playlist\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.$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      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 (arg) {\n        if (!arg) {\n          arg = selfClass.keyboard_controls.step_back_amount;\n        }\n        seek_to(selfClass.timeCurrent - arg);\n      }\n      cthis.get(0).api_step_forward = function (arg) {\n\n        if (arg) {\n\n        } else {\n          arg = selfClass.keyboard_controls.step_back_amount;\n        }\n        seek_to(selfClass.timeCurrent + arg);\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    function change_visual_target(arg, pargs) {\n      // -- change the visual target, the main is the main palyer selfClass.player_playing and the visual target is the player which is a visual representation of this\n\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&hearts;');\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      if (typeof (selfClass.$mediaNode_) !== \"undefined\" && selfClass.$mediaNode_) {\n        if (selfClass.$mediaNode_.nodeName === 'AUDIO') {\n          selfClass.$mediaNode_.addEventListener('ended', media_handleEnd);\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\n\n          if (localStorage !== null && selfClass.the_player_id) {\n\n            if (localStorage.getItem('dzsap_last_volume_' + selfClass.the_player_id)) {\n\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      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      setTimeout(function () {\n        if (selfClass.cthis.hasClass('is-single-player') || (selfClass._sourcePlayer && selfClass._sourcePlayer.hasClass('is-single-player'))) {\n          // -- called on handle end\n          syncPlayers_gotoNext();\n        }\n      }, 100);\n\n      setTimeout(function () {\n\n        if (selfClass._sourcePlayer && (selfClass._sourcePlayer.hasClass('is-single-player') || selfClass._sourcePlayer.hasClass('feeded-whole-playlist'))) {\n          selfClass._sourcePlayer.get(0).api_handle_end({\n            'call_from': 'handle_end() fake_player'\n          });\n          return false;\n        }\n\n        if (action_audio_end) {\n          let args = {};\n          action_audio_end(cthis, args);\n        }\n      }, 200);\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\n        // -- move\n        if (cthis.hasClass('under-500') === false) {\n          if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'normal') {\n            selfClass._apControls.append(selfClass._metaArtistCon);\n          }\n        }\n\n        cthis.addClass('under-500');\n\n\n      } else {\n        // -- width under 500\n\n\n        if (cthis.hasClass('under-500') === false) {\n          if (o.design_skin === 'skin-wave' && selfClass.skinwave_mode === 'normal') {\n            selfClass._conPlayPauseCon.after(selfClass._metaArtistCon);\n          }\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      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') === false) {\n          init_loaded();\n          var 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') === false) {\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    Math.easeIn = function (t, b, c, d) {\n\n      return -c * (t /= d) * (t - 2) + b;\n\n    };\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    // -- defined gallery here\n    // --\n    // AUDIO GALLERY\n    // --\n\n    const $feed_dzsapConfigs = jQuery('.dzsap-feed--dzsap-configs');\n    if ($feed_dzsapConfigs.length) {\n      window.dzsap_apconfigs = JSON.parse($feed_dzsapConfigs.last().html());\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\nfunction register_dzsap_callScriptsOnReady() {\n  jQuery(document).ready(function ($) {\n\n\n    // -- main call\n\n    if (!window.dzsap_singleton_ready_calls_is_called) {\n      dzsap_singleton_ready_calls();\n    }\n\n\n    dzsag_init('.audiogallery.auto-init');\n\n\n    jQueryAuxBindings($);\n\n\n  });\n\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  $('.audioplayer.auto-init,.audioplayer-tobe.auto-init').each(function () {\n    var _t2 = $(this);\n    if (_t2.hasClass('audioplayer-tobe')) {\n      if (window.dzsap_init) {\n        dzsap_init(_t2);\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  register_dzsap_callScriptsOnReady();\n  jQuery(document).ready(function ($) {\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  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} _argSource - can be player dom element\n   * @param pargs - {type:\"audio\", fakeplayer_is_feeder:\"off\"}\n   * @returns {boolean}\n   */\n  return function (_argSource, pargs = {}) {\n\n\n    var 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    var changeMediaArgs = {...changeMediaArgsDefaults, ...pargs};\n    var o = selfClass.initOptions;\n\n\n\n\n    var _sourceForChange = _argSource;\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 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    $('.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      setTimeout(function () {\n        selfClass.play_media({\n          'called_from': 'changeMediaArgs.autoplay'\n        });\n      }, 500);\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"],"sourceRoot":""}