document.getElementById("myPasswordField").focus();
//Объекты обычно объявляют как константы, чтобы случайно не переписать сам объект
//при это свойства объекта менять можно
//потому что константа это значение переменной - ссылка на объект в памяти
const existence1= {
value: false
};
function addcartProduct (num) {
if (num.value) {console.log('+1')}
else {
console.log(num)
num.value = true;
}
}
//false
console.log(existence1.value)
addcartProduct(existence1);
//true
console.log(existence1.value)
.testClass {
font-size: 1.5em;
text-align: center;
color: #bf4f74;
}
.testClass::before {
content: 'QQ';
position: absolute;
top: 10px;
}
// ...
const [textColour, setTextColour] = useState('blue');
const TestElement = styled.h1`
&:before {
color: ${textColour}
}
`;
return (
<>
<button
onClick={() =>
setTextColour((color) => (color === 'black' ? 'red' : 'black'))
}
>
Change color of :before
</button>
<Title TestElement="testClass"> HELLO </Title>
</>
);
/**
* A marker interface for entity reference classes.
* <p>
* This is used primarily as a means of ensuring type safety in collections
* of mixed type references.
*
* @see org.alfresco.service.cmr.repository.NodeService#removeChild(NodeRef, NodeRef)
*
* @author Derek Hulley
*/
@vite(['resources/css/app.css', 'resources/js/app.js'])
npm run build
выполнена успешно, и код выше(тот что с @vite) в основном layout присутствует, то вам не о чем беспокоится. Для проверки остановите дев сервер и проверьте код в браузере, он должен изменить пути в соответствии с настройками, обычно подставляя хост из .env переменной APP_URL и у вас будет нечто вроде(на локальной машине с APP_URL=http://localhost
)<!-- Scripts -->
<link rel="preload" as="style" href="http://localhost/build/assets/app.2c8c25ff.css" />
<link rel="modulepreload" href="http://localhost/build/assets/app.d7d1b58b.js" />
<link rel="stylesheet" href="http://localhost/build/assets/app.2c8c25ff.css" />
<script type="module" src="http://localhost/build/assets/app.d7d1b58b.js"></script>
<!-- Styles -->
http://localhost
будет иное значение.const standart = moment().tz("Europe/Moscow");
const nowDay = moment(standart, 'YYYY-MM-DD HH:mm');
const eventDay = moment('2023-05-21 02:05', 'YYYY-MM-DD HH:mm');
const countDown = () => {
const timers = moment(nowDay, 'YYYY-MM-DD HH:mm')
.countdown(eventDay, "YYYY-MM-DD HH:mm");
console.log(timers.value)
if(interval && timers.value <= 0) {
clearInterval(interval)
}
console.log(timers.toString())
}
const interval = setInterval(countDown, 1000);
class A {
public $foo = 1;
}
//создали переменную
//в ней хранится id объекта, сам объект где-то в памяти оптимизированно лежит
$newObj = new A;
//Вывод 1
echo $newObj->foo;
function foo($obj) {
//в obj скопирован id объекта
//тк он тот же, то меняется и оригинальный объект
$obj->foo = 2;
//локальная переменная перетёрся, больше id объекта не хранит
//на внешнюю не повлияло
$obj = null;
}
foo($newObj);
// получили 2
echo $newObj->foo;
function bar(&$obj) {
//obj ссылается на тоже место в памяти, что и внешняя переменная с id объета
//тк он тот же, то меняется и оригинальный объект (тут логично, тк по ссылке)
$obj->foo = 2;
//локальная переменная перетёрся, больше id объекта не хранит
//внешняя тоже перетрётся
$obj = null;
}
bar($newObj);
//ошибка предупреждение, нельзя читать свойства на null
echo $newObj->foo;
function mySum($a, $b, &$result) {
$result = $a + $b;
}
//первые два параметра по значению, в третий передаём переменную
//она тут же инициализируется (как если бы её до этого написать просто $res;)
// и передаётся её ссылка внутрь функции
mySum(1,2, $res);
//3
echo $res;
pointer-events: none;
, а потом для нужных элементов включать, в данном случае для canvasFluid: pointer-events: all;
document.querySelector('[d="M5.293 8.293a1 1 0 0 1 1.414 0L12 13.586l5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 0-1.414Z"]').parentElement.parentElement;
//Данные по содержанию меню
const furnTypes = [
{
'id' : 1,
'title' : 'Офисная <span>меб</span>ель'
},
{
'id' : 2,
'title' : 'Техника / сантехника'
},
{
'id' : 3,
'title' : 'Сборка кухни'
},
];
//Каждое активно может быть только один раз
const activeMenuItems = new Set();
const clickHandler = e => {
if(activeMenuItems.add(parseInt(e.target.getAttribute("furn-id"))) ) {
//Если поменялся перестроим меню
updateActiveMenuItems(activeMenuItems);
}
};
//Строим меню на основе данных items, вставляем в target
//на элементы вешаем событие clickHandler
buildSelectMenu = (target, items, clickHandler) =>
{
//создаем родителя
const parentUl = document.createElement("ul");
parentUl.classList.add('types-select__options');
//Каждый из пунктов
items.forEach(
item => {
const childLi = document.createElement("li");
childLi.classList.add('types-select__option');
childLi.setAttribute('furn-id', item['id']);
childLi.addEventListener("click",clickHandler);
const childTextBlock = document.createElement("div");
childTextBlock.classList.add('types-select__option-text');
// Лучше потом на setHtml заменить, но пока нет поддержки
childTextBlock.innerHTML = item['title'];
childLi.appendChild(childTextBlock);
parentUl.appendChild(childLi);
}
)
//Запихиваем туда куда нужно
target.appendChild(parentUl);
return parentUl;
}
const updateActiveMenuItems = ids => {
const parent = document.querySelector('.types-select__active-items');
parent.innerHTML = '';
ids.forEach( id => {
const curItem = furnTypes.find( el => el['id'] === id)
const activeMenuItemEl = document.createElement("div");
const activeMenuItemTitleEl = document.createElement("span");
activeMenuItemTitleEl.innerHTML = curItem['title'];
const activeMenuItemdeleteButtonEl = document.createElement("button");
//Лучше через текстовую ноду
activeMenuItemdeleteButtonEl.innerHTML = 'x';
activeMenuItemdeleteButtonEl.setAttribute('active-furn-id', curItem['id']);
activeMenuItemdeleteButtonEl.addEventListener("click", e => {
//Чтобы кликалась не взирая на клик событие родителя
if(e && e.stopPropagation) e.stopPropagation();
if(activeMenuItems.delete(parseInt(e.target.getAttribute("active-furn-id"))) ) {
//Если поменялся перестроим меню
updateActiveMenuItems(activeMenuItems);
}
});
activeMenuItemEl.appendChild(activeMenuItemTitleEl);
activeMenuItemEl.appendChild(activeMenuItemdeleteButtonEl);
parent.appendChild(activeMenuItemEl);
})
}
// Строим меню
const furnitureMenu = buildSelectMenu(
document.querySelector('#furnitureMenu'),
furnTypes,
clickHandler
);
document.querySelector('.types-select__btn')
.addEventListener("click", e => {
// Странное имя класса, наверное должн быть types-select__menu_active
document.querySelector('.types-select__menu').classList.toggle("_active");
} )
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages = [
# system - системная базовая роль, грубо говоря это сама база "Я" gpt
{"role": "system", "content" : "You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\nKnowledge cutoff: 2021-09-01\nCurrent date: 2023-03-02"},
# user - роль юзера кто задаёт вопросы
{"role": "user", "content" : "How are you?"},
# Асистент одна из ролей, можно задать ранее в запросе, типа Act as bla blah
# либо он поймёт что должен быть именно ассистентом смотрите оп ответу в API
{"role": "assistant", "content" : "I am doing well"},
# Снова юзер
{"role": "user", "content" : "How long does light take to travel from the sun to the eart?"}]
)
//Создаем энкодер, который нам сделает ArrayBuffer в utf8
//Без параметра будет кодировка UTF8
const encoderUTF8 = new TextEncoder();
//Закодируем строку
const arrayUTF8 = encoderUTF8.encode("Привет!");
//Теперь создадим декодер в cp1251, список кодировок и их метки здесь
// https://developer.mozilla.org/en-US/docs/Web/API/Encoding_API/Encodings
let encToCP1251 = new TextDecoder('cp1251');
//Получаем строку в нужной кодировке
const strCP1251 = encToCP1251.decode(arrayUTF8);
//Генерируем URL
const url = URL.createObjectURL(
//Создаем файл
new File([strCP1251], "foo.txt", {
type: "text/plain",})
);
//Создаём ссылку
let aElement = document.createElement('a');
aElement.href = url;
aElement.download = 'filenameCP1251.txt';
aElement.textContent = 'Скачай меня полностью!';
document.body.appendChild(aElement);