компонентов..., а обнаружил, что наличие спреда меняет генерируемый код и получается что даже
<Component
{...spread}
class="elephant {toggle ? 'dog' : ''}"
/>
перестаёт работать с хэшами, потому что генерируется вот это: https://pastebin.com/09a7gYir
нашёл где генерируется код для спреда: https://github.com/sveltejs/svelte/blob/46a83a50e3ed8f90b188cb152901cc579b189cd2/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts#L226-L257
и выходит что надо туда вклиниться, проверить является ли аттрибут кодовым словом и докинуть в генерируемый апдейт немного хэша
а с классовыми директивами вообще прикол
для тегов используется classList.(add|remove)
а для компонентов придётся выдумывать свой добавляюще-убирающий велик
еле понял, что можно вот так исходный статичный класс на этапе конструкции компонента запихиваемый в props
но всё это как-то так по-ублюдски выглядит, эхх :)
const class_attr = this.node.attributes.find(a => a.name === 'class');
const initial_class = class_attr ?
class_attr.chunks.map(c => c.data ? c.data.trim() : null).filter(d => d).join(' ') :
'';
suckless подход с патчами на свелт компилер в действии))
это же компилятор, он меняет код на любое изменение исходников)
не, ну понятно но неожиданно что генератор кода для обработки спредов валяется совсем в другом месте
видимо это был вариант заставить это работать вместе. спреды появились мягко говоря не сразу
но зато методом измени компилер, скомпиль, дифни билды - было получено не мало информации о том что же может пойти не так :)
Обсуждают сегодня