/**
* Gulpfile.
* Project Configuration for gulp tasks.
*/
var pkg = require('./package.json');
var project = pkg.name;
var slug = pkg.slug;
var version = pkg.version;
var projectURL = 'http://demo.merlinwp.dev/wp-admin/themes.php?page=merlin';
// Translations.
var text_domain = 'akd-demo-importer';
var destFile = slug+'.pot';
var packageName = project;
var bugReport = pkg.author_uri;
var lastTranslator = pkg.author;
var team = pkg.author_shop;
var translatePath = './languages/' + destFile;
var translatableFiles = ['./**/*.php', '!merlin-config-sample.php', '!merlin-filters-sample.php' ];
// Styles.
var merlinStyleSRC = './assets/scss/merlin.scss'; // Path to main .scss file.
var merlinStyleDestination = './assets/css/'; // Path to place the compiled CSS file.
var merlinCssFiles = './assets/css/**/*.css'; // Path to main .scss file.
var merlinStyleWatchFiles = './assets/scss/**/*.scss'; // Path to all *.scss files inside css folder and inside them.
// Scripts.
var merlinScriptSRC = './assets/js/merlin.js'; // Path to JS custom scripts folder.
var merlinScriptDestination = './assets/js/'; // Path to place the compiled JS custom scripts file.
var merlinScriptFile = 'merlin'; // Compiled JS file name.
var merlinScriptWatchFiles = './assets/js/*.js'; // Path to all *.scss files inside css folder and inside them.
// Watch files.
var projectPHPWatchFiles = ['./**/*.php', '!_dist'];
// Build files.
var buildFiles = ['./**', '!node_modules/**', '!dist/', '!demo/**', '!composer.json', '!composer.lock', '!.gitattributes', '!phpcs.xml', '!package.json', '!package-lock.json', '!gulpfile.js', '!LICENSE', '!README.md', '!assets/scss/**', '!merlin-config-sample.php', '!merlin-filters-sample.php', '!CODE_OF_CONDUCT.md' ];
var buildDestination = './dist/merlin/';
var distributionFiles = './dist/merlin/**/*';
// Browsers you care about for autoprefixing. https://github.com/ai/browserslist
const AUTOPREFIXER_BROWSERS = [
'last 2 version',
'> 1%',
'ie >= 9',
'ie_mob >= 10',
'ff >= 30',
'chrome >= 34',
'safari >= 7',
'opera >= 23',
'ios >= 7',
'android >= 4',
'bb >= 10'
];
/**
* Load Plugins.
*/
var gulp = require('gulp');
var autoprefixer = require('gulp-autoprefixer');
var browserSync = require('browser-sync').create();
var cache = require('gulp-cache');
var cleaner = require('gulp-clean');
var copy = require('gulp-copy');
var csscomb = require('gulp-csscomb');
var filter = require('gulp-filter');
var lineec = require('gulp-line-ending-corrector');
var minifycss = require('gulp-clean-css');
var notify = require('gulp-notify');
var reload = browserSync.reload;
var rename = require('gulp-rename');
var replace = require('gulp-replace-task');
var runSequence = require('gulp-run-sequence');
var sass = require('gulp-sass');
var sort = require('gulp-sort');
var uglify = require('gulp-uglify');
var wpPot = require('gulp-wp-pot');
var zip = require('gulp-zip');
var composer = require('gulp-composer');
/**
* Development Tasks.
*/
gulp.task('clear', function () {
cache.clearAll();
});
gulp.task( 'browser_sync', function() {
browserSync.init( {
// Project URL.
proxy: projectURL,
// `true` Automatically open the browser with BrowserSync live server.
// `false` Stop the browser from automatically opening.
open: true,
// Inject CSS changes.
injectChanges: true,
});
});
gulp.task('styles', function () {
gulp.src( merlinStyleSRC )
.pipe( sass( {
errLogToConsole: true,
outputStyle: 'expanded',
precision: 10
} ) )
.on( 'error', console.error.bind( console ) )
.pipe( autoprefixer( AUTOPREFIXER_BROWSERS ) )
.pipe( csscomb() )
.pipe( gulp.dest( merlinStyleDestination ) )
.pipe( browserSync.stream() )
.pipe( rename( { suffix: '.min' } ) )
.pipe( minifycss( {
maxLineLen: 10
}))
.pipe( gulp.dest( merlinStyleDestination ) )
.pipe( browserSync.stream() )
});
gulp.task( 'scripts', function() {
gulp.src( merlinScriptSRC )
.pipe( rename( {
basename: merlinScriptFile,
suffix: '.min'
}))
.pipe( uglify() )
.pipe( lineec() )
.pipe( gulp.dest( merlinScriptDestination ) )
});
gulp.task( 'default', ['clear', 'styles', 'scripts', 'browser_sync' ], function () {
gulp.watch( projectPHPWatchFiles, reload );
gulp.watch( merlinStyleWatchFiles, [ 'styles' ] );
});
gulp.task("composer", function () {
composer({ "async": false });
});
/**
* Build Tasks.
*/
gulp.task( 'build-translate', function () {
gulp.src( translatableFiles )
.pipe( sort() )
.pipe( wpPot( {
domain : text_domain,
destFile : destFile,
package : project,
bugReport : bugReport,
lastTranslator: lastTranslator,
team : team
} ))
.pipe( gulp.dest( translatePath ) )
});
gulp.task( 'build-clean', function () {
return gulp.src( ['./dist/*'] , { read: false } )
.pipe(cleaner());
});
gulp.task( 'build-copy', ['build-clean', 'composer'], function() {
return gulp.src( buildFiles )
.pipe( copy( buildDestination ) );
});
gulp.task( 'build-clean-and-copy', ['build-clean', 'build-copy' ], function () { } );
gulp.task('build-variables', ['build-clean-and-copy'], function () {
return gulp.src( distributionFiles )
.pipe( replace( {
patterns: [
{
match: 'pkg.version',
replacement: version
},
{
match: 'textdomain',
replacement: pkg.textdomain
}
]
}))
.pipe( gulp.dest( buildDestination ) );
});
gulp.task( 'build-zip', ['build-variables'] , function() {
return gulp.src( buildDestination+'/**' , { base: 'dist' } )
.pipe( zip( 'merlin.zip' ) )
.pipe( gulp.dest( './dist/' ) );
});
gulp.task( 'build-clean-after-zip', ['build-zip'], function () {
return gulp.src( [ buildDestination, '!/dist/' + slug + '-wp.zip'] , { read: false } )
.pipe(cleaner());
});
gulp.task( 'build-zip-and-clean', ['build-zip', 'build-clean-after-zip' ], function () { } );
gulp.task( 'build-notification', function () {
return gulp.src( '' )
.pipe( notify( { message: 'Your build of ' + packageName + ' is complete.', onLast: true } ) );
});
gulp.task('build', function(callback) {
runSequence( 'clear', 'build-clean', ['styles', 'scripts', 'build-translate'], 'build-clean-and-copy', 'build-variables', 'build-zip-and-clean', 'build-notification', callback);
});
/*! elementor - v3.28.0 - 01-04-2025 */
.elementor-widget-image-carousel .swiper{position:static}.elementor-widget-image-carousel .swiper .swiper-slide figure{line-height:inherit}.elementor-widget-image-carousel .swiper-slide{text-align:center}.elementor-image-carousel-wrapper:not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}
Cursos – Subacuáticos FTV
DESCRIPCIÓN DEL CURSO:
El Curso de Introducción a la Apnea, tiene como finalidad promover y masificar la enseñanza del buceo libre en un nivel de iniciación, mediante una capacitación dirigida a personas que deseen disfrutar de la inmensidad del mar de manera libre y usando su propia capacidad pulmonar. Este curso ofrece a los participantes las herramientas y conocimientos necesarios para iniciarse o mejorar su nivel de formación para la práctica de este deporte.
OBJETIVO:
Introducir a las personas en la apnea como deporte, desde un Nivel de Iniciación, para que puedan disfrutar de la inmensidad del mar desarrollando las capacidades naturales, “aprendiendo a respirar para dejar de respirar” en este nuevo curso de introducción al maravilloso mundo de la Apnea.
MODALIDAD: Presencial
REQUERIMIENTOS PARA LOS PARTICIPANTES:
• Tener 18 años cumplidos a la fecha de inicio del curso.
(Para menores de edad se requiere autorización escrita del Padre o Representante Legal)
• Saber nadar
• Poseer equipo ligero para la parte práctica (aletas, visor y snorkel), cinturón con plomo, weit suit (no limitativo).
El curso incluye:
• Certificado credencial Física de aprobación del nivel
• Material didáctico en digital
• Uso de piscina
• Alquiler Equipo básico (máscara, snorkel, aletas, peso)
• Costo de embarcación
• Entrenamientos posteriores los días martes y jueves
CONTENIDO DEL CURSO:
PARTE TEÓRICA:
• Reseña histórica de la Apnea.
• Descripción general del deporte.
• Modalidades y Técnicas para la práctica de la apnea.
• Técnicas de Respiración.
• Sistemas de Seguridad.
PARTE PRÁCTICA:
• Demostración de la actividad dentro del agua.
• Utilización correcta del equipo.
• Ejercicios básicos y técnicas de respiración
• Desplazamiento en piscina
• Inmersión en mar
DURACIÓN: 12 Horas
• 1er dia – jueves 18h00 clase teórica y ejercicios de respiración en seco
• 2do día- viernes 19h00 ejercicios prácticos en agua y desplazamiento con equipo
• 3er día – Sábado 10h00 Desplazamiento sin equipo y apnea estática
• 4to día – Domingo 09h00 Ayangue inmersión en mar.