Защиту ключевых данных от изменения
... связь условного объекта(пусть json) и разметкой HTML
// client.tsx
import { hydrate as hydrateElement } from 'preact'
const observer = new IntersectionObserver((entries: IntersectionObserverEntry[]) => (
entries.forEach(({ target, isIntersecting }) => {
if(isIntersecting){
console.log(isIntersecting)
if(target.localName === 'slot'){
const slotName = target.getAttribute('name')
if(slotName){
import(`/dist/islands/island.${ slotName }.js`).then((exports) => {
const Island = slotName in exports ? exports[slotName] : null
if(Island){
hydrateElement(
<Island/>, target
)
}
}).catch(error => console.warn(error))
}
observer.unobserve(target)
}
}
})
), {
root: document.querySelector('#root')
})
document.querySelectorAll('slot[name]').forEach((slot: Element) => {
observer.observe(slot)
})
// Island.tsx
export const Island = ({ name, children, ...props } : { name: string, children: any, props?: any }) => {
const slotStyle = { display: 'initial' }
return (
<slot name={ name } style={ slotStyle } { ...props }>
{ children }
</slot>
)
}
.catalog__info:has(.catalog-filter.active) > .catalog__wrapper {
margin-bottom: 50px;
}
.catalog__info:has(.catalog-filter.active) > .catalog__wrapper > .catalog__btn {
display: none;
}
.catalog__info:has(.catalog-filter.active) > .catalog__wrapper > .catalog__btn-close {
display: block;
}
setTimeout(() => {
document.body.appendChild(
document.createElement('div')
).classList.add('taskblackout')
}, 5000)
mutationObserver.observe(
document.querySelector('body'), {
childList: true
}
)
Нода выбрасывает ошибку о неизвестном/неподдерживаемом расширении файла, говорит, что можно только js/(и cjs/mjs, вроде как). Для ts/tsx использую эту библиотеку: tsx.
Просто если пилить воркера в формате js - зачем мне вобще тогда ts? Если в формате js - значит без jsx/tsx. Если без ts/tsx - значит без типизации. Если без jsx/tsx и без типизации - зачем мне вообще какие-то реакты, например, или типизация в целом?
Просто я не понимаю логики разработчиков и хочу понять, как это всё переиграть с минимальной костылезацией.