Skip to content

Instantly share code, notes, and snippets.

View artemsites's full-sized avatar

Artem Kuznecov artemsites

View GitHub Profile
<template>
<Teleport to="body">
<Transition>
<div v-if="isOpen" class="popup-overlay" @click="closePopup">
<div class="popup-content" @click.stop>
<button class="popup-close" @click="closePopup">
&times;
</button>
<slot></slot>
/**
* import { copyToClipboard } from "/src/utils/copyToClipboard.js"
*
* copyToClipboard("Этот текст будет скопирован в буфер обмена")
*/
export function copyToClipboard(text, callback) {
const textarea = document.createElement('textarea')
textarea.value = text
document.body.appendChild(textarea)

Отключить свайп

tns({ 
  swipeAngle: -1,            
})

Дерево — это структура данных, состоящая из узлов, где каждый узел содержит данные и ссылки на дочерние узлы. Деревья часто используются для представления иерархических данных.

Ниже приведен пример реализации дерева на JavaScript. В этом примере мы создадим простое дерево, где каждый узел может иметь несколько дочерних узлов.

Узел (Node)

Каждый узел содержит данные и массив дочерних узлов:

class TreeNode {

Связный список (или Linked List) — это структура данных, состоящая из узлов, где каждый узел содержит данные и ссылку на следующий узел в списке. Связные списки позволяют эффективно добавлять и удалять элементы, не требуя сдвига других элементов, как это происходит в массиве.

Узел (Node)

Каждый узел в связном списке содержит данные и ссылку на следующий узел:

class Node {
    public $data;
    public $next;

    public function __construct($data) {
        $this->data = $data;

Двунаправленный связный список (Double Linked List) — это структура данных, в которой каждый узел содержит ссылки на следующий и предыдущий узлы. Это позволяет легко перемещаться в обоих направлениях по списку.

Вот пример реализации двунаправленного связного списка на JavaScript:

Узел (Node)

Каждый узел содержит данные, ссылку на следующий узел и ссылку на предыдущий узел:

class Node {
import setCaretPosition from '/src/utils/setCaretPosition'
export default function(e) {
let pos = e.target.value.search(/.(?=[^\d]*$)/)
if (pos < 4) {
// !@note асинхронный обход бага vue-imask на safari 17.1 когда при первом фокусе на vue-imask он ставит курсор в конец инпута телефона
setTimeout(() => {
setCaretPosition(e.target, 4)
}, 1)
}
export function objectMergeDeep(target, source) {
Object.keys(source).forEach(key => {
const targetValue = target[key];
const sourceValue = source[key];
if (typeof sourceValue === 'object' && sourceValue !== null) {
if (typeof targetValue === 'object' && targetValue !== null) {
objectMergeDeep(targetValue, sourceValue);
} else {
target[key] = (Array.isArray(sourceValue)) ? [] : {};
// @ts-check
/**
* @export
* @param {object} targetObj
* @param {array} arPathAndValue
*
* @example objectUpdateNested(menuChoicesLS, [ this.groupId, this.programId, weekday, type, String(alt) ])
*/
export function objectUpdateNested(targetObj, arPathAndValue) {