assets = new Assets(); $this->CHelper = new CHelper(); $this->assets->sound_player_style(); $this->assets->howler_script(); $this->assets->sound_player_script(); } /** * Get widget name * * Retrieve Sound Player widget name * * @since 1.0.0 * * @return string Widget name */ public function get_name() { return 'afeb_sound_player'; } /** * Get widget title * * Retrieve Sound Player widget title * * @since 1.0.0 * * @return string Widget title */ public function get_title() { return esc_html__('Sound Player', 'addons-for-elementor-builder'); } /** * Get widget icon * * Retrieve Sound Player widget icon * * @since 1.0.0 * * @return string Widget icon */ public function get_icon() { return 'afeb-iconsvg-sound-player'; } /** * Get widget categories * * Retrieve Sound Player widget categories * * @since 1.0.0 * * @return array Widget categories */ public function get_categories() { return ['afeb_basic']; } /** * Get widget keywords * * Retrieve the list of keywords the widget belongs to * * @since 1.0.0 * * @return array Widget keywords */ public function get_keywords() { return ['soundplayer', 'sound_player', esc_html__('Sound Player', 'addons-for-elementor-builder')]; } /** * Register Sound Player widget controls * * Adds different input fields to allow the user to change and customize the widget settings * * @since 1.0.0 */ public function register_controls() { $this->CHelper->add_cnt_sctn($this, 'cs1', 'Audio', function ($obj) { $this->CHelper->txt($obj, 'ttl', esc_html__('Title', 'addons-for-elementor-builder'), esc_html__('Title', 'addons-for-elementor-builder')); $this->CHelper->txt($obj, 'sb_ttl', __('Sub Title', 'addons-for-elementor-builder'), esc_html__('Sub Title', 'addons-for-elementor-builder')); $this->CHelper->ado($obj, 'ado'); $this->CHelper->mda($obj, 'cvr'); }); /** * * Content Styles * */ $this->CHelper->add_cnt_sctn($this, 'cs2', __('Settings', 'addons-for-elementor-builder'), function ($obj) { $this->CHelper->sh_swtchr($obj, 'sh_snd_volm', __('Sound Volume', 'addons-for-elementor-builder'), 1); }); do_action('afeb/widget/content/after_render_content_section', $this); /** * * Box Styles * */ $spc_bx_slctr = '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-player-content'; $this->CHelper->add_stl_sctn($this, 'ss1', esc_html__('Box', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'spc_bx_bg', $opt[0], [], [0]); $this->CHelper->res_pad($obj, 'spc_pad', $opt[0]); $this->CHelper->brdr($obj, 'spc_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'spc_rdus', $opt[0]); $this->CHelper->bx_shdo($obj, 'spc_shdo', $opt[0]); }, [$spc_bx_slctr]); /** * * Image Styles * */ $sp_slctr = '{{WRAPPER}} .afeb-sound-player-1 '; $cvr_bx_slctr = $sp_slctr . '.afeb-sound-cover-wrap'; $cvr_slctr = $cvr_bx_slctr . ' .afeb-sound-cover'; $this->CHelper->add_stl_sctn($this, 'ss2', __('Image', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'img_bx_bg', $opt[0]); $range = ['px' => ['min' => 50, 'max' => 1000]]; $this->CHelper->res_sldr($obj, 'ic_size', __('Size', 'addons-for-elementor-builder'), [$opt[1] => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}'], $range); $this->CHelper->res_mar($obj, 'img_mar', $opt[1]); $this->CHelper->brdr($obj, 'img_brdr', $opt[1]); $this->CHelper->res_brdr_rdus($obj, 'img_rdus', $opt[1]); $this->CHelper->bx_shdo($obj, 'bx_shdo', $opt[1]); }, [$cvr_bx_slctr, $cvr_slctr]); /** * * Title Styles * */ $dtls_bx_slctr = '{{WRAPPER}} .afeb-sound-details-wrap'; $ttl_slctr = $dtls_bx_slctr . ' .afeb-sound-title'; $this->CHelper->add_stl_sctn($this, 'ss3', esc_html__('Title', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->clr($obj, 'ttl_clr', $opt[0]); $this->CHelper->typo($obj, 'ttl_typo', $opt[0]); $this->CHelper->res_talmnt($obj, 'ttl_almnt', $opt[0]); $this->CHelper->res_pad($obj, 'ttl_pad', $opt[0]); $this->CHelper->brdr($obj, 'ttl_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'ttl_rdus', $opt[0]); }, [$ttl_slctr]); /** * * SubTitle Styles * */ $sb_ttl_slctr = $dtls_bx_slctr . ' .afeb-sound-subtitle'; $this->CHelper->add_stl_sctn($this, 'ss4', __('Sub Title', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->clr($obj, 'sb_ttl_clr', $opt[0]); $this->CHelper->typo($obj, 'sb_ttl_typo', $opt[0]); $this->CHelper->res_talmnt($obj, 'sb_ttl_almnt', $opt[0]); $this->CHelper->res_pad($obj, 'sb_ttl_pad', $opt[0]); $this->CHelper->brdr($obj, 'sb_ttl_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'sb_ttl_rdus', $opt[0]); }, [$sb_ttl_slctr]); /** * * BTNS Box Styles * */ $btn_box_slctr = $dtls_bx_slctr . ' .afeb-sound-controls'; $this->CHelper->add_stl_sctn($this, 'ss15', __('Buttons Box', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'btns_bx_bg', $opt[0]); $this->CHelper->res_talmnt($obj, 'btns_bx_almnt', $opt[0]); $this->CHelper->res_pad($obj, 'btns_bx_pad', $opt[0]); $this->CHelper->brdr($obj, 'btns_bx_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'btns_bx_rdus', $opt[0]); }, [$btn_box_slctr]); /** * * 30 Seconds Back BTN Styles * */ $btn_prev_slctr = $sp_slctr . '.afeb-sound-btn-sec-prev'; $this->CHelper->add_stl_sctn($this, 'ss5', __('30 Seconds Back Button', 'addons-for-elementor-builder'), function ($obj, $opt) { $opt[1] = $opt[0] . ' svg'; $opt[2] = $opt[1] . ' path'; $opt[3] = $opt[1] . ' circle'; $this->CHelper->clr($obj, 'prv_clr', $opt[1] . ', ' . $opt[2] . ', ' . $opt[3]); $range = ['px' => ['min' => 15, 'max' => 30]]; $this->CHelper->res_sldr($obj, 'prv_size', __('Size', 'addons-for-elementor-builder'), [$opt[1] => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}'], $range, ['px']); $this->CHelper->res_mar($obj, 'prv_mar', $opt[0]); }, [$btn_prev_slctr]); /** * * Play And Pause BTN Styles * */ $btn_ply_slctr = $sp_slctr . '.afeb-sound-btn-playing'; $this->CHelper->add_stl_sctn($this, 'ss6', __('Play And Pause Button', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'plpu_bg', $opt[0]); $this->CHelper->clr($obj, 'plpu_clr', $opt[0] . ' svg, ' . $opt[0] . ' svg path'); $range = ['px' => ['min' => 40, 'max' => 65]]; $this->CHelper->res_sldr($obj, 'plpu_size', __('Size', 'addons-for-elementor-builder'), [$opt[0] => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}'], $range, ['px']); $this->CHelper->res_mar($obj, 'plpu_mar', $opt[0]); $this->CHelper->res_pad($obj, 'plpu_pad', $opt[0]); $this->CHelper->brdr($obj, 'plpu_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'plpu_rdus', $opt[0]); }, [$btn_ply_slctr]); /** * * 30 Seconds Back BTN Styles * */ $btn_next_slctr = $sp_slctr . '.afeb-sound-btn-sec-next'; $this->CHelper->add_stl_sctn($this, 'ss7', __('30 Seconds Forward Button', 'addons-for-elementor-builder'), function ($obj, $opt) { $opt[1] = $opt[0] . ' svg'; $opt[2] = $opt[1] . ' path'; $opt[3] = $opt[1] . ' circle'; $this->CHelper->clr($obj, 'nxt_clr', $opt[1] . ', ' . $opt[2] . ', ' . $opt[3]); $range = ['px' => ['min' => 15, 'max' => 30]]; $this->CHelper->res_sldr($obj, 'nxt_size', __('Size', 'addons-for-elementor-builder'), [$opt[1] => 'height: {{SIZE}}{{UNIT}};width: {{SIZE}}{{UNIT}}'], $range, ['px']); $this->CHelper->res_mar($obj, 'nxt_mar', $opt[0]); }, [$btn_next_slctr]); /** * * Volume BTN Styles * */ $vlum_slctr = $sp_slctr . '.afeb-sound-volume'; $this->CHelper->add_stl_sctn($this, 'ss8', __('Volume Button', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->clr($obj, 'vlum_clr', $opt[0]); $range = ['px' => ['min' => 15, 'max' => 30]]; $this->CHelper->res_sldr($obj, 'vlum_size', __('Size', 'addons-for-elementor-builder'), [$opt[0] => 'font-size: {{SIZE}}{{UNIT}}'], $range, ['px']); $this->CHelper->res_mar($obj, 'vlum_mar', $opt[0]); }, [$vlum_slctr]); /** * * Volume Box Styles * */ $vlum_bx_slctr = $vlum_slctr . ' .afeb-sound-volume-box'; $this->CHelper->add_stl_sctn($this, 'ss9', __('Volume Box', 'addons-for-elementor-builder'), function ($obj, $opt) { $opt[1] = $opt[0] . ' input[type="range"]::-webkit-slider-runnable-track'; $this->CHelper->bg_grp_ctrl($obj, 'vlum_bx_bg', $opt[0]); $this->CHelper->bg_clr($obj, 'vlum_bx_br_clr', $opt[1], __('Bar Color', 'addons-for-elementor-builder')); $this->add_control( 'vlum_bx_act_clr', [ 'label' => esc_html__('Active Color', 'addons-for-elementor-builder'), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-volume input[type="range"]::-webkit-slider-thumb' => 'background-color:{{VALUE}};box-shadow: -407px 0 0 400px {{VALUE}};border-color:{{VALUE}}', '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-volume input[type="range"]::-moz-range-thumb' => 'background-color:{{VALUE}};box-shadow: -407px 0 0 400px {{VALUE}};border-color:{{VALUE}}', ] ] ); $range = ['px' => ['min' => 2, 'max' => 8]]; $this->CHelper->res_sldr($obj, 'vlum_bx_hght', __('Height', 'addons-for-elementor-builder'), [$opt[1] => 'height: {{SIZE}}{{UNIT}}'], $range, ['px']); $this->CHelper->res_pad($obj, 'vlum_bx_pad', $opt[0]); $this->CHelper->brdr($obj, 'vlum_bx_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'vlum_bx_rdus', $opt[0]); $this->CHelper->bx_shdo($obj, 'vlum_bx_shdo', $opt[0]); }, [$vlum_bx_slctr]); /** * * Seek Bar Styles * */ $sb_br_slctr = $sp_slctr . '.afeb-sound-timer-line'; $sb_rng_slctr = $sb_br_slctr . ' input[type="range"]'; $sb_stl_slctr = $sb_br_slctr . ' .afeb-stl'; $this->CHelper->add_stl_sctn($this, 'ss12', __('Seek Bar', 'addons-for-elementor-builder'), function ($obj, $opt) { $slctr = sprintf('%s, %s', $opt[0], $opt[1]); $this->CHelper->bg_grp_ctrl($obj, 'sb_bg', $opt[0]); $this->add_control( 'sb_bg_act', [ 'label' => esc_html__('Active Color', 'addons-for-elementor-builder'), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-progress span, {{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-progress' => 'background-color: {{VALUE}}', '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-line .afeb-stl' => 'background-color: {{VALUE}}', '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-line input[type="range"]::-webkit-slider-thumb' => 'background-color: {{VALUE}}', '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-line input[type="range"]::-moz-range-thumb' => 'background-color: {{VALUE}}', '{{WRAPPER}} .afeb-sound-player-1 .afeb-sound-timer-line input[type="range"]::-ms-thumb' => 'background-color: {{VALUE}}', ] ] ); $this->CHelper->res_mar($obj, 'sb_br_mar', $opt[0]); $this->CHelper->brdr_rdus($obj, 'sb_rdus', $slctr . ',' . $opt[2]); }, [$sb_br_slctr, $sb_rng_slctr, $sb_stl_slctr]); /** * * Time Counter Styles * */ $tmr_slctr = $sp_slctr . '.afeb-sound-timer-time'; $tmr_cntr_slctr = $tmr_slctr . ' .afeb-sound-timer-down'; $this->CHelper->add_stl_sctn($this, 'ss13', __('Time Counter', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'tc_bg', $opt[0]); $this->CHelper->clr($obj, 'tc_clr', $opt[0]); $this->CHelper->typo($obj, 'tc_typo', $opt[0]); $this->CHelper->res_mar($obj, 'tc_mar', $opt[0], ['px'], [], '', null, 1); $this->CHelper->res_pad($obj, 'tc_pad', $opt[0], ['px'], [], '', null, 1); $this->CHelper->brdr($obj, 'tc_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'tc_rdus', $opt[0]); }, [$tmr_cntr_slctr]); /** * * Fixed Time Styles * */ $tmr_slctr = $sp_slctr . '.afeb-sound-timer-time'; $tmr_fx_slctr = $tmr_slctr . ' .afeb-sound-timer-default'; $this->CHelper->add_stl_sctn($this, 'ss14', __('Fixed Time', 'addons-for-elementor-builder'), function ($obj, $opt) { $this->CHelper->bg_grp_ctrl($obj, 'fx_bg', $opt[0]); $this->CHelper->clr($obj, 'fx_clr', $opt[0]); $this->CHelper->typo($obj, 'fx_typo', $opt[0]); $this->CHelper->res_mar($obj, 'fx_mar', $opt[0], ['px'], [], '', null, 1); $this->CHelper->res_pad($obj, 'fx_pad', $opt[0], ['px'], [], '', null, 1); $this->CHelper->brdr($obj, 'fx_brdr', $opt[0]); $this->CHelper->brdr_rdus($obj, 'fx_rdus', $opt[0]); }, [$tmr_fx_slctr]); } /** * Render attributes * * @since 1.0.4 * * @param string $wid */ protected function render_attrs($wid = '') { $classes = []; $classes[] = 'afeb-sound-player'; $classes[] = 'afeb-sound-player-1'; $classes[] = !is_admin() ? ' afeb-has-loader ' : ''; $classes[] = "afeb-sound-player-$wid"; $classes[] = 'afeb-sound-cols-none-buttons'; $this->add_render_attribute( [ 'sound-player' => [ 'class' => esc_attr(implode(' ', $classes)), 'data-player-id' => esc_attr($wid) ] ] ); echo wp_kses_post($this->get_render_attribute_string('sound-player')); } /** * Written in PHP and used to generate the final HTML * * @since 1.0.0 */ protected function render() { $settings = $this->get_settings_for_display(); $wid = $this->get_id(); ?>
render_attrs($wid); ?>>
00:00