Файловый менеджер - Редактировать - /var/www/xthruster/html/wp-content/uploads/flags/popup.tar
Назад
module.php 0000644 00000017175 14720517420 0006557 0 ustar 00 <?php namespace ElementorPro\Modules\Popup; use Elementor\Core\Admin\Menu\Admin_Menu_Manager; use Elementor\Core\Admin\Menu\Main as MainMenu; use Elementor\Core\Base\Document as DocumentBase; 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\Core\Behaviors\Feature_Lock; use ElementorPro\Core\Utils; use ElementorPro\License\API; use ElementorPro\Modules\Popup\AdminMenuItems\Popups_Menu_Item; use ElementorPro\Modules\Popup\AdminMenuItems\Popups_Promotion_Menu_Item; 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'; const PROMOTION_MENU_SLUG = 'e-popups'; private $has_popups = null; public function __construct() { parent::__construct(); if ( $this->can_use_popups() ) { add_action( 'elementor/documents/register', [ $this, 'register_documents' ] ); add_action( 'elementor/theme/register_locations', [ $this, 'register_location' ] ); add_action( 'elementor/dynamic_tags/register', [ $this, 'register_tag' ] ); add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] ); add_action( 'wp_footer', [ $this, 'print_popups' ] ); add_action( 'elementor_pro/init', [ $this, 'add_form_action' ] ); } else { add_action( 'load-post.php', [ $this, 'disable_editing' ] ); add_action( 'admin_init', [ $this, 'maybe_redirect_to_promotion_page' ] ); } if ( Plugin::elementor()->experiments->is_feature_active( 'admin_menu_rearrangement' ) ) { add_action( 'elementor/admin/menu_registered/elementor', function( MainMenu $menu ) { $this->register_admin_menu( $menu ); } ); } else { add_action( 'elementor/admin/menu/register', function( Admin_Menu_Manager $admin_menu_manager ) { if ( $this->can_use_popups() ) { $admin_menu_manager->register( $this->get_admin_url( true ), new Popups_Menu_Item() ); } else { $admin_menu_manager->register( static::PROMOTION_MENU_SLUG, new Popups_Promotion_Menu_Item() ); } } ); // TODO: BC - Remove in the future. add_action( 'admin_menu', function() { $this->register_admin_menu_legacy(); }, 21 /* After `Admin_Menu_Manager` */ ); } add_filter( 'elementor/finder/categories', [ $this, 'add_finder_items' ] ); add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'localize_settings' ] ); } public function disable_editing() { $post_id = Utils::_unstable_get_super_global_value( $_GET, 'post' ); if ( ! $post_id ) { return; } $document = Plugin::elementor()->documents->get( $post_id ); if ( ! $document ) { return; } $template_type = $document->get_main_meta( DocumentBase::TYPE_META_KEY ); if ( static::DOCUMENT_TYPE === $template_type ) { $error = new \WP_Error( 'e_popups_editing_disabled', esc_html__( 'Invalid post type.', 'elementor-pro' ) ); wp_die( $error ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } public function maybe_redirect_to_promotion_page() { if ( $this->is_on_popups_admin_page() ) { wp_redirect( $this->get_promotion_url() ); exit(); } } private function is_on_popups_admin_page() { global $pagenow; return isset( $pagenow ) && 'edit.php' === $pagenow && Source_Local::CPT === Utils::_unstable_get_super_global_value( $_GET, 'post_type' ) && static::DOCUMENT_TYPE === Utils::_unstable_get_super_global_value( $_GET, Source_Local::TAXONOMY_TYPE_SLUG ); } private function get_promotion_url() { return add_query_arg( [ 'page' => static::PROMOTION_MENU_SLUG, ], Source_Local::ADMIN_MENU_SLUG ); } 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 ) { $tag = __NAMESPACE__ . '\Tag'; $dynamic_tags->register( new $tag() ); } public function register_ajax_actions( Ajax $ajax ) { $ajax->register_ajax_action( 'pro_popup_save_display_settings', [ $this, 'save_display_settings' ] ); } /** * @throws \Exception */ public function save_display_settings( $data ) { $document = Utils::_unstable_get_document_for_edit( $data['editor_post_id'] ); /** @var Document $document */ $document->save_display_settings_data( $data['settings'] ); } /** * Add New item to admin menu. * * @since 3.6.0 * @access private */ private function register_admin_menu( MainMenu $menu ) { $menu->add_submenu( [ 'menu_title' => esc_html__( 'Popups', 'elementor-pro' ), 'menu_slug' => $this->get_admin_url( true ), 'index' => 10, ] ); } /** * Add New item to admin menu. * * Fired by `admin_menu` action. * * @since 3.6.0 * @access private */ private function register_admin_menu_legacy() { if ( did_action( 'elementor/admin/menu/register' ) ) { return; } 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' ], ]; if ( ! $this->can_use_popups() ) { $lock = new Feature_Lock( [ 'type' => 'popup' ] ); $categories['general']['items']['popups']['lock'] = $lock->get_config(); } 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 ); } private function can_use_popups() { return ( API::is_license_active() && API::is_licence_has_feature( static::DOCUMENT_TYPE, API::BC_VALIDATION_CALLBACK ) ) || $this->has_popups(); } private function has_popups() { if ( null !== $this->has_popups ) { return $this->has_popups; } $existing_popups = new \WP_Query( [ 'post_type' => Source_Local::CPT, 'posts_per_page' => 1, 'post_status' => 'any', 'meta_query' => [ [ 'key' => DocumentBase::TYPE_META_KEY, 'value' => Document::get_type(), ], ], 'meta_key' => DocumentBase::TYPE_META_KEY, ] ); $this->has_popups = $existing_popups->post_count > 0; return $this->has_popups; } public function localize_settings( array $settings ): array { $settings['popup']['hasPopUps'] = $this->has_popups(); return $settings; } } document.php 0000644 00000050461 14720517420 0007103 0 ustar 00 <?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_type() { return 'popup'; } 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; $properties['support_lazyload'] = 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, 'size_units' => [ 'px', 'em', 'rem', 'vw', 'custom' ], // Only CSS `<length>` data-type is allowed, not `<percentage>`. 'range' => [ 'px' => [ 'min' => 100, 'max' => 1000, ], 'em' => [ 'min' => 10, 'max' => 100, ], 'rem' => [ 'min' => 10, 'max' => 100, ], 'vh' => [ 'min' => 10, 'max' => 100, ], ], '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, 'size_units' => [ 'px', 'em', 'rem', 'vh', 'custom' ], 'range' => [ 'px' => [ 'min' => 100, 'max' => 1000, ], 'vh' => [ 'min' => 10, 'max' => 100, ], ], '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' ) . ' (s)', 'type' => Controls_Manager::SLIDER, 'frontend_available' => true, 'default' => [ 'size' => 1.2, ], 'range' => [ 'px' => [ 'min' => 0, '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', '%', 'em', 'rem', 'custom' ], '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', '%', 'em', 'rem', 'custom' ], 'range' => [ 'px' => [ 'min' => -500, 'max' => 500, ], 'em' => [ 'min' => -50, 'max' => 50, ], 'rem' => [ 'min' => -50, 'max' => 50, ], ], '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', '%', 'em', 'rem', 'custom' ], 'range' => [ 'px' => [ 'min' => -500, 'max' => 500, ], 'em' => [ 'min' => -50, 'max' => 50, ], 'rem' => [ 'min' => -50, 'max' => 50, ], ], '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, 'size_units' => [ 'px', 'em', 'rem', 'custom' ], '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( 'a11y_navigation', [ 'label' => esc_html__( 'Accessible navigation', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'description' => esc_html__( 'Allow keyboard tab navigation for accessibility', '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, 'dynamic' => [ 'active' => true, ], 'ai' => [ 'active' => false, ], ] ); $this->add_responsive_control( 'margin', [ 'label' => esc_html__( 'Margin', 'elementor-pro' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], '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', '%', 'em', 'rem', 'vw', 'custom' ], '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' ), 'ai' => [ 'active' => false, ], '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; } } admin-menu-items/popups-menu-item.php 0000644 00000001160 14720517420 0013652 0 ustar 00 <?php namespace ElementorPro\Modules\Popup\AdminMenuItems; use Elementor\Core\Admin\Menu\Interfaces\Admin_Menu_Item; use Elementor\TemplateLibrary\Source_Local; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Popups_Menu_Item implements Admin_Menu_Item { public function get_capability() { return 'publish_posts'; } public function get_label() { return esc_html__( 'Popups', 'elementor-pro' ); } public function get_parent_slug() { return Source_Local::ADMIN_MENU_SLUG; } public function get_position() { return null; } public function is_visible() { return true; } } admin-menu-items/popups-promotion-menu-item.php 0000644 00000004277 14720517420 0015712 0 ustar 00 <?php namespace ElementorPro\Modules\Popup\AdminMenuItems; use ElementorPro\Modules\Tiers\AdminMenuItems\Base_Promotion_Item; use Elementor\TemplateLibrary\Source_Local; use ElementorPro\License\API; use ElementorPro\Plugin; use ElementorPro\Modules\Popup\Module as Popup_Module; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Popups_Promotion_Menu_Item extends Base_Promotion_Item { public function get_position() { return null; } public function get_cta_text() { if ( ! API::active_licence_has_feature( Popup_Module::DOCUMENT_TYPE ) ) { return esc_html__( 'Upgrade Now', 'elementor-pro' ); } return API::is_license_expired() ? esc_html__( 'Renew now', 'elementor-pro' ) : esc_html__( 'Connect & Activate', 'elementor-pro' ); } public function get_cta_url() { if ( ! API::active_licence_has_feature( Popup_Module::DOCUMENT_TYPE ) ) { $upgrade_url = 'https://go.elementor.com/go-pro-advanced-popups/'; return $upgrade_url; } $connect_url = Plugin::instance()->license_admin->get_connect_url( [ 'utm_source' => 'popup-templates', 'utm_medium' => 'wp-dash', 'utm_campaign' => 'connect-and-activate-license', ] ); $renew_url = 'https://go.elementor.com/renew-popups/'; return API::is_license_expired() ? $renew_url : $connect_url; } public function get_parent_slug() { return Source_Local::ADMIN_MENU_SLUG; } public function get_label() { return esc_html__( 'Popups', 'elementor-pro' ); } public function get_page_title() { return esc_html__( 'Popups', 'elementor-pro' ); } public function get_promotion_title() { return esc_html__( 'Get Popup Builder', 'elementor-pro' ); } public function get_promotion_description() { return esc_html__( "Create custom designed Popups using all of Elementor's widgets. Use advanced display conditions and triggers to display the right popup, to the right visitor, at the right time and maximize conversions.", 'elementor-pro' ); } /** * @deprecated use get_promotion_description instead * @return void */ public function render_promotion_description() { echo $this->get_promotion_description(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } } display-settings/base.php 0000644 00000002600 14720517420 0011472 0 ustar 00 <?php namespace ElementorPro\Modules\Popup\DisplaySettings; use Elementor\Controls_Manager; use Elementor\Controls_Stack; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } abstract class Base extends Controls_Stack { private $current_group; protected function start_settings_group( $group_name, $group_title ) { $this->current_group = $group_name; $args = [ 'type' => Controls_Manager::HEADING, 'label' => $group_title, ]; $this->add_control( $group_name . '_heading', $args ); } protected function end_settings_group() { $this->add_control( $this->current_group, [ 'type' => Controls_Manager::SWITCHER, 'classes' => 'elementor-popup__display-settings__group-toggle', 'frontend_available' => true, ] ); $this->current_group = null; } protected function add_settings_group_control( $id, array $args ) { $id = $this->get_prefixed_control_id( $id ); $args['frontend_available'] = true; if ( ! empty( $args['condition'] ) ) { $args['condition'] = array_combine( array_map( function( $key ) { return $this->current_group . '_' . $key; }, array_keys( $args['condition'] ) ), $args['condition'] ); } $args['condition'][ $this->current_group ] = 'yes'; return $this->add_control( $id, $args ); } protected function get_prefixed_control_id( $id ) { return $this->current_group . '_' . $id; } } display-settings/timing.php 0000644 00000016735 14720517420 0012065 0 ustar 00 <?php namespace ElementorPro\Modules\Popup\DisplaySettings; use ElementorPro\Plugin; use Elementor\Controls_Manager; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Timing extends Base { /** * Get element name. * * Retrieve the element name. * * @since 2.4.0 * @access public * * @return string The name. */ public function get_name() { return 'popup_timing'; } protected function register_controls() { $this->start_controls_section( 'timing' ); $this->start_settings_group( 'page_views', esc_html__( 'Show after X page views', 'elementor-pro' ) ); $this->add_settings_group_control( 'views', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Page Views', 'elementor-pro' ), 'default' => 3, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'sessions', esc_html__( 'Show after X sessions', 'elementor-pro' ) ); $this->add_settings_group_control( 'sessions', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Sessions', 'elementor-pro' ), 'default' => 2, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'times', esc_html__( 'Show up to X times', 'elementor-pro' ) ); $this->add_settings_group_control( 'times', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Times', 'elementor-pro' ), 'default' => 3, 'min' => 1, ] ); $this->add_settings_group_control( 'period', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Per', 'elementor-pro' ), 'default' => '', // Backward Compatibility - Persisting is old default value. 'options' => [ '' => esc_html__( 'Persisting', 'elementor-pro' ), 'session' => esc_html__( 'Session', 'elementor-pro' ), 'day' => esc_html__( 'Day', 'elementor-pro' ), 'week' => esc_html__( 'Week', 'elementor-pro' ), 'month' => esc_html__( 'Month', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'count', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Count', 'elementor-pro' ), 'options' => [ '' => esc_html__( 'On Open', 'elementor-pro' ), 'close' => esc_html__( 'On Close', 'elementor-pro' ), ], ] ); $this->end_settings_group(); $this->start_settings_group( 'url', esc_html__( 'When arriving from specific URL', 'elementor-pro' ) ); $this->add_settings_group_control( 'action', [ 'type' => Controls_Manager::SELECT, 'default' => 'show', 'options' => [ 'show' => esc_html__( 'Show', 'elementor-pro' ), 'hide' => esc_html__( 'Hide', 'elementor-pro' ), 'regex' => esc_html__( 'Regex', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'url', [ 'type' => Controls_Manager::TEXT, 'placeholder' => esc_html__( 'URL', 'elementor-pro' ), ] ); $this->end_settings_group(); $this->start_settings_group( 'sources', esc_html__( 'Show when arriving from', 'elementor-pro' ) ); $this->add_settings_group_control( 'sources', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [ 'search', 'external', 'internal' ], 'options' => [ 'search' => esc_html__( 'Search Engines', 'elementor-pro' ), 'external' => esc_html__( 'External Links', 'elementor-pro' ), 'internal' => esc_html__( 'Internal Links', 'elementor-pro' ), ], ] ); $this->end_settings_group(); $this->start_settings_group( 'logged_in', esc_html__( 'Hide for logged in users', 'elementor-pro' ) ); $this->add_settings_group_control( 'users', [ 'type' => Controls_Manager::SELECT, 'default' => 'all', 'options' => [ 'all' => esc_html__( 'All Users', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], ] ); global $wp_roles; $roles = array_map( function( $role ) { return $role['name']; }, $wp_roles->roles ); $this->add_settings_group_control( 'roles', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [], 'options' => $roles, 'select2options' => [ 'placeholder' => esc_html__( 'Select Roles', 'elementor-pro' ), ], 'condition' => [ 'users' => 'custom', ], ] ); $this->end_settings_group(); $available_devices = [ 'desktop' => esc_html__( 'Desktop', 'elementor-pro' ), ]; $default_devices = [ 'desktop' ]; $active_breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints(); foreach ( $active_breakpoints as $breakpoint_key => $breakpoint ) { $available_devices[ $breakpoint_key ] = $breakpoint->get_label(); $default_devices[] = $breakpoint_key; } $this->start_settings_group( 'devices', esc_html__( 'Show on devices', 'elementor-pro' ) ); $this->add_settings_group_control( 'devices', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => $default_devices, 'options' => $available_devices, ] ); $this->end_settings_group(); $this->start_settings_group( 'browsers', esc_html__( 'Show on browsers', 'elementor-pro' ) ); $this->add_settings_group_control( 'browsers', [ 'type' => Controls_Manager::SELECT, 'default' => 'all', 'options' => [ 'all' => esc_html__( 'All Browsers', 'elementor-pro' ), 'custom' => esc_html__( 'Custom', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'browsers_options', [ 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'default' => [], 'options' => [ 'ie' => esc_html__( 'Internet Explorer', 'elementor-pro' ), 'chrome' => esc_html__( 'Chrome', 'elementor-pro' ), 'edge' => esc_html__( 'Edge', 'elementor-pro' ), 'firefox' => esc_html__( 'Firefox', 'elementor-pro' ), 'safari' => esc_html__( 'Safari', 'elementor-pro' ), ], 'condition' => [ 'browsers' => 'custom', ], ] ); $this->end_settings_group(); $this->start_settings_group( 'schedule', esc_html__( 'Schedule date and time', 'elementor-pro' ) ); $this->add_settings_group_control( 'timezone', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Timezone', 'elementor-pro' ), 'default' => 'site', 'options' => [ 'site' => esc_html__( 'Site', 'elementor-pro' ), 'visitor' => esc_html__( 'Visitor', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'start_date', [ 'label' => esc_html__( 'Start', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'picker_options' => [ 'enableTime' => true, 'minDate' => 'today', ], 'validation' => [ 'date_time' => [ 'control_name' => $this->get_prefixed_control_id( 'end_date' ), 'operator' => '<=', ], ], ] ); $this->add_settings_group_control( 'end_date', [ 'label' => esc_html__( 'End', 'elementor-pro' ), 'type' => Controls_Manager::DATE_TIME, 'picker_options' => [ 'enableTime' => true, 'minDate' => 'today', ], 'validation' => [ 'date_time' => [ 'control_name' => $this->get_prefixed_control_id( 'start_date' ), 'operator' => '>=', ], ], ] ); $datetime = new \DateTime( 'now', new \DateTimeZone( wp_timezone_string() ) ); $datetime = $datetime->format( 'Y-m-d H:i:s' ); $this->add_settings_group_control( 'server_datetime', [ 'type' => Controls_Manager::HIDDEN, 'default' => $datetime, ] ); $this->end_settings_group(); $this->end_controls_section(); } } display-settings/triggers.php 0000644 00000005355 14720517420 0012420 0 ustar 00 <?php namespace ElementorPro\Modules\Popup\DisplaySettings; use Elementor\Controls_Manager; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Triggers extends Base { /** * Get element name. * * Retrieve the element name. * * @since 2.4.0 * @access public * * @return string The name. */ public function get_name() { return 'popup_triggers'; } protected function register_controls() { $this->start_controls_section( 'triggers' ); $this->start_settings_group( 'page_load', esc_html__( 'On Page Load', 'elementor-pro' ) ); $this->add_settings_group_control( 'delay', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)', 'default' => 0, 'min' => 0, 'step' => 0.1, ] ); $this->end_settings_group(); $this->start_settings_group( 'scrolling', esc_html__( 'On Scroll', 'elementor-pro' ) ); $this->add_settings_group_control( 'direction', [ 'type' => Controls_Manager::SELECT, 'label' => esc_html__( 'Direction', 'elementor-pro' ), 'default' => 'down', 'options' => [ 'down' => esc_html__( 'Down', 'elementor-pro' ), 'up' => esc_html__( 'Up', 'elementor-pro' ), ], ] ); $this->add_settings_group_control( 'offset', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (%)', 'default' => 50, 'min' => 1, 'max' => 100, 'condition' => [ 'direction' => 'down', ], ] ); $this->end_settings_group(); $this->start_settings_group( 'scrolling_to', esc_html__( 'On Scroll To Element', 'elementor-pro' ) ); $this->add_settings_group_control( 'selector', [ 'type' => Controls_Manager::TEXT, 'label' => esc_html__( 'Selector', 'elementor-pro' ), 'placeholder' => '.my-class', 'ai' => [ 'active' => false, ], ], ); $this->end_settings_group(); $this->start_settings_group( 'click', esc_html__( 'On Click', 'elementor-pro' ) ); $this->add_settings_group_control( 'times', [ 'label' => esc_html__( 'Clicks', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, ] ); $this->end_settings_group(); $this->start_settings_group( 'inactivity', esc_html__( 'After Inactivity', 'elementor-pro' ) ); $this->add_settings_group_control( 'time', [ 'type' => Controls_Manager::NUMBER, 'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)', 'default' => 30, 'min' => 1, 'step' => 0.1, ] ); $this->end_settings_group(); $this->start_settings_group( 'exit_intent', esc_html__( 'On Page Exit Intent', 'elementor-pro' ) ); $this->end_settings_group(); $this->end_controls_section(); } } tag.php 0000644 00000006624 14720517420 0006042 0 ustar 00 <?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 ]; } /** * @since 3.6.0 * * @deprecated 3.8.0 * On_Import_Trait::on_import_update_dynamic_content() should be used instead. * Remove in the future. */ public static function on_import_replace_dynamic_content( $config, $map_old_new_post_ids ) { if ( isset( $config['settings']['popup'] ) ) { $config['settings']['popup'] = $map_old_new_post_ids[ $config['settings']['popup'] ]; } return $config; } 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 } } form-action.php 0000644 00000006712 14720517420 0007503 0 ustar 00 <?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 ); } } assets/images/triggers-tab.svg 0000644 00000003300 14720517420 0012424 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21.5344 33.3948L18.2843 31.2326C16.7098 30.1878 14.5902 30.5502 13.4557 32.058C12.8723 32.8331 12.9268 33.9121 13.5829 34.6268L21.7524 43.5149C22.901 44.7631 24.52 45.4737 26.2176 45.4737H29.609C34.0682 45.4737 37.6836 41.8681 37.6836 37.4211V29.3684C37.6836 28.2572 36.7792 27.3553 35.6649 27.3553C34.5506 27.3553 33.6463 28.2572 33.6463 29.3684V30.375V27.3553C33.6463 26.244 32.7419 25.3421 31.6276 25.3421C30.5133 25.3421 29.609 26.244 29.609 27.3553V30.375V25.3421C29.609 24.2309 28.7046 23.329 27.5903 23.329C26.476 23.329 25.5717 24.2309 25.5717 25.3421V30.375V19.3026C25.5717 18.1914 24.6673 17.2895 23.553 17.2895C22.4387 17.2895 21.5344 18.1914 21.5344 19.3026V33.3948" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.0098 18.8842C29.0098 15.9191 26.5594 13.5158 23.5361 13.5158C20.5128 13.5158 18.0624 15.9191 18.0624 18.8842" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23.8945 2.52631V6.55262" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11.6836 18.6316H7.57833" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M36.3166 18.6316H40.4219" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14.4219 10.5789L11.685 6.55261" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M33.5796 10.5789L36.3164 6.55261" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/triggers/inactivity.svg 0000644 00000004435 14720517420 0014055 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.85352 20.0526V12.4211C7.85352 11.5785 8.54243 10.8947 9.39127 10.8947H17.0801C17.9289 10.8947 18.6178 11.5785 18.6178 12.4211V18.4622" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M20.1562 15.4737V17" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6.31641 7.84211H21.5448C23.0657 6.85611 24.9125 6.3158 26.867 6.3158H36.3027C37.5775 6.3158 38.6093 7.33995 38.6093 8.60527C38.6093 9.87059 37.5775 10.8947 36.3027 10.8947H37.8404C39.1152 10.8947 40.1471 11.9189 40.1471 13.1842C40.1471 14.4495 39.1152 15.4737 37.8404 15.4737H37.0716H39.3782C40.653 15.4737 41.6848 16.4978 41.6848 17.7632C41.6848 19.0285 40.653 20.0526 39.3782 20.0526H35.5338H37.8404C39.1152 20.0526 40.1471 21.0768 40.1471 22.3421C40.1471 23.6074 39.1152 24.6316 37.8404 24.6316H31.9354H35.5338L33.8992 26.2541C33.5009 26.6494 33.0057 27.0523 32.4583 27.4278" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.39062 10.8947V7.8421" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M17.0801 10.8947V7.8421" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M27.8451 45.4209V44.0427C28.8385 42.5332 29.3828 40.7001 29.3828 38.7601V30.9209C29.3828 29.6556 28.351 28.6315 27.0762 28.6315C25.8014 28.6315 24.7696 29.6556 24.7696 30.9209V29.3946C24.7696 28.1293 23.7377 27.1052 22.4629 27.1052C21.1881 27.1052 20.1563 28.1293 20.1563 29.3946V27.8683C20.1563 26.603 19.1245 25.5788 17.8497 25.5788C16.5749 25.5788 15.543 26.603 15.543 27.8683V20.2367C15.543 18.9714 14.5112 17.9473 13.2364 17.9473C11.9616 17.9473 10.9298 18.9714 10.9298 20.2367V30.1578L9.29512 31.7787C7.84809 33.2165 6.32878 35.8815 6.31648 37.7894C6.30418 39.7278 7.82348 42.434 9.29512 43.8946C9.76875 44.3357 10.1486 44.8562 10.4223 45.4255" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.6133 16.2367C15.6133 14.9714 14.5814 13.9473 13.3066 13.9473C12.0318 13.9473 11 14.9714 11 16.2367" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/triggers/page_load.svg 0000644 00000006141 14720517420 0013601 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M24.1493 19.5016L27.2962 16.6407C27.3478 16.5938 27.3516 16.5139 27.3047 16.4623C27.2808 16.4359 27.2468 16.4209 27.2112 16.4209H20.9173C20.8476 16.4209 20.791 16.4775 20.791 16.5472C20.791 16.5828 20.806 16.6168 20.8324 16.6407L23.9793 19.5016C24.0275 19.5454 24.1011 19.5454 24.1493 19.5016Z" fill="#E879F9"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M23.0851 29.6384L23.9644 28.8597C24.0121 28.8175 24.0839 28.8174 24.1317 28.8596L25.014 29.6383C25.0663 29.6844 25.0713 29.7642 25.0252 29.8166C25.0219 29.8203 25.0184 29.8238 25.0146 29.8272L24.1323 30.6157C24.0843 30.6586 24.0117 30.6586 23.9638 30.6156L23.0845 29.827C23.0326 29.7804 23.0283 29.7006 23.0748 29.6486C23.0781 29.645 23.0815 29.6416 23.0851 29.6384Z" fill="#E879F9"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M23.0949 32.965L23.9742 32.1863C24.0219 32.1441 24.0937 32.144 24.1415 32.1862L25.0238 32.9649C25.0761 33.011 25.0811 33.0908 25.0349 33.1432C25.0316 33.1469 25.0281 33.1504 25.0244 33.1538L24.1421 33.9423C24.0941 33.9852 24.0215 33.9852 23.9736 33.9422L23.0943 33.1536C23.0424 33.107 23.038 33.0272 23.0846 32.9752C23.0878 32.9716 23.0913 32.9682 23.0949 32.965Z" fill="#E879F9"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M24.7277 31.1542L25.607 30.3756C25.6547 30.3333 25.7265 30.3332 25.7743 30.3754L26.6566 31.1541C26.7089 31.2002 26.7139 31.2801 26.6677 31.3324C26.6644 31.3361 26.6609 31.3396 26.6572 31.343L25.7749 32.1315C25.7269 32.1744 25.6543 32.1744 25.6064 32.1314L24.7271 31.3428C24.6752 31.2962 24.6708 31.2164 24.7174 31.1644C24.7206 31.1608 24.7241 31.1574 24.7277 31.1542Z" fill="#E879F9"/> <path d="M33.1584 7.13672H14.8426C14.0752 7.13672 13.4531 7.75881 13.4531 8.52619C13.4531 9.29358 14.0752 9.91567 14.8426 9.91567H33.1584C33.9258 9.91567 34.5479 9.29358 34.5479 8.52619C34.5479 7.75881 33.9258 7.13672 33.1584 7.13672Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M33.1584 37.4525H14.8426C14.0752 37.4525 13.4531 38.0746 13.4531 38.842C13.4531 39.6094 14.0752 40.2315 14.8426 40.2315H33.1584C33.9258 40.2315 34.5479 39.6094 34.5479 38.842C34.5479 38.0746 33.9258 37.4525 33.1584 37.4525Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M24.0011 23.5632C25.2398 22.4646 26.7965 21.0185 28.6714 19.2249C30.3555 17.6138 33.7414 14.7642 33.7414 12.6739C33.7414 11.7876 33.2756 10.8685 32.3439 9.91669L24.0011 9.92054L15.4457 9.92956C14.5366 10.937 14.082 11.8348 14.082 12.6229C14.082 15.1058 16.5436 17.0455 18.6686 18.8054C20.4363 20.2694 22.2138 21.8553 24.0011 23.5632Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M24.0011 23.8115C25.2398 24.91 26.7965 26.3561 28.6714 28.1497C30.3555 29.7608 33.7414 32.6104 33.7414 34.7007C33.7414 35.5871 33.2756 36.5062 32.3439 37.4579L24.0011 37.4541L15.4457 37.4451C14.5366 36.4376 14.082 35.5398 14.082 34.7518C14.082 32.2688 16.5436 30.3291 18.6686 28.5692C20.4363 27.1053 22.2138 25.5193 24.0011 23.8115Z" stroke="#9DA5AE" stroke-width="1.64211"/> </svg> assets/images/triggers/scrolling_to.svg 0000644 00000003245 14720517420 0014366 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M42.1576 37.6651C42.1576 39.4415 40.7444 40.8804 38.9997 40.8804H8.99969C7.25495 40.8804 5.8418 39.4415 5.8418 37.6651V10.3349C5.8418 8.55848 7.25495 7.11963 8.99969 7.11963H38.9997C40.7444 7.11963 42.1576 8.55848 42.1576 10.3349V37.6651V37.6651Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M5.8418 13.5503H42.1576" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.78988 10.3349C9.78988 10.7786 9.4362 11.1388 9.00041 11.1388C8.56462 11.1388 8.21094 10.7786 8.21094 10.3349C8.21094 9.89121 8.56462 9.5311 9.00041 9.5311C9.4362 9.5311 9.78988 9.89121 9.78988 10.3349" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.9461 10.3349C12.9461 10.7786 12.5925 11.1388 12.1567 11.1388C11.7209 11.1388 11.3672 10.7786 11.3672 10.3349C11.3672 9.89121 11.7209 9.5311 12.1567 9.5311C12.5925 9.5311 12.9461 9.89121 12.9461 10.3349" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M16.1043 10.3349C16.1043 10.7786 15.7507 11.1388 15.3149 11.1388C14.8791 11.1388 14.5254 10.7786 14.5254 10.3349C14.5254 9.89121 14.8791 9.5311 15.3149 9.5311C15.7507 9.5311 16.1043 9.89121 16.1043 10.3349" fill="#9DA5AE"/> <path d="M16.8945 21.5885L21.6314 26.4115L16.8945 31.2345" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.7891 29.6268H32.6838" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/triggers/exit_intent.svg 0000644 00000003644 14720517420 0014225 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M42.1576 37.6651C42.1576 39.4415 40.7444 40.8804 38.9997 40.8804H8.99969C7.25495 40.8804 5.8418 39.4415 5.8418 37.6651V10.3349C5.8418 8.55847 7.25495 7.11961 8.99969 7.11961H38.9997C40.7444 7.11961 42.1576 8.55847 42.1576 10.3349V37.6651V37.6651Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M5.8418 13.5502H42.1576" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.78988 10.3349C9.78988 10.7786 9.4362 11.1388 9.00041 11.1388C8.56462 11.1388 8.21094 10.7786 8.21094 10.3349C8.21094 9.89121 8.56462 9.5311 9.00041 9.5311C9.4362 9.5311 9.78988 9.89121 9.78988 10.3349" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.9461 10.3349C12.9461 10.7786 12.5925 11.1388 12.1567 11.1388C11.7209 11.1388 11.3672 10.7786 11.3672 10.3349C11.3672 9.89121 11.7209 9.5311 12.1567 9.5311C12.5925 9.5311 12.9461 9.89121 12.9461 10.3349" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M16.1043 10.3349C16.1043 10.7786 15.7507 11.1388 15.3149 11.1388C14.8791 11.1388 14.5254 10.7786 14.5254 10.3349C14.5254 9.89121 14.8791 9.5311 15.3149 9.5311C15.7507 9.5311 16.1043 9.89121 16.1043 10.3349" fill="#9DA5AE"/> <path d="M9.09503 19.1377L11.7746 16.4582" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.09442 16.4582L11.774 19.1377" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.7363 35.7895L16.1047 23.1579" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.4219 23.1579H16.1061V29.4737" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/triggers/click.svg 0000644 00000003274 14720517420 0012757 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M21.5344 33.3948L18.2843 31.2326C16.7098 30.1878 14.5902 30.5502 13.4557 32.058C12.8723 32.8331 12.9268 33.9121 13.5829 34.6268L21.7524 43.5149C22.901 44.7631 24.52 45.4737 26.2176 45.4737H29.609C34.0682 45.4737 37.6836 41.8681 37.6836 37.4211V29.3684C37.6836 28.2572 36.7792 27.3553 35.6649 27.3553C34.5506 27.3553 33.6463 28.2572 33.6463 29.3684V30.375V27.3553C33.6463 26.244 32.7419 25.3421 31.6276 25.3421C30.5133 25.3421 29.609 26.244 29.609 27.3553V30.375V25.3421C29.609 24.2309 28.7046 23.329 27.5903 23.329C26.476 23.329 25.5717 24.2309 25.5717 25.3421V30.375V19.3026C25.5717 18.1914 24.6673 17.2895 23.553 17.2895C22.4387 17.2895 21.5344 18.1914 21.5344 19.3026V33.3948" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.0098 18.8842C29.0098 15.919 26.5594 13.5158 23.5361 13.5158C20.5128 13.5158 18.0624 15.919 18.0624 18.8842" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M23.8945 2.52631V6.55262" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M11.6836 18.6316H7.57833" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M36.3166 18.6316H40.4219" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14.4219 10.579L11.685 6.55264" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M33.5796 10.579L36.3164 6.55264" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/triggers/scrolling.svg 0000644 00000003307 14720517420 0013663 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M22.7961 25.8158L19.5461 23.6537C17.9715 22.6088 15.8519 22.9712 14.7174 24.4791C14.134 25.2541 14.1885 26.3332 14.8446 27.0479L23.0141 35.9359C24.1627 37.1841 25.7817 37.8948 27.4794 37.8948H30.8707C35.3299 37.8948 38.9453 34.2892 38.9453 29.8421V21.7895C38.9453 20.6782 38.041 19.7763 36.9267 19.7763C35.8124 19.7763 34.908 20.6782 34.908 21.7895V22.7961V19.7763C34.908 18.6651 34.0036 17.7632 32.8894 17.7632C31.7751 17.7632 30.8707 18.6651 30.8707 19.7763V22.7961V17.7632C30.8707 16.6519 29.9663 15.75 28.852 15.75C27.7377 15.75 26.8334 16.6519 26.8334 17.7632V22.7961V11.7237C26.8334 10.6124 25.929 9.71054 24.8147 9.71054C23.7004 9.71054 22.7961 10.6124 22.7961 11.7237V25.8158" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.7271 12.8887C29.8483 12.4366 29.9347 11.9691 29.9347 11.4786C29.9347 8.5061 27.5595 6.09644 24.6295 6.09644C21.6995 6.09644 19.3242 8.5061 19.3242 11.4786C19.3242 12.4274 19.5865 13.3054 20.0124 14.0805" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M12.6309 32.3478V44.6499" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.6628 41.5744L12.6312 44.6499L9.59961 41.5744" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M12.6309 16.9153V4.61329" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.6628 7.68881L12.6312 4.6133L9.59961 7.68881" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/timing-tab.svg 0000644 00000004367 14720517420 0012103 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M30.7606 34.6689L27.7906 36.38L28.4506 32.9578L26.1406 30.5622L29.1106 30.22L30.7606 27.14L32.4106 30.22L35.3806 30.5622L33.0706 32.9578L33.7306 36.38L30.7606 34.6689V34.6689Z" stroke="#E879F9" stroke-width="1.64" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M22.1797 32.024C22.1797 27.2861 26.0218 23.444 30.7597 23.444C35.4976 23.444 39.3397 27.2861 39.3397 32.024C39.3397 36.7618 35.4976 40.604 30.7597 40.604C26.0218 40.604 22.1797 36.7618 22.1797 32.024V32.024Z" stroke="#9DA5AE" stroke-width="1.64" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M22.4529 29.7848C22.3327 29.7914 22.3319 29.8232 22.2092 29.8232C18.562 29.8232 15.596 26.8571 15.596 23.21C15.596 19.5628 18.562 16.5954 22.2092 16.5954C25.8563 16.5954 28.8224 19.5628 28.8224 23.21C28.8224 23.3314 28.8051 23.5637 28.7985 23.6839C29.6341 23.437 30.6512 23.4051 31.566 23.4535C32.2401 23.4892 32.6201 23.6209 33.1279 23.75C33.1292 23.6972 33.0983 23.6849 33.0983 23.6308C33.0983 23.1371 33.0437 22.2213 32.9857 21.7566L36.0494 19.3608C36.3266 19.143 36.3979 18.751 36.2236 18.4316L33.3196 13.4076C33.1467 13.0882 32.7547 12.972 32.4352 13.0882L28.8184 14.5402C28.0634 13.9594 27.2516 13.4802 26.3645 13.1172L25.8141 9.26945C25.7692 8.92097 25.4643 8.65961 25.1026 8.65961H19.2933C18.9303 8.65961 18.6267 8.92097 18.5818 9.26945L18.0301 13.1172C17.1443 13.4802 16.3312 13.9739 15.5775 14.5402L11.9607 13.0882C11.6281 12.9575 11.2492 13.0882 11.075 13.4076L8.17098 18.4316C7.98222 18.751 8.06934 19.143 8.34522 19.3608L11.4089 21.7566C11.3509 22.2213 11.3073 22.7004 11.3073 23.1796C11.3073 23.6588 11.3509 24.1379 11.4089 24.6026L8.34522 26.9984C8.06934 27.2162 7.99806 27.6082 8.17098 27.9276L11.075 32.9516C11.2492 33.271 11.6413 33.3872 11.9607 33.271L15.5775 31.819C16.3312 32.3998 17.1443 32.879 18.0301 33.242L18.5818 37.0898C18.6267 37.4382 18.9303 37.6996 19.2933 37.6996H23.8433C22.7979 36.2027 22.1801 34.3838 22.1801 32.4196C22.1801 31.5048 22.2047 30.619 22.4529 29.7848Z" stroke="#9DA5AE" stroke-width="1.64" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/timing/logged_in.svg 0000644 00000004107 14720517420 0013256 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M27.915 13.6353C27.915 16.147 25.8793 18.1827 23.3677 18.1827C20.856 18.1827 18.8203 16.147 18.8203 13.6353C18.8203 11.1236 20.856 9.08792 23.3677 9.08792C25.8793 9.08792 27.915 11.1236 27.915 13.6353Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M38.0358 18.1827C38.0358 19.8576 36.6792 21.2143 35.0042 21.2143C33.3293 21.2143 31.9727 19.8576 31.9727 18.1827C31.9727 16.5077 33.3293 15.1511 35.0042 15.1511C36.6792 15.1511 38.0358 16.5077 38.0358 18.1827Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.78906 18.1827C9.78906 19.8576 11.1457 21.2143 12.8206 21.2143C14.4941 21.2143 15.8522 19.8576 15.8522 18.1827C15.8522 16.5077 14.4941 15.1511 12.8206 15.1511C11.1457 15.1511 9.78906 16.5077 9.78906 18.1827Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M14.4531 30.309C14.4531 25.2856 18.7311 21.2142 24.0092 21.2142C29.2873 21.2142 33.5653 25.2856 33.5653 30.309" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M31.8594 25.1206C32.8214 24.5658 33.9506 24.246 35.1578 24.246C38.676 24.246 41.5285 26.9608 41.5285 30.3091" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M16.1594 25.1206C15.1974 24.5658 14.0682 24.246 12.8609 24.246C9.34272 24.246 6.49023 26.9608 6.49023 30.3091" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <circle cx="24.0632" cy="30.6316" r="6.63158" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M21.4121 33.5212L26.2499 27.9158" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M26.25 33.5212L21.4122 27.9158" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/timing/schedule.svg 0000644 00000005253 14720517420 0013126 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M24.0624 20.1597V21.3365" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M24.0624 36.3407V37.5175" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <circle cx="24.0009" cy="29.0526" r="14.5263" stroke="#9DA5AE" stroke-width="1.64211"/> <circle cx="23.9993" cy="29.0526" r="11.3684" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M33.0812 17.2833L34.2932 15.5731L36.4868 17.2063L35.2748 18.9165L33.0812 17.2833Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M35.7247 13.1394L38.3502 15.0946C38.8315 15.453 38.9387 16.13 38.5917 16.6196C38.233 17.1256 37.528 17.2373 37.0305 16.8668L34.405 14.9116C33.9237 14.5532 33.8165 13.8762 34.1635 13.3866C34.5222 12.8806 35.2272 12.769 35.7247 13.1394Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M26.4267 14.2612H27.2478V13.4402V11.7173C27.2478 9.7631 25.6636 8.17895 23.7094 8.17895C21.7553 8.17895 20.1711 9.7631 20.1711 11.7173V13.4402V14.2612H20.9922H26.4267Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M22.9479 30.9979L22.4169 32.1697" stroke="#9DA5AE" stroke-width="1.80632" stroke-linecap="round"/> <path d="M25.8835 24.5184L24.5801 27.3948" stroke="#9DA5AE" stroke-width="1.80632" stroke-linecap="round"/> <path d="M32.6984 28.9784H31.5502" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M30.4763 23.239L29.6644 24.0711" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M29.471 33.7875L30.2829 34.6196" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M16.3507 28.9784H15.2025" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M18.3903 33.7875L17.5784 34.6196" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M17.3851 23.239L18.197 24.0711" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round"/> <path d="M0.883911 17.7485L5.35702 19.1261" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <path d="M8.1452 5.80011L10.3704 8.08776" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <path d="M39.5368 6.03L35.9285 9.72272" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <ellipse cx="12.4285" cy="10.1209" rx="0.821053" ry="0.841536" fill="#E879F9"/> <path d="M47.1052 17.5879L44.1268 18.6442" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <ellipse cx="0.821053" cy="0.833602" rx="0.821053" ry="0.833602" transform="matrix(-0.898794 0.438371 0.438371 0.898794 41.8984 18.5684)" fill="#E879F9"/> <ellipse cx="23.9878" cy="29.0718" rx="1.63036" ry="1.66507" stroke="#9DA5AE" stroke-width="1.80632"/> </svg> assets/images/timing/page_views.svg 0000644 00000011757 14720517420 0013471 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M35.8418 11.3684C37.5865 11.3684 38.9997 12.725 38.9997 14.4C38.9997 14.4 38.9997 20.8286 38.9997 24.0429" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.2204 34.1052C23.5329 34.1052 12.1579 34.1052 12.1579 34.1052C10.4132 34.1052 9 32.7486 9 31.0737" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.593 37.1369C25.5007 37.1369 15.3161 37.1369 15.3161 37.1369C13.5714 37.1369 12.1582 35.7802 12.1582 34.1053" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M39 14.4C40.7447 14.4 42.1579 15.7567 42.1579 17.4316C42.1579 17.4316 42.1579 22.9499 42.1579 25.7091" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M38.9997 17.4316H35.8418" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M42.1579 20.4632H39" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.9539 31.0737H8.99969C7.25495 31.0737 5.8418 29.7171 5.8418 28.0421V11.3684C5.8418 9.69348 7.25495 8.33685 8.99969 8.33685H32.6839C34.4286 8.33685 35.8418 9.69348 35.8418 11.3684V23.8378" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <ellipse cx="36.8843" cy="31.9524" rx="7.83158" ry="7.96339" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M5.8418 14.4H35.8418" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.78988 11.3684C9.78988 11.7868 9.4362 12.1263 9.00041 12.1263C8.56462 12.1263 8.21094 11.7868 8.21094 11.3684C8.21094 10.9501 8.56462 10.6105 9.00041 10.6105C9.4362 10.6105 9.78988 10.9501 9.78988 11.3684" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.9461 11.3684C12.9461 11.7868 12.5925 12.1263 12.1567 12.1263C11.7209 12.1263 11.3672 11.7868 11.3672 11.3684C11.3672 10.9501 11.7209 10.6105 12.1567 10.6105C12.5925 10.6105 12.9461 10.9501 12.9461 11.3684" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M16.1043 11.3684C16.1043 11.7868 15.7507 12.1263 15.3149 12.1263C14.8791 12.1263 14.5254 11.7868 14.5254 11.3684C14.5254 10.9501 14.8791 10.6105 15.3149 10.6105C15.7507 10.6105 16.1043 10.9501 16.1043 11.3684" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M39.1505 34.2281C39.1505 34.4983 39.0996 34.7518 38.9978 34.9886C38.8961 35.2255 38.7564 35.4327 38.5787 35.6103C38.4011 35.788 38.1939 35.9277 37.957 36.0294C37.7202 36.1312 37.4667 36.1821 37.1965 36.1821H36.8579C36.5878 36.1821 36.3334 36.1312 36.0947 36.0294C35.856 35.9277 35.6478 35.788 35.4702 35.6103C35.2926 35.4327 35.1529 35.2255 35.0511 34.9886C34.9493 34.7518 34.8984 34.4983 34.8984 34.2281V34.0228L35.6145 33.9117V34.2281C35.6145 34.4058 35.6478 34.5714 35.7144 34.725C35.781 34.8785 35.8726 35.0136 35.9892 35.1302C36.1058 35.2468 36.2409 35.3383 36.3944 35.405C36.548 35.4716 36.7136 35.5049 36.8912 35.5049H37.1632C37.3409 35.5049 37.5065 35.4716 37.6601 35.405C37.8136 35.3383 37.9478 35.2468 38.0625 35.1302C38.1772 35.0136 38.2679 34.8785 38.3345 34.725C38.4011 34.5714 38.4344 34.4058 38.4344 34.2281V33.5676C38.4344 33.3899 38.4011 33.2243 38.3345 33.0708C38.2679 32.9172 38.1772 32.783 38.0625 32.6683C37.9478 32.5536 37.8136 32.4629 37.6601 32.3963C37.5065 32.3297 37.3409 32.2964 37.1632 32.2964H36.6303V31.6136H37.1632C37.3409 31.6136 37.5065 31.5803 37.6601 31.5137C37.8136 31.4471 37.9478 31.3564 38.0625 31.2417C38.1772 31.127 38.2679 30.9928 38.3345 30.8393C38.4011 30.6857 38.4344 30.5201 38.4344 30.3425V29.9539C38.4344 29.7763 38.4011 29.6107 38.3345 29.4571C38.2679 29.3035 38.1772 29.1693 38.0625 29.0546C37.9478 28.9399 37.8136 28.8492 37.6601 28.7826C37.5065 28.716 37.3409 28.6827 37.1632 28.6827H36.8912C36.7136 28.6827 36.548 28.716 36.3944 28.7826C36.2409 28.8492 36.1058 28.9399 35.9892 29.0546C35.8726 29.1693 35.781 29.3035 35.7144 29.4571C35.6478 29.6107 35.6145 29.7763 35.6145 29.9539V30.2758L34.8984 30.1593V29.9539C34.8984 29.6837 34.9493 29.4302 35.0511 29.1934C35.1529 28.9566 35.2926 28.7493 35.4702 28.5717C35.6478 28.3941 35.856 28.2544 36.0947 28.1526C36.3334 28.0508 36.5878 27.9999 36.8579 27.9999H37.1965C37.4667 27.9999 37.7202 28.0508 37.957 28.1526C38.1939 28.2544 38.4011 28.3941 38.5787 28.5717C38.7564 28.7493 38.8961 28.9566 38.9978 29.1934C39.0996 29.4302 39.1505 29.6837 39.1505 29.9539V30.2259C39.1505 30.4146 39.1255 30.595 39.0756 30.7671C39.0256 30.9392 38.9553 31.0992 38.8646 31.2473C38.774 31.3953 38.6657 31.5294 38.5399 31.6497C38.4141 31.77 38.2734 31.8727 38.118 31.9578C38.2734 32.0392 38.4141 32.14 38.5399 32.2603C38.6657 32.3806 38.774 32.5147 38.8646 32.6628C38.9553 32.8108 39.0256 32.9708 39.0756 33.1429C39.1255 33.315 39.1505 33.4954 39.1505 33.6841V34.2281Z" fill="#E879F9" stroke="#E879F9" stroke-width="0.884211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/timing/browsers.svg 0000644 00000005162 14720517420 0013177 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M34.7891 11.7894C36.5338 11.7894 37.947 13.1461 37.947 14.821C37.947 14.821 37.947 21.2496 37.947 24.4639" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.1677 34.5263C22.4802 34.5263 11.1052 34.5263 11.1052 34.5263C9.36042 34.5263 7.94727 33.1696 7.94727 31.4947" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.5403 37.5579C24.448 37.5579 14.2634 37.5579 14.2634 37.5579C12.5186 37.5579 11.1055 36.2013 11.1055 34.5263" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.9473 14.821C39.692 14.821 41.1052 16.1777 41.1052 17.8526C41.1052 17.8526 41.1052 23.371 41.1052 26.1301" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.947 17.8526H34.7891" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M41.1052 20.8842H37.9473" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M27.9011 31.4947H7.94696C6.20222 31.4947 4.78906 30.1381 4.78906 28.4631V11.7895C4.78906 10.1145 6.20222 8.75787 7.94696 8.75787H31.6312C33.3759 8.75787 34.7891 10.1145 34.7891 11.7895V24.2588" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <ellipse cx="35.8316" cy="32.3734" rx="7.83158" ry="7.96339" stroke="#9DA5AE" stroke-width="1.64211"/> <path d="M4.78906 14.821H34.7891" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M8.73715 11.7894C8.73715 12.2078 8.38347 12.5473 7.94768 12.5473C7.51189 12.5473 7.1582 12.2078 7.1582 11.7894C7.1582 11.3711 7.51189 11.0316 7.94768 11.0316C8.38347 11.0316 8.73715 11.3711 8.73715 11.7894" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.8934 11.7894C11.8934 12.2078 11.5397 12.5473 11.1039 12.5473C10.6681 12.5473 10.3145 12.2078 10.3145 11.7894C10.3145 11.3711 10.6681 11.0316 11.1039 11.0316C11.5397 11.0316 11.8934 11.3711 11.8934 11.7894" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M15.0516 11.7894C15.0516 12.2078 14.6979 12.5473 14.2621 12.5473C13.8263 12.5473 13.4727 12.2078 13.4727 11.7894C13.4727 11.3711 13.8263 11.0316 14.2621 11.0316C14.6979 11.0316 15.0516 11.3711 15.0516 11.7894" fill="#9DA5AE"/> <path d="M39.9466 30.421L34.9466 35.421L32.4434 32.921" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg> assets/images/timing/times.svg 0000644 00000005146 14720517420 0012454 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M37.9265 33.1866C37.9265 34.4662 36.8968 35.5032 35.6264 35.5032C34.3559 35.5032 33.3262 34.4662 33.3262 33.1866C33.3262 31.9071 34.3559 30.87 35.6264 30.87C36.8968 30.87 37.9265 31.9071 37.9265 33.1866Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M31.0254 40.6156C31.0254 38.0565 33.0848 35.9824 35.6258 35.9824C38.1667 35.9824 40.2261 38.0565 40.2261 40.6156" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M4.57227 13.4828H37.4649" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M8.48819 10.2975C8.48819 10.7371 8.13734 11.0938 7.70503 11.0938C7.27273 11.0938 6.92188 10.7371 6.92188 10.2975C6.92188 9.85792 7.27273 9.50116 7.70503 9.50116C8.13734 9.50116 8.48819 9.85792 8.48819 10.2975" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.621 10.2975C11.621 10.7371 11.2701 11.0938 10.8378 11.0938C10.4055 11.0938 10.0547 10.7371 10.0547 10.2975C10.0547 9.85792 10.4055 9.50116 10.8378 9.50116C11.2701 9.50116 11.621 9.85792 11.621 10.2975" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.7538 10.2975C14.7538 10.7371 14.403 11.0938 13.9707 11.0938C13.5384 11.0938 13.1875 10.7371 13.1875 10.2975C13.1875 9.85792 13.5384 9.50116 13.9707 9.50116C14.403 9.50116 14.7538 9.85792 14.7538 10.2975" fill="#9DA5AE"/> <ellipse cx="35.6206" cy="34.4897" rx="7.83158" ry="7.96339" stroke="#9DA5AE" stroke-width="1.64211"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M5.39406 10.2975C5.39406 8.97806 6.44118 7.93318 7.70564 7.93318H34.333C35.5975 7.93318 36.6446 8.97806 36.6446 10.2975V25.7659C37.2107 25.8336 37.7599 25.9566 38.2867 26.1295V10.2975C38.2867 8.09709 36.5301 6.29108 34.333 6.29108H7.70564C5.50854 6.29108 3.75195 8.09709 3.75195 10.2975V37.373C3.75195 39.5734 5.50854 41.3794 7.70564 41.3794H30.1752C30.1999 41.3794 30.2244 41.3783 30.2486 41.3762C29.659 40.9012 29.132 40.35 28.682 39.7373H7.70564C6.44118 39.7373 5.39406 38.6924 5.39406 37.373V10.2975Z" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M8.25142 17.179C7.65844 17.179 7.17773 17.6597 7.17773 18.2526V36.7474C7.17773 37.3404 7.65844 37.8211 8.25142 37.8211H28.8994C28.602 37.3078 28.3596 36.7576 28.1804 36.1789H8.81984V18.8211H33.1777V26.2266C33.7026 26.049 34.2522 25.9264 34.8198 25.8654V18.2526C34.8198 17.6597 34.3391 17.179 33.7462 17.179H8.25142Z" fill="#9DA5AE"/> </svg> assets/images/timing/url.svg 0000644 00000004213 14720517420 0012127 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M8.52621 8.99998C8.52621 9.43577 8.17253 9.78946 7.73674 9.78946C7.30095 9.78946 6.94727 9.43577 6.94727 8.99998C6.94727 8.56419 7.30095 8.21051 7.73674 8.21051C8.17253 8.21051 8.52621 8.56419 8.52621 8.99998" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.6844 8.99998C11.6844 9.43577 11.3307 9.78946 10.8949 9.78946C10.4592 9.78946 10.1055 9.43577 10.1055 8.99998C10.1055 8.56419 10.4592 8.21051 10.8949 8.21051C11.3307 8.21051 11.6844 8.56419 11.6844 8.99998" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.8426 8.99998C14.8426 9.43577 14.4889 9.78946 14.0531 9.78946C13.6174 9.78946 13.2637 9.43577 13.2637 8.99998C13.2637 8.56419 13.6174 8.21051 14.0531 8.21051C14.4889 8.21051 14.8426 8.56419 14.8426 8.99998" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M20.3676 32.6842H37.736C39.4808 32.6842 40.8939 31.271 40.8939 29.5263V9C40.8939 7.25526 39.4808 5.8421 37.736 5.8421H7.73602C5.99128 5.8421 4.57812 7.25526 4.57812 9V29.5263C4.57812 31.271 5.99128 32.6842 7.73602 32.6842H10.8939H20.3676V32.6842Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M4.57812 12.1579H40.8939" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M43.4199 42.1579H30.7883V39H43.4199V42.1579Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M35.5254 35.8421L22.8938 23.2105" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.2109 23.2105H22.8951V29.5263" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <mask id="path-9-inside-1_1909_232748" fill="white"> <rect x="3.78906" y="11.3684" width="16.4211" height="10.1053" rx="1.54386"/> </mask> <rect x="3.78906" y="11.3684" width="16.4211" height="10.1053" rx="1.54386" stroke="#9DA5AE" stroke-width="3.28421" mask="url(#path-9-inside-1_1909_232748)"/> </svg> assets/images/timing/sessions.svg 0000644 00000005026 14720517420 0013176 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M7.09961 12.8513H39.9922" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.0155 9.66591C11.0155 10.1055 10.6647 10.4622 10.2324 10.4622C9.80007 10.4622 9.44922 10.1055 9.44922 9.66591C9.44922 9.22633 9.80007 8.86957 10.2324 8.86957C10.6647 8.86957 11.0155 9.22633 11.0155 9.66591" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.1483 9.66591C14.1483 10.1055 13.7975 10.4622 13.3652 10.4622C12.9329 10.4622 12.582 10.1055 12.582 9.66591C12.582 9.22633 12.9329 8.86957 13.3652 8.86957C13.7975 8.86957 14.1483 9.22633 14.1483 9.66591" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M17.2812 9.66591C17.2812 10.1055 16.9303 10.4622 16.498 10.4622C16.0657 10.4622 15.7148 10.1055 15.7148 9.66591C15.7148 9.22633 16.0657 8.86957 16.498 8.86957C16.9303 8.86957 17.2812 9.22633 17.2812 9.66591" fill="#9DA5AE"/> <path d="M10.7949 17.9368C10.7949 17.7973 10.908 17.6842 11.0476 17.6842L36.3794 17.6842C36.5189 17.6842 36.632 17.7973 36.632 17.9368V36.3789C36.632 36.5185 36.5189 36.6316 36.3794 36.6316H11.0476C10.908 36.6316 10.7949 36.5185 10.7949 36.3789V17.9368Z" stroke="#9DA5AE" stroke-width="1.64211"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M30.9472 28.986C30.9472 28.986 27.7246 33.0666 24.209 33.0666C20.6933 33.0666 17.4707 28.986 17.4707 28.986C17.4707 28.986 20.6933 24.9053 24.209 24.9053C28.3105 24.9053 30.9472 28.986 30.9472 28.986Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M26.8169 27.8807C26.8169 29.524 25.5773 30.8562 24.0481 30.8562C22.5189 30.8562 21.2793 29.524 21.2793 27.8807C21.2793 26.2375 22.5189 24.9053 24.0481 24.9053C25.5773 24.9053 26.8169 26.2375 26.8169 27.8807Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.1776 22.6072L22.4815 24.7791" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <path d="M28.8395 23.5249L27.9561 25.2598" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <path d="M25.6578 22.1114L25.2981 24.3033" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <path d="M18.7502 24.1161L19.976 25.8934" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round"/> <rect x="6.50586" y="6.3158" width="34.3579" height="34.7116" rx="3.78947" stroke="#9DA5AE" stroke-width="1.64211"/> </svg> assets/images/timing/devices.svg 0000644 00000006371 14720517420 0012756 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M39.7402 16.7478C39.7402 15.2964 39.7402 9.86744 39.7402 9.86744C39.7402 8.10913 38.3473 6.68209 36.6309 6.68209H8.64712C6.93078 6.68209 5.5378 8.10913 5.5378 9.86744C5.5378 9.86744 5.5378 17.5913 5.5378 21.4533C5.5378 25.0238 5.5378 32.1649 5.5378 32.1649C5.5378 33.9232 6.93078 35.3503 8.64712 35.3503C8.64712 35.3503 22.8561 35.3503 30.029 35.3503" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M33.523 41.721C33.523 41.721 30.4213 41.721 28.8704 41.721C26.3994 41.721 23.9285 41.721 21.4575 41.721C18.2243 41.721 11.7578 41.721 11.7578 41.721C11.7578 39.9627 13.1508 38.5356 14.8671 38.5356C14.8671 38.5356 20.9538 38.5356 23.9971 38.5356C26.136 38.5356 30.4137 38.5356 30.4137 38.5356" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M5.53906 30.5723H30.3941" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M21.0859 38.5356V35.3503" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.1934 38.5356V35.3503" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M40.8868 41.6998H33.8908C32.2348 41.6998 30.8926 40.2738 30.8926 38.5144V20.4641C30.8926 18.7047 32.2348 17.2787 33.8908 17.2787H40.8868C42.5428 17.2787 43.8851 18.7047 43.8851 20.4641V38.5144C43.8851 40.2738 42.5428 41.6998 40.8868 41.6998V41.6998Z" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.8926 21.5258H43.8851" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.8926 36.3908H43.8851" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M37.89 39.0453C37.89 39.3383 37.6662 39.5762 37.3903 39.5762C37.1145 39.5762 36.8906 39.3383 36.8906 39.0453C36.8906 38.7522 37.1145 38.5144 37.3903 38.5144C37.6662 38.5144 37.89 38.7522 37.89 39.0453V39.0453Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M23.7357 32.7782C23.7357 33.0713 23.5119 33.3091 23.236 33.3091C22.9602 33.3091 22.7363 33.0713 22.7363 32.7782C22.7363 32.4852 22.9602 32.2473 23.236 32.2473C23.5119 32.2473 23.7357 32.4852 23.7357 32.7782V32.7782Z" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M35.8906 19.4023H38.8889" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M30.7526 26.5263H11.6498C10.7972 26.5263 10.106 25.8351 10.106 24.9824V12.9123C10.106 12.0596 10.7972 11.3684 11.6498 11.3684H17.8589H33.8253C34.6779 11.3684 35.3691 12.0596 35.3691 12.9123V16.6949" stroke="#9DA5AE" stroke-width="1.64211"/> <mask id="path-13-inside-1_1909_232796" fill="white"> <rect x="33.4746" y="24" width="7.57895" height="10.1053" rx="1.54386"/> </mask> <rect x="33.4746" y="24" width="7.57895" height="10.1053" rx="1.54386" stroke="#9DA5AE" stroke-width="3.28421" mask="url(#path-13-inside-1_1909_232796)"/> </svg> assets/images/timing/sources.svg 0000644 00000005165 14720517420 0013017 0 ustar 00 <svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M10.105 10.1053C10.105 10.4539 9.82201 10.7369 9.47338 10.7369C9.12474 10.7369 8.8418 10.4539 8.8418 10.1053C8.8418 9.75664 9.12474 9.47369 9.47338 9.47369C9.82201 9.47369 10.105 9.75664 10.105 10.1053" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M12.6323 10.1053C12.6323 10.4539 12.3494 10.7369 12.0007 10.7369C11.6521 10.7369 11.3691 10.4539 11.3691 10.1053C11.3691 9.75664 11.6521 9.47369 12.0007 9.47369C12.3494 9.47369 12.6323 9.75664 12.6323 10.1053" fill="#9DA5AE"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M15.1577 10.1053C15.1577 10.4539 14.8747 10.7369 14.5261 10.7369C14.1775 10.7369 13.8945 10.4539 13.8945 10.1053C13.8945 9.75664 14.1775 9.47369 14.5261 9.47369C14.8747 9.47369 15.1577 9.75664 15.1577 10.1053" fill="#9DA5AE"/> <path d="M25.569 39.1579H9.32393C7.66227 39.1579 6.31641 37.812 6.31641 36.1504V10.5865C6.31641 8.92481 7.66227 7.57895 9.32393 7.57895H34.8878C36.5495 7.57895 37.8954 8.92481 37.8954 10.5865V25.4839" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M6.31641 12.6316H37.8954" stroke="#9DA5AE" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <mask id="path-6-inside-1_1909_232771" fill="white"> <rect x="25.2637" y="25.2632" width="16.4211" height="16.4211" rx="1.54386"/> </mask> <rect x="25.2637" y="25.2632" width="16.4211" height="16.4211" rx="1.54386" stroke="#9DA5AE" stroke-width="3.28421" mask="url(#path-6-inside-1_1909_232771)"/> <path fill-rule="evenodd" clip-rule="evenodd" d="M35.1148 16.6737V25.1649V25.2631H33.4727V25.1649V23.621V17.9649V16.6737C33.4727 16.5341 33.3596 16.421 33.2201 16.421H31.9288H12.2797H10.9885C10.849 16.421 10.7359 16.5341 10.7359 16.6737V17.9649V33.8245V35.1158C10.7359 35.2553 10.849 35.3684 10.9885 35.3684H12.2797H23.6201H25.1639H25.2622V33.8245H25.1639H23.6201H13.9218H12.378H12.2797V33.7263V32.1824V19.607V18.0631V17.9649H12.378H13.9218H30.2867H31.8306H31.9288V18.0631V19.607V23.621V25.1649V25.2631H30.2867V25.1649V19.607H13.9218V32.1824H25.1639H25.2622H25.2632V37.0105H25.2622H25.1639H10.9885C9.94205 37.0105 9.09375 36.1622 9.09375 35.1158V16.6737C9.09375 15.6272 9.94205 14.7789 10.9885 14.7789H33.2201C34.2665 14.7789 35.1148 15.6272 35.1148 16.6737Z" fill="#9DA5AE"/> <path d="M34.2207 29.7416H29.7422V34.2201" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> <path d="M37.5918 37.5915L29.7419 29.7416" stroke="#E879F9" stroke-width="1.64211" stroke-linecap="round" stroke-linejoin="round"/> </svg>
| ver. 1.4 |
Github
|
.
| PHP 7.4.3-4ubuntu2.24 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка