{
"name": "start-gulp",
"version": "3.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Brendan8c",
"license": "ISC",
"type": "module",
"devDependencies": {
"browser-sync": "^2.29.3",
"gulp": "^4.0.2",
"gulp-autoprefixer": "^9.0.0",
"gulp-concat": "^2.6.1",
"gulp-cssmin": "^0.2.0",
"gulp-rename": "^2.0.0",
"gulp-sass": "^5.1.0",
"gulp-terser": "^2.1.0",
"gulp-watch": "^5.0.1",
"jquery": "^3.7.1",
"normalize.css": "^8.0.1",
"smoothscroll-polyfill": "^0.4.4"
},
"dependencies": {
"sass": "^1.69.5",
"swiper": "^11.0.5"
}
}
import gulp from 'gulp';
import dartSass from 'sass';
import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
import rename from 'gulp-rename';
import browserSync from 'browser-sync';
import autoprefixer from 'gulp-autoprefixer';
import concat from 'gulp-concat';
import terser from 'gulp-terser';
import cssmin from 'gulp-cssmin';
import watch from 'gulp-watch';
gulp.task('style', function () {
return gulp.src(['node_modules/normalize.css/normalize.css', 'node_modules/swiper/swiper-bundle.min.css']).pipe(concat('libs.min.css')).pipe(cssmin()).pipe(gulp.dest('app/css'));
});
gulp.task('script', function () {
return gulp.src(['node_modules/jquery/dist/jquery.js', 'node_modules/swiper/swiper-bundle.js']).pipe(concat('libs.min.js')).pipe(terser()).pipe(gulp.dest('app/js'));
});
gulp.task('script-min', function () {
return gulp.src('app/js/main.js').pipe(concat('main.min.js')).pipe(terser()).pipe(gulp.dest('app/js'));
});
gulp.task('sass', function () {
return gulp
.src('app/scss/**/*.scss')
.pipe(sass({ outputStyle: 'compressed' }))
.pipe(rename({ suffix: '.min' }))
.pipe(
autoprefixer({
overrideBrowserslist: ['last 8 versions'],
})
)
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({ stream: true }));
});
gulp.task('js-watch', function () {
gulp.watch('app/js/main.js', gulp.series('script-min')).on('change', browserSync.reload);
});
gulp.task('sass-watch', function () {
return gulp
.src('app/scss/**/*.scss')
.pipe(watch('app/scss/**/*.scss').on('change', gulp.series('sass')))
.pipe(sass({ outputStyle: 'compressed' }))
.pipe(rename({ suffix: '.min' }))
.pipe(
autoprefixer({
overrideBrowserslist: ['last 8 versions'],
})
)
.pipe(gulp.dest('app/css'))
.pipe(browserSync.reload({ stream: true }));
});
gulp.task('html', function () {
return gulp.src('app/*.html').pipe(browserSync.reload({ stream: true }));
});
gulp.task('js', function () {
return gulp.src('app/js/*.js').pipe(browserSync.reload({ stream: true }));
});
gulp.task('watch', function () {
gulp.watch('app/scss/**/*.scss', gulp.parallel('sass-watch'));
gulp.watch('app/*.html', gulp.parallel('html'));
gulp.watch('app/js/*.js', gulp.parallel('js-watch'));
});
gulp.task('browser-sync', function () {
browserSync.init({
server: {
baseDir: 'app/',
},
});
});
gulp.task('default', gulp.parallel('style', 'script', 'script-min', 'sass-watch', 'js-watch', 'watch', 'browser-sync'));
new Swiper('.swiper-container', {
slidesPerView: 1, // Количество слайдов на один просмотр (слайды, видимые одновременно в контейнере слайдера).
loop: true, // Режим непрерывного цикла.
autoplay: {
delay: 3000, // Задержка между переходами.
pauseOnMouseEnter: true, // При включении автовоспроизведение будет приостановлено при наведении указателя (мыши) на контейнер Swiper.
},
pagination: {
el: '.swiper-pagination',
clickable: true, // Делаем точки кликабельными
},
speed: 800, // Продолжительность анимации при переключении точек в миллисекундах
});
<head>
<link rel="stylesheet" href="css/libs.min.css" />
<link rel="stylesheet" href="css/style.min.css" />
</head>
<body>
<!-- swiper-container Название класса как и в main.js -->
<div class="swiper-container">
<!-- swiper-wrapper Название класса это используем -->
<div class="swiper-wrapper">
<!-- swiper-slide Название класса это используем для каждого из слайдов -->
<div class="swiper-slide">
<img src="img/Image_1.webp" />
</div>
<div class="swiper-slide">
<img src="img/Image_2.webp" />
</div>
<div class="swiper-slide">
<img src="img/Image_3.webp" />
</div>
</div>
<!-- swiper-pagination Название класса как и в main.js -->
<div class="swiper-pagination"></div>
</div>
<script src="js/libs.min.js"></script>
<script src="js/main.min.js"></script>
</body>
<?php if (have_rows('my_works_fields')) : ?>
<?php while (have_rows('my_works_fields')) : the_row(); ?>
<div class="wrapper-the-work">
<div class="the-work">
<!-- Получаем значения полей для каждого блока -->
<?php $link = get_sub_field('Link');
$image = get_sub_field('Image');
$title = get_sub_field('Description');
?>
<a class="myworks__mysite--piture" href="<?php echo $link; ?>" target="_blank">
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>">
<div class="myworks__mysite--open">
<p class="ff2 fz3 myworks__mysite--open-text"><?php echo $title; ?></p>
</div>
</a>
</div>
</div>
<?php endwhile; ?>
<?php endif; ?>
$title = get_sub_field('Description');
server {
listen 81;
server_name example.ru;
location /search {
root /home/apps/file;
index file.js;
}
}
<div class="container">
<div class="cart">
<input class="input amount-one" type="text" value="0" />
<input class="input amount-two" type="text" value="0" />
<input class="input amount-three" type="text" value="0" />
<button class="btn">click</button>
</div>
<div class="cart">
<input class="input amount-one" type="text" value="0" />
<input class="input amount-two" type="text" value="0" />
<input class="input amount-three" type="text" value="0" />
<button class="btn">click</button>
</div>
<div class="box">
<input id="clear" type="button" value="clear all" />
<div class="info"></div>
</div>
</div>
body {
display: flex;
justify-content: center;
background-color: #1d1e22;
}
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.cart {
display: flex;
flex-direction: column;
margin: 20px;
}
.input {
padding-left: 20px;
height: 20px;
margin-bottom: 5px;
font-size: 20px;
border-radius: 10px;
}
.btn {
height: 30px;
font-size: 20px;
border-radius: 10px;
}
.box {
display: flex;
flex-direction: column;
align-items: center;
margin: 20px;
}
#clear {
width: 100px;
height: 40px;
margin-bottom: 10px;
font-size: 20px;
border-radius: 10px;
}
.info {
display: flex;
justify-content: center;
align-items: center;
width: 200px;
height: 30px;
border: 2px solid #bbb;
background-color: #fff;
}
let currentTariff = JSON.parse(localStorage.getItem('cabins') || '[]');
const passengersMax = 3; // Максимальное количество пассажиров
let accommodationSum = currentTariff.reduce((acc, curr) => acc + curr.accommodation, 0);
const btn = document.querySelectorAll('.btn');
const info = document.querySelector('.info');
// Вывести текущие тарифные данные в информационный блок
const render = (tariff = currentTariff) => {
[...tariff].forEach(el => {
info.insertAdjacentHTML('beforeend', `<div>${el.accommodation}</div>`);
});
};
render();
btn.forEach(button => {
button.addEventListener('click', function (e) {
const cart = e.target.closest('.cart');
const countOne = cart.querySelector('.amount-one').value;
const countTwo = cart.querySelector('.amount-two').value;
const countThree = cart.querySelector('.amount-three').value;
const accommodationPass = parseInt(countOne) + parseInt(countTwo) + parseInt(countThree);
if (accommodationSum + accommodationPass > passengersMax) {
alert('В этом заказе вы превысили максимальное количество человек');
return;
}
const obj = {
countOne: countOne,
countTwo: countTwo,
countThree: countThree,
accommodation: parseInt(accommodationPass),
};
// Обновляем текущий тариф и отображаем новые данные
currentTariff.push(obj);
updateState();
const sum = currentTariff.reduce((acc, curr) => acc + curr.accommodation, 0);
info.innerHTML = `<div>Общая сумма: ${sum}</div>`;
accommodationSum = sum; // Устанавливаем сумму размещения на текущую сумму
});
function updateState() {
localStorage.setItem('cabins', JSON.stringify(currentTariff));
}
// Очищаем входы и информационный блок при нажатии кнопки "clear all"
function clearData() {
currentTariff.length = 0;
localStorage.removeItem('cabins');
info.innerHTML = '';
const inputs = document.querySelectorAll('input[type="text"]');
inputs.forEach(input => {
input.value = 0;
});
accommodationSum = 0; // Сбрасываем сумму размещения до 0
}
const clearBtn = document.querySelector('input#clear');
clearBtn.addEventListener('click', clearData);
});
function MyPrompt() {
const [isBlocking, setIsBlocking] = React.useState(false);
const location = useLocation();
const handleBeforeUnload = (event) => {
if (isBlocking) {
event.preventDefault();
event.returnValue = "Are you sure you want to leave?";
}
};
React.useEffect(() => {
window.addEventListener("beforeunload", handleBeforeUnload);
return () => {
window.removeEventListener("beforeunload", handleBeforeUnload);
};
}, [isBlocking]);
const handleFormChange = (event) => {
if (event.target.value.length > 0) {
setIsBlocking(true);
} else {
setIsBlocking(false);
}
};
return (
<div>
<form onChange={handleFormChange}>
<input type="text" placeholder="Type something here" />
<textarea placeholder="Type something here"></textarea>
<button type="submit">Submit</button>
<button type="button" onClick={() => setIsBlocking(false)}>Cancel</button>
</form>
</div>
);
}
import os
input_file = "input.mp4"
output_file = "result.mp4"
os.system(f"ffmpeg -i {input_file} -s 600x600 {output_file}")
pip install ffmpeg-python
os.system(f"ffmpeg -i {input_file} -vf scale=600:-1 {output_file}")
"prettier.tabWidth": 2, // Расстояние отступов.
"editor.tabSize": 2, // Число пробелов, соответствующее табуляции.
"editor.insertSpaces": true, // Вставлять пробелы при нажатии клавиши TAB. Этот параметр переопределяется на основе содержимого файла, если включен параметр "editor.detectIndentation".
"editor.detectIndentation": false, // На основе содержимого файла определяет, будут ли "editor.tabSize" и "editor.insertSpaces" автоматически обнаружены при открытии файла.
@echo off
(start "1.txt" "KM-Goanna\1.txt" & start "2.txt" "KM-Goanna\2.txt")
exit
npm i <имя_пакета> -D
npm uninstall <имя_пакета>