| Server IP : 46.105.57.169 / Your IP : 216.73.217.35 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/123click/assets/ |
Upload File : |
PK ! �c��� � modules/role-manager/module.phpnu �[��� <?php
namespace ElementorPro\Modules\RoleManager;
use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;
use Elementor\Core\RoleManager\Role_Manager as RoleManagerBase;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
const ROLE_MANAGER_OPTION_NAME = 'role-manager';
public function get_role_manager_options() {
return get_option( 'elementor_' . self::ROLE_MANAGER_OPTION_NAME, [] );
}
public function get_name() {
return 'role-manager';
}
public function save_advanced_options( $input ) {
return $input;
}
public function get_user_restrictions() {
return $this->get_role_manager_options();
}
public function display_role_controls( $role_slug, $role_data ) {
static $options = false;
if ( ! $options ) {
$options = [
'excluded_options' => Plugin::elementor()->role_manager->get_role_manager_options(),
'advanced_options' => $this->get_role_manager_options(),
];
}
$id = self::ROLE_MANAGER_OPTION_NAME . '_' . $role_slug . '_design';
$name = 'elementor_' . self::ROLE_MANAGER_OPTION_NAME . '[' . $role_slug . '][]';
$checked = isset( $options['advanced_options'][ $role_slug ] ) ? $options['advanced_options'][ $role_slug ] : [];
?>
<label for="<?php echo esc_attr( $id ); ?>">
<input type="checkbox" name="<?php echo esc_attr( $name ); ?>" id="<?php echo esc_attr( $id ); ?>" value="design" <?php checked( in_array( 'design', $checked ), true ); ?>>
<?php esc_html_e( 'Access to edit content only', 'elementor-pro' ); ?>
</label>
<?php
}
public function register_admin_fields( RoleManagerBase $role_manager ) {
$role_manager->add_section( 'general', 'advanced-role-manager', [
'fields' => [
self::ROLE_MANAGER_OPTION_NAME => [
'field_args' => [
'type' => 'raw_html',
'html' => '',
],
'setting_args' => [
'sanitize_callback' => [ $this, 'save_advanced_options' ],
],
],
],
] );
}
public function __construct() {
parent::__construct();
if ( is_admin() ) {
add_action( 'elementor/admin/after_create_settings/' . RoleManagerBase::PAGE_ID, [ $this, 'register_admin_fields' ], 100 );
}
remove_action( 'elementor/role/restrictions/controls', [ Plugin::elementor()->role_manager, 'get_go_pro_link_html' ] );
add_action( 'elementor/role/restrictions/controls', [ $this, 'display_role_controls' ], 10, 2 );
add_filter( 'elementor/editor/user/restrictions', [ $this, 'get_user_restrictions' ] );
}
}
PK ! -z�� � modules/scroll-snap/module.phpnu �[��� <?php
namespace ElementorPro\Modules\ScrollSnap;
use Elementor\Core\DocumentTypes\PageBase;
use Elementor\Controls_Manager;
use ElementorPro\Base\Module_Base;
use Elementor\Controls_Stack;
use Elementor\Core\Experiments\Manager;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
public function __construct() {
parent::__construct();
$this->add_actions();
}
public function get_name() {
return 'scroll-snap';
}
public static function get_experimental_data() {
return [
'name' => 'e_scroll_snap',
'title' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
'description' => esc_html__( 'Customize how visitors scroll through your site. Scroll Snap makes the viewport stop or pause on a specific position of a section when scrolling ends.', 'elementor-pro' )
. ' <a href="https://go.elementor.com/wp-dash-scroll-snap" target="_blank">'
. esc_html__( 'Learn More', 'elementor-pro' ) . '</a>',
'release_status' => Manager::RELEASE_STATUS_BETA,
'new_site' => [
'default_active' => true,
'minimum_installation_version' => '3.5.0-beta',
],
];
}
public function register_controls( Controls_Stack $controls_stack, $section_id ) {
if ( ! $controls_stack instanceof PageBase || 'section_custom_css_pro' !== $section_id ) {
return;
}
$scroll_snap_children = '.elementor-section:not(.elementor-inner-section), .elementor-location-header, .elementor-location-footer, .page-header, .site-header, .elementor-add-section';
$controls_stack->start_controls_section(
'section_scroll_snap',
[
'label' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_ADVANCED,
]
);
$controls_stack->add_control(
'scroll_snap',
[
'label' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'On', 'elementor-pro' ),
'label_off' => esc_html__( 'Off', 'elementor-pro' ),
'description' => esc_html__( 'Scroll Snap makes the viewport stop on a specific position of a section when scrolling ends.', 'elementor-pro' ),
'selectors' => [
'html' => 'height: 100vh; margin: 0; overflow: hidden;',
'body' => 'height: 100vh; overflow: auto; scroll-snap-type: y mandatory;',
],
'frontend_available' => true,
]
);
$controls_stack->add_responsive_control(
'scroll_snap_position',
[
'label' => esc_html__( 'Snap Position', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Top', 'elementor-pro' ),
'center' => esc_html__( 'Center', 'elementor-pro' ),
'end' => esc_html__( 'Bottom', 'elementor-pro' ),
],
'selectors_dictionary' => [
'' => 'start',
],
'condition' => [
'scroll_snap!' => '',
],
'selectors' => [
$scroll_snap_children => 'scroll-snap-align: {{VALUE}}',
],
]
);
$controls_stack->add_responsive_control(
'scroll_snap_padding',
[
'label' => esc_html__( 'Scroll Padding', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 200,
],
],
'condition' => [
'scroll_snap!' => '',
],
'selectors' => [
'body' => 'scroll-padding: {{SIZE}}{{UNIT}}',
],
]
);
$controls_stack->add_responsive_control(
'force_stop',
[
'label' => esc_html__( 'Scroll Snap Stop', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Normal', 'elementor-pro' ),
'always' => esc_html__( 'Always', 'elementor-pro' ),
],
'selectors_dictionary' => [
'' => 'normal',
],
'condition' => [
'scroll_snap!' => '',
],
'selectors' => [
$scroll_snap_children => 'scroll-snap-stop: {{VALUE}}',
],
]
);
$controls_stack->end_controls_section();
}
private function add_actions() {
add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 10, 2 );
}
}
PK ! =��� � % modules/flip-box/widgets/flip-box.phpnu �[��� <?php
namespace ElementorPro\Modules\FlipBox\Widgets;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
class Flip_Box extends Base_Widget {
public function get_name() {
return 'flip-box';
}
public function get_title() {
return esc_html__( 'Flip Box', 'elementor-pro' );
}
public function get_icon() {
return 'eicon-flip-box';
}
protected function register_controls() {
$this->start_controls_section(
'section_side_a_content',
[
'label' => esc_html__( 'Front', 'elementor-pro' ),
]
);
$this->start_controls_tabs( 'side_a_content_tabs' );
$this->start_controls_tab( 'side_a_content_tab', [ 'label' => esc_html__( 'Content', 'elementor-pro' ) ] );
$this->add_control(
'graphic_element',
[
'label' => esc_html__( 'Graphic Element', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'none' => [
'title' => esc_html__( 'None', 'elementor-pro' ),
'icon' => 'eicon-ban',
],
'image' => [
'title' => esc_html__( 'Image', 'elementor-pro' ),
'icon' => 'fa fa-picture-o',
],
'icon' => [
'title' => esc_html__( 'Icon', 'elementor-pro' ),
'icon' => 'eicon-star',
],
],
'default' => 'icon',
]
);
$this->add_control(
'image',
[
'label' => esc_html__( 'Choose Image', 'elementor-pro' ),
'type' => Controls_Manager::MEDIA,
'default' => [
'url' => Utils::get_placeholder_image_src(),
],
'dynamic' => [
'active' => true,
],
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_group_control(
Group_Control_Image_Size::get_type(),
[
'name' => 'image', // Actually its `image_size`
'default' => 'thumbnail',
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_control(
'selected_icon',
[
'label' => esc_html__( 'Icon', 'elementor-pro' ),
'type' => Controls_Manager::ICONS,
'fa4compatibility' => 'icon',
'default' => [
'value' => 'fas fa-star',
'library' => 'fa-solid',
],
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_view',
[
'label' => esc_html__( 'View', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'default' => esc_html__( 'Default', 'elementor-pro' ),
'stacked' => esc_html__( 'Stacked', 'elementor-pro' ),
'framed' => esc_html__( 'Framed', 'elementor-pro' ),
],
'default' => 'default',
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_shape',
[
'label' => esc_html__( 'Shape', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'circle' => esc_html__( 'Circle', 'elementor-pro' ),
'square' => esc_html__( 'Square', 'elementor-pro' ),
],
'default' => 'circle',
'condition' => [
'icon_view!' => 'default',
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'title_text_a',
[
'label' => esc_html__( 'Title & Description', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'This is the heading', 'elementor-pro' ),
'placeholder' => esc_html__( 'Enter your title', 'elementor-pro' ),
'dynamic' => [
'active' => true,
],
'label_block' => true,
'separator' => 'before',
]
);
$this->add_control(
'description_text_a',
[
'label' => esc_html__( 'Description', 'elementor-pro' ),
'type' => Controls_Manager::TEXTAREA,
'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
'placeholder' => esc_html__( 'Enter your description', 'elementor-pro' ),
'separator' => 'none',
'dynamic' => [
'active' => true,
],
'rows' => 10,
'show_label' => false,
]
);
$this->end_controls_tab();
$this->start_controls_tab( 'side_a_background_tab', [ 'label' => esc_html__( 'Background', 'elementor-pro' ) ] );
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'background_a',
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .elementor-flip-box__front',
]
);
$this->add_control(
'background_overlay_a',
[
'label' => esc_html__( 'Background Overlay', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'background-color: {{VALUE}};',
],
'separator' => 'before',
'condition' => [
'background_a_image[id]!' => '',
],
]
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
[
'name' => 'background_overlay_a_filters',
'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay',
'condition' => [
'background_overlay_a!' => '',
],
]
);
$this->add_control(
'background_overlay_a_blend_mode',
[
'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Normal', 'elementor-pro' ),
'multiply' => 'Multiply',
'screen' => 'Screen',
'overlay' => 'Overlay',
'darken' => 'Darken',
'lighten' => 'Lighten',
'color-dodge' => 'Color Dodge',
'color-burn' => 'Color Burn',
'hue' => 'Hue',
'saturation' => 'Saturation',
'color' => 'Color',
'exclusion' => 'Exclusion',
'luminosity' => 'Luminosity',
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'mix-blend-mode: {{VALUE}}',
],
'condition' => [
'background_overlay_a!' => '',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->end_controls_section();
$this->start_controls_section(
'section_side_b_content',
[
'label' => esc_html__( 'Back', 'elementor-pro' ),
]
);
$this->start_controls_tabs( 'side_b_content_tabs' );
$this->start_controls_tab( 'side_b_content_tab', [ 'label' => esc_html__( 'Content', 'elementor-pro' ) ] );
$this->add_control(
'title_text_b',
[
'label' => esc_html__( 'Title & Description', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'This is the heading', 'elementor-pro' ),
'placeholder' => esc_html__( 'Enter your title', 'elementor-pro' ),
'dynamic' => [
'active' => true,
],
'label_block' => true,
]
);
$this->add_control(
'description_text_b',
[
'label' => esc_html__( 'Description', 'elementor-pro' ),
'type' => Controls_Manager::TEXTAREA,
'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
'placeholder' => esc_html__( 'Enter your description', 'elementor-pro' ),
'separator' => 'none',
'dynamic' => [
'active' => true,
],
'rows' => 10,
'show_label' => false,
]
);
$this->add_control(
'button_text',
[
'label' => esc_html__( 'Button Text', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'default' => esc_html__( 'Click Here', 'elementor-pro' ),
'dynamic' => [
'active' => true,
],
'separator' => 'before',
]
);
$this->add_control(
'link',
[
'label' => esc_html__( 'Link', 'elementor-pro' ),
'type' => Controls_Manager::URL,
'dynamic' => [
'active' => true,
],
'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
]
);
$this->add_control(
'link_click',
[
'label' => esc_html__( 'Apply Link On', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'box' => esc_html__( 'Whole Box', 'elementor-pro' ),
'button' => esc_html__( 'Button Only', 'elementor-pro' ),
],
'default' => 'button',
'condition' => [
'link[url]!' => '',
],
]
);
$this->end_controls_tab();
$this->start_controls_tab( 'side_b_background_tab', [ 'label' => esc_html__( 'Background', 'elementor-pro' ) ] );
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'background_b',
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .elementor-flip-box__back',
]
);
$this->add_control(
'background_overlay_b',
[
'label' => esc_html__( 'Background Overlay', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'background-color: {{VALUE}};',
],
'separator' => 'before',
'condition' => [
'background_b_image[id]!' => '',
],
]
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
[
'name' => 'background_overlay_b_filters',
'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay',
'condition' => [
'background_overlay_b!' => '',
],
]
);
$this->add_control(
'background_overlay_b_blend_mode',
[
'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Normal', 'elementor-pro' ),
'multiply' => 'Multiply',
'screen' => 'Screen',
'overlay' => 'Overlay',
'darken' => 'Darken',
'lighten' => 'Lighten',
'color-dodge' => 'Color Dodge',
'color-burn' => 'Color Burn',
'hue' => 'Hue',
'saturation' => 'Saturation',
'color' => 'Color',
'exclusion' => 'Exclusion',
'luminosity' => 'Luminosity',
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'mix-blend-mode: {{VALUE}}',
],
'condition' => [
'background_overlay_b!' => '',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->end_controls_section();
$this->start_controls_section(
'section_box_settings',
[
'label' => esc_html__( 'Settings', 'elementor-pro' ),
]
);
$this->add_responsive_control(
'height',
[
'label' => esc_html__( 'Height', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 100,
'max' => 1000,
],
'vh' => [
'min' => 10,
'max' => 100,
],
],
'size_units' => [ 'px', 'vh' ],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box' => 'height: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', '%' ],
'range' => [
'px' => [
'min' => 0,
'max' => 200,
],
],
'separator' => 'after',
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__layer, {{WRAPPER}} .elementor-flip-box__layer__overlay' => 'border-radius: {{SIZE}}{{UNIT}}',
],
]
);
$this->add_control(
'flip_effect',
[
'label' => esc_html__( 'Flip Effect', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'flip',
'options' => [
'flip' => 'Flip',
'slide' => 'Slide',
'push' => 'Push',
'zoom-in' => 'Zoom In',
'zoom-out' => 'Zoom Out',
'fade' => 'Fade',
],
'prefix_class' => 'elementor-flip-box--effect-',
]
);
$this->add_control(
'flip_direction',
[
'label' => esc_html__( 'Flip Direction', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'up',
'options' => [
'left' => esc_html__( 'Left', 'elementor-pro' ),
'right' => esc_html__( 'Right', 'elementor-pro' ),
'up' => esc_html__( 'Up', 'elementor-pro' ),
'down' => esc_html__( 'Down', 'elementor-pro' ),
],
'condition' => [
'flip_effect!' => [
'fade',
'zoom-in',
'zoom-out',
],
],
'prefix_class' => 'elementor-flip-box--direction-',
]
);
$this->add_control(
'flip_3d',
[
'label' => esc_html__( '3D Depth', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'On', 'elementor-pro' ),
'label_off' => esc_html__( 'Off', 'elementor-pro' ),
'return_value' => 'elementor-flip-box--3d',
'default' => '',
'prefix_class' => '',
'condition' => [
'flip_effect' => 'flip',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_style_a',
[
'label' => esc_html__( 'Front', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'padding_a',
[
'label' => esc_html__( 'Padding', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'alignment_a',
[
'label' => esc_html__( 'Alignment', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'text-align: {{VALUE}}',
],
]
);
$this->add_control(
'vertical_position_a',
[
'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'top' => [
'title' => esc_html__( 'Top', 'elementor-pro' ),
'icon' => 'eicon-v-align-top',
],
'middle' => [
'title' => esc_html__( 'Middle', 'elementor-pro' ),
'icon' => 'eicon-v-align-middle',
],
'bottom' => [
'title' => esc_html__( 'Bottom', 'elementor-pro' ),
'icon' => 'eicon-v-align-bottom',
],
],
'selectors_dictionary' => [
'top' => 'flex-start',
'middle' => 'center',
'bottom' => 'flex-end',
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'justify-content: {{VALUE}}',
],
'separator' => 'after',
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'border_a',
'selector' => '{{WRAPPER}} .elementor-flip-box__front',
'separator' => 'before',
]
);
$this->add_control(
'heading_image_style',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Image', 'elementor-pro' ),
'condition' => [
'graphic_element' => 'image',
],
'separator' => 'before',
]
);
$this->add_control(
'image_spacing',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__image' => 'margin-bottom: {{SIZE}}{{UNIT}};',
],
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_control(
'image_width',
[
'label' => esc_html__( 'Size', 'elementor-pro' ) . ' (%)',
'type' => Controls_Manager::SLIDER,
'size_units' => [ '%' ],
'default' => [
'unit' => '%',
],
'range' => [
'%' => [
'min' => 5,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__image img' => 'width: {{SIZE}}{{UNIT}}',
],
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_control(
'image_opacity',
[
'label' => esc_html__( 'Opacity', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 1,
],
'range' => [
'px' => [
'max' => 1,
'min' => 0.10,
'step' => 0.01,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__image' => 'opacity: {{SIZE}};',
],
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'image_border',
'selector' => '{{WRAPPER}} .elementor-flip-box__image img',
'condition' => [
'graphic_element' => 'image',
],
'separator' => 'before',
]
);
$this->add_control(
'image_border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 200,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__image img' => 'border-radius: {{SIZE}}{{UNIT}}',
],
'condition' => [
'graphic_element' => 'image',
],
]
);
$this->add_control(
'heading_icon_style',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Icon', 'elementor-pro' ),
'condition' => [
'graphic_element' => 'icon',
],
'separator' => 'before',
]
);
$this->add_control(
'icon_spacing',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-icon-wrapper' => 'margin-bottom: {{SIZE}}{{UNIT}};',
],
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_primary_color',
[
'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}}',
'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'stroke: {{VALUE}}',
'{{WRAPPER}} .elementor-view-framed .elementor-icon, {{WRAPPER}} .elementor-view-default .elementor-icon' => 'color: {{VALUE}}; border-color: {{VALUE}}',
'{{WRAPPER}} .elementor-view-framed .elementor-icon svg, {{WRAPPER}} .elementor-view-default .elementor-icon svg' => 'fill: {{VALUE}}; border-color: {{VALUE}}',
],
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_secondary_color',
[
'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'default' => '',
'condition' => [
'graphic_element' => 'icon',
'icon_view!' => 'default',
],
'selectors' => [
'{{WRAPPER}} .elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};',
'{{WRAPPER}} .elementor-view-framed .elementor-icon svg' => 'stroke: {{VALUE}};',
'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'color: {{VALUE}};',
'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'fill: {{VALUE}};',
],
]
);
$this->add_control(
'icon_size',
[
'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 6,
'max' => 300,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-icon' => 'font-size: {{SIZE}}{{UNIT}};',
'{{WRAPPER}} .elementor-icon svg' => 'width: {{SIZE}}{{UNIT}};',
],
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_padding',
[
'label' => esc_html__( 'Icon Padding', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'selectors' => [
'{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};',
],
'range' => [
'em' => [
'min' => 0,
'max' => 5,
],
],
'condition' => [
'graphic_element' => 'icon',
'icon_view!' => 'default',
],
]
);
$this->add_control(
'icon_rotate',
[
'label' => esc_html__( 'Icon Rotate', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 0,
'unit' => 'deg',
],
'selectors' => [
'{{WRAPPER}} .elementor-icon i' => 'transform: rotate({{SIZE}}{{UNIT}});',
'{{WRAPPER}} .elementor-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
],
'condition' => [
'graphic_element' => 'icon',
],
]
);
$this->add_control(
'icon_border_width',
[
'label' => esc_html__( 'Border Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'selectors' => [
'{{WRAPPER}} .elementor-icon' => 'border-width: {{SIZE}}{{UNIT}}',
],
'condition' => [
'graphic_element' => 'icon',
'icon_view' => 'framed',
],
]
);
$this->add_control(
'icon_border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
'condition' => [
'graphic_element' => 'icon',
'icon_view!' => 'default',
],
]
);
$this->add_control(
'heading_title_style_a',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Title', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'title_text_a!' => '',
],
]
);
$this->add_control(
'title_spacing_a',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
],
'condition' => [
'description_text_a!' => '',
'title_text_a!' => '',
],
]
);
$this->add_control(
'title_color_a',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title' => 'color: {{VALUE}}',
],
'condition' => [
'title_text_a!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'title_typography_a',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title',
'condition' => [
'title_text_a!' => '',
],
]
);
$this->add_control(
'heading_description_style_a',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Description', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'description_text_a!' => '',
],
]
);
$this->add_control(
'description_color_a',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__description' => 'color: {{VALUE}}',
],
'condition' => [
'description_text_a!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'description_typography_a',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_TEXT,
],
'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__description',
'condition' => [
'description_text_a!' => '',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_style_b',
[
'label' => esc_html__( 'Back', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'padding_b',
[
'label' => esc_html__( 'Padding', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'alignment_b',
[
'label' => esc_html__( 'Alignment', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'text-align: {{VALUE}}',
'{{WRAPPER}} .elementor-flip-box__button' => 'margin-{{VALUE}}: 0',
],
]
);
$this->add_control(
'vertical_position_b',
[
'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'top' => [
'title' => esc_html__( 'Top', 'elementor-pro' ),
'icon' => 'eicon-v-align-top',
],
'middle' => [
'title' => esc_html__( 'Middle', 'elementor-pro' ),
'icon' => 'eicon-v-align-middle',
],
'bottom' => [
'title' => esc_html__( 'Bottom', 'elementor-pro' ),
'icon' => 'eicon-v-align-bottom',
],
],
'selectors_dictionary' => [
'top' => 'flex-start',
'middle' => 'center',
'bottom' => 'flex-end',
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'justify-content: {{VALUE}}',
],
'separator' => 'after',
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'border_b',
'selector' => '{{WRAPPER}} .elementor-flip-box__back',
'separator' => 'before',
]
);
$this->add_control(
'heading_title_style_b',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Title', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'title_text_b!' => '',
],
]
);
$this->add_control(
'title_spacing_b',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
],
'condition' => [
'title_text_b!' => '',
],
]
);
$this->add_control(
'title_color_b',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title' => 'color: {{VALUE}}',
],
'condition' => [
'title_text_b!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'title_typography_b',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title',
'condition' => [
'title_text_b!' => '',
],
]
);
$this->add_control(
'heading_description_style_b',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Description', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'description_text_b!' => '',
],
]
);
$this->add_control(
'description_spacing_b',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description' => 'margin-bottom: {{SIZE}}{{UNIT}};',
],
'condition' => [
'description_text_b!' => '',
'button_text!' => '',
],
]
);
$this->add_control(
'description_color_b',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description' => 'color: {{VALUE}}',
],
'condition' => [
'description_text_b!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'description_typography_b',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_TEXT,
],
'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description',
'condition' => [
'description_text_b!' => '',
],
]
);
$this->add_control(
'heading_button',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Button', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'button_text!' => '',
],
]
);
$this->add_control(
'button_size',
[
'label' => esc_html__( 'Size', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'sm',
'options' => [
'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
'sm' => esc_html__( 'Small', 'elementor-pro' ),
'md' => esc_html__( 'Medium', 'elementor-pro' ),
'lg' => esc_html__( 'Large', 'elementor-pro' ),
'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
],
'condition' => [
'button_text!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'button_typography',
'selector' => '{{WRAPPER}} .elementor-flip-box__button',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_ACCENT,
],
'condition' => [
'button_text!' => '',
],
]
);
$this->start_controls_tabs( 'button_tabs' );
$this->start_controls_tab( 'normal',
[
'label' => esc_html__( 'Normal', 'elementor-pro' ),
'condition' => [
'button_text!' => '',
],
]
);
$this->add_control(
'button_text_color',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'button_background',
'types' => [ 'classic', 'gradient' ],
'exclude' => [ 'image' ],
'selector' => '{{WRAPPER}} .elementor-flip-box__button',
'fields_options' => [
'background' => [
'default' => 'classic',
],
],
]
);
$this->add_control(
'button_border_color',
[
'label' => esc_html__( 'Border Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button' => 'border-color: {{VALUE}};',
],
]
);
$this->end_controls_tab();
$this->start_controls_tab(
'hover',
[
'label' => esc_html__( 'Hover', 'elementor-pro' ),
'condition' => [
'button_text!' => '',
],
]
);
$this->add_control(
'button_hover_text_color',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button:hover' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'button_hover_background',
'types' => [ 'classic', 'gradient' ],
'exclude' => [ 'image' ],
'selector' => '{{WRAPPER}} .elementor-flip-box__button:hover',
'fields_options' => [
'background' => [
'default' => 'classic',
],
],
]
);
$this->add_control(
'button_hover_border_color',
[
'label' => esc_html__( 'Border Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button:hover' => 'border-color: {{VALUE}};',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_control(
'button_border_width',
[
'label' => esc_html__( 'Border Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 20,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button' => 'border-width: {{SIZE}}{{UNIT}};',
],
'separator' => 'before',
'condition' => [
'button_text!' => '',
],
]
);
$this->add_control(
'button_border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-flip-box__button' => 'border-radius: {{SIZE}}{{UNIT}};',
],
'separator' => 'after',
'condition' => [
'button_text!' => '',
],
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$wrapper_tag = 'div';
$button_tag = 'a';
$migration_allowed = Icons_Manager::is_migration_allowed();
$this->add_render_attribute( 'button', 'class', [
'elementor-flip-box__button',
'elementor-button',
'elementor-size-' . $settings['button_size'],
] );
$this->add_render_attribute( 'wrapper', 'class', 'elementor-flip-box__layer elementor-flip-box__back' );
if ( ! empty( $settings['link']['url'] ) ) {
$link_element = 'button';
if ( 'box' === $settings['link_click'] ) {
$wrapper_tag = 'a';
$button_tag = 'span';
$link_element = 'wrapper';
}
$this->add_link_attributes( $link_element, $settings['link'] );
}
if ( 'icon' === $settings['graphic_element'] ) {
$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-icon-wrapper' );
$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-view-' . $settings['icon_view'] );
if ( 'default' != $settings['icon_view'] ) {
$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-shape-' . $settings['icon_shape'] );
}
if ( ! isset( $settings['icon'] ) && ! $migration_allowed ) {
// add old default
$settings['icon'] = 'fa fa-star';
}
if ( ! empty( $settings['icon'] ) ) {
$this->add_render_attribute( 'icon', 'class', $settings['icon'] );
}
}
$has_icon = ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] );
$migrated = isset( $settings['__fa4_migrated']['selected_icon'] );
$is_new = empty( $settings['icon'] ) && $migration_allowed;
?>
<div class="elementor-flip-box">
<div class="elementor-flip-box__layer elementor-flip-box__front">
<div class="elementor-flip-box__layer__overlay">
<div class="elementor-flip-box__layer__inner">
<?php if ( 'image' === $settings['graphic_element'] && ! empty( $settings['image']['url'] ) ) : ?>
<div class="elementor-flip-box__image">
<?php Group_Control_Image_Size::print_attachment_image_html( $settings ); ?>
</div>
<?php elseif ( 'icon' === $settings['graphic_element'] && $has_icon ) : ?>
<div <?php $this->print_render_attribute_string( 'icon-wrapper' ); ?>>
<div class="elementor-icon">
<?php if ( $is_new || $migrated ) :
Icons_Manager::render_icon( $settings['selected_icon'] );
else : ?>
<i <?php $this->print_render_attribute_string( 'icon' ); ?>></i>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ( ! empty( $settings['title_text_a'] ) ) : ?>
<h3 class="elementor-flip-box__layer__title">
<?php $this->print_unescaped_setting( 'title_text_a' ); ?>
</h3>
<?php endif; ?>
<?php if ( ! empty( $settings['description_text_a'] ) ) : ?>
<div class="elementor-flip-box__layer__description">
<?php $this->print_unescaped_setting( 'description_text_a' ); ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
<<?php Utils::print_validated_html_tag( $wrapper_tag ); ?> <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
<div class="elementor-flip-box__layer__overlay">
<div class="elementor-flip-box__layer__inner">
<?php if ( ! empty( $settings['title_text_b'] ) ) : ?>
<h3 class="elementor-flip-box__layer__title">
<?php $this->print_unescaped_setting( 'title_text_b' ); ?>
</h3>
<?php endif; ?>
<?php if ( ! empty( $settings['description_text_b'] ) ) : ?>
<div class="elementor-flip-box__layer__description">
<?php $this->print_unescaped_setting( 'description_text_b' ); ?>
</div>
<?php endif; ?>
<?php if ( ! empty( $settings['button_text'] ) ) : ?>
<<?php Utils::print_validated_html_tag( $button_tag ); ?> <?php $this->print_render_attribute_string( 'button' ); ?>>
<?php $this->print_unescaped_setting( 'button_text' ); ?>
</<?php Utils::print_validated_html_tag( $button_tag ); ?>>
<?php endif; ?>
</div>
</div>
</<?php Utils::print_validated_html_tag( $wrapper_tag ); ?>>
</div>
<?php
}
/**
* Render Flip Box widget output in the editor.
*
* Written as a Backbone JavaScript template and used to generate the live preview.
*
* @since 2.9.0
* @access protected
*/
protected function content_template() {
?>
<#
var btnClasses = 'elementor-flip-box__button elementor-button elementor-size-' + settings.button_size;
if ( 'image' === settings.graphic_element && '' !== settings.image.url ) {
var image = {
id: settings.image.id,
url: settings.image.url,
size: settings.image_size,
dimension: settings.image_custom_dimension,
model: view.getEditModel()
};
var imageUrl = elementor.imagesManager.getImageUrl( image );
}
var wrapperTag = 'div',
buttonTag = 'a';
if ( 'box' === settings.link_click ) {
wrapperTag = 'a';
buttonTag = 'span';
}
if ( 'icon' === settings.graphic_element ) {
var iconWrapperClasses = 'elementor-icon-wrapper';
iconWrapperClasses += ' elementor-view-' + settings.icon_view;
if ( 'default' !== settings.icon_view ) {
iconWrapperClasses += ' elementor-shape-' + settings.icon_shape;
}
}
var hasIcon = settings.icon || settings.selected_icon,
iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ),
migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );
#>
<div class="elementor-flip-box">
<div class="elementor-flip-box__layer elementor-flip-box__front">
<div class="elementor-flip-box__layer__overlay">
<div class="elementor-flip-box__layer__inner">
<# if ( 'image' === settings.graphic_element && '' !== settings.image.url ) { #>
<div class="elementor-flip-box__image">
<img src="{{ imageUrl }}">
</div>
<# } else if ( 'icon' === settings.graphic_element && hasIcon ) { #>
<div class="{{ iconWrapperClasses }}" >
<div class="elementor-icon">
<# if ( iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #>
{{{ iconHTML.value }}}
<# } else { #>
<i class="{{ settings.icon }}"></i>
<# } #>
</div>
</div>
<# } #>
<# if ( settings.title_text_a ) { #>
<h3 class="elementor-flip-box__layer__title">{{{ settings.title_text_a }}}</h3>
<# } #>
<# if ( settings.description_text_a ) { #>
<div class="elementor-flip-box__layer__description">{{{ settings.description_text_a }}}</div>
<# } #>
</div>
</div>
</div>
<{{ wrapperTag }} class="elementor-flip-box__layer elementor-flip-box__back">
<div class="elementor-flip-box__layer__overlay">
<div class="elementor-flip-box__layer__inner">
<# if ( settings.title_text_b ) { #>
<h3 class="elementor-flip-box__layer__title">{{{ settings.title_text_b }}}</h3>
<# } #>
<# if ( settings.description_text_b ) { #>
<div class="elementor-flip-box__layer__description">{{{ settings.description_text_b }}}</div>
<# } #>
<# if ( settings.button_text ) { #>
<{{ buttonTag }} href="#" class="{{ btnClasses }}">{{{ settings.button_text }}}</{{ buttonTag }}>
<# } #>
</div>
</div>
</{{ wrapperTag }}>
</div>
<?php
}
}
PK ! �P�{: : modules/flip-box/module.phpnu �[��� <?php
namespace ElementorPro\Modules\FlipBox;
use ElementorPro\Base\Module_Base;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
public function get_widgets() {
return [
'Flip_Box',
];
}
public function get_name() {
return 'flip-box';
}
}
PK ! έW�� � modules/gallery/module.phpnu �[��� <?php
namespace ElementorPro\Modules\Gallery;
use ElementorPro\Base\Module_Base;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
/**
* Get module name.
*
* Retrieve the module name.
*
* @since 2.7.0
* @access public
*
* @return string Module name.
*/
public function get_name() {
return 'gallery';
}
public function get_widgets() {
return [
'gallery',
];
}
}
PK ! w��!`� `� # modules/gallery/widgets/gallery.phpnu �[��� <?php
namespace ElementorPro\Modules\Gallery\Widgets;
use Elementor\Controls_Manager;
use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Gallery extends Base_Widget {
/**
* Get element name.
*
* Retrieve the element name.
*
* @return string The name.
* @since 2.7.0
* @access public
*
*/
public function get_name() {
return 'gallery';
}
public function get_title() {
return esc_html__( 'Gallery', 'elementor-pro' );
}
public function get_script_depends() {
return [ 'elementor-gallery' ];
}
public function get_style_depends() {
return [ 'elementor-gallery' ];
}
public function get_icon() {
return 'eicon-gallery-justified';
}
public function get_inline_css_depends() {
if ( 'multiple' === $this->get_settings_for_display( 'gallery_type' ) ) {
return [ 'nav-menu' ];
}
return [];
}
protected function register_controls() {
$this->start_controls_section( 'settings', [ 'label' => esc_html__( 'Settings', 'elementor-pro' ) ] );
$this->add_control(
'gallery_type',
[
'type' => Controls_Manager::SELECT,
'label' => esc_html__( 'Type', 'elementor-pro' ),
'default' => 'single',
'options' => [
'single' => esc_html__( 'Single', 'elementor-pro' ),
'multiple' => esc_html__( 'Multiple', 'elementor-pro' ),
],
]
);
$this->add_control(
'gallery',
[
'type' => Controls_Manager::GALLERY,
'condition' => [
'gallery_type' => 'single',
],
'dynamic' => [
'active' => true,
],
]
);
$repeater = new Repeater();
$repeater->add_control(
'gallery_title',
[
'type' => Controls_Manager::TEXT,
'label' => esc_html__( 'Title', 'elementor-pro' ),
'default' => esc_html__( 'New Gallery', 'elementor-pro' ),
'dynamic' => [
'active' => true,
],
]
);
$repeater->add_control(
'multiple_gallery',
[
'type' => Controls_Manager::GALLERY,
'dynamic' => [
'active' => true,
],
]
);
$this->add_control(
'galleries',
[
'type' => Controls_Manager::REPEATER,
'label' => esc_html__( 'Galleries', 'elementor-pro' ),
'fields' => $repeater->get_controls(),
'title_field' => '{{{ gallery_title }}}',
'default' => [
[
'gallery_title' => esc_html__( 'New Gallery', 'elementor-pro' ),
],
],
'condition' => [
'gallery_type' => 'multiple',
],
]
);
$this->add_control(
'order_by',
[
'type' => Controls_Manager::SELECT,
'label' => esc_html__( 'Order By', 'elementor-pro' ),
'options' => [
'' => esc_html__( 'Default', 'elementor-pro' ),
'random' => esc_html__( 'Random', 'elementor-pro' ),
],
'default' => '',
]
);
$this->add_control(
'lazyload',
[
'type' => Controls_Manager::SWITCHER,
'label' => esc_html__( 'Lazy Load', 'elementor-pro' ),
'return_value' => 'yes',
'default' => 'yes',
'frontend_available' => true,
]
);
$this->add_control(
'gallery_layout',
[
'type' => Controls_Manager::SELECT,
'label' => esc_html__( 'Layout', 'elementor-pro' ),
'default' => 'grid',
'options' => [
'grid' => esc_html__( 'Grid', 'elementor-pro' ),
'justified' => esc_html__( 'Justified', 'elementor-pro' ),
'masonry' => esc_html__( 'Masonry', 'elementor-pro' ),
],
'separator' => 'before',
'frontend_available' => true,
]
);
$this->add_responsive_control(
'columns',
[
'label' => esc_html__( 'Columns', 'elementor-pro' ),
'type' => Controls_Manager::NUMBER,
'default' => 4,
'tablet_default' => 2,
'mobile_default' => 1,
'min' => 1,
'max' => 24,
'condition' => [
'gallery_layout!' => 'justified',
],
'render_type' => 'none',
'frontend_available' => true,
]
);
$active_breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints();
$ideal_row_height_device_args = [];
$gap_device_args = [];
// Add default values for all active breakpoints.
foreach ( $active_breakpoints as $breakpoint_name => $breakpoint_instance ) {
if ( 'widescreen' !== $breakpoint_name ) {
$ideal_row_height_device_args[ $breakpoint_name ] = [
'default' => [
'size' => 150,
],
];
$gap_device_args[ $breakpoint_name ] = [
'default' => [
'size' => 10,
],
];
}
}
$this->add_responsive_control(
'ideal_row_height',
[
'label' => esc_html__( 'Row Height', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 50,
'max' => 500,
],
],
'default' => [
'size' => 200,
],
'device_args' => $ideal_row_height_device_args,
'condition' => [
'gallery_layout' => 'justified',
],
'required' => true,
'render_type' => 'none',
'frontend_available' => true,
]
);
$this->add_responsive_control(
'gap',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 10,
],
'device_args' => $gap_device_args,
'required' => true,
'render_type' => 'none',
'frontend_available' => true,
]
);
$this->add_control(
'link_to',
[
'label' => esc_html__( 'Link', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'file',
'options' => [
'' => esc_html__( 'None', 'elementor-pro' ),
'file' => esc_html__( 'Media File', 'elementor-pro' ),
'custom' => esc_html__( 'Custom URL', 'elementor-pro' ),
],
'frontend_available' => true,
]
);
$this->add_control(
'url',
[
'label' => esc_html__( 'URL', 'elementor-pro' ),
'type' => Controls_Manager::URL,
'condition' => [
'link_to' => 'custom',
],
'frontend_available' => true,
]
);
$this->add_control(
'aspect_ratio',
[
'type' => Controls_Manager::SELECT,
'label' => esc_html__( 'Aspect Ratio', 'elementor-pro' ),
'default' => '3:2',
'options' => [
'1:1' => '1:1',
'3:2' => '3:2',
'4:3' => '4:3',
'9:16' => '9:16',
'16:9' => '16:9',
'21:9' => '21:9',
],
'condition' => [
'gallery_layout' => 'grid',
],
'render_type' => 'none',
'frontend_available' => true,
]
);
$this->add_group_control(
Group_Control_Image_Size::get_type(),
[
'name' => 'thumbnail_image',
'default' => 'medium',
]
);
$this->end_controls_section(); // settings
$this->start_controls_section(
'section_filter_bar_content',
[
'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
'condition' => [
'gallery_type' => 'multiple',
],
]
);
$this->add_control(
'show_all_galleries',
[
'type' => Controls_Manager::SWITCHER,
'label' => esc_html__( '"All" Filter', 'elementor-pro' ),
'default' => 'yes',
'frontend_available' => true,
]
);
$this->add_control(
'show_all_galleries_label',
[
'type' => Controls_Manager::TEXT,
'label' => esc_html__( '"All" Filter Label', 'elementor-pro' ),
'default' => esc_html__( 'All', 'elementor-pro' ),
'condition' => [
'show_all_galleries' => 'yes',
],
]
);
$this->add_control(
'pointer',
[
'label' => esc_html__( 'Pointer', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'underline',
'options' => [
'none' => esc_html__( 'None', 'elementor-pro' ),
'underline' => esc_html__( 'Underline', 'elementor-pro' ),
'overline' => esc_html__( 'Overline', 'elementor-pro' ),
'double-line' => esc_html__( 'Double Line', 'elementor-pro' ),
'framed' => esc_html__( 'Framed', 'elementor-pro' ),
'background' => esc_html__( 'Background', 'elementor-pro' ),
'text' => esc_html__( 'Text', 'elementor-pro' ),
],
'style_transfer' => true,
]
);
$this->add_control(
'animation_line',
[
'label' => esc_html__( 'Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'fade',
'options' => [
'fade' => 'Fade',
'slide' => 'Slide',
'grow' => 'Grow',
'drop-in' => 'Drop In',
'drop-out' => 'Drop Out',
'none' => 'None',
],
'condition' => [
'pointer' => [ 'underline', 'overline', 'double-line' ],
],
]
);
$this->add_control(
'animation_framed',
[
'label' => esc_html__( 'Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'fade',
'options' => [
'fade' => 'Fade',
'grow' => 'Grow',
'shrink' => 'Shrink',
'draw' => 'Draw',
'corners' => 'Corners',
'none' => 'None',
],
'condition' => [
'pointer' => 'framed',
],
]
);
$this->add_control(
'animation_background',
[
'label' => esc_html__( 'Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'fade',
'options' => [
'fade' => 'Fade',
'grow' => 'Grow',
'shrink' => 'Shrink',
'sweep-left' => 'Sweep Left',
'sweep-right' => 'Sweep Right',
'sweep-up' => 'Sweep Up',
'sweep-down' => 'Sweep Down',
'shutter-in-vertical' => 'Shutter In Vertical',
'shutter-out-vertical' => 'Shutter Out Vertical',
'shutter-in-horizontal' => 'Shutter In Horizontal',
'shutter-out-horizontal' => 'Shutter Out Horizontal',
'none' => 'None',
],
'condition' => [
'pointer' => 'background',
],
]
);
$this->add_control(
'animation_text',
[
'label' => esc_html__( 'Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'grow',
'options' => [
'grow' => 'Grow',
'shrink' => 'Shrink',
'sink' => 'Sink',
'float' => 'Float',
'skew' => 'Skew',
'rotate' => 'Rotate',
'none' => 'None',
],
'condition' => [
'pointer' => 'text',
],
]
);
$this->end_controls_section(); // settings
$this->start_controls_section( 'overlay', [ 'label' => esc_html__( 'Overlay', 'elementor-pro' ) ] );
$this->add_control(
'overlay_background',
[
'label' => esc_html__( 'Background', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'frontend_available' => true,
]
);
$this->add_control(
'overlay_title',
[
'label' => esc_html__( 'Title', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'None', 'elementor-pro' ),
'title' => esc_html__( 'Title', 'elementor-pro' ),
'caption' => esc_html__( 'Caption', 'elementor-pro' ),
'alt' => esc_html__( 'Alt', 'elementor-pro' ),
'description' => esc_html__( 'Description', 'elementor-pro' ),
],
'frontend_available' => true,
]
);
$this->add_control(
'overlay_description',
[
'label' => esc_html__( 'Description', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'None', 'elementor-pro' ),
'title' => esc_html__( 'Title', 'elementor-pro' ),
'caption' => esc_html__( 'Caption', 'elementor-pro' ),
'alt' => esc_html__( 'Alt', 'elementor-pro' ),
'description' => esc_html__( 'Description', 'elementor-pro' ),
],
'frontend_available' => true,
]
);
$this->end_controls_section(); // overlay
$this->start_controls_section(
'image_style',
[
'label' => esc_html__( 'Image', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->start_controls_tabs( 'image_tabs' );
$this->start_controls_tab(
'image_normal',
[
'label' => esc_html__( 'Normal', 'elementor-pro' ),
]
);
$this->add_control(
'image_border_color',
[
'label' => esc_html__( 'Border Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => '--image-border-color: {{VALUE}}',
],
]
);
$this->add_control(
'image_border_width',
[
'label' => esc_html__( 'Border Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', 'em' ],
'selectors' => [
'{{WRAPPER}}' => '--image-border-width: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'image_border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}}' => '--image-border-radius: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
[
'name' => 'image_css_filters',
'selector' => '{{WRAPPER}} .e-gallery-image',
]
);
$this->end_controls_tab(); // overlay_background normal
$this->start_controls_tab(
'image_hover',
[
'label' => esc_html__( 'Hover', 'elementor-pro' ),
]
);
$this->add_control(
'image_border_color_hover',
[
'label' => esc_html__( 'Border Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .elementor-gallery-item:hover' => 'border-color: {{VALUE}}',
],
]
);
$this->add_control(
'image_border_radius_hover',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-gallery-item:hover' => 'border-radius: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_group_control(
Group_Control_Css_Filter::get_type(),
[
'name' => 'image_css_filters_hover',
'selector' => '{{WRAPPER}} .e-gallery-item:hover .e-gallery-image',
]
);
$this->end_controls_tab(); // overlay_background normal
$this->end_controls_tabs();// overlay_background tabs
$this->add_control(
'image_hover_animation',
[
'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => 'None',
'grow' => 'Zoom In',
'shrink-contained' => 'Zoom Out',
'move-contained-left' => 'Move Left',
'move-contained-right' => 'Move Right',
'move-contained-top' => 'Move Up',
'move-contained-bottom' => 'Move Down',
],
'separator' => 'before',
'default' => '',
'frontend_available' => true,
'render_type' => 'ui',
]
);
$this->add_control(
'image_animation_duration',
[
'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 800,
],
'range' => [
'px' => [
'min' => 0,
'max' => 3000,
],
],
'selectors' => [
'{{WRAPPER}}' => '--image-transition-duration: {{SIZE}}ms',
],
]
);
$this->end_controls_section(); // overlay_background
$this->start_controls_section(
'overlay_style',
[
'label' => esc_html__( 'Overlay', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'overlay_background' => 'yes',
],
]
);
$this->start_controls_tabs( 'overlay_background_tabs' );
$this->start_controls_tab(
'overlay_normal',
[
'label' => esc_html__( 'Normal', 'elementor-pro' ),
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'overlay_background',
'types' => [ 'classic', 'gradient' ],
'exclude' => [ 'image' ],
'selector' => '{{WRAPPER}} .elementor-gallery-item__overlay',
'fields_options' => [
'background' => [
'label' => esc_html__( 'Overlay', 'elementor-pro' ),
],
],
]
);
$this->end_controls_tab(); // overlay_background normal
$this->start_controls_tab(
'overlay_hover',
[
'label' => esc_html__( 'Hover', 'elementor-pro' ),
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'overlay_background_hover',
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .e-gallery-item:hover .elementor-gallery-item__overlay',
'exclude' => [ 'image' ],
'fields_options' => [
'background' => [
'default' => 'classic',
],
'color' => [
'default' => 'rgba(0,0,0,0.5)',
],
],
]
);
$this->end_controls_tab(); // overlay_background normal
$this->end_controls_tabs();// overlay_background tabs
$this->add_control(
'image_blend_mode',
[
'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => '',
'options' => [
'' => esc_html__( 'Normal', 'elementor-pro' ),
'multiply' => 'Multiply',
'screen' => 'Screen',
'overlay' => 'Overlay',
'darken' => 'Darken',
'lighten' => 'Lighten',
'color-dodge' => 'Color Dodge',
'color-burn' => 'Color Burn',
'hue' => 'Hue',
'saturation' => 'Saturation',
'color' => 'Color',
'exclusion' => 'Exclusion',
'luminosity' => 'Luminosity',
],
'selectors' => [
'{{WRAPPER}}' => '--overlay-mix-blend-mode: {{VALUE}}',
],
'separator' => 'before',
'render_type' => 'ui',
]
);
$this->add_control(
'background_overlay_hover_animation',
[
'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'groups' => [
[
'label' => esc_html__( 'None', 'elementor-pro' ),
'options' => [
'' => esc_html__( 'None', 'elementor-pro' ),
],
],
[
'label' => esc_html__( 'Entrance', 'elementor-pro' ),
'options' => [
'enter-from-right' => 'Slide In Right',
'enter-from-left' => 'Slide In Left',
'enter-from-top' => 'Slide In Up',
'enter-from-bottom' => 'Slide In Down',
'enter-zoom-in' => 'Zoom In',
'enter-zoom-out' => 'Zoom Out',
'fade-in' => 'Fade In',
],
],
[
'label' => esc_html__( 'Exit', 'elementor-pro' ),
'options' => [
'exit-to-right' => 'Slide Out Right',
'exit-to-left' => 'Slide Out Left',
'exit-to-top' => 'Slide Out Up',
'exit-to-bottom' => 'Slide Out Down',
'exit-zoom-in' => 'Zoom In',
'exit-zoom-out' => 'Zoom Out',
'fade-out' => 'Fade Out',
],
],
],
'separator' => 'before',
'default' => '',
'frontend_available' => true,
'render_type' => 'ui',
]
);
$this->add_control(
'background_overlay_animation_duration',
[
'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 800,
],
'range' => [
'px' => [
'min' => 0,
'max' => 3000,
],
],
'selectors' => [
'{{WRAPPER}}' => '--overlay-transition-duration: {{SIZE}}ms',
],
]
);
$this->end_controls_section(); // overlay_background
$this->start_controls_section(
'overlay_content_style',
[
'label' => esc_html__( 'Content', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
//TODO: add conditions for this section
]
);
$this->add_control(
'content_alignment',
[
'label' => esc_html__( 'Alignment', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}}' => '--content-text-align: {{VALUE}}',
],
]
);
$this->add_control(
'content_vertical_position',
[
'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'top' => [
'title' => esc_html__( 'Top', 'elementor-pro' ),
'icon' => 'eicon-v-align-top',
],
'middle' => [
'title' => esc_html__( 'Middle', 'elementor-pro' ),
'icon' => 'eicon-v-align-middle',
],
'bottom' => [
'title' => esc_html__( 'Bottom', 'elementor-pro' ),
'icon' => 'eicon-v-align-bottom',
],
],
'selectors_dictionary' => [
'top' => 'flex-start',
'middle' => 'center',
'bottom' => 'flex-end',
],
'selectors' => [
'{{WRAPPER}}' => '--content-justify-content: {{VALUE}}',
],
]
);
$this->add_responsive_control(
'content_padding',
[
'label' => esc_html__( 'Padding', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', 'em', '%' ],
'default' => [
'size' => 20,
],
'selectors' => [
'{{WRAPPER}}' => '--content-padding: {{SIZE}}{{UNIT}}',
],
]
);
$this->add_control(
'heading_title',
[
'label' => esc_html__( 'Title', 'elementor-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'overlay_title!' => '',
],
]
);
$this->add_control(
'title_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => '--title-text-color: {{VALUE}}',
],
'condition' => [
'overlay_title!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'title_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
'selector' => '{{WRAPPER}} .elementor-gallery-item__title',
'condition' => [
'overlay_title!' => '',
],
]
);
$this->add_control(
'title_spacing',
[
'label' => esc_html__( 'Spacing', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}}' => '--description-margin-top: {{SIZE}}{{UNIT}}',
],
'condition' => [
'overlay_title!' => '',
],
]
);
$this->add_control(
'heading_description',
[
'label' => esc_html__( 'Description', 'elementor-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
'condition' => [
'overlay_description!' => '',
],
]
);
$this->add_control(
'description_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => '--description-text-color: {{VALUE}}',
],
'condition' => [
'overlay_description!' => '',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'description_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_TEXT,
],
'selector' => '{{WRAPPER}} .elementor-gallery-item__description',
'condition' => [
'overlay_description!' => '',
],
]
);
$this->add_control(
'content_hover_animation',
[
'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'groups' => [
[
'label' => esc_html__( 'None', 'elementor-pro' ),
'options' => [
'' => esc_html__( 'None', 'elementor-pro' ),
],
],
[
'label' => esc_html__( 'Entrance', 'elementor-pro' ),
'options' => [
'enter-from-right' => 'Slide In Right',
'enter-from-left' => 'Slide In Left',
'enter-from-top' => 'Slide In Up',
'enter-from-bottom' => 'Slide In Down',
'enter-zoom-in' => 'Zoom In',
'enter-zoom-out' => 'Zoom Out',
'fade-in' => 'Fade In',
],
],
[
'label' => esc_html__( 'Reaction', 'elementor-pro' ),
'options' => [
'grow' => 'Grow',
'shrink' => 'Shrink',
'move-right' => 'Move Right',
'move-left' => 'Move Left',
'move-up' => 'Move Up',
'move-down' => 'Move Down',
],
],
[
'label' => esc_html__( 'Exit', 'elementor-pro' ),
'options' => [
'exit-to-right' => 'Slide Out Right',
'exit-to-left' => 'Slide Out Left',
'exit-to-top' => 'Slide Out Up',
'exit-to-bottom' => 'Slide Out Down',
'exit-zoom-in' => 'Zoom In',
'exit-zoom-out' => 'Zoom Out',
'fade-out' => 'Fade Out',
],
],
],
'default' => 'fade-in',
'separator' => 'before',
'render_type' => 'ui',
'frontend_available' => true,
]
);
$this->add_control(
'content_animation_duration',
[
'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::SLIDER,
'default' => [
'size' => 800,
],
'range' => [
'px' => [
'min' => 0,
'max' => 3000,
],
],
'selectors' => [
'{{WRAPPER}}' => '--content-transition-duration: {{SIZE}}ms; --content-transition-delay: {{SIZE}}ms;',
],
'condition' => [
'content_hover_animation!' => '',
],
]
);
$this->add_control(
'content_sequenced_animation',
[
'label' => esc_html__( 'Sequenced Animation', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'condition' => [
'content_hover_animation!' => '',
],
'frontend_available' => true,
'render_type' => 'ui',
]
);
$this->end_controls_section(); // overlay_content
$this->start_controls_section(
'filter_bar_style',
[
'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'gallery_type' => 'multiple',
],
]
);
$this->add_control(
'align_filter_bar_items',
[
'label' => esc_html__( 'Align', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-text-align-right',
],
],
'prefix_class' => 'elementor-gallery--filter-align-',
'selectors_dictionary' => [
'left' => 'flex-start',
'right' => 'flex-end',
],
'selectors' => [
'{{WRAPPER}}' => '--titles-container-justify-content: {{VALUE}}',
],
]
);
$this->start_controls_tabs( 'filter_bar_colors' );
$this->start_controls_tab( 'filter_bar_colors_normal',
[
'label' => esc_html__( 'Normal', 'elementor-pro' ),
]
);
$this->add_control(
'galleries_title_color_normal',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_PRIMARY,
],
'selectors' => [
'{{WRAPPER}}' => '--galleries-title-color-normal: {{VALUE}}',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'galleries_titles_typography',
'selector' => '{{WRAPPER}} .elementor-gallery-title',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
]
);
$this->end_controls_tab();// filter_bar_colors_normal
$this->start_controls_tab( 'filter_bar_colors_hover',
[
'label' => esc_html__( 'Hover', 'elementor-pro' ),
]
);
$this->add_control(
'galleries_title_color_hover',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_SECONDARY,
],
'selectors' => [
'{{WRAPPER}}' => '--galleries-title-color-hover: {{VALUE}}',
],
'condition' => [
'pointer!' => 'background',
],
]
);
/*
When the pointer style = background, users could need a different text color.
The control handles the title color in hover state, only when the pointer style is background.
*/
$this->add_control(
'galleries_title_color_hover_pointer_bg',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'default' => '#fff',
'selectors' => [
'{{WRAPPER}}' => '--galleries-title-color-hover: {{VALUE}}',
],
'condition' => [
'pointer' => 'background',
],
]
);
$this->add_control(
'galleries_pointer_color_hover',
[
'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_ACCENT,
],
'selectors' => [
'{{WRAPPER}}' => '--galleries-pointer-bg-color-hover: {{VALUE}}',
],
'condition' => [
'pointer!' => [ 'none', 'text' ],
],
]
);
$this->end_controls_tab();// filter_bar_colors_hover
$this->start_controls_tab( 'filter_bar_colors_active',
[
'label' => esc_html__( 'Active', 'elementor-pro' ),
]
);
$this->add_control(
'galleries_title_color_active',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_SECONDARY,
],
'selectors' => [
'{{WRAPPER}}' => '--gallery-title-color-active: {{VALUE}}',
],
]
);
$this->add_control(
'galleries_pointer_color_active',
[
'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_ACCENT,
],
'selectors' => [
'{{WRAPPER}}' => '--galleries-pointer-bg-color-active: {{VALUE}}',
],
'condition' => [
'pointer!' => [ 'none', 'text' ],
],
]
);
$this->end_controls_tab();// filter_bar_colors_active
$this->end_controls_tabs(); // filter_bar_colors
$this->add_control(
'pointer_width',
[
'label' => esc_html__( 'Pointer Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'devices' => [ Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP, Breakpoints_Manager::BREAKPOINT_KEY_TABLET ],
'range' => [
'px' => [
'max' => 30,
],
],
'selectors' => [
'{{WRAPPER}}' => '--galleries-pointer-border-width: {{SIZE}}{{UNIT}}',
],
'separator' => 'before',
'condition' => [
'pointer' => [ 'underline', 'overline', 'double-line', 'framed' ],
],
]
);
$this->add_control(
'galleries_titles_space_between',
[
'label' => esc_html__( 'Space Between', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-gallery-title' => '--space-between: {{SIZE}}{{UNIT}}',
],
]
);
$this->add_control(
'galleries_titles_gap',
[
'label' => esc_html__( 'Gap', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .elementor-gallery__titles-container' => 'margin-bottom: {{SIZE}}{{UNIT}}',
],
]
);
$this->end_controls_section(); // filter_bar_style
}
protected function render_static() {
$settings = $this->get_settings_for_display();
$is_multiple = 'multiple' === $settings['gallery_type'] && ! empty( $settings['galleries'] );
$is_single = 'single' === $settings['gallery_type'] && ! empty( $settings['gallery'] );
$gap = $settings['gap']['size'] . $settings['gap']['unit'];
$ratio_percentage = '75';
$columns = 4;
if ( $settings['columns'] ) {
$columns = $settings['columns'];
}
if ( $settings['aspect_ratio'] ) {
$ratio_array = explode( ':', $settings['aspect_ratio'] );
$ratio_percentage = ( $ratio_array[1] / $ratio_array[0] ) * 100;
}
$this->add_render_attribute(
'gallery_container',
[
'style' => "--columns: {$columns}; --aspect-ratio: {$ratio_percentage}%; --hgap: {$gap}; --vgap: {$gap};",
'class' => 'e-gallery-grid',
]
);
$galleries = [];
if ( $is_multiple ) {
foreach ( array_values( $settings['galleries'] ) as $multi_gallery ) {
if ( ! $multi_gallery['multiple_gallery'] ) {
continue;
}
$galleries[] = $multi_gallery['multiple_gallery'];
}
} elseif ( $is_single ) {
$galleries[0] = $settings['gallery'];
}
foreach ( $galleries as $gallery ) {
foreach ( $gallery as $item ) {
$image_src = wp_get_attachment_image_src( $item['id'] );
$this->add_render_attribute( 'gallery_item_image_' . $item['id'], [
'style' => "background-image: url('{$image_src[0]}');",
] );
}
}
$this->render();
}
/**
*
*/
protected function render() {
$settings = $this->get_settings_for_display();
$is_multiple = 'multiple' === $settings['gallery_type'] && ! empty( $settings['galleries'] );
$is_single = 'single' === $settings['gallery_type'] && ! empty( $settings['gallery'] );
$has_description = ! empty( $settings['overlay_description'] );
$has_title = ! empty( $settings['overlay_title'] );
$has_animation = ! empty( $settings['image_hover_animation'] ) || ! empty( $settings['content_hover_animation'] ) || ! empty( $settings['background_overlay_hover_animation'] );
$gallery_item_tag = ! empty( $settings['link_to'] ) ? 'a' : 'div';
$galleries = [];
if ( $is_multiple ) {
$this->add_render_attribute( 'titles-container', 'class', 'elementor-gallery__titles-container' );
if ( $settings['pointer'] ) {
$this->add_render_attribute( 'titles-container', 'class', 'e--pointer-' . $settings['pointer'] );
foreach ( $settings as $key => $value ) {
if ( 0 === strpos( $key, 'animation' ) && $value ) {
$this->add_render_attribute( 'titles-container', 'class', 'e--animation-' . $value );
break;
}
}
} ?>
<div <?php $this->print_render_attribute_string( 'titles-container' ); ?>>
<?php if ( $settings['show_all_galleries'] ) { ?>
<a data-gallery-index="all" class="elementor-item elementor-gallery-title">
<?php $this->print_unescaped_setting( 'show_all_galleries_label' ); ?>
</a>
<?php } ?>
<?php foreach ( $settings['galleries'] as $index => $gallery ) :
if ( ! $gallery['multiple_gallery'] ) {
continue;
}
$galleries[ $index ] = $gallery['multiple_gallery'];
?>
<a data-gallery-index="<?php echo esc_attr( $index ); ?>" class="elementor-item elementor-gallery-title">
<?php $this->print_unescaped_setting( 'gallery_title', 'galleries', $index ); ?>
</a>
<?php
endforeach; ?>
</div>
<?php
} elseif ( $is_single ) {
$galleries[0] = $settings['gallery'];
} elseif ( Plugin::elementor()->editor->is_edit_mode() ) { ?>
<i class="elementor-widget-empty-icon eicon-gallery-justified"></i>
<?php }
$this->add_render_attribute( 'gallery_container', 'class', 'elementor-gallery__container' );
if ( $has_title || $has_description ) {
$this->add_render_attribute( 'gallery_item_content', 'class', 'elementor-gallery-item__content' );
if ( $has_title ) {
$this->add_render_attribute( 'gallery_item_title', 'class', 'elementor-gallery-item__title' );
}
if ( $has_description ) {
$this->add_render_attribute( 'gallery_item_description', 'class', 'elementor-gallery-item__description' );
}
}
$this->add_render_attribute( 'gallery_item_background_overlay', [ 'class' => 'elementor-gallery-item__overlay' ] );
$gallery_items = [];
$thumbnail_size = $settings['thumbnail_image_size'];
foreach ( $galleries as $gallery_index => $gallery ) {
foreach ( $gallery as $index => $item ) {
if ( in_array( $item['id'], array_keys( $gallery_items ), true ) ) {
$gallery_items[ $item['id'] ][] = $gallery_index;
} else {
$gallery_items[ $item['id'] ] = [ $gallery_index ];
}
}
}
if ( 'random' === $settings['order_by'] ) {
$shuffled_items = [];
$keys = array_keys( $gallery_items );
shuffle( $keys );
foreach ( $keys as $key ) {
$shuffled_items[ $key ] = $gallery_items[ $key ];
}
$gallery_items = $shuffled_items;
}
if ( ! empty( $galleries ) ) { ?>
<div <?php $this->print_render_attribute_string( 'gallery_container' ); ?>>
<?php
foreach ( $gallery_items as $id => $tags ) :
$unique_index = $id; //$gallery_index . '_' . $index;
$image_src = wp_get_attachment_image_src( $id, $thumbnail_size );
if ( ! $image_src ) {
continue;
}
$attachment = get_post( $id );
$image_data = [
'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
'media' => wp_get_attachment_image_src( $id, 'full' )['0'],
'src' => $image_src['0'],
'width' => $image_src['1'],
'height' => $image_src['2'],
'caption' => $attachment->post_excerpt,
'description' => $attachment->post_content,
'title' => $attachment->post_title,
];
$this->add_render_attribute( 'gallery_item_' . $unique_index, [
'class' => [
'e-gallery-item',
'elementor-gallery-item',
],
] );
if ( $has_animation ) {
$this->add_render_attribute( 'gallery_item_' . $unique_index, [ 'class' => 'elementor-animated-content' ] );
}
if ( $is_multiple ) {
$this->add_render_attribute( 'gallery_item_' . $unique_index, [ 'data-e-gallery-tags' => implode( ',', $tags ) ] );
}
if ( 'a' === $gallery_item_tag ) {
if ( 'file' === $settings['link_to'] ) {
$href = $image_data['media'];
$this->add_render_attribute( 'gallery_item_' . $unique_index, [
'href' => $href,
] );
$this->add_lightbox_data_attributes( 'gallery_item_' . $unique_index, $id, 'yes', 'all-' . $this->get_id() );
} elseif ( 'custom' === $settings['link_to'] ) {
$this->add_link_attributes( 'gallery_item_' . $unique_index, $settings['url'] );
}
}
$this->add_render_attribute( 'gallery_item_image_' . $unique_index,
[
'class' => [
'e-gallery-image',
'elementor-gallery-item__image',
],
'data-thumbnail' => $image_data['src'],
'data-width' => $image_data['width'],
'data-height' => $image_data['height'],
'alt' => $image_data['alt'],
]
);?>
<<?php Utils::print_validated_html_tag( $gallery_item_tag ); ?> <?php $this->print_render_attribute_string( 'gallery_item_' . $unique_index ); ?>>
<div <?php $this->print_render_attribute_string( 'gallery_item_image_' . $unique_index ); ?> ></div>
<?php if ( ! empty( $settings['overlay_background'] ) ) : ?>
<div <?php $this->print_render_attribute_string( 'gallery_item_background_overlay' ); ?>></div>
<?php endif; ?>
<?php if ( $has_title || $has_description ) : ?>
<div <?php $this->print_render_attribute_string( 'gallery_item_content' ); ?>>
<?php if ( $has_title ) :
$title = $image_data[ $settings['overlay_title'] ];
if ( ! empty( $title ) ) : ?>
<div <?php $this->print_render_attribute_string( 'gallery_item_title' ); ?>>
<?php // PHPCS - the main text of a widget should not be escaped. ?>
<?php echo $title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<?php endif;
endif;
if ( $has_description ) :
$description = $image_data[ $settings['overlay_description'] ];
if ( ! empty( $description ) ) :?>
<div <?php $this->print_render_attribute_string( 'gallery_item_description' ); ?>>
<?php // PHPCS - the main text of a widget should not be escaped. ?>
<?php echo $description; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</div>
<?php endif;
endif; ?>
</div>
<?php endif; ?>
</<?php Utils::print_validated_html_tag( $gallery_item_tag ); ?>>
<?php endforeach;
//endforeach; ?>
</div>
<?php }
}
}
PK ! ��9�7? 7? 7 modules/animated-headline/widgets/animated-headline.phpnu �[��� <?php
namespace ElementorPro\Modules\AnimatedHeadline\Widgets;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Animated_Headline extends Base_Widget {
public function get_name() {
return 'animated-headline';
}
public function get_title() {
return esc_html__( 'Animated Headline', 'elementor-pro' );
}
public function get_icon() {
return 'eicon-animated-headline';
}
public function get_keywords() {
return [ 'headline', 'heading', 'animation', 'title', 'text' ];
}
protected function register_controls() {
$this->start_controls_section(
'text_elements',
[
'label' => esc_html__( 'Headline', 'elementor-pro' ),
]
);
$this->add_control(
'headline_style',
[
'label' => esc_html__( 'Style', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'highlight',
'options' => [
'highlight' => esc_html__( 'Highlighted', 'elementor-pro' ),
'rotate' => esc_html__( 'Rotating', 'elementor-pro' ),
],
'prefix_class' => 'elementor-headline--style-',
'render_type' => 'template',
'frontend_available' => true,
]
);
$this->add_control(
'animation_type',
[
'label' => esc_html__( 'Animation', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'typing' => 'Typing',
'clip' => 'Clip',
'flip' => 'Flip',
'swirl' => 'Swirl',
'blinds' => 'Blinds',
'drop-in' => 'Drop-in',
'wave' => 'Wave',
'slide' => 'Slide',
'slide-down' => 'Slide Down',
],
'default' => 'typing',
'condition' => [
'headline_style' => 'rotate',
],
'frontend_available' => true,
]
);
$this->add_control(
'marker',
[
'label' => esc_html__( 'Shape', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'circle',
'options' => [
'circle' => _x( 'Circle', 'Shapes', 'elementor-pro' ),
'curly' => _x( 'Curly', 'Shapes', 'elementor-pro' ),
'underline' => _x( 'Underline', 'Shapes', 'elementor-pro' ),
'double' => _x( 'Double', 'Shapes', 'elementor-pro' ),
'double_underline' => _x( 'Double Underline', 'Shapes', 'elementor-pro' ),
'underline_zigzag' => _x( 'Underline Zigzag', 'Shapes', 'elementor-pro' ),
'diagonal' => _x( 'Diagonal', 'Shapes', 'elementor-pro' ),
'strikethrough' => _x( 'Strikethrough', 'Shapes', 'elementor-pro' ),
'x' => 'X',
],
'render_type' => 'template',
'condition' => [
'headline_style' => 'highlight',
],
'frontend_available' => true,
]
);
$this->add_control(
'before_text',
[
'label' => esc_html__( 'Before Text', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
'categories' => [
TagsModule::TEXT_CATEGORY,
],
],
'default' => esc_html__( 'This page is', 'elementor-pro' ),
'placeholder' => esc_html__( 'Enter your headline', 'elementor-pro' ),
'label_block' => true,
'separator' => 'before',
]
);
$this->add_control(
'highlighted_text',
[
'label' => esc_html__( 'Highlighted Text', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
'categories' => [
TagsModule::TEXT_CATEGORY,
],
],
'default' => esc_html__( 'Amazing', 'elementor-pro' ),
'label_block' => true,
'condition' => [
'headline_style' => 'highlight',
],
'separator' => 'none',
'frontend_available' => true,
]
);
$this->add_control(
'rotating_text',
[
'label' => esc_html__( 'Rotating Text', 'elementor-pro' ),
'type' => Controls_Manager::TEXTAREA,
'placeholder' => esc_html__( 'Enter each word in a separate line', 'elementor-pro' ),
'separator' => 'none',
'default' => "Better\nBigger\nFaster",
'dynamic' => [
'active' => true,
'categories' => [
TagsModule::TEXT_CATEGORY,
],
],
'condition' => [
'headline_style' => 'rotate',
],
'frontend_available' => true,
]
);
$this->add_control(
'after_text',
[
'label' => esc_html__( 'After Text', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
'categories' => [
TagsModule::TEXT_CATEGORY,
],
],
'placeholder' => esc_html__( 'Enter your headline', 'elementor-pro' ),
'label_block' => true,
'separator' => 'none',
]
);
$this->add_control(
'loop',
[
'label' => esc_html__( 'Infinite Loop', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'render_type' => 'template',
'frontend_available' => true,
'selectors' => [
'{{WRAPPER}}' => '--iteration-count: infinite',
],
'separator' => 'before',
]
);
$this->add_control(
'highlight_animation_duration',
[
'label' => esc_html__( 'Duration', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::NUMBER,
'default' => 1200,
'render_type' => 'template',
'frontend_available' => true,
'selectors' => [
'{{WRAPPER}}' => '--animation-duration: {{VALUE}}ms',
],
'condition' => [
'headline_style' => 'highlight',
],
]
);
$this->add_control(
'highlight_iteration_delay',
[
'label' => esc_html__( 'Delay', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::NUMBER,
'default' => 8000,
'render_type' => 'template',
'frontend_available' => true,
'condition' => [
'headline_style' => 'highlight',
'loop' => 'yes',
],
]
);
$this->add_control(
'rotate_iteration_delay',
[
'label' => esc_html__( 'Duration', 'elementor-pro' ) . ' (ms)',
'type' => Controls_Manager::NUMBER,
'default' => 2500,
'render_type' => 'template',
'frontend_available' => true,
'condition' => [
'headline_style' => 'rotate',
],
]
);
$this->add_control(
'link',
[
'label' => esc_html__( 'Link', 'elementor-pro' ),
'type' => Controls_Manager::URL,
'dynamic' => [
'active' => true,
],
'separator' => 'before',
]
);
$this->add_responsive_control(
'alignment',
[
'label' => esc_html__( 'Alignment', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-text-align-right',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .elementor-headline' => 'text-align: {{VALUE}}',
],
]
);
$this->add_control(
'tag',
[
'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'h1' => 'H1',
'h2' => 'H2',
'h3' => 'H3',
'h4' => 'H4',
'h5' => 'H5',
'h6' => 'H6',
'div' => 'div',
'span' => 'span',
'p' => 'p',
],
'default' => 'h3',
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_style_marker',
[
'label' => esc_html__( 'Shape', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'headline_style' => 'highlight',
],
]
);
$this->add_control(
'marker_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_ACCENT,
],
'selectors' => [
'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke: {{VALUE}}',
],
]
);
$this->add_control(
'stroke_width',
[
'label' => esc_html__( 'Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 1,
'max' => 20,
],
],
'selectors' => [
'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke-width: {{SIZE}}{{UNIT}}',
],
]
);
$this->add_control(
'above_content',
[
'label' => esc_html__( 'Bring to Front', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'selectors' => [
'{{WRAPPER}} .elementor-headline-dynamic-wrapper svg' => 'z-index: 2',
'{{WRAPPER}} .elementor-headline-dynamic-text' => 'z-index: auto',
],
]
);
$this->add_control(
'rounded_edges',
[
'label' => esc_html__( 'Rounded Edges', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'selectors' => [
'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke-linecap: round; stroke-linejoin: round',
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_style_text',
[
'label' => esc_html__( 'Headline', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'title_color',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_SECONDARY,
],
'selectors' => [
'{{WRAPPER}} .elementor-headline-plain-text' => 'color: {{VALUE}}',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'title_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
'selector' => '{{WRAPPER}} .elementor-headline',
]
);
$this->add_control(
'heading_words_style',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Animated Text', 'elementor-pro' ),
'separator' => 'before',
]
);
$this->add_control(
'words_color',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_SECONDARY,
],
'selectors' => [
'{{WRAPPER}}' => '--dynamic-text-color: {{VALUE}}',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'words_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
],
'selector' => '{{WRAPPER}} .elementor-headline-dynamic-text',
'exclude' => [ 'font_size' ],
]
);
$this->add_control(
'typing_animation_highlight_colors',
[
'type' => Controls_Manager::HEADING,
'label' => esc_html__( 'Selected Text', 'elementor-pro' ),
'separator' => 'before',
'condition' => [
'headline_style' => 'rotate',
'animation_type' => 'typing',
],
]
);
$this->add_control(
'highlighted_text_background_color',
[
'label' => esc_html__( 'Selection Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => '--typing-selected-bg-color: {{VALUE}}',
],
'condition' => [
'headline_style' => 'rotate',
'animation_type' => 'typing',
],
]
);
$this->add_control(
'highlighted_text_color',
[
'label' => esc_html__( 'Text Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}}' => '--typing-selected-color: {{VALUE}}',
],
'condition' => [
'headline_style' => 'rotate',
'animation_type' => 'typing',
],
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
$tag = Utils::validate_html_tag( $settings['tag'] );
$this->add_render_attribute( 'headline', 'class', 'elementor-headline' );
if ( 'rotate' === $settings['headline_style'] ) {
$this->add_render_attribute( 'headline', 'class', 'elementor-headline-animation-type-' . $settings['animation_type'] );
$is_letter_animation = in_array( $settings['animation_type'], [ 'typing', 'swirl', 'blinds', 'wave' ] );
if ( $is_letter_animation ) {
$this->add_render_attribute( 'headline', 'class', 'elementor-headline-letters' );
}
}
if ( ! empty( $settings['link']['url'] ) ) {
$this->add_link_attributes( 'url', $settings['link'] );
?>
<a <?php $this->print_render_attribute_string( 'url' ); ?>>
<?php
}
?>
<<?php Utils::print_validated_html_tag( $tag ); ?> <?php $this->print_render_attribute_string( 'headline' ); ?>>
<?php if ( ! empty( $settings['before_text'] ) ) : ?>
<span class="elementor-headline-plain-text elementor-headline-text-wrapper"><?php $this->print_unescaped_setting( 'before_text' ); ?></span>
<?php endif; ?>
<span class="elementor-headline-dynamic-wrapper elementor-headline-text-wrapper">
<?php if ( 'rotate' === $settings['headline_style'] && $settings['rotating_text'] ) :
$rotating_text = explode( "\n", $settings['rotating_text'] );
foreach ( $rotating_text as $key => $text ) : ?>
<span class="elementor-headline-dynamic-text<?php echo 1 > $key ? ' elementor-headline-text-active' : ''; ?>">
<?php Utils::print_unescaped_internal_string( str_replace( ' ', ' ', $text ) ); ?>
</span>
<?php endforeach; ?>
<?php elseif ( 'highlight' === $settings['headline_style'] && ! empty( $settings['highlighted_text'] ) ) : ?>
<span class="elementor-headline-dynamic-text elementor-headline-text-active"><?php $this->print_unescaped_setting( 'highlighted_text' ); ?></span>
<?php endif ?>
</span>
<?php if ( ! empty( $settings['after_text'] ) ) : ?>
<span class="elementor-headline-plain-text elementor-headline-text-wrapper"><?php $this->print_unescaped_setting( 'after_text' ); ?></span>
<?php endif; ?>
</<?php Utils::print_validated_html_tag( $tag ); ?>>
<?php
if ( ! empty( $settings['link']['url'] ) ) {
echo '</a>';
}
}
/**
* Render Animated Headline widget output in the editor.
*
* Written as a Backbone JavaScript template and used to generate the live preview.
*
* @since 2.9.0
* @access protected
*/
protected function content_template() {
?>
<#
var headlineClasses = 'elementor-headline',
tag = elementorPro.validateHTMLTag( settings.tag );
if ( 'rotate' === settings.headline_style ) {
headlineClasses += ' elementor-headline-animation-type-' + settings.animation_type;
var isLetterAnimation = -1 !== [ 'typing', 'swirl', 'blinds', 'wave' ].indexOf( settings.animation_type );
if ( isLetterAnimation ) {
headlineClasses += ' elementor-headline-letters';
}
}
if ( settings.link.url ) { #>
<a href="#">
<# } #>
<{{{ tag }}} class="{{{ headlineClasses }}}">
<# if ( settings.before_text ) { #>
<span class="elementor-headline-plain-text elementor-headline-text-wrapper">{{{ settings.before_text }}}</span>
<# } #>
<# if ( settings.rotating_text ) { #>
<span class="elementor-headline-dynamic-wrapper elementor-headline-text-wrapper">
<# if ( 'rotate' === settings.headline_style && settings.rotating_text ) {
var rotatingText = ( settings.rotating_text || '' ).split( '\n' );
for ( var i = 0; i < rotatingText.length; i++ ) {
var statusClass = 0 === i ? 'elementor-headline-text-active' : ''; #>
<span class="elementor-headline-dynamic-text {{ statusClass }}">
{{{ rotatingText[ i ].replace( ' ', ' ' ) }}}
</span>
<# }
}
else if ( 'highlight' === settings.headline_style && settings.highlighted_text ) { #>
<span class="elementor-headline-dynamic-text elementor-headline-text-active">{{{ settings.highlighted_text }}}</span>
<# } #>
</span>
<# } #>
<# if ( settings.after_text ) { #>
<span class="elementor-headline-plain-text elementor-headline-text-wrapper">{{{ settings.after_text }}}</span>
<# } #>
</{{{ tag }}}>
<# if ( settings.link.url ) { #>
</a>
<# } #>
<?php
}
}
PK ! ObatU U $ modules/animated-headline/module.phpnu �[��� <?php
namespace ElementorPro\Modules\AnimatedHeadline;
use ElementorPro\Base\Module_Base;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
public function get_widgets() {
return [
'Animated_Headline',
];
}
public function get_name() {
return 'animated-headline';
}
}
PK ! �pֽ modules/popup/module.phpnu �[��� <?php
namespace ElementorPro\Modules\Popup;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use Elementor\Core\Documents_Manager;
use Elementor\Core\DynamicTags\Manager as DynamicTagsManager;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Module extends Module_Base {
const DOCUMENT_TYPE = 'popup';
public function __construct() {
parent::__construct();
add_action( 'elementor/documents/register', [ $this, 'register_documents' ] );
add_action( 'elementor/theme/register_locations', [ $this, 'register_location' ] );
add_action( 'elementor/dynamic_tags/register_tags', [ $this, 'register_tag' ] );
add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );
add_action( 'admin_menu', [ $this, 'admin_menu' ] );
add_action( 'wp_footer', [ $this, 'print_popups' ] );
add_action( 'elementor_pro/init', [ $this, 'add_form_action' ] );
add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
add_filter( 'elementor/finder/categories', [ $this, 'add_finder_items' ] );
}
public function get_name() {
return 'popup';
}
public function add_form_action() {
$this->add_component( 'form-action', new Form_Action() );
}
public static function add_popup_to_location( $popup_id ) {
/** @var \ElementorPro\Modules\ThemeBuilder\Module $theme_builder */
$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );
$theme_builder->get_locations_manager()->add_doc_to_location( Document::get_property( 'location' ), $popup_id );
}
public function register_documents( Documents_Manager $documents_manager ) {
$documents_manager->register_document_type( self::DOCUMENT_TYPE, Document::get_class_full_name() );
}
public function register_location( Locations_Manager $location_manager ) {
$location_manager->register_location(
'popup',
[
'label' => esc_html__( 'Popup', 'elementor-pro' ),
'multiple' => true,
'public' => false,
'edit_in_content' => false,
]
);
}
public function print_popups() {
elementor_theme_do_location( 'popup' );
}
public function register_tag( DynamicTagsManager $dynamic_tags ) {
$dynamic_tags->register_tag( __NAMESPACE__ . '\Tag' );
}
public function register_ajax_actions( Ajax $ajax ) {
$ajax->register_ajax_action( 'pro_popup_save_display_settings', [ $this, 'save_display_settings' ] );
}
public function localize_settings( array $settings ) {
$settings = array_replace_recursive( $settings, [
'i18n' => [
'popups' => esc_html__( 'Popups', 'elementor-pro' ),
'triggers' => esc_html__( 'Triggers', 'elementor-pro' ),
'timing' => esc_html__( 'Advanced Rules', 'elementor-pro' ),
'popup_publish_screen_triggers_description' => esc_html__( 'What action the user needs to do for the popup to open.', 'elementor-pro' ),
'popup_publish_screen_timing_description' => esc_html__( 'Requirements that have to be met for the popup to open.', 'elementor-pro' ),
'popup_settings_introduction_title' => esc_html__( 'Please Note', 'elementor-pro' ),
'popup_settings_introduction_message' => esc_html__( 'Popup settings are accessed via the settings icon in the bottom menu', 'elementor-pro' ),
],
] );
return $settings;
}
public function save_display_settings( $data ) {
/** @var Document $popup_document */
$popup_document = Plugin::elementor()->documents->get( $data['editor_post_id'] );
$popup_document->save_display_settings_data( $data['settings'] );
}
/**
* Add New item to admin menu.
*
* Fired by `admin_menu` action.
*
* @since 2.4.0
* @access public
*/
public function admin_menu() {
add_submenu_page( Source_Local::ADMIN_MENU_SLUG, '', esc_html__( 'Popups', 'elementor-pro' ), 'publish_posts', $this->get_admin_url( true ) );
}
public function add_finder_items( array $categories ) {
$categories['general']['items']['popups'] = [
'title' => esc_html__( 'Popups', 'elementor-pro' ),
'icon' => 'library-save',
'url' => $this->get_admin_url(),
'keywords' => [ 'template', 'popup', 'library' ],
];
$categories['create']['items']['popups'] = [
'title' => esc_html__( 'Add New Popup', 'elementor-pro' ),
'icon' => 'plus-circle-o',
'url' => $this->get_admin_url() . '#add_new',
'keywords' => [ 'template', 'theme', 'popup', 'new', 'create' ],
];
return $categories;
}
private function get_admin_url( $relative = false ) {
$base_url = Source_Local::ADMIN_MENU_SLUG;
if ( ! $relative ) {
$base_url = admin_url( $base_url );
}
return add_query_arg(
[
'tabs_group' => 'popup',
'elementor_library_type' => 'popup',
],
$base_url
);
}
}
PK ! �9�&� � modules/popup/tag.phpnu �[��� <?php
namespace ElementorPro\Modules\Popup;
use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag as DynamicTagsTag;
use ElementorPro\Modules\DynamicTags\Module as DynamicTagsModule;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Tag extends DynamicTagsTag {
public function get_name() {
return 'popup';
}
public function get_title() {
return esc_html__( 'Popup', 'elementor-pro' );
}
public function get_group() {
return DynamicTagsModule::ACTION_GROUP;
}
public function get_categories() {
return [ DynamicTagsModule::URL_CATEGORY ];
}
public function register_controls() {
$this->add_control(
'action',
[
'label' => esc_html__( 'Action', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'open',
'options' => [
'open' => esc_html__( 'Open Popup', 'elementor-pro' ),
'close' => esc_html__( 'Close Popup', 'elementor-pro' ),
'toggle' => esc_html__( 'Toggle Popup', 'elementor-pro' ),
],
]
);
$this->add_control(
'popup',
[
'label' => esc_html__( 'Popup', 'elementor-pro' ),
'type' => QueryControlModule::QUERY_CONTROL_ID,
'autocomplete' => [
'object' => QueryControlModule::QUERY_OBJECT_LIBRARY_TEMPLATE,
'query' => [
'posts_per_page' => 20,
'post_status' => [ 'publish', 'private' ],
'meta_query' => [
[
'key' => Document::TYPE_META_KEY,
'value' => 'popup',
],
],
],
],
'label_block' => true,
'condition' => [
'action' => [ 'open', 'toggle' ],
],
]
);
$this->add_control(
'do_not_show_again',
[
'label' => esc_html__( 'Don\'t Show Again', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'condition' => [
'action' => 'close',
],
]
);
}
public function render() {
$settings = $this->get_active_settings();
if ( 'close' === $settings['action'] ) {
$this->print_close_popup_link( $settings );
return;
}
$this->print_open_popup_link( $settings );
}
// Keep Empty to avoid default advanced section
protected function register_advanced_section() {}
private function print_open_popup_link( array $settings ) {
if ( ! $settings['popup'] ) {
return;
}
$link_action_url = Plugin::elementor()->frontend->create_action_hash( 'popup:open', [
'id' => $settings['popup'],
'toggle' => 'toggle' === $settings['action'],
] );
Module::add_popup_to_location( $settings['popup'] );
// PHPCS - `create_action_hash` is safe.
echo $link_action_url; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
private function print_close_popup_link( array $settings ) {
// PHPCS - `create_action_hash` is safe.
echo Plugin::elementor()->frontend->create_action_hash( 'popup:close', [ 'do_not_show_again' => $settings['do_not_show_again'] ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
PK ! ~jL�L �L modules/popup/document.phpnu �[��� <?php
namespace ElementorPro\Modules\Popup;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;
use ElementorPro\Modules\Popup\DisplaySettings\Base;
use ElementorPro\Modules\Popup\DisplaySettings\Timing;
use ElementorPro\Modules\Popup\DisplaySettings\Triggers;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Section_Document;
use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Document extends Theme_Section_Document {
const DISPLAY_SETTINGS_META_KEY = '_elementor_popup_display_settings';
/**
* @var Base[]
*/
private $display_settings;
public static function get_properties() {
$properties = parent::get_properties();
$properties['admin_tab_group'] = 'popup';
$properties['location'] = 'popup';
$properties['support_kit'] = true;
$properties['support_site_editor'] = false;
return $properties;
}
public static function get_title() {
return esc_html__( 'Popup', 'elementor-pro' );
}
public static function get_plural_title() {
return esc_html__( 'Popups', 'elementor-pro' );
}
public function get_display_settings() {
if ( ! $this->display_settings ) {
$settings = $this->get_display_settings_data();
if ( ! $settings ) {
$settings = [
'triggers' => [],
'timing' => [],
];
}
$id = $this->get_main_id();
$this->display_settings = [
'triggers' => new Triggers( [
'id' => $id,
'settings' => $settings['triggers'],
] ),
'timing' => new Timing( [
'id' => $id,
'settings' => $settings['timing'],
] ),
];
}
return $this->display_settings;
}
public function get_initial_config() {
$config = parent::get_initial_config();
$display_settings = $this->get_display_settings();
$config['displaySettings'] = [
'triggers' => [
'controls' => $display_settings['triggers']->get_controls(),
'settings' => $display_settings['triggers']->get_settings(),
],
'timing' => [
'controls' => $display_settings['timing']->get_controls(),
'settings' => $display_settings['timing']->get_settings(),
],
];
$config['container'] = '.elementor-popup-modal .dialog-widget-content';
return $config;
}
public function get_name() {
return 'popup';
}
public function get_css_wrapper_selector() {
return '#elementor-popup-modal-' . $this->get_main_id();
}
public function get_display_settings_data() {
return $this->get_main_meta( self::DISPLAY_SETTINGS_META_KEY );
}
public function save_display_settings_data( $display_settings_data ) {
$this->update_main_meta( self::DISPLAY_SETTINGS_META_KEY, $display_settings_data );
}
public function get_frontend_settings() {
$settings = parent::get_frontend_settings();
$display_settings = $this->get_display_settings();
// Disable triggers if the popup is not printed by the theme builder conditions.
// avoid auto show the popup if it's enqueued by a dynamic tag and etc.)
$popups_by_condition = ThemeBuilderModule::instance()->get_conditions_manager()->get_documents_for_location( 'popup' );
if ( $popups_by_condition && isset( $popups_by_condition[ $this->get_main_id() ] ) ) {
$settings['triggers'] = $display_settings['triggers']->get_frontend_settings();
}
$settings['timing'] = $display_settings['timing']->get_frontend_settings();
return $settings;
}
public function get_export_data() {
$data = parent::get_export_data();
$display_settings = $this->get_display_settings();
$data['display_settings'] = [
'triggers' => $display_settings['triggers']->get_frontend_settings(),
'timing' => $display_settings['timing']->get_frontend_settings(),
];
return $data;
}
public function import( array $data ) {
parent::import( $data );
$this->save_display_settings_data( $data['display_settings'] );
}
protected function register_controls() {
$this->start_controls_section(
'popup_layout',
[
'label' => esc_html__( 'Layout', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_SETTINGS,
]
);
$this->add_responsive_control(
'width',
[
'label' => esc_html__( 'Width', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 100,
'max' => 1000,
],
'vh' => [
'min' => 10,
'max' => 100,
],
],
'size_units' => [ 'px', 'vw' ],
'default' => [
'size' => 640,
],
'selectors' => [
'{{WRAPPER}} .dialog-message' => 'width: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'height_type',
[
'label' => esc_html__( 'Height', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'auto',
'options' => [
'auto' => esc_html__( 'Fit To Content', 'elementor-pro' ),
'fit_to_screen' => esc_html__( 'Fit To Screen', 'elementor-pro' ),
'custom' => esc_html__( 'Custom', 'elementor-pro' ),
],
'selectors_dictionary' => [
'fit_to_screen' => '100vh',
],
'selectors' => [
'{{WRAPPER}} .dialog-message' => 'height: {{VALUE}};',
],
]
);
$this->add_responsive_control(
'height',
[
'label' => esc_html__( 'Custom Height', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 100,
'max' => 1000,
],
'vh' => [
'min' => 10,
'max' => 100,
],
],
'size_units' => [ 'px', 'vh' ],
'condition' => [
'height_type' => 'custom',
],
'default' => [
'size' => 380,
],
'selectors' => [
'{{WRAPPER}} .dialog-message' => 'height: {{SIZE}}{{UNIT}};',
],
]
);
$this->add_control(
'content_position',
[
'label' => esc_html__( 'Content Position', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'default' => 'top',
'options' => [
'top' => esc_html__( 'Top', 'elementor-pro' ),
'center' => esc_html__( 'Center', 'elementor-pro' ),
'bottom' => esc_html__( 'Bottom', 'elementor-pro' ),
],
'condition' => [
'height_type!' => 'auto',
],
'selectors_dictionary' => [
'top' => 'flex-start',
'bottom' => 'flex-end',
],
'selectors' => [
'{{WRAPPER}} .dialog-message' => 'align-items: {{VALUE}};',
],
]
);
$this->add_control(
'position_heading',
[
'label' => esc_html__( 'Position', 'elementor-pro' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_responsive_control(
'horizontal_position',
[
'label' => esc_html__( 'Horizontal', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'toggle' => false,
'default' => 'center',
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'elementor-pro' ),
'icon' => 'eicon-h-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-h-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'elementor-pro' ),
'icon' => 'eicon-h-align-right',
],
],
'selectors' => [
'{{WRAPPER}}' => 'justify-content: {{VALUE}}',
],
'selectors_dictionary' => [
'left' => 'flex-start',
'right' => 'flex-end',
],
]
);
$this->add_responsive_control(
'vertical_position',
[
'label' => esc_html__( 'Vertical', 'elementor-pro' ),
'type' => Controls_Manager::CHOOSE,
'toggle' => false,
'default' => 'center',
'options' => [
'top' => [
'title' => esc_html__( 'Top', 'elementor-pro' ),
'icon' => 'eicon-v-align-top',
],
'center' => [
'title' => esc_html__( 'Center', 'elementor-pro' ),
'icon' => 'eicon-v-align-middle',
],
'bottom' => [
'title' => esc_html__( 'Bottom', 'elementor-pro' ),
'icon' => 'eicon-v-align-bottom',
],
],
'selectors' => [
'{{WRAPPER}}' => 'align-items: {{VALUE}}',
],
'selectors_dictionary' => [
'top' => 'flex-start',
'bottom' => 'flex-end',
],
]
);
$this->add_control(
'overlay',
[
'label' => esc_html__( 'Overlay', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
'label_on' => esc_html__( 'Show', 'elementor-pro' ),
'default' => 'yes',
'selectors' => [
'{{WRAPPER}}' => 'pointer-events: all',
],
'separator' => 'before',
]
);
$this->add_control(
'close_button',
[
'label' => esc_html__( 'Close Button', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
'label_on' => esc_html__( 'Show', 'elementor-pro' ),
'default' => 'yes',
'selectors' => [
// Using flex to make sure that each icon type (i or SVG) will be vertically aligned.
'{{WRAPPER}} .dialog-close-button' => 'display: flex',
],
]
);
$this->add_responsive_control(
'entrance_animation',
[
'label' => esc_html__( 'Entrance Animation', 'elementor-pro' ),
'type' => Controls_Manager::ANIMATION,
'frontend_available' => true,
'separator' => 'before',
]
);
$this->add_responsive_control(
'exit_animation',
[
'label' => esc_html__( 'Exit Animation', 'elementor-pro' ),
'type' => Controls_Manager::EXIT_ANIMATION,
'frontend_available' => true,
]
);
$this->add_control(
'entrance_animation_duration',
[
'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (sec)',
'type' => Controls_Manager::SLIDER,
'frontend_available' => true,
'default' => [
'size' => 1.2,
],
'range' => [
'px' => [
'min' => 0.1,
'max' => 5,
'step' => 0.1,
],
],
'selectors' => [
'{{WRAPPER}} .dialog-widget-content' => 'animation-duration: {{SIZE}}s',
],
'conditions' => [
'relation' => 'or',
'terms' => [
[
'name' => 'entrance_animation',
'operator' => '!==',
'value' => '',
],
[
'name' => 'exit_animation',
'operator' => '!==',
'value' => '',
],
],
],
]
);
$this->end_controls_section();
parent::register_controls();
$this->start_controls_section(
'section_page_style',
[
'label' => esc_html__( 'Popup', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'background',
'selector' => '{{WRAPPER}} .dialog-widget-content',
]
);
$this->add_group_control(
Group_Control_Border::get_type(),
[
'name' => 'border',
'selector' => '{{WRAPPER}} .dialog-widget-content',
]
);
$this->add_responsive_control(
'border_radius',
[
'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .dialog-widget-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
],
]
);
$this->add_group_control(
Group_Control_Box_Shadow::get_type(),
[
'name' => 'box_shadow',
'selector' => '{{WRAPPER}} .dialog-widget-content',
'fields_options' => [
'box_shadow_type' => [
'default' => 'yes',
],
'box_shadow' => [
'default' => [
'horizontal' => 2,
'vertical' => 8,
'blur' => 23,
'spread' => 3,
'color' => 'rgba(0,0,0,0.2)',
],
],
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_overlay',
[
'label' => esc_html__( 'Overlay', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'overlay' => 'yes',
],
]
);
$this->add_group_control(
Group_Control_Background::get_type(),
[
'name' => 'overlay_background',
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}}',
'fields_options' => [
'background' => [
'default' => 'classic',
],
'color' => [
'default' => 'rgba(0,0,0,.8)',
],
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_close_button',
[
'label' => esc_html__( 'Close Button', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'close_button!' => '',
],
]
);
$this->add_control(
'close_button_position',
[
'label' => esc_html__( 'Position', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Inside', 'elementor-pro' ),
'outside' => esc_html__( 'Outside', 'elementor-pro' ),
],
'frontend_available' => true,
]
);
$this->add_responsive_control(
'close_button_vertical',
[
'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ '%', 'px' ],
'range' => [
'%' => [
'max' => 100,
'min' => 0,
'step' => 0.1,
],
'px' => [
'max' => 500,
'min' => -500,
],
],
'default' => [
'unit' => '%',
],
'tablet_default' => [
'unit' => '%',
],
'mobile_default' => [
'unit' => '%',
],
'selectors' => [
'{{WRAPPER}} .dialog-close-button' => 'top: {{SIZE}}{{UNIT}}',
],
]
);
$this->add_responsive_control(
'close_button_horizontal',
[
'label' => esc_html__( 'Horizontal Position', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ '%', 'px' ],
'range' => [
'%' => [
'max' => 100,
'min' => 0,
'step' => 0.1,
],
'px' => [
'max' => 500,
'min' => -500,
],
],
'default' => [
'unit' => '%',
],
'tablet_default' => [
'unit' => '%',
],
'mobile_default' => [
'unit' => '%',
],
'selectors' => [
'body:not(.rtl) {{WRAPPER}} .dialog-close-button' => 'right: {{SIZE}}{{UNIT}}',
'body.rtl {{WRAPPER}} .dialog-close-button' => 'left: {{SIZE}}{{UNIT}}',
],
'separator' => 'after',
]
);
$this->start_controls_tabs( 'close_button_style_tabs' );
$this->start_controls_tab(
'tab_x_button_normal',
[
'label' => esc_html__( 'Normal', 'elementor-pro' ),
]
);
$this->add_control(
'close_button_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .dialog-close-button i' => 'color: {{VALUE}}',
'{{WRAPPER}} .dialog-close-button svg' => 'fill: {{VALUE}}',
],
]
);
$this->add_control(
'close_button_background_color',
[
'label' => esc_html__( 'Background Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .dialog-close-button' => 'background-color: {{VALUE}}',
],
]
);
$this->end_controls_tab();
$this->start_controls_tab(
'tab_x_button_hover',
[
'label' => esc_html__( 'Hover', 'elementor-pro' ),
]
);
$this->add_control(
'close_button_hover_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .dialog-close-button:hover i' => 'color: {{VALUE}}',
],
]
);
$this->add_control(
'close_button_hover_background_color',
[
'label' => esc_html__( 'Background Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'selectors' => [
'{{WRAPPER}} .dialog-close-button:hover' => 'background-color: {{VALUE}}',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
$this->add_responsive_control(
'icon_size',
[
'label' => esc_html__( 'Size', 'elementor-pro' ),
'type' => Controls_Manager::SLIDER,
'selectors' => [
'{{WRAPPER}} .dialog-close-button' => 'font-size: {{SIZE}}{{UNIT}}',
],
'separator' => 'before',
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_advanced',
[
'label' => esc_html__( 'Advanced', 'elementor-pro' ),
'tab' => Controls_Manager::TAB_ADVANCED,
]
);
$this->add_control(
'close_button_delay',
[
'label' => esc_html__( 'Show Close Button After', 'elementor-pro' ) . ' (sec)',
'type' => Controls_Manager::NUMBER,
'min' => 0.1,
'max' => 60,
'step' => 0.1,
'condition' => [
'close_button' => 'yes',
],
'frontend_available' => true,
]
);
$this->add_control(
'close_automatically',
[
'label' => esc_html__( 'Automatically Close After', 'elementor-pro' ) . ' (sec)',
'type' => Controls_Manager::NUMBER,
'min' => 0.1,
'max' => 60,
'step' => 0.1,
'frontend_available' => true,
]
);
$this->add_control(
'prevent_close_on_background_click',
[
'label' => esc_html__( 'Prevent Closing on Overlay', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'frontend_available' => true,
]
);
$this->add_control(
'prevent_close_on_esc_key',
[
'label' => esc_html__( 'Prevent Closing on ESC key', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'frontend_available' => true,
]
);
$this->add_control(
'prevent_scroll',
[
'label' => esc_html__( 'Disable Page Scrolling', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'frontend_available' => true,
]
);
$this->add_control(
'avoid_multiple_popups',
[
'label' => esc_html__( 'Avoid Multiple Popups', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'description' => esc_html__( 'If the user has seen another popup on the page hide this popup', 'elementor-pro' ),
'frontend_available' => true,
]
);
$this->add_control(
'open_selector',
[
'label' => esc_html__( 'Open By Selector', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'placeholder' => esc_html__( '#id, .class', 'elementor-pro' ),
'description' => esc_html__( 'In order to open a popup on selector click, please set your Popup Conditions', 'elementor-pro' ),
'frontend_available' => true,
]
);
$this->add_responsive_control(
'margin',
[
'label' => esc_html__( 'Margin', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'separator' => 'before',
'selectors' => [
'{{WRAPPER}} .dialog-widget-content' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_responsive_control(
'padding',
[
'label' => esc_html__( 'Padding', 'elementor-pro' ),
'type' => Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .dialog-message' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'classes',
[
'label' => esc_html__( 'CSS Classes', 'elementor-pro' ),
'type' => Controls_Manager::TEXT,
'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor-pro' ),
'frontend_available' => true,
]
);
$this->end_controls_section();
Plugin::elementor()->controls_manager->add_custom_css_controls( $this );
}
protected function get_remote_library_config() {
$config = parent::get_remote_library_config();
$config['type'] = 'popup';
$config['default_route'] = 'templates/popups';
$config['autoImportSettings'] = true;
return $config;
}
}
PK ! �����
�
modules/popup/form-action.phpnu �[��� <?php
namespace ElementorPro\Modules\Popup;
use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Action_Base;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Modules\Forms\Module as FormsModule;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Form_Action extends Action_Base {
public function get_name() {
return 'popup';
}
public function get_label() {
return esc_html__( 'Popup', 'elementor-pro' );
}
public function register_settings_section( $widget ) {
$widget->start_controls_section(
'section_popup',
[
'label' => esc_html__( 'Popup', 'elementor-pro' ),
'condition' => [
'submit_actions' => $this->get_name(),
],
]
);
$widget->add_control(
'popup_action',
[
'label' => esc_html__( 'Action', 'elementor-pro' ),
'type' => Controls_Manager::SELECT,
'options' => [
'' => esc_html__( 'Choose', 'elementor-pro' ),
'open' => esc_html__( 'Open Popup', 'elementor-pro' ),
'close' => esc_html__( 'Close Popup', 'elementor-pro' ),
],
]
);
$widget->add_control(
'popup_action_popup_id',
[
'label' => esc_html__( 'Popup', 'elementor-pro' ),
'type' => QueryControlModule::QUERY_CONTROL_ID,
'label_block' => true,
'autocomplete' => [
'object' => QueryControlModule::QUERY_OBJECT_LIBRARY_TEMPLATE,
'query' => [
'posts_per_page' => 20,
'meta_query' => [
[
'key' => Document::TYPE_META_KEY,
'value' => 'popup',
],
],
],
],
'condition' => [
'popup_action' => 'open',
],
]
);
$widget->add_control(
'popup_action_do_not_show_again',
[
'label' => esc_html__( 'Don\'t Show Again', 'elementor-pro' ),
'type' => Controls_Manager::SWITCHER,
'condition' => [
'popup_action' => 'close',
],
]
);
$widget->end_controls_section();
}
public function on_export( $element ) {
unset(
$element['settings']['popup_action'],
$element['settings']['popup_action_popup_id'],
$element['settings']['popup_action_do_not_show_again']
);
return $element;
}
public function run( $record, $ajax_handler ) {
$popup_action = $record->get_form_settings( 'popup_action' );
if ( empty( $popup_action ) ) {
return;
}
$action_settings = [
'action' => $popup_action,
];
if ( 'open' === $popup_action ) {
$popup_id = $record->get_form_settings( 'popup_action_popup_id' );
if ( empty( $popup_id ) ) {
return;
}
$action_settings['id'] = $popup_id;
} else {
$action_settings['do_not_show_again'] = $record->get_form_settings( 'popup_action_do_not_show_again' );
}
$ajax_handler->add_response_data( 'popup', $action_settings );
}
public function maybe_print_popup( $settings, $widget ) {
if ( ! is_array( $settings['submit_actions'] ) || ! in_array( 'popup', $settings['submit_actions'] ) ) {
return;
}
$has_valid_settings = ( ! empty( $settings['popup_action'] ) && 'open' === $settings['popup_action'] && ! empty( $settings['popup_action_popup_id'] ) );
if ( ! $has_valid_settings ) {
return;
}
Module::add_popup_to_location( $settings['popup_action_popup_id'] );
}
public function __construct() {
/** @var FormsModule $forms_module */
$forms_module = FormsModule::instance();
// Register popup form action
$forms_module->actions_registrar->register( $this );
add_action( 'elementor-pro/forms/pre_render', [ $this, 'maybe_print_popup' ], 10, 2 );
}
}
PK ! ���
2 modules/popup/assets/images/triggers/page_load.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(12.631579, 6.315789)">
<path d="M11.5165481,10.1825079 L14.6635031,13.043376 C14.715123,13.0903032 14.7189272,13.1701914 14.672,13.2218113 C14.6480603,13.2481449 14.6141227,13.2631579 14.5785339,13.2631579 L8.28462403,13.2631579 C8.21486174,13.2631579 8.15830824,13.2066044 8.15830824,13.1368421 C8.15830824,13.1012533 8.17332122,13.0673156 8.19965483,13.043376 L11.3466098,10.1825079 C11.3947893,10.1387083 11.4683686,10.1387083 11.5165481,10.1825079 Z" fill="#71D7F7" transform="translate(11.431579, 11.684211) scale(1, -1) translate(-11.431579, -11.684211) "></path>
<path d="M10.8021641,22.6684287 L11.9744991,22.7395718 C12.0381545,22.7434348 12.0889464,22.7941398 12.0929183,22.8577884 L12.1662104,24.0322737 C12.1705554,24.1019005 12.1176339,24.1618665 12.0480071,24.1662115 C12.0430315,24.166522 12.0380419,24.1665377 12.0330645,24.1662584 L10.8515719,24.0999751 C10.787295,24.096369 10.7360137,24.0449997 10.7325179,23.9807167 L10.6683833,22.8013717 C10.6645951,22.7317123 10.7179943,22.6721713 10.7876536,22.6683831 C10.7924873,22.6681203 10.7973322,22.6681355 10.8021641,22.6684287 Z" fill="#71D7F7" transform="translate(11.417327, 23.417327) rotate(-45.000000) translate(-11.417327, -23.417327) "></path>
<path d="M9.91795361,25.0684287 L11.0902886,25.1395718 C11.1539439,25.1434348 11.2047359,25.1941398 11.2087078,25.2577884 L11.2819999,26.4322737 C11.2863448,26.5019005 11.2334234,26.5618665 11.1637966,26.5662115 C11.158821,26.566522 11.1538314,26.5665377 11.1488539,26.5662584 L9.96736139,26.4999751 C9.90308452,26.496369 9.85180314,26.4449997 9.84830733,26.3807167 L9.7841728,25.2013717 C9.78038462,25.1317123 9.83378376,25.0721713 9.90344311,25.0683831 C9.90827682,25.0681203 9.91312165,25.0681355 9.91795361,25.0684287 Z" fill="#71D7F7" transform="translate(10.533116, 25.817327) rotate(-45.000000) translate(-10.533116, -25.817327) "></path>
<path d="M12.4442694,24.1842182 L13.6166044,24.2553613 C13.6802597,24.2592242 13.7310517,24.3099293 13.7350236,24.3735779 L13.8083157,25.5480632 C13.8126606,25.61769 13.7597392,25.677656 13.6901124,25.682001 C13.6851368,25.6823115 13.6801472,25.6823271 13.6751697,25.6820479 L12.4936772,25.6157645 C12.4294003,25.6121585 12.3781189,25.5607891 12.3746231,25.4965062 L12.3104886,24.3171611 C12.3067004,24.2475018 12.3600995,24.1879608 12.4297589,24.1841726 C12.4345926,24.1839098 12.4394374,24.183925 12.4442694,24.1842182 Z" fill="#71D7F7" transform="translate(13.059432, 24.933116) rotate(-45.000000) translate(-13.059432, -24.933116) "></path>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="0.821052632" width="21.0947368" height="2.77894737" rx="1.38947368"></rect>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="31.1368421" width="21.0947368" height="2.77894737" rx="1.38947368"></rect>
<path d="M11.3684211,17.2475329 C12.6070668,16.1489688 14.1638359,14.7028853 16.0387284,12.9092825 C17.7228201,11.298208 21.1087068,8.44856945 21.1087068,6.35826994 C21.1087068,5.47191262 20.6428865,4.55283881 19.7112459,3.60104852 L11.3684211,3.60490337 L2.81303968,3.61392373 C1.90391139,4.62138713 1.44934725,5.51915645 1.44934725,6.3072317 C1.44934725,8.79014416 3.91089805,10.7299086 6.03592722,12.4897975 C7.80360659,13.9537395 9.58110454,15.5396513 11.3684211,17.2475329 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
<path d="M11.3684211,31.1422697 C12.6070668,30.0437056 14.1638359,28.5976221 16.0387284,26.8040193 C17.7228201,25.1929449 21.1087068,22.3433063 21.1087068,20.2530068 C21.1087068,19.3666495 20.6428865,18.4475757 19.7112459,17.4957854 L11.3684211,17.4996402 L2.81303968,17.5086606 C1.90391139,18.516124 1.44934725,19.4138933 1.44934725,20.2019685 C1.44934725,22.684881 3.91089805,24.6246454 6.03592722,26.3845343 C7.80360659,27.8484763 9.58110454,29.4343881 11.3684211,31.1422697 Z" stroke="#A4AFB7" stroke-width="1.64210526" transform="translate(11.279027, 24.319028) scale(1, -1) translate(-11.279027, -24.319028) "></path>
</g>
</g>
</svg>PK ! �3�tL L 3 modules/popup/assets/images/triggers/inactivity.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect fill="#F1F3F5" x="10.1052632" y="7.57894737" width="6.66517357" height="2.49944009"></rect>
<path d="M25.3186678,42.3006785 C24.8010525,41.3110006 24.7121853,40.4483361 25.0520662,39.712685 C25.6807782,38.3518769 26.5975305,36.8659868 27.1774381,35.0601576 C27.8719631,32.8974101 28.3464828,30.3724405 28.6009971,27.4852488 C28.9074977,30.1189962 29.0145127,32.1891523 28.9220424,33.6957171 C28.741071,36.6441768 28.7205863,38.9432812 28.2358655,40.098787 C27.9154382,40.8626405 27.7952182,41.5755825 27.8752056,42.2376131 L25.3186678,42.3006785 Z" fill="#F1F3F5"></path>
<path d="M24.8251433,18.1361878 C24.8605358,17.2525967 24.8728664,16.3013138 24.8621351,15.2823391 C24.8485006,13.9877009 25.0038305,13.2610302 25.2854488,12.3004997 C25.6335695,11.1131457 26.4007105,10.3412569 26.7212843,9.34299163 C27.4158093,7.18024415 28.0972837,3.76399013 28.7657075,-0.905770441 C29.2830044,4.55016489 29.4954177,8.03141495 29.4029473,9.53797974 C29.328075,10.7578289 28.2053933,11.6228079 27.822112,13.5156409 C27.6658918,14.2871335 27.6717905,15.800602 27.8398082,18.0560463 L24.8251433,18.1361878 Z" fill="#F1F3F5" transform="translate(27.124563, 8.615209) scale(1, -1) rotate(-270.000000) translate(-27.124563, -8.615209) "></path>
<path d="M8.05125367,11.3684211 L18.1916632,11.3815275 L18.3145559,19.1666324 L14.7274385,19.8003701 C15.6628796,15.7037943 14.9509532,13.6796438 12.5916591,13.7279185 C10.232365,13.7761933 9.59572096,15.9341768 10.6817269,20.201869 L8.12618215,20.775185 L8.05125367,11.3684211 Z" fill="#71D7F7"></path>
<path d="M7.85362112,20.0526316 L7.85362112,12.4210526 C7.85362112,11.5785263 8.54253645,10.8947368 9.39137856,10.8947368 L17.0801657,10.8947368 C17.9290078,10.8947368 18.6179232,11.5785263 18.6179232,12.4210526 L18.6179232,18.4622105" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M20.1556806,15.4736842 L20.1556806,17" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.31586369,7.84210526 L21.5442756,7.84210526 C23.0651177,6.85610526 24.9119644,6.31578947 26.8664541,6.31578947 L36.3021337,6.31578947 C37.5769346,6.31578947 38.6087699,7.33994737 38.6087699,8.60526316 C38.6087699,9.87057895 37.5769346,10.8947368 36.3021337,10.8947368 L37.8398911,10.8947368 C39.1146921,10.8947368 40.1465273,11.9188947 40.1465273,13.1842105 C40.1465273,14.4495263 39.1146921,15.4736842 37.8398911,15.4736842 L37.0710124,15.4736842 L39.3776486,15.4736842 C40.6524495,15.4736842 41.6842847,16.4978421 41.6842847,17.7631579 C41.6842847,19.0284737 40.6524495,20.0526316 39.3776486,20.0526316 L35.533255,20.0526316 L37.8398911,20.0526316 C39.1146921,20.0526316 40.1465273,21.0767895 40.1465273,22.3421053 C40.1465273,23.6074211 39.1146921,24.6315789 37.8398911,24.6315789 L31.9349026,24.6315789 L35.533255,24.6315789 L33.8986188,26.2540526 C33.5003397,26.6493684 33.0051818,27.0523158 32.4577401,27.4277895" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M9.39137856,10.8947368 L9.39137856,7.84210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M17.0801657,10.8947368 L17.0801657,7.84210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M27.8444678,41.4210526 L27.8444678,40.0427895 C28.8378591,38.5332632 29.3822252,36.7001579 29.3822252,34.7602105 L29.3822252,26.9210526 C29.3822252,25.6557368 28.35039,24.6315789 27.0755891,24.6315789 C25.8007882,24.6315789 24.7689529,25.6557368 24.7689529,26.9210526 L24.7689529,25.3947368 C24.7689529,24.1294211 23.7371177,23.1052632 22.4623168,23.1052632 C21.1875159,23.1052632 20.1556806,24.1294211 20.1556806,25.3947368 L20.1556806,26.1578947 L20.1556806,23.8684211 C20.1556806,22.6031053 19.1238454,21.5789474 17.8490445,21.5789474 C16.5742435,21.5789474 15.5424083,22.6031053 15.5424083,23.8684211 L15.5424083,26.1578947 L15.5424083,16.2368421 C15.5424083,14.9715263 14.5105731,13.9473684 13.2357722,13.9473684 C11.9609712,13.9473684 10.929136,14.9715263 10.929136,16.2368421 L10.929136,32.2631579 L10.929136,26.1578947 L9.29449984,27.7788421 C7.84747009,29.2166316 6.32816574,31.8815789 6.31586369,33.7894737 C6.30356163,35.7278947 7.82286597,38.4340526 9.29449984,39.8947368 C9.76812913,40.3358421 10.1479552,40.8563158 10.421676,41.4256316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M27.8444678,41.4210526 L27.8444678,40.0427895 C28.8378591,38.5332632 29.3822252,36.7001579 29.3822252,34.7602105 L29.3822252,26.9210526 C29.3822252,25.6557368 28.35039,24.6315789 27.0755891,24.6315789 C25.8007882,24.6315789 24.7689529,25.6557368 24.7689529,26.9210526 L24.7689529,25.3947368 C24.7689529,24.1294211 23.7371177,23.1052632 22.4623168,23.1052632 C21.1875159,23.1052632 20.1556806,24.1294211 20.1556806,25.3947368 L20.1556806,23.8684211 C20.1556806,22.6031053 19.1238454,21.5789474 17.8490445,21.5789474 C16.5742435,21.5789474 15.5424083,22.6031053 15.5424083,23.8684211 L15.5424083,16.2368421 C15.5424083,14.9715263 14.5105731,13.9473684 13.2357722,13.9473684 C11.9609712,13.9473684 10.929136,14.9715263 10.929136,16.2368421 L10.929136,26.1578947 L9.29449984,27.7788421 C7.84747009,29.2166316 6.32816574,31.8815789 6.31586369,33.7894737 C6.30356163,35.7278947 7.82286597,38.4340526 9.29449984,39.8947368 C9.76812913,40.3358421 10.1479552,40.8563158 10.421676,41.4256316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
</svg>PK ! g)�; ; 4 modules/popup/assets/images/triggers/exit_intent.svgnu �[��� <?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#F1F3F5;}
.st1{fill:none;stroke:#A4AFB7;stroke-width:1.6421;stroke-linecap:round;stroke-linejoin:round;}
.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#A4AFB7;}
.st3{fill:none;stroke:#71D7F7;stroke-width:1.6421;stroke-linecap:round;stroke-linejoin:round;}
</style>
<g id="On-Page-Exit-Intent-Copy">
<g id="Group-2" transform="translate(5.000000, 7.000000)">
<polygon id="Rectangle-Copy-7" class="st0" points="36.5,6.9 36.5,33 10.2,33 "/>
<path id="Stroke-14" class="st1" d="M37.2,30.7c0,1.8-1.4,3.2-3.2,3.2H4c-1.7,0-3.2-1.4-3.2-3.2V3.3c0-1.8,1.4-3.2,3.2-3.2h30
c1.7,0,3.2,1.4,3.2,3.2V30.7L37.2,30.7z"/>
<path id="Stroke-16" class="st1" d="M0.8,6.6h36.3"/>
<path id="Fill-18" class="st2" d="M4.8,3.3c0,0.4-0.4,0.8-0.8,0.8S3.2,3.8,3.2,3.3S3.6,2.5,4,2.5S4.8,2.9,4.8,3.3"/>
<path id="Fill-20" class="st2" d="M7.9,3.3c0,0.4-0.4,0.8-0.8,0.8S6.4,3.8,6.4,3.3s0.4-0.8,0.8-0.8S7.9,2.9,7.9,3.3"/>
<path id="Fill-22" class="st2" d="M11.1,3.3c0,0.4-0.4,0.8-0.8,0.8c-0.4,0-0.8-0.4-0.8-0.8s0.4-0.8,0.8-0.8
C10.8,2.5,11.1,2.9,11.1,3.3"/>
<g id="Group" transform="translate(3.000000, 9.000000)">
<path id="Stroke-9-Copy-2" class="st3" d="M1.1,3.1l2.7-2.7"/>
<path id="Stroke-9-Copy" class="st3" d="M1.1,0.5l2.7,2.7"/>
</g>
<g id="Group-79" transform="translate(11.000000, 16.000000)">
<path id="Stroke-822" class="st1" d="M12.7,12.8L0.1,0.2"/>
<polyline id="Stroke-823" class="st1" points="6.4,0.2 0.1,0.2 0.1,6.5 "/>
</g>
</g>
</g>
</svg>
PK ! #\� � 5 modules/popup/assets/images/triggers/scrolling_to.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon fill="#F1F3F5" points="41.5194508 13.8947368 41.5194508 40 15.1578947 40"></polygon>
<g transform="translate(5.052632, 6.315789)">
<path d="M37.1052632,31.3492823 C37.1052632,33.1257416 35.6921053,34.5645933 33.9473684,34.5645933 L3.94736842,34.5645933 C2.20263158,34.5645933 0.789473684,33.1257416 0.789473684,31.3492823 L0.789473684,4.01913876 C0.789473684,2.24267943 2.20263158,0.803827751 3.94736842,0.803827751 L33.9473684,0.803827751 C35.6921053,0.803827751 37.1052632,2.24267943 37.1052632,4.01913876 L37.1052632,31.3492823 L37.1052632,31.3492823 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M0.789473684,7.23444976 L37.1052632,7.23444976" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.73684211,4.01913876 C4.73684211,4.46285167 4.38315789,4.82296651 3.94736842,4.82296651 C3.51157895,4.82296651 3.15789474,4.46285167 3.15789474,4.01913876 C3.15789474,3.57542584 3.51157895,3.215311 3.94736842,3.215311 C4.38315789,3.215311 4.73684211,3.57542584 4.73684211,4.01913876" fill="#A4AFB7"></path>
<path d="M7.89473684,4.01913876 C7.89473684,4.46285167 7.54105263,4.82296651 7.10526316,4.82296651 C6.66947368,4.82296651 6.31578947,4.46285167 6.31578947,4.01913876 C6.31578947,3.57542584 6.66947368,3.215311 7.10526316,3.215311 C7.54105263,3.215311 7.89473684,3.57542584 7.89473684,4.01913876" fill="#A4AFB7"></path>
<path d="M11.0526316,4.01913876 C11.0526316,4.46285167 10.6989474,4.82296651 10.2631579,4.82296651 C9.82736842,4.82296651 9.47368421,4.46285167 9.47368421,4.01913876 C9.47368421,3.57542584 9.82736842,3.215311 10.2631579,3.215311 C10.6989474,3.215311 11.0526316,3.57542584 11.0526316,4.01913876" fill="#A4AFB7"></path>
<polyline stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" points="11.8421053 15.2727273 16.5789474 20.0956938 11.8421053 24.9186603"></polyline>
<path d="M19.7368421,23.3110048 L27.6315789,23.3110048" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
</g>
</svg>PK ! }q�: : 2 modules/popup/assets/images/triggers/scrolling.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M21.5384457,33.1173417 C21.8647967,33.5218169 22.4883799,33.943468 23.4091953,34.382295 C28.4935214,36.8052992 33.1450966,34.723273 34.3050987,33.5822368 C36.2697707,31.649687 37.5449557,27.6240394 38.1306538,21.505294 C39.2211897,29.0517423 38.5032517,33.8998321 35.9768397,36.0495633 C34.7666236,37.0793398 30.220758,38.4559025 26.5808843,37.6373854 C25.0336203,37.2894442 23.3528075,35.782763 21.5384457,33.1173417 Z" fill="#F1F3F5"></path>
<g transform="translate(8.842105, 3.789474)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.64210526">
<g transform="translate(5.052632, 1.263158)">
<path d="M16.570279,20.7631579 L19.8203107,18.6010263 C21.3948603,17.5561974 23.5144463,17.9185658 24.6489294,19.4264211 C25.2323202,20.2014868 25.1778166,21.2805395 24.5217543,21.9952105 L16.3522644,30.8833026 C15.2036507,32.1314605 13.5846907,32.8421053 11.8870033,32.8421053 L8.49566579,32.8421053 C4.03646067,32.8421053 0.421052632,29.2365395 0.421052632,24.7894737 L0.421052632,16.7368421 C0.421052632,15.6255789 1.32540931,14.7236842 2.43970592,14.7236842 C3.55400254,14.7236842 4.45835921,15.6255789 4.45835921,16.7368421 L4.45835921,17.7434211 L4.45835921,14.7236842 C4.45835921,13.6124211 5.36271589,12.7105263 6.4770125,12.7105263 C7.59130912,12.7105263 8.49566579,13.6124211 8.49566579,14.7236842 L8.49566579,17.7434211 L8.49566579,12.7105263 C8.49566579,11.5992632 9.40002247,10.6973684 10.5143191,10.6973684 C11.6286157,10.6973684 12.5329724,11.5992632 12.5329724,12.7105263 L12.5329724,17.7434211 L12.5329724,6.67105263 C12.5329724,5.55978947 13.437329,4.65789474 14.5516257,4.65789474 C15.6659223,4.65789474 16.570279,5.55978947 16.570279,6.67105263 L16.570279,20.7631579" stroke="#A4AFB7" transform="translate(12.736842, 18.750000) scale(-1, 1) translate(-12.736842, -18.750000) "></path>
<path d="M15.8344421,7.83606041 C15.9557053,7.38395973 16.0421053,6.91648146 16.0421053,6.42593684 C16.0421053,3.45345172 13.6668632,1.04378581 10.7368421,1.04378581 C7.80682105,1.04378581 5.43157895,3.45345172 5.43157895,6.42593684 C5.43157895,7.37473318 5.69381053,8.25279268 6.11974737,9.02782243" stroke="#71D7F7"></path>
</g>
<g transform="translate(0.000000, 27.789474)" stroke="#A4AFB7">
<path d="M3.78947368,0.768878719 L3.78947368,13.0709382"></path>
<polyline points="6.82105263 9.99542334 3.78947368 13.0709382 0.757894737 9.99542334"></polyline>
</g>
<g transform="translate(3.789474, 6.947368) scale(1, -1) translate(-3.789474, -6.947368) " stroke="#A4AFB7">
<path d="M3.78947368,0.768878719 L3.78947368,13.0709382"></path>
<polyline points="6.82105263 9.99542334 3.78947368 13.0709382 0.757894737 9.99542334"></polyline>
</g>
</g>
</g>
</svg>PK ! ���C� � . modules/popup/assets/images/triggers/click.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(12.631579, 16.421053)">
<path d="M7.64370888,24.2752364 C7.97005988,24.6797116 8.59364306,25.1013627 9.51445843,25.5401897 C14.5987846,27.9631939 19.2503598,25.8811678 20.4103618,24.7401316 C22.3750338,22.8075817 23.6502188,18.7819341 24.2359169,12.6631887 C25.3264528,20.209637 24.6085148,25.0577268 22.0821029,27.2074581 C20.8718867,28.2372345 16.3260212,29.6137973 12.6861474,28.7952801 C11.1388835,28.4473389 9.45807064,26.9406577 7.64370888,24.2752364 Z" fill="#F1F3F5"></path>
<path d="M16.570279,16.9736842 L19.8203107,14.8115526 C21.3948603,13.7667237 23.5144463,14.1290921 24.6489294,15.6369474 C25.2323202,16.4120132 25.1778166,17.4910658 24.5217543,18.2057368 L16.3522644,27.0938289 C15.2036507,28.3419868 13.5846907,29.0526316 11.8870033,29.0526316 L8.49566579,29.0526316 C4.03646067,29.0526316 0.421052632,25.4470658 0.421052632,21 L0.421052632,12.9473684 C0.421052632,11.8361053 1.32540931,10.9342105 2.43970592,10.9342105 C3.55400254,10.9342105 4.45835921,11.8361053 4.45835921,12.9473684 L4.45835921,13.9539474 L4.45835921,10.9342105 C4.45835921,9.82294737 5.36271589,8.92105263 6.4770125,8.92105263 C7.59130912,8.92105263 8.49566579,9.82294737 8.49566579,10.9342105 L8.49566579,13.9539474 L8.49566579,8.92105263 C8.49566579,7.80978947 9.40002247,6.90789474 10.5143191,6.90789474 C11.6286157,6.90789474 12.5329724,7.80978947 12.5329724,8.92105263 L12.5329724,13.9539474 L12.5329724,2.88157895 C12.5329724,1.77031579 13.437329,0.868421053 14.5516257,0.868421053 C15.6659223,0.868421053 16.570279,1.77031579 16.570279,2.88157895 L16.570279,16.9736842" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(12.736842, 14.960526) scale(-1, 1) translate(-12.736842, -14.960526) "></path>
</g>
<path d="M18.0631579,18.8842105 C18.0631579,15.9190526 20.5135439,13.5157895 23.5368421,13.5157895 C26.5601404,13.5157895 29.0105263,15.9190526 29.0105263,18.8842105" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(23.536842, 16.200000) scale(-1, 1) translate(-23.536842, -16.200000) "></path>
<path d="M21.1578947,2.52631579 L21.1578947,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.526316, 4.539474) scale(-1, 1) translate(-22.526316, -4.539474) "></path>
<path d="M7.57894737,18.6315789 L11.6842105,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(9.631579, 19.973684) scale(-1, 1) translate(-9.631579, -19.973684) "></path>
<path d="M40.4210526,18.6315789 L36.3157895,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(38.368421, 19.973684) scale(-1, 1) translate(-38.368421, -19.973684) "></path>
<path d="M11.6842105,10.5789474 L14.4210526,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(13.052632, 8.565789) scale(-1, 1) translate(-13.052632, -8.565789) "></path>
<path d="M36.3157895,10.5789474 L33.5789474,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(34.947368, 8.565789) scale(-1, 1) translate(-34.947368, -8.565789) "></path>
</g>
</svg>PK ! � �? ? , modules/popup/assets/images/triggers-tab.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M20.2752878,40.6962891 C20.6016388,41.1007643 21.225222,41.5224154 22.1460374,41.9612424 C27.2303635,44.3842466 31.8819387,42.3022204 33.0419408,41.1611842 C35.0066128,39.2286343 36.2817978,35.2029867 36.8674959,29.0842414 C37.9580318,36.6306896 37.2400938,41.4787794 34.7136818,43.6285107 C33.5034657,44.6582871 28.9576001,46.0348499 25.3177264,45.2163328 C23.7704624,44.8683916 22.0896496,43.3617103 20.2752878,40.6962891 Z" fill="#F1F3F5" fill-rule="nonzero"></path>
<path d="M29.2018579,33.3947368 L32.4518897,31.2326053 C34.0264393,30.1877763 36.1460252,30.5501447 37.2805084,32.058 C37.8638992,32.8330658 37.8093955,33.9121184 37.1533332,34.6267895 L28.9838433,43.5148816 C27.8352296,44.7630395 26.2162697,45.4736842 24.5185823,45.4736842 L21.1272447,45.4736842 C16.6680396,45.4736842 13.0526316,41.8681184 13.0526316,37.4210526 L13.0526316,29.3684211 C13.0526316,28.2571579 13.9569883,27.3552632 15.0712849,27.3552632 C16.1855815,27.3552632 17.0899382,28.2571579 17.0899382,29.3684211 L17.0899382,30.375 L17.0899382,27.3552632 C17.0899382,26.244 17.9942948,25.3421053 19.1085914,25.3421053 C20.2228881,25.3421053 21.1272447,26.244 21.1272447,27.3552632 L21.1272447,30.375 L21.1272447,25.3421053 C21.1272447,24.2308421 22.0316014,23.3289474 23.145898,23.3289474 C24.2601946,23.3289474 25.1645513,24.2308421 25.1645513,25.3421053 L25.1645513,30.375 L25.1645513,19.3026316 C25.1645513,18.1913684 26.068908,17.2894737 27.1832046,17.2894737 C28.2975012,17.2894737 29.2018579,18.1913684 29.2018579,19.3026316 L29.2018579,33.3947368" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(25.368421, 31.381579) scale(-1, 1) translate(-25.368421, -31.381579) "></path>
<path d="M18.0631579,18.8842105 C18.0631579,15.9190526 20.5135439,13.5157895 23.5368421,13.5157895 C26.5601404,13.5157895 29.0105263,15.9190526 29.0105263,18.8842105" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(23.536842, 16.200000) scale(-1, 1) translate(-23.536842, -16.200000) "></path>
<path d="M21.1578947,2.52631579 L21.1578947,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.526316, 4.539474) scale(-1, 1) translate(-22.526316, -4.539474) "></path>
<path d="M7.57894737,18.6315789 L11.6842105,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(9.631579, 19.973684) scale(-1, 1) translate(-9.631579, -19.973684) "></path>
<path d="M40.4210526,18.6315789 L36.3157895,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(38.368421, 19.973684) scale(-1, 1) translate(-38.368421, -19.973684) "></path>
<path d="M11.6842105,10.5789474 L14.4210526,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(13.052632, 8.565789) scale(-1, 1) translate(-13.052632, -8.565789) "></path>
<path d="M36.3157895,10.5789474 L33.5789474,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(34.947368, 8.565789) scale(-1, 1) translate(-34.947368, -8.565789) "></path>
</g>
</svg>PK ! ��]�b b . modules/popup/assets/images/timing/sources.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M10.1052632,10.1052632 C10.1052632,10.4538947 9.82231579,10.7368421 9.47368421,10.7368421 C9.12505263,10.7368421 8.84210526,10.4538947 8.84210526,10.1052632 C8.84210526,9.75663158 9.12505263,9.47368421 9.47368421,9.47368421 C9.82231579,9.47368421 10.1052632,9.75663158 10.1052632,10.1052632" fill="#A4AFB7"></path>
<path d="M12.6315789,10.1052632 C12.6315789,10.4538947 12.3486316,10.7368421 12,10.7368421 C11.6513684,10.7368421 11.3684211,10.4538947 11.3684211,10.1052632 C11.3684211,9.75663158 11.6513684,9.47368421 12,9.47368421 C12.3486316,9.47368421 12.6315789,9.75663158 12.6315789,10.1052632" fill="#A4AFB7"></path>
<path d="M15.1578947,10.1052632 C15.1578947,10.4538947 14.8749474,10.7368421 14.5263158,10.7368421 C14.1776842,10.7368421 13.8947368,10.4538947 13.8947368,10.1052632 C13.8947368,9.75663158 14.1776842,9.47368421 14.5263158,9.47368421 C14.8749474,9.47368421 15.1578947,9.75663158 15.1578947,10.1052632" fill="#A4AFB7"></path>
<polygon fill="#F1F3F5" points="37.3894737 12.6315789 37.3894737 26.1408306 26.1058285 26.323088 26.2751336 39.2321111 6.69473684 39.2321111"></polygon>
<path d="M29.7416268,37.5915212 L37.5915212,29.7416268" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(33.666574, 33.666574) scale(-1, 1) translate(-33.666574, -33.666574) "></path>
<polyline stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(31.980861, 31.980861) scale(-1, 1) translate(-31.980861, -31.980861) " points="29.7416268 29.7416268 34.2200957 29.7416268 34.2200957 34.2200957"></polyline>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="26.0842105" y="26.0842105" width="14.7789474" height="14.7789474" rx="1.54385965"></rect>
<path d="M25.5683887,39.1578947 L9.32330827,39.1578947 C7.66165414,39.1578947 6.31578947,37.8120301 6.31578947,36.1503759 L6.31578947,10.5864662 C6.31578947,8.92481203 7.66165414,7.57894737 9.32330827,7.57894737 L34.887218,7.57894737 C36.5488722,7.57894737 37.8947368,8.92481203 37.8947368,10.5864662 L37.8947368,25.4839387" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M6.31578947,12.6315789 L37.8947368,12.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M34.2947368,26.0842105 L26.5263158,26.0842105 C26.2821478,26.0842105 26.0842105,26.2821478 26.0842105,26.5263158 L26.0842105,36.1894737 L10.9894737,36.1894737 C10.3964943,36.1894737 9.91578947,35.7087689 9.91578947,35.1157895 L9.91578947,16.6736842 C9.91578947,16.0807048 10.3964943,15.6 10.9894737,15.6 L33.2210526,15.6 C33.814032,15.6 34.2947368,16.0807048 34.2947368,16.6736842 L34.2947368,26.0842105 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
</g>
</svg>PK ! �m��P P 0 modules/popup/assets/images/timing/logged_in.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="Hide-for-logged-in-users-Copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group-2" transform="translate(5.684211, 8.842105)">
<path d="M17.4166207,30.2731577 L17.4166207,17.0123577 C17.4586316,17.0115729 17.500738,17.0111788 17.5429365,17.0111788 C21.2054564,17.0111788 24.1745154,19.9802378 24.1745154,23.6427577 C24.1745154,27.3052776 21.2054564,30.2743367 17.5429365,30.2743367 C17.500738,30.2743367 17.4586316,30.2739425 17.4166207,30.2731577 Z" id="Combined-Shape" fill="#F1F3F5" fill-rule="nonzero" transform="translate(20.795568, 23.642758) rotate(-319.000000) translate(-20.795568, -23.642758) "></path>
<path d="M22.2315789,4.79317895 C22.2315789,7.30484211 20.1958737,9.34054737 17.6842105,9.34054737 C15.1725474,9.34054737 13.1368421,7.30484211 13.1368421,4.79317895 C13.1368421,2.28151579 15.1725474,0.245810526 17.6842105,0.245810526 C20.1958737,0.245810526 22.2315789,2.28151579 22.2315789,4.79317895 Z" id="Stroke-6293" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M32.3522087,9.34054737 C32.3522087,11.0154947 30.9955771,12.3721263 29.3206297,12.3721263 C27.6456824,12.3721263 26.2890508,11.0154947 26.2890508,9.34054737 C26.2890508,7.6656 27.6456824,6.30896842 29.3206297,6.30896842 C30.9955771,6.30896842 32.3522087,7.6656 32.3522087,9.34054737 Z" id="Stroke-6294" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.10448879,9.34054737 C4.10448879,11.0154947 5.46112037,12.3721263 7.13606773,12.3721263 C8.80949931,12.3721263 10.1676467,11.0154947 10.1676467,9.34054737 C10.1676467,7.6656 8.80949931,6.30896842 7.13606773,6.30896842 C5.46112037,6.30896842 4.10448879,7.6656 4.10448879,9.34054737 Z" id="Stroke-6295" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M8.7696,21.4668632 C8.7696,16.4435368 13.0475314,12.3721263 18.3256641,12.3721263 C23.6037968,12.3721263 27.8817281,16.4435368 27.8817281,21.4668632" id="Stroke-6296" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M26.17613,16.2784674 C27.1381071,15.7236884 28.2673153,15.4038568 29.4745648,15.4038568 C32.992789,15.4038568 35.8452741,18.1186358 35.8452741,21.4670147" id="Stroke-6297" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M10.4751982,16.2784674 C9.51322105,15.7236884 8.38401281,15.4038568 7.17676339,15.4038568 C3.65853913,15.4038568 0.806054005,18.1186358 0.806054005,21.4670147" id="Stroke-6298" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<circle id="Oval" stroke="#A4AFB7" stroke-width="1.64210526" fill-rule="nonzero" cx="18.3789474" cy="21.7894737" r="6.63157895"></circle>
<g id="Group" transform="translate(15.157895, 18.694737)" fill-rule="nonzero" stroke="#71D7F7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.64210526">
<path d="M0.569968357,5.98433388 L5.40776964,0.378947368" id="Path-23"></path>
<path d="M0.569968357,5.98433388 L5.40776964,0.378947368" id="Path-23-Copy" transform="translate(2.988869, 3.181641) scale(-1, 1) translate(-2.988869, -3.181641) "></path>
</g>
</g>
</g>
</svg>PK ! I �� � , modules/popup/assets/images/timing/times.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(3.789474, 6.315789)">
<path d="M33.4317434,7.57894737 L33.4317434,20.5701069 C31.4454047,20.3902772 30.000195,20.4573516 29.0961143,20.7713302 C28.3366647,21.0350797 27.468801,21.6433163 26.4925232,22.5960398 L26.4925256,22.5960423 C26.1200958,22.9594865 25.8265126,23.3957422 25.6300727,23.8776208 C24.8116366,25.8852924 24.3871113,27.4130304 24.3564967,28.4608347 C24.3224188,29.6271726 24.7443452,31.2964777 25.6222759,33.46875 L8.84210526,33.46875 L1.06224301,33.3438528 L33.4317434,7.57894737 Z" fill="#F1F3F5"></path>
<path d="M26.3853824,34.2425629 L3.91578947,34.2425629 C2.18501053,34.2425629 0.783157895,32.8171167 0.783157895,31.0572082 L0.783157895,3.98169336 C0.783157895,2.2217849 2.18501053,0.796338673 3.91578947,0.796338673 L30.5431579,0.796338673 C32.2739368,0.796338673 33.6757895,2.2217849 33.6757895,3.98169336 L33.6757895,20.2136102" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M0.783157895,7.16704805 L33.6757895,7.16704805" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.69894737,3.98169336 C4.69894737,4.42127231 4.34809263,4.77803204 3.91578947,4.77803204 C3.48348632,4.77803204 3.13263158,4.42127231 3.13263158,3.98169336 C3.13263158,3.54211442 3.48348632,3.18535469 3.91578947,3.18535469 C4.34809263,3.18535469 4.69894737,3.54211442 4.69894737,3.98169336" fill="#A4AFB7"></path>
<path d="M7.83157895,3.98169336 C7.83157895,4.42127231 7.48072421,4.77803204 7.04842105,4.77803204 C6.61611789,4.77803204 6.26526316,4.42127231 6.26526316,3.98169336 C6.26526316,3.54211442 6.61611789,3.18535469 7.04842105,3.18535469 C7.48072421,3.18535469 7.83157895,3.54211442 7.83157895,3.98169336" fill="#A4AFB7"></path>
<path d="M10.9642105,3.98169336 C10.9642105,4.42127231 10.6133558,4.77803204 10.1810526,4.77803204 C9.74874947,4.77803204 9.39789474,4.42127231 9.39789474,3.98169336 C9.39789474,3.54211442 9.74874947,3.18535469 10.1810526,3.18535469 C10.6133558,3.18535469 10.9642105,3.54211442 10.9642105,3.98169336" fill="#A4AFB7"></path>
<path d="M34.1365169,26.8708134 C34.1365169,28.1503607 33.1068012,29.187435 31.8363329,29.187435 C30.5658646,29.187435 29.5361489,28.1503607 29.5361489,26.8708134 C29.5361489,25.5912661 30.5658646,24.5541918 31.8363329,24.5541918 C33.1068012,24.5541918 34.1365169,25.5912661 34.1365169,26.8708134 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M27.2359646,34.2998327 C27.2359646,31.7407381 29.295396,29.6665896 31.8363327,29.6665896 C34.3772693,29.6665896 36.4367007,31.7407381 36.4367007,34.2998327" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<ellipse stroke="#A4AFB7" stroke-width="1.64210526" cx="31.8315789" cy="28.173913" rx="7.83157895" ry="7.96338673"></ellipse>
<path d="M30.3157904,20.3595706 C26.7159377,21.07743 24,24.3031628 24,28.173913 C24,28.9159512 24.0998118,29.6342848 24.2865285,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,20.3595706 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
</g>
</g>
</svg>PK ! �u�g� � . modules/popup/assets/images/timing/devices.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M39.7894737,7.57894737 L39.7894737,17.1749075 L33.9867507,17.8006645 C32.7935306,17.9293396 31.8555283,18.8797332 31.7425229,20.0745391 L30.7739001,30.3157895 L13.8947368,30.3157895 L39.7894737,7.57894737 Z" fill="#F1F3F5"></path>
<path d="M43.4054367,22.5173455 L43.4054367,33.8857666 C43.4054367,35.2810123 42.2743666,36.4120824 40.8791209,36.4120824 L31.4054367,36.4120824 L43.4054367,22.5173455 Z" fill="#F1F3F5"></path>
<path d="M5.53846154,25.2845767 L5.53846154,32.1649428 C5.53846154,33.9232586 6.9314332,35.3502975 8.64777328,35.3502975 L36.6315789,35.3502975 C38.347919,35.3502975 39.7408907,33.9232586 39.7408907,32.1649428 L39.7408907,20.5791172 L39.7408907,9.86745995 C39.7408907,8.10914416 38.347919,6.68210526 36.6315789,6.68210526 L15.2496629,6.68210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.639676, 21.016201) scale(-1, -1) translate(-22.639676, -21.016201) "></path>
<path d="M33.5222672,41.7210069 L28.8696862,41.7210069 L21.456794,41.7210069 L11.757085,41.7210069 C11.757085,39.9626911 13.1500567,38.5356522 14.8663968,38.5356522 L23.9963942,38.5356522 L30.4129555,38.5356522" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M5.53846154,30.5722654 L30.3935223,30.5722654" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M21.0850202,38.5356522 L21.0850202,35.3502975" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M24.194332,38.5356522 L24.194332,35.3502975" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M40.8874494,41.6997712 L33.891498,41.6997712 C32.2354563,41.6997712 30.8932331,40.2737941 30.8932331,38.5144165 L30.8932331,20.4640732 C30.8932331,18.7046957 32.2354563,17.2787185 33.891498,17.2787185 L40.8874494,17.2787185 C42.543491,17.2787185 43.8857143,18.7046957 43.8857143,20.4640732 L43.8857143,38.5144165 C43.8857143,40.2737941 42.543491,41.6997712 40.8874494,41.6997712 L40.8874494,41.6997712 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M30.8932331,21.5258581 L43.8857143,21.5258581" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M30.8932331,36.3908467 L43.8857143,36.3908467" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M37.8891845,39.0453089 C37.8891845,39.3383616 37.6653141,39.5762014 37.3894737,39.5762014 C37.1136333,39.5762014 36.8897629,39.3383616 36.8897629,39.0453089 C36.8897629,38.7522563 37.1136333,38.5144165 37.3894737,38.5144165 C37.6653141,38.5144165 37.8891845,38.7522563 37.8891845,39.0453089 L37.8891845,39.0453089 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M23.7362637,32.7782151 C23.7362637,33.0712677 23.5123933,33.3091076 23.2365529,33.3091076 C22.9607126,33.3091076 22.7368421,33.0712677 22.7368421,32.7782151 C22.7368421,32.4851625 22.9607126,32.2473227 23.2365529,32.2473227 C23.5123933,32.2473227 23.7362637,32.4851625 23.7362637,32.7782151 L23.7362637,32.7782151 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M35.8903412,19.4022883 L38.8886061,19.4022883" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M15.2433572,12.1894737 L10.9263158,21.3830128 L10.9263158,24.9824561 C10.9263158,25.3816514 11.2499275,25.7052632 11.6491228,25.7052632 L33.8245614,25.7052632 C34.2237567,25.7052632 34.5473684,25.3816514 34.5473684,24.9824561 L34.5473684,12.9122807 C34.5473684,12.5130854 34.2237567,12.1894737 33.8245614,12.1894737 L15.2433572,12.1894737 Z" stroke="#A4AFB7" stroke-width="1.64210526" transform="translate(22.736842, 18.947368) scale(-1, -1) translate(-22.736842, -18.947368) "></path>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="34.2947368" y="24.8210526" width="5.93684211" height="8.46315789" rx="1.54385965"></rect>
</g>
</svg>PK ! I �� � - modules/popup/assets/images/timing/visits.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(3.789474, 6.315789)">
<path d="M33.4317434,7.57894737 L33.4317434,20.5701069 C31.4454047,20.3902772 30.000195,20.4573516 29.0961143,20.7713302 C28.3366647,21.0350797 27.468801,21.6433163 26.4925232,22.5960398 L26.4925256,22.5960423 C26.1200958,22.9594865 25.8265126,23.3957422 25.6300727,23.8776208 C24.8116366,25.8852924 24.3871113,27.4130304 24.3564967,28.4608347 C24.3224188,29.6271726 24.7443452,31.2964777 25.6222759,33.46875 L8.84210526,33.46875 L1.06224301,33.3438528 L33.4317434,7.57894737 Z" fill="#F1F3F5"></path>
<path d="M26.3853824,34.2425629 L3.91578947,34.2425629 C2.18501053,34.2425629 0.783157895,32.8171167 0.783157895,31.0572082 L0.783157895,3.98169336 C0.783157895,2.2217849 2.18501053,0.796338673 3.91578947,0.796338673 L30.5431579,0.796338673 C32.2739368,0.796338673 33.6757895,2.2217849 33.6757895,3.98169336 L33.6757895,20.2136102" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M0.783157895,7.16704805 L33.6757895,7.16704805" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.69894737,3.98169336 C4.69894737,4.42127231 4.34809263,4.77803204 3.91578947,4.77803204 C3.48348632,4.77803204 3.13263158,4.42127231 3.13263158,3.98169336 C3.13263158,3.54211442 3.48348632,3.18535469 3.91578947,3.18535469 C4.34809263,3.18535469 4.69894737,3.54211442 4.69894737,3.98169336" fill="#A4AFB7"></path>
<path d="M7.83157895,3.98169336 C7.83157895,4.42127231 7.48072421,4.77803204 7.04842105,4.77803204 C6.61611789,4.77803204 6.26526316,4.42127231 6.26526316,3.98169336 C6.26526316,3.54211442 6.61611789,3.18535469 7.04842105,3.18535469 C7.48072421,3.18535469 7.83157895,3.54211442 7.83157895,3.98169336" fill="#A4AFB7"></path>
<path d="M10.9642105,3.98169336 C10.9642105,4.42127231 10.6133558,4.77803204 10.1810526,4.77803204 C9.74874947,4.77803204 9.39789474,4.42127231 9.39789474,3.98169336 C9.39789474,3.54211442 9.74874947,3.18535469 10.1810526,3.18535469 C10.6133558,3.18535469 10.9642105,3.54211442 10.9642105,3.98169336" fill="#A4AFB7"></path>
<path d="M34.1365169,26.8708134 C34.1365169,28.1503607 33.1068012,29.187435 31.8363329,29.187435 C30.5658646,29.187435 29.5361489,28.1503607 29.5361489,26.8708134 C29.5361489,25.5912661 30.5658646,24.5541918 31.8363329,24.5541918 C33.1068012,24.5541918 34.1365169,25.5912661 34.1365169,26.8708134 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M27.2359646,34.2998327 C27.2359646,31.7407381 29.295396,29.6665896 31.8363327,29.6665896 C34.3772693,29.6665896 36.4367007,31.7407381 36.4367007,34.2998327" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<ellipse stroke="#A4AFB7" stroke-width="1.64210526" cx="31.8315789" cy="28.173913" rx="7.83157895" ry="7.96338673"></ellipse>
<path d="M30.3157904,20.3595706 C26.7159377,21.07743 24,24.3031628 24,28.173913 C24,28.9159512 24.0998118,29.6342848 24.2865285,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,20.3595706 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
</g>
</g>
</svg>PK ! �0�� � / modules/popup/assets/images/timing/browsers.svgnu �[��� <svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="34" height="34" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="scale(0.00694444)"/>
</pattern>
<image id="image0" width="144" height="144" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAkKADAAQAAAABAAAAkAAAAAA/PwqIAAAUOklEQVR4Ae1dCZQcxXmu6pk9hC4sBDIStoUwWoGCiR09G4wPFiTtSkZ7IGst7SrIQQQbB2LQgSMHc0dg4YBxYnxg+zlBuxJLZO3sKqvdFWKxHk8WiRJeAkIXVgAdGHTuzn10V75aaUbdPT07PbPdMz0z1e/Nm6rqv6r++vrrqr+q/u4mRBwCAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYFAjhGgVtbX3b1rnC96+tKo4hplZbnFVFaZiw1cPLb8g+rq6lAxtGtEBOruPlhxOvLHbwCIOsLIbEbY+GIAJRdtoJQeZoR2S5Rsaq6v2ZaLOu2oIysCMcZoW0ff7YSyhxD+hB2KlVKZlNA/ULfr/uYFc14rtHZnTCCP57WxPsX3W/Q2txZaYx2ur0Ik8sDS+nlPOFxPjXoZEai9v39M5Ez494Swz2lKERHLEEBv9LOWxtrvWFagzQWZJhCGKqmto9eDnueWlDpR+j7OHQHBgillSvwEAB9PGJ0GHCekgkKSyMrm+nlPpzrvpHTTBGrr6LlDYex5I+VhELYRl/Rwy4K5B43OizQtAkM3Y2ffl5jCnjHuzWmUuqWZhYCnW9s041hvb+/o40HlMf1ZSskJJkm3tdTVbNWfE/HUCOCGU3B2Rztjn4909K4Ejk+CVKqbmZURWVkHmcbUpTjjjGRGjZMh2ohp+sf1spRIty8V5NHDYjreRKm8tLF2HajzrEGm+g2evskG6Y5KMkUghcnJMy4q/aK5oabLUa0pUGUmlF3xd+iV9qjV5z0Sfg3qNCeGVd1mavXWb+45hrH6UrWEu7ysavHXZh9Qp7V29N7HiHIHZeSURKXvLWmo2ak+z8OtXX1XkpiCO45dQSjpnDy+cg1WZWNJch0930faXzJC/kQZXdXSWPNfepliird6eu9iivKcrk1+DG8djEhd5ZeM7Wz64hcdNzlJ2wNhnHbhYk/SNoye1JNnfWfvPMaUpzHUXY2L/iUY3F1dXbsv0OZDSTHlJcxA5kFmOmNk1bGByD16mbbOnibcff+A3wzC2I2Q7zqrh16yeOIuiSXdbGjdaGDUQpiyMfrR4DvrPT3fdhoOaQnk7uu7CA3Ry32kv3SSQq5Vp/FpalA5rlml5o3HHTVTI8cUTT5+junKQsqlrt7eS9T5ii1c4SrzDdcm3EyTicJ+Fu3o6Wvr6p84nGwuz+mJkVR3LFaeJAMS8FmE5pDcZAvGw0g8ETJvkrrad+Jx/s+NRvRQneo06qKb1XEelgjtRFlyIp2SXQtraz9IxIswEGWS30yz0HPfxOTwf27q6dGYFGby2iGTRI5sK1l8S81bkuS6AXbNP+HiPzJqTFn1EGF0BU6+sKKFL5TxFVeQrLalrtajEyGwnV6HDfUVyPwzlcgPyke7a/UypRxHbzQ1FCSGJkKucTG1DmRWqSX1c3dDlv9SHufcGNKusp4zwI3sgpRlF90JSt/Bzfgq2rUcpEHw/AET4S+8yolHkbLqfGruQ5b1QLlXvfhrBGPCLQ21fy0xdhOm+e/qW4yV7Htat7w8TZ+ey7ggUC7RzrKuJY3zXqXUXY8hP6wuAvZQOYvJ31an5TosCJRrxLOsr7l+9v+CQHxtTHNQpiQv8mok7I1oxlWjqtr/vf/jkUioqGdARu12RBqV9i5tqLk6rkv7nj3lkYPvH8dMdlw8jf+DWN2ESb8bdQHpurWmJmmJRS1rdVj0QFYjamF52MvQrH01zZwZAXne01eBxcb52AH4VTCovI/Fxmfau3dcrJexK56WQJVuSTjI24V+mnKxG5aMPYyhVNlApAosNt4bjfjfbvX0VKeSszI9LYFCMcVx+y9WAuDksmBfBJL1Yx8mp2lTQKSJINK21o6e27RnrI+lZPNwVWFKGUNXOjicjDiXIQJYNcVaz8e0uVxJ9gzE3sUakFbMIAYJF8R+hZ7ocEt9bb+BiCVJWREINe+H3+6fWaKBKIT4fKG5/nDwH7ft2KUjkJKeKcAPRvRv4SbbCGKN18LJyphCN+J5vSvnz7/Olhs+7RCmVUjErERgIBD4wqAv0C8zuRfDVdY3JJ4t21w5ilyFkaEjWT92yanI6TXJ6dakCAJZg2NGpQyGwzMGvYF2IrNdGLZuzChzCmG+2YwHFBeCiK/oReBPdXd/f3+lPt2KuCCQFSiaLCMQCEwZ9AZ/TqLyWxhuFpnMZloMPZBSWVG5DEPaaXUm1DXmg4HIHHWaVeFsbSCr6i+Jcrhx7PUHVscUci/Wa0aZsIHP4sLI9PUdWzWLuCCDZhFRD+DC+dVH2jb3/hz1aIYthbKbIGu5C7IgkP4KWBgHcUZ5/cG/gZ3DtyBgIJuyiRMagCxlyJL0MENC4FyAUddodRrWj15BPg2B4Nl5mVrGqrAgkFVIqsoBcVzeQGgZyPMowlNUp+wJKrFp6oLLiPtYhETVSVgjSE9ETQaTEUEgk0CZFRv0+xu8vuAT6D1mmM0zUjmJSIfVZURdSpToHlOAN5Et19qWQtWNKZWw1xu8EUPHk/DR+UKmQ9VIMUK9Z0ZaRrb5BYGyRe5cPp8vcq1ComsVpszP0MRJWzNmVXuqLpv4WbXggaMnn1cUZZk6LZ9hQaAs0Q8Gg5dHZfaIQmJLsfeE5Rd7jlmzZmmMGexvZWaJ26NWolRBoAQU5gJeL1wsaPD7IM9dMJDLzeUqXilBIJPXFmQZ6wuE7lOU4GpMiceYzFb0YoJAaS4x72V8vuCdXl/gQYwdOXPUSqOW5jQe0nsGQ9sjiURZyVnPKAiUQF0bAHEkvz+0eNAffByzqsu1Z/MZo5P1szw8yYt1oDSmkVgHyt1Fg3tFLbYefgjj+DO5q9VcTSB2livK9EJzNWQmJXogFV5wr7gOD18/CfeKr6qSHRWUKB3Aiysy1glrRba8l1rsxuNSeMPhq+BesQnuFX/ACrJjyTPEGkoOZMweZMCFPpJNvnR5SroHgnvFZTGZPcii8u0gDl5j4/wDQ1hS9+NibDmRXNsS2rvZVDnKdiTiCCCTbnNDfTb7cEkSCNcA7hXB78G94rsAthLT8uwRdEJOFz2xpL4msR+Gl3jBeez8y03sVLGkCATicPeKe+BewV0dbDEq7bxYTiy7JAgE4rjhXvFNkOcRhDENFodVCBQ9gbyBwK1wr1gLG6fKKtBEOecRKFoCwb2iGm6cTyoy+/z55oqQ1QgUHYH8/shnY2zIvaI23eKs1WCWYnlFQ6BQKDQtHFMek1lsCYhjm3tFKZJkuDYXPIF8PjZJpsEHIjHlW5iOlxX4hHy4a+XIcwVLIMymxmI6vlomwRV4kcBoJxJHwZPJ4Qjc22NR3VITO4UFzEM4/xEl7DTCA/5ggC/0/a2GJYxUtm7u+3N1Gh7XmaCO87Ci0MvVcooifzJXXXDBEQjEKccO+V1wr3gA2E3UXRk9tnmJH/3wOHn38FFyZsALbhtSm5MgiQh6ZTFzvAILgm9o0g2Kg9yP1QuHQ59y0WSyL1IwBAJxpEF/qAXkeRSkmWqAo30omSz5xOkz5O0Dh8iAd9h3hpssrTDECoJAA/7Q1+Be8QSM42ucCivvdd54c69zJ342vY7H0QQaDASux5bOD5kif9mJPU6czH5/gPzPnv3OJQ8UhRvIS3F9rfx3JIHgXnE1i8hrmczqrWysXWUdePcwvg+X9PUHvpYgs7MvCz8GOyVZIEuF8PKECXjvOPdM5E9svIdfkq8Pf5AQb+WYgt8g3vb/E7y541+yrG7YbI4iENwrPhFT2MNwr1gGwAvCvYKj++Hxk0kg45muFyvLK1bxlx0knSyiBEcQCAbyBGx0roF7xd2YtMAVwckDlvbqR6MxTNO1rjb4ZsgZd92cloX84zIOP1YdjF6vyLG78fXJsEsiT62bXrE3E5Xz6pEI4lww6AuuwXrOIYRX4WfLS5AyASRTWTyRmpQF3007avShmSTBPCes2hduUmLyDty0zWjHX8Vk5bU1B1lGT57khUAgitvr99+JmdU7AHstcNS92y/PyJZA9UPkYawVpkJiFEK/PyGsRG7KpPmJzJlkylYWxKF4xurrcK94HMpOz7YckW9kCBiRJ1GiRLlRbvpI2wO5K2TNs9lDJWPPyXQN5wRBnJuxCPgfCmHtYL0gT6YAWiQ/HHlg+P/66SvLd2VSVVoCNd588ylMRyPaQulk3pto04xjcK/43IDP3ysz5WWsIM8ylhKpuUBgxb7wImytaIatRL2UvDCuquLORNxkIC2BwEo+JdJMRdGDjNno6bt+uDrgXnHFgC+wAe4VuzGpmjucrDhnPwKcPLiB29Q2T6JWkGd8VeU3H8ZLOhNpJgNpCcTLAYm268uD1b4WvVBSfu5eMeAN/BTuFVjXZ4vN9lT68kXcOgTsIg/XMIkARmqDtZv06eiWvrrB03d/PB1EGTfg9T8G94o/Yh3nO4hnbCfFyxL/1iFgJ3m4lqYI1Fxfuw3L51q3AmTGFPzxNk/vulNnBlfDvQLEIQ8gUfPGUF6JOPKDgN3k4a0yRSAMYQrGsZV6GNALufC6tdW/f/2/17139E8TA6Ew+MNNJnHkG4HhyIPOYH22No++XaZmUvFM6/k7aBh7MB43+udGN35Gp4oyjTdVlhVNg9H+PfhYbtbfvhgpUOnIM66qclk2BrORXhktJC5tqH2o1bN1ClbvlxsVxtO40Sx6oVTo2J+eS/Lw1pgawtTNbqmfd4dE6H24y7Q7iGohEc4LArkmD29kxgTimZoba3/scrs+AxJtwk8YPRyULI7794WqVuwPrVi5P9zAe+4sikhkWfl26Lvo+zcYrfNwm8fKYStRKQIjUpoX1N7Ze3lUURagqOUAQftGL0qxDWLPi43Ujchn+OyHBrUfQDFjA63eF70hRuTtGPMrhvSn1DO+qqIJtolu1T9961bujTytUOVelJV0Pe0kD9csqcL06hpLtHX1zlD44qHqQOERSXJft6R+TtISgEqsoINGn0U3Q6D79oVewgX/urrxIOOWcTMqFmZConySh+ue1RCmbnQ83LygZh/4qCEQxrZyWZFb23fuTP76cDxjif5jppG0SY3h55bBfeFND5t8//Rw5JEk6UW7hi31JbOMQEOFSuQZdeFnw+yqyEeD3a1bXp6WfK6EU9yup9BTJfsymyTRcOSBB/3esdPLm62aqg93lSwlUHldzW8w5r6ZVCH/rGM0+lbr5p4fbOzejoflxAG3iTdcLlKfDYmGJQ8lh45Mr7gmF+ThV9EyGyhOibbOnpl4ZHcnduBTflkPlcqw9xQisSDG/YF43kL8BwEkrMZPUetuxgaKy68+GJory8SDCUiSO6+RTZSWPFWV018axhcb9Uibt2//2K2zZyc/CRBXKoN/ywnE697Y1TdXjskdsIFK0vbJhEAcL7MkGil58A35atzYG0CiSRgpdpe5yhuaFtx8lOuQ7WHpEBZXYvGCuX2Yfd0Adr4XTxP/qRF46srKvnTD2Yr9kZ+kmqpjHDl0JE3Pw2sHcV7g5DkbJrOicnRtaq3MnbGFQLxqPnUvG+O+FnfjWkKp35w6pSuVjkR4Ovceo3Ues+Rp795xMXofzVALSmm+RZYN+rYRiCvTNGfOADYV/15yVUx1SdJyNHYzkjP2esumYYWYZzgSGbbHZM8zlJfJBg9q4pnVER4ZbaZmW1fzguoTyPsb/sOO/lbcSbWaspj0i/FlF63QpBVIJMj8kyJy4JBV6nISwSaql2VqaFgn6smEPIlM1gdyQiCN2pT8Dl2plkBU+dYAO+lZWlezVSNbABGsRAetfqd3WhI5hDz88oy4C8v0Gk8ou/BFGNfH9fmoovzrBs/WOn16qcbjwxnsR1mDgYPIw/XKOYHmz79ukEjSQxpQEIEj40RZIZ7Wjq3tbZ6XtZuyeuESiQ+RyO2ai6t0GMtNPuC2xcxsK5fw5H4IQ+vK6ub+MurpuQWkma9vLNIWYZto0frNPSfhKXIU8bBexknxaDRsK4Y/+nTZK2jvJ53UZrUutjZeXZE6zF880N7f/43oQIg/2J9iKskuwrmL1PmcGMa6ipFaE40SizEt50NYHMSm6mpf2fjKr2Bq/2/xtGL5B6fGFktb0rUjbwTiinESLW2Ytwh7PrfBWPy/dMoW0PmMncIKqG0aVfNKoLgmLY21L8y4bGIVlrWakLYee7wfYAXbcGyI53HyP/aZPnSyflbqlhcbyKgBs2bN4g5W/EWQQy+D7O/vdx/3KZMUF39jmXMPeBVMlCPhXToNS+aBA8cQSHcBSHV1Nb8II9op1pdpRxwLiX7tQo0dtTi3TEcMYc6FJ71mMXynQC8F11Rb3GT09WQSd7nCtugkCJTJVTCQdX/60tNIVtSnMCmYvr5j2zXqtHyH8dT5wiQdGON7lCM6bGHliDQqwMxY9IQbL9M+ykyJFw95P89ctB8vbD4mxyQNyXLSTLdSjqnIVEUmeGEsX6DV9owg+rOYwNw7El0cawONpFG5zosJ4/NY+3lWUy/WgjCUrYDz7oqzFnUeLCVUHB9fDdY7FUZdv9bonEVEDGFZgKbPMnl85XNYx3pdn+7kuCTRHy1tmJP8AESGSgsCZQiYkTifMZZXYl+PEv103kg8/2mUPLekroZ/+nzEh7CBRgzh+QJgY0htnX1L8AW4RzF0TDt/xiEhSl91S641i+vmWEZ0QSAbru3u3bvL9h87MR8G7JfxVtRPwVi9MB9Te9TLza+TMIT24Ws925c01Oy0obmiSIGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYFAPhH4fz6oDd9HdKX/AAAAAElFTkSuQmCC"/>
</defs>
</svg>
PK ! ��Ј � 1 modules/popup/assets/images/timing/page_views.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->
<title>After X page views Copy</title>
<desc>Created with Sketch.</desc>
<g id="After-X-page-views-Copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Group" transform="translate(5.052632, 7.578947)">
<path d="M30.7894737,3.78947368 C32.5342105,3.78947368 33.9473684,5.14610526 33.9473684,6.82105263 L33.9473684,16.4639186" id="Stroke-1029" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M24.1677632,26.5263158 L7.10526316,26.5263158 C5.36052632,26.5263158 3.94736842,25.1696842 3.94736842,23.4947368" id="Stroke-1029-Copy" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M25.5400905,29.5578947 L10.2631579,29.5578947 C8.51842105,29.5578947 7.10526316,28.2012632 7.10526316,26.5263158" id="Stroke-1031" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M33.9473684,6.82105263 C35.6921053,6.82105263 37.1052632,8.17768421 37.1052632,9.85263158 L37.1052632,18.1301398" id="Stroke-1031-Copy" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M33.9473684,9.85263158 L30.7894737,9.85263158" id="Stroke-1033" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M37.1052632,12.8842105 L33.9473684,12.8842105" id="Stroke-1035" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M31.0028783,7.09786184 L31.0961181,16.7097039 L26.9511032,18.2432286 C26.2899982,18.4878166 25.7102175,18.9119527 25.2769314,19.4679619 L22.5416324,22.9780016 L1.3541324,22.9780016 L31.0028783,7.09786184 Z" id="Rectangle" fill="#F1F3F5" fill-rule="nonzero"></path>
<path d="M23.9015589,23.4947368 L3.94736842,23.4947368 C2.20263158,23.4947368 0.789473684,22.1381053 0.789473684,20.4631579 L0.789473684,3.78947368 C0.789473684,2.11452632 2.20263158,0.757894737 3.94736842,0.757894737 L27.6315789,0.757894737 C29.3763158,0.757894737 30.7894737,2.11452632 30.7894737,3.78947368 L30.7894737,16.2588405" id="Stroke-1019" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<ellipse id="Oval-Copy-4" stroke="#A4AFB7" stroke-width="1.64210526" fill-rule="nonzero" cx="31.8315789" cy="24.3734554" rx="7.83157895" ry="7.96338673"></ellipse>
<path d="M0.789473684,6.82105263 L30.7894737,6.82105263" id="Stroke-1021" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.73684211,3.78947368 C4.73684211,4.20783158 4.38315789,4.54736842 3.94736842,4.54736842 C3.51157895,4.54736842 3.15789474,4.20783158 3.15789474,3.78947368 C3.15789474,3.37111579 3.51157895,3.03157895 3.94736842,3.03157895 C4.38315789,3.03157895 4.73684211,3.37111579 4.73684211,3.78947368" id="Fill-1023" fill="#A4AFB7"></path>
<path d="M7.89473684,3.78947368 C7.89473684,4.20783158 7.54105263,4.54736842 7.10526316,4.54736842 C6.66947368,4.54736842 6.31578947,4.20783158 6.31578947,3.78947368 C6.31578947,3.37111579 6.66947368,3.03157895 7.10526316,3.03157895 C7.54105263,3.03157895 7.89473684,3.37111579 7.89473684,3.78947368" id="Fill-1025" fill="#A4AFB7"></path>
<path d="M11.0526316,3.78947368 C11.0526316,4.20783158 10.6989474,4.54736842 10.2631579,4.54736842 C9.82736842,4.54736842 9.47368421,4.20783158 9.47368421,3.78947368 C9.47368421,3.37111579 9.82736842,3.03157895 10.2631579,3.03157895 C10.6989474,3.03157895 11.0526316,3.37111579 11.0526316,3.78947368" id="Fill-1027" fill="#A4AFB7"></path>
<path d="M34.0984786,27.2097039 C34.0984786,27.4798533 34.0475951,27.7333459 33.9458265,27.9701891 C33.8440579,28.2070324 33.7043594,28.4142672 33.526727,28.5918997 C33.3490945,28.7695321 33.1418597,28.9092306 32.9050164,29.0109992 C32.6681732,29.1127678 32.4146806,29.1636513 32.1445312,29.1636513 L31.8059211,29.1636513 C31.5357717,29.1636513 31.281354,29.1127678 31.0426604,29.0109992 C30.8039667,28.9092306 30.5958068,28.7695321 30.4181743,28.5918997 C30.2405419,28.4142672 30.1008434,28.2070324 29.9990748,27.9701891 C29.8973062,27.7333459 29.8464227,27.4798533 29.8464227,27.2097039 L29.8464227,27.0043174 L30.5625,26.8932977 L30.5625,27.2097039 C30.5625,27.3873364 30.5958056,27.5529392 30.6624178,27.7065173 C30.7290299,27.8600953 30.8206203,27.995168 30.9371916,28.1117393 C31.0537629,28.2283106 31.1888356,28.319901 31.3424137,28.3865132 C31.4959917,28.4531253 31.6615945,28.4864309 31.839227,28.4864309 L32.1112253,28.4864309 C32.2888578,28.4864309 32.4544606,28.4531253 32.6080387,28.3865132 C32.7616167,28.319901 32.8957642,28.2283106 33.0104852,28.1117393 C33.1252062,27.995168 33.2158714,27.8600953 33.2824836,27.7065173 C33.3490957,27.5529392 33.3824013,27.3873364 33.3824013,27.2097039 L33.3824013,26.5491365 C33.3824013,26.371504 33.3490957,26.2059013 33.2824836,26.0523232 C33.2158714,25.8987451 33.1252062,25.7645976 33.0104852,25.6498766 C32.8957642,25.5351557 32.7616167,25.4444905 32.6080387,25.3778783 C32.4544606,25.3112661 32.2888578,25.2779605 32.1112253,25.2779605 L31.5783306,25.2779605 L31.5783306,24.5951891 L32.1112253,24.5951891 C32.2888578,24.5951891 32.4544606,24.5618836 32.6080387,24.4952714 C32.7616167,24.4286592 32.8957642,24.337994 33.0104852,24.223273 C33.1252062,24.1085521 33.2158714,23.9744046 33.2824836,23.8208265 C33.3490957,23.6672484 33.3824013,23.5016456 33.3824013,23.3240132 L33.3824013,22.9354441 C33.3824013,22.7578116 33.3490957,22.5922088 33.2824836,22.4386308 C33.2158714,22.2850527 33.1252062,22.1509052 33.0104852,22.0361842 C32.8957642,21.9214632 32.7616167,21.830798 32.6080387,21.7641859 C32.4544606,21.6975737 32.2888578,21.6642681 32.1112253,21.6642681 L31.839227,21.6642681 C31.6615945,21.6642681 31.4959917,21.6975737 31.3424137,21.7641859 C31.1888356,21.830798 31.0537629,21.9214632 30.9371916,22.0361842 C30.8206203,22.1509052 30.7290299,22.2850527 30.6624178,22.4386308 C30.5958056,22.5922088 30.5625,22.7578116 30.5625,22.9354441 L30.5625,23.2574013 L29.8464227,23.1408306 L29.8464227,22.9354441 C29.8464227,22.6652947 29.8973062,22.4118022 29.9990748,22.1749589 C30.1008434,21.9381156 30.2405419,21.7308808 30.4181743,21.5532484 C30.5958068,21.3756159 30.8039667,21.2359174 31.0426604,21.1341488 C31.281354,21.0323802 31.5357717,20.9814967 31.8059211,20.9814967 L32.1445312,20.9814967 C32.4146806,20.9814967 32.6681732,21.0323802 32.9050164,21.1341488 C33.1418597,21.2359174 33.3490945,21.3756159 33.526727,21.5532484 C33.7043594,21.7308808 33.8440579,21.9381156 33.9458265,22.1749589 C34.0475951,22.4118022 34.0984786,22.6652947 34.0984786,22.9354441 L34.0984786,23.2074424 C34.0984786,23.3961769 34.0734994,23.5765822 34.0235403,23.7486637 C33.9735812,23.9207451 33.9032694,24.080797 33.8126028,24.228824 C33.7219362,24.3768511 33.6136931,24.5109986 33.4878701,24.6312706 C33.3620471,24.7515425 33.2214235,24.8542348 33.0659951,24.9393503 C33.2214235,25.0207652 33.3620471,25.1216071 33.4878701,25.2418791 C33.6136931,25.3621511 33.7219362,25.4962986 33.8126028,25.6443257 C33.9032694,25.7923527 33.9735812,25.9524046 34.0235403,26.124486 C34.0734994,26.2965675 34.0984786,26.4769727 34.0984786,26.6657072 L34.0984786,27.2097039 Z" id="3" stroke="#71D7F7" stroke-width="0.884210526" fill="#71D7F7" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
</g>
</svg>PK ! ,���� � * modules/popup/assets/images/timing/url.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M40.5473684,12.5697941 L40.5473684,28.9908467 C40.5473684,31.0837152 38.8507633,32.7803204 36.7578947,32.7803204 L17.1789474,32.7803204 L40.5473684,12.5697941 Z" fill="#F1F3F5"></path>
<g transform="translate(3.789474, 5.052632)">
<path d="M4.73684211,3.94736842 C4.73684211,4.38315789 4.38315789,4.73684211 3.94736842,4.73684211 C3.51157895,4.73684211 3.15789474,4.38315789 3.15789474,3.94736842 C3.15789474,3.51157895 3.51157895,3.15789474 3.94736842,3.15789474 C4.38315789,3.15789474 4.73684211,3.51157895 4.73684211,3.94736842" fill="#A4AFB7"></path>
<path d="M7.89473684,3.94736842 C7.89473684,4.38315789 7.54105263,4.73684211 7.10526316,4.73684211 C6.66947368,4.73684211 6.31578947,4.38315789 6.31578947,3.94736842 C6.31578947,3.51157895 6.66947368,3.15789474 7.10526316,3.15789474 C7.54105263,3.15789474 7.89473684,3.51157895 7.89473684,3.94736842" fill="#A4AFB7"></path>
<path d="M11.0526316,3.94736842 C11.0526316,4.38315789 10.6989474,4.73684211 10.2631579,4.73684211 C9.82736842,4.73684211 9.47368421,4.38315789 9.47368421,3.94736842 C9.47368421,3.51157895 9.82736842,3.15789474 10.2631579,3.15789474 C10.6989474,3.15789474 11.0526316,3.51157895 11.0526316,3.94736842" fill="#A4AFB7"></path>
<path d="M16.5789474,27.6315789 L33.9473684,27.6315789 C35.6921053,27.6315789 37.1052632,26.2184211 37.1052632,24.4736842 L37.1052632,3.94736842 C37.1052632,2.20263158 35.6921053,0.789473684 33.9473684,0.789473684 L3.94736842,0.789473684 C2.20263158,0.789473684 0.789473684,2.20263158 0.789473684,3.94736842 L0.789473684,24.4736842 C0.789473684,26.2184211 2.20263158,27.6315789 3.94736842,27.6315789 L7.10526316,27.6315789 L16.5789474,27.6315789 L16.5789474,27.6315789 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M0.789473684,7.10526316 L37.1052632,7.10526316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<polygon stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(33.315789, 35.526316) scale(-1, 1) translate(-33.315789, -35.526316) " points="27 37.1052632 39.6315789 37.1052632 39.6315789 33.9473684 27 33.9473684"></polygon>
<path d="M19.1052632,30.7894737 L31.7368421,18.1578947" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(25.421053, 24.473684) scale(-1, 1) translate(-25.421053, -24.473684) "></path>
<polyline stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.263158, 21.315789) scale(-1, 1) translate(-22.263158, -21.315789) " points="19.1052632 18.1578947 25.4210526 18.1578947 25.4210526 24.4736842"></polyline>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="7.13684211" width="14.7789474" height="8.46315789" rx="1.54385965"></rect>
</g>
</g>
</svg>PK ! �]�S / modules/popup/assets/images/timing/sessions.svgnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(6.315789, 6.315789)">
<polygon fill="#F1F3F5" points="34.6949013 7.57894737 34.6949013 21.2039428 34.6199225 34.7319079 9.14569952 34.7319079 1.06224301 34.600917"></polygon>
<g transform="translate(0.000000, 1.894737)">
<path d="M0.783157895,4.64073227 L33.6757895,4.64073227" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
<path d="M4.69894737,1.45537757 C4.69894737,1.89495652 4.34809263,2.25171625 3.91578947,2.25171625 C3.48348632,2.25171625 3.13263158,1.89495652 3.13263158,1.45537757 C3.13263158,1.01579863 3.48348632,0.659038902 3.91578947,0.659038902 C4.34809263,0.659038902 4.69894737,1.01579863 4.69894737,1.45537757" fill="#A4AFB7"></path>
<path d="M7.83157895,1.45537757 C7.83157895,1.89495652 7.48072421,2.25171625 7.04842105,2.25171625 C6.61611789,2.25171625 6.26526316,1.89495652 6.26526316,1.45537757 C6.26526316,1.01579863 6.61611789,0.659038902 7.04842105,0.659038902 C7.48072421,0.659038902 7.83157895,1.01579863 7.83157895,1.45537757" fill="#A4AFB7"></path>
<path d="M10.9642105,1.45537757 C10.9642105,1.89495652 10.6133558,2.25171625 10.1810526,2.25171625 C9.74874947,2.25171625 9.39789474,1.89495652 9.39789474,1.45537757 C9.39789474,1.01579863 9.74874947,0.659038902 10.1810526,0.659038902 C10.6133558,0.659038902 10.9642105,1.01579863 10.9642105,1.45537757" fill="#A4AFB7"></path>
</g>
<path d="M4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,30.0631579 C30.3157904,30.2026825 30.2026834,30.3157895 30.0631588,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
<g transform="translate(10.736842, 15.157895)" stroke="#71D7F7" stroke-linecap="round" stroke-width="1.64210526">
<path d="M13.8947368,7.51225891 C13.8947368,7.51225891 10.6720954,11.5928763 7.15648653,11.5928763 C3.64087768,11.5928763 0.418236226,7.51225891 0.418236226,7.51225891 C0.418236226,7.51225891 3.64087768,3.43164149 7.15648653,3.43164149 C11.2580302,3.43164149 13.8947368,7.51225891 13.8947368,7.51225891 Z" stroke-linejoin="round"></path>
<path d="M9.7644291,6.40705234 C9.7644291,8.05032926 8.52479407,9.3824632 6.9956208,9.3824632 C5.46644752,9.3824632 4.22681249,8.05032926 4.22681249,6.40705234 C4.22681249,4.76377543 5.46644752,3.43164149 6.9956208,3.43164149 C8.52479407,3.43164149 9.7644291,4.76377543 9.7644291,6.40705234 Z" stroke-linejoin="round"></path>
<path d="M6.01776171,6.39250865 C6.01776171,5.94917985 6.36191258,5.39213647 6.70606345,5.39213647" stroke-linejoin="round"></path>
<path d="M4.93900502,1.17642338 L5.61541758,3.26256795" transform="translate(5.277211, 2.219496) rotate(10.000000) translate(-5.277211, -2.219496) "></path>
<path d="M10.7605478,2.14111291 L11.9318492,3.69631077" transform="translate(11.346198, 2.918712) scale(-1, 1) rotate(10.000000) translate(-11.346198, -2.918712) "></path>
<path d="M8.41251985,0.623095916 L8.43887134,2.84424076" transform="translate(8.425696, 1.733668) rotate(10.000000) translate(-8.425696, -1.733668) "></path>
<path d="M2.37802785,2.45370182 L2.24270012,4.60849176" transform="translate(2.310364, 3.531097) scale(-1, 1) rotate(-329.000000) translate(-2.310364, -3.531097) "></path>
</g>
<rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.189473684" y="-2.18491891e-13" width="34.3578947" height="34.7115789" rx="3.78947368"></rect>
</g>
</g>
</svg>PK ! AU��� � * modules/popup/assets/images/timing-tab.svgnu �[��� <?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
.st0{fill:#F1F3F5;}
.st1{fill:none;stroke:#71D7F7;stroke-width:1.64;stroke-linecap:round;stroke-linejoin:round;}
.st2{fill:none;stroke:#A4AFB7;stroke-width:1.64;stroke-linecap:round;stroke-linejoin:round;}
</style>
<g>
<path class="st0" d="M27.2,14l2.2,0.8c0.7-0.8,1.7-1.2,3-1.3s2.5,1.8,3.7,5.8L33,21.8c2.9-1.5,2.8-1-0.3,1.4
c-1.8,1.4-6.8,0.6-10,5.2c-1,1.4,1.2,8.2-0.1,9.3c-0.6,0.5-2.6-0.5-3.2,0c-0.4,0.3-0.8-1.1-1.1-4.2l-1.6-0.8l2.2-3.8l3.5,0.8
c1.1-1.7,2.1-2.9,2.8-3.6s2-1.7,3.6-2.8c-0.5-1.3-0.9-2.3-1.3-3s-1.1-1.6-2.1-2.8L27.2,14z"/>
<polygon class="st1" points="30.8,34.7 27.8,36.4 28.5,33 26.1,30.6 29.1,30.2 30.8,27.1 32.4,30.2
35.4,30.6 33.1,33 33.7,36.4 "/>
<path class="st2" d="M22.2,32c0-4.7,3.8-8.6,8.6-8.6s8.6,3.8,8.6,8.6s-3.8,8.6-8.6,8.6S22.2,36.8,22.2,32L22.2,32z
"/>
<path class="st2" d="M22.5,29.8c-0.1,0-0.1,0-0.2,0c-3.6,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6s6.6,3,6.6,6.6
c0,0.1,0,0.4,0,0.5c0.8-0.2,1.9-0.3,2.8-0.2c0.7,0,1.1,0.2,1.6,0.3c0-0.1,0-0.1,0-0.1c0-0.5-0.1-1.4-0.1-1.9l3.1-2.4
c0.3-0.2,0.3-0.6,0.2-0.9l-2.9-5c-0.2-0.3-0.6-0.4-0.9-0.3l-3.6,1.5c-0.8-0.6-1.6-1.1-2.5-1.4l-0.6-3.8c0-0.3-0.3-0.6-0.7-0.6h-5.8
c-0.4,0-0.7,0.3-0.7,0.6L18,13.1c-0.9,0.4-1.7,0.9-2.5,1.4L12,13.1c-0.3-0.1-0.7,0-0.9,0.3l-2.9,5c-0.2,0.3-0.1,0.7,0.2,0.9
l3.1,2.4c-0.1,0.5-0.1,0.9-0.1,1.4s0,1,0.1,1.4L8.3,27c-0.3,0.2-0.3,0.6-0.2,0.9l2.9,5c0.2,0.3,0.6,0.4,0.9,0.3l3.6-1.5
c0.8,0.6,1.6,1.1,2.5,1.4l0.6,3.8c0,0.3,0.3,0.6,0.7,0.6h4.6c-1-1.5-1.7-3.3-1.7-5.3C22.2,31.5,22.2,30.6,22.5,29.8z"/>
</g>
</svg>PK ! �#v '