/**
  * Return the slider settings.
  *
  * @since 4.0.0
  * 
  * @param  string      $name The name of the setting. Optional.
  * @return array|mixed       The array of settings or the value of the setting.
  */
 public static function getSettings($name = null)
 {
     if (empty(self::$settings)) {
         self::$settings = array('width' => array('js_name' => 'width', 'label' => __('Width', 'sliderpro'), 'type' => 'number', 'default_value' => 500, 'description' => __('Sets the width of the slide. Can be set to a fixed value, like 900 (indicating 900 pixels), or to a percentage value, like \'100%\'.', 'sliderpro')), 'height' => array('js_name' => 'height', 'label' => __('Height', 'sliderpro'), 'type' => 'number', 'default_value' => 300, 'description' => __('Sets the height of the slide. Can be set to a fixed value, like 900 (indicating 900 pixels), or to a percentage value, like \'100%\'.', 'sliderpro')), 'responsive' => array('js_name' => 'responsive', 'label' => __('Responsive', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Makes the slider responsive. The slider can be responsive even if the \'width\' and/or \'height\' properties are set to fixed values. In this situation, \'width\' and \'height\' will act as the maximum width and height of the slides.', 'sliderpro')), 'aspect_ratio' => array('js_name' => 'aspectRatio', 'label' => __('Aspect Ratio', 'sliderpro'), 'type' => 'number', 'default_value' => -1, 'description' => __('Sets the aspect ratio of the slides. If set to a value different than -1, the height of the slides will be overridden in order to maintain the specified aspect ratio.', 'sliderpro')), 'image_scale_mode' => array('js_name' => 'imageScaleMode', 'label' => __('Image Scale Mode', 'sliderpro'), 'type' => 'select', 'default_value' => 'cover', 'available_values' => array('cover' => __('Cover', 'sliderpro'), 'contain' => __('Contain', 'sliderpro'), 'exact' => __('Exact', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Sets the scale mode of the main slide images. <i>Cover</i> will scale and crop the image so that it fills the entire slide. <i>Contain</i> will keep the entire image visible inside the slide. <i>Exact</i> will match the size of the image to the size of the slide. <i>None</i> will leave the image to its original size.', 'sliderpro')), 'center_image' => array('js_name' => 'centerImage', 'label' => __('Center Image', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates if the image will be centered.', 'sliderpro')), 'auto_height' => array('js_name' => 'autoHeight', 'label' => __('Auto Height', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if height of the slider will be adjusted to the height of the selected slide.', 'sliderpro')), 'start_slide' => array('js_name' => 'startSlide', 'label' => __('Start Slide', 'sliderpro'), 'type' => 'number', 'default_value' => 0, 'description' => __('Sets the slide that will be selected when the slider loads.', 'sliderpro')), 'shuffle' => array('js_name' => 'shuffle', 'label' => __('Shuffle', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if the slides will be shuffled.', 'sliderpro')), 'orientation' => array('js_name' => 'orientation', 'label' => __('Orientation', 'sliderpro'), 'type' => 'select', 'default_value' => 'horizontal', 'available_values' => array('horizontal' => __('Horizontal', 'sliderpro'), 'vertical' => __('Vertical', 'sliderpro')), 'description' => __('Indicates whether the slides will be arranged horizontally or vertically.', 'sliderpro')), 'force_size' => array('js_name' => 'forceSize', 'label' => __('Force Size', 'sliderpro'), 'type' => 'select', 'default_value' => 'none', 'available_values' => array('fullWidth' => __('Full Width', 'sliderpro'), 'fullWindow' => __('Full Window', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Indicates if the size of the slider will be forced to full width or full window.', 'sliderpro')), 'loop' => array('js_name' => 'loop', 'label' => __('Loop', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates if the slider will be loopable (infinite scrolling).', 'sliderpro')), 'slide_distance' => array('js_name' => 'slideDistance', 'label' => __('Slide Distance', 'sliderpro'), 'type' => 'number', 'default_value' => 10, 'description' => __('Sets the distance between the slides.', 'sliderpro')), 'slide_animation_duration' => array('js_name' => 'slideAnimationDuration', 'label' => __('Slide Animation Duration', 'sliderpro'), 'type' => 'number', 'default_value' => 700, 'description' => __('Sets the duration of the slide animation.', 'sliderpro')), 'height_animation_duration' => array('js_name' => 'heightAnimationDuration', 'label' => __('Height Animation Duration', 'sliderpro'), 'type' => 'number', 'default_value' => 700, 'description' => __('Sets the duration of the height animation.', 'sliderpro')), 'visible_size' => array('js_name' => 'visibleSize', 'label' => __('Visible Size', 'sliderpro'), 'type' => 'mixed', 'default_value' => 'auto', 'description' => __('Sets the size of the visible area, allowing for more slides to become visible near the selected slide.', 'sliderpro')), 'fade' => array('js_name' => 'fade', 'label' => __('Fade', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if fade will be used.', 'sliderpro')), 'fade_out_previous_slide' => array('js_name' => 'fadeOutPreviousSlide', 'label' => __('Fade Out Previous Slide', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates if the previous slide will be faded out (in addition to the next slide being faded in).', 'sliderpro')), 'fade_duration' => array('js_name' => 'fadeDuration', 'label' => __('Fade Duration', 'sliderpro'), 'type' => 'number', 'default_value' => 500, 'description' => __('Sets the duration of the fade effect.', 'sliderpro')), 'autoplay' => array('js_name' => 'autoplay', 'label' => __('Autoplay', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether or not autoplay will be enabled.', 'sliderpro')), 'autoplay_delay' => array('js_name' => 'autoplayDelay', 'label' => __('Autoplay Delay', 'sliderpro'), 'type' => 'number', 'default_value' => 5000, 'description' => __('Sets the delay/interval (in milliseconds) at which the autoplay will run.', 'sliderpro')), 'autoplay_direction' => array('js_name' => 'autoplayDirection', 'label' => __('Autoplay Direction', 'sliderpro'), 'type' => 'select', 'default_value' => 'normal', 'available_values' => array('normal' => __('Normal', 'sliderpro'), 'backwards' => __('Backwards', 'sliderpro')), 'description' => __('Indicates whether autoplay will navigate to the next slide or previous slide.', 'sliderpro')), 'autoplay_on_hover' => array('js_name' => 'autoplayOnHover', 'label' => __('Autoplay On Hover', 'sliderpro'), 'type' => 'select', 'default_value' => 'pause', 'available_values' => array('pause' => __('Pause', 'sliderpro'), 'stop' => __('Stop', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Indicates if the autoplay will be paused or stopped when the slider is hovered.', 'sliderpro')), 'arrows' => array('js_name' => 'arrows', 'label' => __('Arrows', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the arrow buttons will be created.', 'sliderpro')), 'fade_arrows' => array('js_name' => 'fadeArrows', 'label' => __('Fade Arrows', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the arrows will fade in only on hover.', 'sliderpro')), 'buttons' => array('js_name' => 'buttons', 'label' => __('Buttons', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the buttons will be created.', 'sliderpro')), 'keyboard' => array('js_name' => 'keyboard', 'label' => __('Keyboard', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether keyboard navigation will be enabled.', 'sliderpro')), 'keyboard_only_on_focus' => array('js_name' => 'keyboardOnlyOnFocus', 'label' => __('Keyboard Only On Focus', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the slider will respond to keyboard input only when the slider is in focus.', 'sliderpro')), 'touch_swipe' => array('js_name' => 'touchSwipe', 'label' => __('Touch Swipe', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the touch swipe will be enabled for slides.', 'sliderpro')), 'touch_swipe_threshold' => array('js_name' => 'touchSwipeThreshold', 'label' => __('Touch Swipe Threshold', 'sliderpro'), 'type' => 'number', 'default_value' => 50, 'description' => __('Sets the minimum amount that the slides should move.', 'sliderpro')), 'fade_caption' => array('js_name' => 'fadeCaption', 'label' => __('Fade Caption', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether or not the captions will be faded.', 'sliderpro')), 'caption_fade_duration' => array('js_name' => 'captionFadeDuration', 'label' => __('Caption Fade Duration', 'sliderpro'), 'type' => 'number', 'default_value' => 500, 'description' => __('Sets the duration of the fade animation.', 'sliderpro')), 'full_screen' => array('js_name' => 'fullScreen', 'label' => __('Full Screen', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the full-screen button is enabled.', 'sliderpro')), 'fade_full_screen' => array('js_name' => 'fadeFullScreen', 'label' => __('Fade Full Screen', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the button will fade in only on hover.', 'sliderpro')), 'wait_for_layers' => array('js_name' => 'waitForLayers', 'label' => __('Wait For Layers', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the slider will wait for the layers to disappear before going to a new slide.', 'sliderpro')), 'auto_scale_layers' => array('js_name' => 'autoScaleLayers', 'label' => __('Auto Scale Layers', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the layers will be scaled automatically.', 'sliderpro')), 'auto_scale_reference' => array('js_name' => 'autoScaleReference', 'label' => __('Auto Scale Reference', 'sliderpro'), 'type' => 'number', 'default_value' => -1, 'description' => __('Sets a reference width which will be compared to the current slider width in order to determine how much the layers need to scale down. By default, the reference width will be equal to the slide width. However, if the slide width is set to a percentage value, then it\'s necessary to set a specific value for \'Auto Scale Reference\'.', 'sliderpro')), 'lazy_loading' => array('label' => __('Lazy Loading', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if the main images will be loaded only when they are visible.', 'sliderpro')), 'lightbox' => array('js_name' => 'lightbox', 'label' => __('Lightbox', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if the links specified to the main images will be opened in a lightbox.', 'sliderpro')), 'custom_class' => array('label' => __('Custom Class', 'sliderpro'), 'type' => 'text', 'default_value' => '', 'description' => __('Adds a custom class to the slider, for use in custom css. Add the class name without the dot, i.e., you need to add <i>my-slider</i>, not <i>.my-slider</i>.', 'sliderpro')), 'small_size' => array('js_name' => 'smallSize', 'label' => __('Small Size', 'sliderpro'), 'type' => 'number', 'default_value' => 480, 'description' => __('If the slider size is below this size, the small version of the images will be used.', 'sliderpro')), 'medium_size' => array('js_name' => 'mediumSize', 'label' => __('Medium Size', 'sliderpro'), 'type' => 'number', 'default_value' => 768, 'description' => __('If the slider size is below this size, the medium version of the images will be used.', 'sliderpro')), 'large_size' => array('js_name' => 'largeSize', 'label' => __('Large Size', 'sliderpro'), 'type' => 'number', 'default_value' => 1024, 'description' => __('If the slider size is below this size, the large version of the images will be used.', 'sliderpro')), 'hide_image_title' => array('label' => __('Hide Image Title', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates if the title tag will be removed from images in order to prevent the title to show up in a tooltip when the image is hovered.', 'sliderpro')), 'update_hash' => array('js_name' => 'updateHash', 'label' => __('Update Hash', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the hash will be updated when a new slide is selected.', 'sliderpro')), 'reach_video_action' => array('js_name' => 'reachVideoAction', 'label' => __('Reach Video Action', 'sliderpro'), 'type' => 'select', 'default_value' => 'none', 'available_values' => array('playVideo' => __('Play Video', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Indicates if the autoplay will be paused or stopped when the slider is hovered.', 'sliderpro')), 'leave_video_action' => array('js_name' => 'leaveVideoAction', 'label' => __('Leave Video Action', 'sliderpro'), 'type' => 'select', 'default_value' => 'pauseVideo', 'available_values' => array('stopVideo' => __('Stop Video', 'sliderpro'), 'pauseVideo' => __('Pause Video', 'sliderpro'), 'removeVideo' => __('Remove Video', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Sets the action that the video will perform when another slide is selected.', 'sliderpro')), 'play_video_action' => array('js_name' => 'playVideoAction', 'label' => __('Play Video Action', 'sliderpro'), 'type' => 'select', 'default_value' => 'stopAutoplay', 'available_values' => array('stopAutoplay' => __('Stop Autoplay', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Sets the action that the slider will perform when the video starts playing.', 'sliderpro')), 'pause_video_action' => array('js_name' => 'pauseVideoAction', 'label' => __('Pause Video Action', 'sliderpro'), 'type' => 'select', 'default_value' => 'none', 'available_values' => array('startAutoplay' => __('Start Autoplay', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Sets the action that the slider will perform when the video starts playing.', 'sliderpro')), 'end_video_action' => array('js_name' => 'endVideoAction', 'label' => __('End Video Action', 'sliderpro'), 'type' => 'select', 'default_value' => 'none', 'available_values' => array('startAutoplay' => __('Start Autoplay', 'sliderpro'), 'nextSlide' => __('Next Slide', 'sliderpro'), 'replayVideo' => __('Replay Video', 'sliderpro'), 'none' => __('None', 'sliderpro')), 'description' => __('Sets the action that the slider will perform when the video ends.', 'sliderpro')), 'auto_thumbnail_images' => array('label' => __('Auto Thumbnail Images', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the thumbnail images will be generated automatically based on the main image specified for the slide. This option can be used only with manually created sliders, not with dynamic sliders.', 'sliderpro')), 'thumbnail_image_size' => array('js_name' => 'thumbnailImageSize', 'label' => __('Thumbnail Image Size', 'sliderpro'), 'type' => 'select', 'default_value' => '', 'available_values' => array(), 'description' => __('Sets the registered image size that will be used for automatically generated thumbnails.', 'sliderpro')), 'thumbnail_width' => array('js_name' => 'thumbnailWidth', 'label' => __('Thumbnail Width', 'sliderpro'), 'type' => 'number', 'default_value' => 100, 'description' => __('Sets the width of the thumbnail.', 'sliderpro')), 'thumbnail_height' => array('js_name' => 'thumbnailHeight', 'label' => __('Thumbnail Height', 'sliderpro'), 'type' => 'number', 'default_value' => 80, 'description' => __('Sets the height of the thumbnail.', 'sliderpro')), 'thumbnails_position' => array('js_name' => 'thumbnailsPosition', 'label' => __('Thumbnails Position', 'sliderpro'), 'type' => 'select', 'default_value' => 'bottom', 'available_values' => array('top' => __('Top', 'sliderpro'), 'bottom' => __('Bottom', 'sliderpro'), 'right' => __('Right', 'sliderpro'), 'left' => __('Left', 'sliderpro')), 'description' => __('Sets the position of the thumbnail scroller.', 'sliderpro')), 'thumbnail_pointer' => array('js_name' => 'thumbnailPointer', 'label' => __('Thumbnail Pointer', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates if a pointer will be displayed for the selected thumbnail.', 'sliderpro')), 'thumbnail_arrows' => array('js_name' => 'thumbnailArrows', 'label' => __('Thumbnail Arrows', 'sliderpro'), 'type' => 'boolean', 'default_value' => false, 'description' => __('Indicates whether the thumbnail arrows will be enabled.', 'sliderpro')), 'fade_thumbnail_arrows' => array('js_name' => 'fadeThumbnailArrows', 'label' => __('Fade Thumbnail Arrows', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the thumbnail arrows will be faded.', 'sliderpro')), 'thumbnail_touch_swipe' => array('js_name' => 'thumbnailTouchSwipe', 'label' => __('Thumbnail Touch Swipe', 'sliderpro'), 'type' => 'boolean', 'default_value' => true, 'description' => __('Indicates whether the touch swipe will be enabled for thumbnails.', 'sliderpro')), 'link_target' => array('js_name' => 'linkTarget', 'label' => __('Link Target', 'sliderpro'), 'type' => 'select', 'default_value' => '_self', 'available_values' => array('_self' => __('Self', 'sliderpro'), '_blank' => __('Blank', 'sliderpro'), '_parent' => __('Parent', 'sliderpro'), '_top' => __('Top', 'sliderpro')), 'description' => __('Sets the location where the slide links will be opened.', 'sliderpro')));
         self::$settings = apply_filters('sliderpro_default_settings', self::$settings);
     }
     if (!is_null($name)) {
         return self::$settings[$name];
     }
     return self::$settings;
 }