30 дней: блочный конструктор README — один DOM, два хозяина

Мы живём в эпоху когда можно написать в чат «сделай мне CRUD» и получить рабочий код через десять секунд что в принципе удобно. И это, если честно, главная причина почему я периодически намеренно лезу в что-то сложное руками — чтобы не разучиться думать о том что происходит внутри. ИИ я использую. Но в этом проекте он был исключительно быстрой документацией — особенно когда добрался до selection/range API, про которые до этого знал чуть меньше чем ничего. Реализация все равно была за мной. Так вот — ReadGen. Блочный конструктор README-файлов. Месяц, 2-3 часа в день, React и TypeScript и небольшая пачка дополнительных библиотек для разумного облегчения жизни. Важно понимать что это не коммерческий продукт и не претендует на решение чьей-то боли. Просто техническая задача которую я давно хотел разобрать.

https://habr.com/ru/articles/1033422/

#React #TypeScript #contenteditable #WYSIWYG #DOM #Redux_Toolkit #браузерные_API #архитектура #FSD #frontend

30 дней: блочный конструктор README — один DOM, два хозяина

Мы живём в эпоху когда можно написать в чат «сделай мне CRUD» и получить рабочий код через десять секунд что в принципе удобно. И это, если честно, главная причина почему я периодически намеренно лезу...

Хабр

> This is significant because if the cursor were at the end of the first line, then hitting the up arrow should navigate into the previous task while hitting the down arrow should move the cursor to the end of the second line of the task.

And that's the crux of my problem. How do I know if the flashing bar caret is at the end of one wrapped line or the beginning of the next wrapped line?

The browser knows. It's flashing that caret at me, taunting me. Why won't it tell me? #contenteditable

The thing that's really annoying me these days is this #contenteditable problem (from 2012!):

> The final gotcha in this approach, which is what makes this technique imprecise, is that a collapsed DOM range may not map to a unique (*x*, *y*) position on the screen. This happens when the cursor is at the beginning or end of a line.

This problem has lasted longer than that web page, which is why I've had to link to the archive version!

https://web.archive.org/web/20260102193413/http://bolinfest.com/javascript/caret-navigation.html#selection-1493.1-1493.237

Caret Navigation in Web Applications

Still annoyed at #contenteditable

> ContentEditable was first implemented in Internet Explorer 5.5 back in 2000. 5 years later it was reverse-engineered by Anne van Kesteren and around the year 2007 it was implemented in all major engines. In each and every single one of them differently.

https://medium.com/content-uneditable/fixing-contenteditable-1a9a5073c35d

Fixing ContentEditable

Working with a system which is driving you mad because of a monstrous library overflowing with quirks is often a great discouragement. How…

Medium

I'm starting to really dislike #contenteditable

👴 "Where's the caret?"
💻 "Right here! And also over there."

A #contenteditable #3D text effect on @codepen https://codepen.io/thebabydino/pen/PogJybr

No text duplication, no images save for CSS gradients, no part of the effect baked into the font, no JS. It's all clever #CSS and #SVG #filter magic! 🪄✨

PS re: "trashed panda" 🦝🍾🥂🤪
https://www.bbc.com/news/articles/c5y2271q20lo

#svgFilter #cssGradient #code #coding #cssPattern #extrude #extrusion #frontend #web #dev #webDev #webDevelopment #textEffect #textEffects

Basic #CSS snippets: double border options. Multiple no extra element, no extra pseudo techniques to get a double border, depending on what you want from it.

Live on @codepen https://codepen.io/thebabydino/full/vENZRYK

Nothing but the basics.

Contenteditable code, updates visual result as you make changes. 😼

#code #coding #frontend #contenteditable #web Dev #webDev #webDevelopment

Basic CSS snippets: double border options (contenteditable)

[My take on a question asked on reddit.](https://www.reddit.com/r/css/comments/1mfw2pr/comment/n7djsf3/). --- If the work I've been putting out since...

Полезные чипсы с Vue 3 Composition API: Создание адаптивного компонента с фильтрацией и множественным выбором

Современные пользовательские интерфейсы требуют высокой интерактивности и удобства взаимодействия. В этой статье поговорим о том, как реализовать мощный, адаптивный компонент мульти-выбора на основе Vue 3 Composition API. ChipsMultiSelect — это компонент, который объединяет возможности выпадающего списка, визуализации выбора в виде "чипсов" и встроенной фильтрации. Выбранные элементы отображаются в виде “чипсов”

https://habr.com/ru/articles/863210/

#contenteditable #vue3 #composition_api #javascript #css #vue_component

Полезные чипсы с Vue 3 Composition API: Создание адаптивного компонента с фильтрацией и множественным выбором

Современные пользовательские интерфейсы требуют высокой интерактивности и удобства взаимодействия. В этой статье поговорим о том, как реализовать мощный, адаптивный компонент мульти-выбора на основе...

Хабр

Как мне взбрело в голову свой Notion-like редактор написать

Мне в голову пришла идея пет-проекта, который изначально никак не был связан с текстовым редактором. Однако, в процессе работы все дошло до того, что пользователям нужно где-то набирать текст. Я люблю Notion и пишу там много и часто, поэтому решил сделать похожий (но сильно упрощенный) редактор в своём проекте. Не столько из нужды, сколько из любопытства, ведь я никогда не занимался ничем подобным и мало что знал о том, как писать текстовые редакторы. В статье хочу рассказать про атрибут contenteditable у HTML-элементов, про сопутствующие проблемы при его использовании, про кастомное форматирование и про работу с выделенными участками текста.

https://habr.com/ru/articles/815579/

#текстовые_редакторы #javascript #dom #html #frontend #вебразработа #contenteditable #работа_с_текстом #форматирование_текста #Range_API

Как мне взбрело в голову свой Notion-like редактор написать

Введение Мне в голову пришла идея пет-проекта, который изначально никак не был связан с текстовым редактором. Однако, в процессе работы все дошло до того, что пользователям нужно где-то набирать...

Хабр

After spending several hours trying to simplify my web editor, now I remember why I don't use #HTML #contenteditable 😑

Those br/div tag changes are annoying and probably not worth to fix.