@reactive-web-components/rwc 2.51.14 → 2.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ (function(o,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(o=typeof globalThis<"u"?globalThis:o||self,p(o.ReactiveComponent={}))})(this,function(o){"use strict";var qe=Object.defineProperty;var Ge=(o,p,A)=>p in o?qe(o,p,{enumerable:!0,configurable:!0,writable:!0,value:A}):o[p]=A;var E=(o,p,A)=>Ge(o,typeof p!="symbol"?p+"":p,A);const p=t=>t&&typeof t=="object"&&("classList"in t||"attributes"in t||"customAttributes"in t||"reactiveClassList"in t||"listeners"in t||"customListeners"in t||"children"in t||"effects"in t||"style"in t||Object.keys(t).some(e=>e.startsWith(".")||e.startsWith("@")||e.startsWith("$")))&&!("hostElement"in t),A=t=>t&&typeof t=="object"&&"hostElement"in t&&"append"in t&&"set"in t&&"addStyle"in t&&"setAttribute"in t&&"addClass"in t&&"addEffect"in t&&"addReactiveContent"in t&&"setReactiveContent"in t&&"clear"in t,W=(t,e,...n)=>{e&&e.apply(t,n)};let _=!0;const f=(...t)=>{_&&console.debug(["[rwc]",...t].join(" | "),...Array.from(t.join("").matchAll(/%c/gm)).map((e,n)=>n%2===0?"color:red":"color:inherit"))},I=t=>t.replace(/([A-Z])/gm,e=>`-${e.toLowerCase()}`),Q=t=>t.replace(/-(\w)/gm,(e,n)=>n.toUpperCase()),L=(t,...e)=>{if(!_)return;const n={r:"color: #ff0000",g:"color: #00ff00",b:"color: #0000ff",y:"color: #ffff00",p:"color: #800080",c:"color: #00ffff",o:"color: #ffa500",w:"color: #808080"},s=t.match(/@[rgbpycow]/g)||[],i=s.map(c=>{const d=c.slice(1);return n[d]||"color: inherit"});let l=t;s.forEach(c=>{const d=new RegExp(`\\${c}([^\\s,]+)`,"g");l=l.replace(d,"%c$1")}),console.log(l,...i,...e)},bt=()=>{_=!0},Y=()=>{_=!1};Y();const O=new WeakMap,B=[],w=[];function R(t,e=()=>!0){const n=new Set;let s=e;function i(){const l=B[B.length-1];if(l&&!("fake"in l&&l.fake)){const c=O.get(l),d=c==null?void 0:c.parent;if(d){const a=O.get(d);a==null||a.cleanupFns.add(()=>{n.delete(l)})}n.add(l)}return t}return i.getSubscribers=()=>[...n],i.setCompareFn=function(l){return s=l,i},i.clearSubscribers=function(){n.clear()},i.peek=function(){return Object.freeze(t)},i.initValue=Object.freeze(t),i.oldValue=Object.freeze(t),i.forceSet=function(l){i.oldValue=Object.freeze(t),t=l,n.forEach(c=>Promise.resolve(c).then(d=>{const a=O.get(d);a&&a.cleanupFns.size>0&&(a.cleanupFns.forEach(h=>h()),a.cleanupFns.clear()),w.push(d),d(),w.pop()}))},i.set=function(l,c=s){t!==l&&c(t,l)&&i.forceSet(l)},i.update=function(l){i.set(l(t))},i.pipe=l=>{const c=R(null);return b(()=>{const d=l(i());d instanceof Promise?d.then(a=>c.set(a)):v(d)?b(()=>c.set(d())):c.set(d)}),c},i}function b(t){const e=Math.random().toString(36).substring(2,15);f("current effect",`%c${e}%c`);const n=t;t=()=>(f("current effect callback",`%c${e}%c`),n());const s=w[w.length-1];O.has(t)||O.set(t,{cleanupFns:new Set});const i=O.get(t);s?i.parent=s:delete i.parent,w.push(t),B.push(t),t(),B.pop(),w.pop()}const v=t=>!!t&&["object","function"].includes(typeof t)&&"set"in t&&"oldValue"in t&&"update"in t&&"forceSet"in t;function pt(t,...e){const n=R("");return b(()=>{const s=e.map(l=>v(l)?String(l()):String(l)),i=[t[0]];s.forEach((l,c)=>{i.push(l,t[c+1])}),n.set(i.join(""))}),n}function Et(t,e){const n=R(e??null),s=i=>n.set(i);return t instanceof Promise?t.then(s):typeof t=="function"&&b(()=>{const i=t();i instanceof Promise?i.then(s):v(i)?b(()=>s(i())):s(i)}),n}function yt(t,e){let n=t(),s=e();b(()=>{const i=t(),l=e();i!==l&&(i!==n?e.set(i):l!==s&&t.set(l)),n=i,s=l})}function St(...t){let e=t.map(s=>s());const n=R(e);return t.forEach((s,i)=>{b(()=>{const l=()=>e.filter(c=>c!==void 0).length;l()===t.length&&(e=Array.from(e).fill(void 0)),e[i]=s(),l()===t.length&&n.set([...e])})}),n}class T extends HTMLElement{constructor(n=!1){super();E(this,"isSlotLazyLoading",!1);E(this,"slotTemplate");E(this,"slotContext");E(this,"rootStyle");E(this,"modelValue");E(this,"providers");E(this,"appendAllSlotContent");E(this,"allSlotContent",[]);E(this,"slotContent",{});E(this,"htmlSlotContent",{});E(this,"shadow");E(this,"injects",{});this.shadow=this.attachShadow({mode:n?"closed":"open"})}appendChild(n,s=!0){var i;if(this.isSlotLazyLoading&&s){if(n instanceof HTMLElement){const l=n.slot||"default";this.htmlSlotContent[l]||(this.htmlSlotContent[l]=[]),(i=this.htmlSlotContent[l])==null||i.push(n)}}else return super.appendChild(n)}appendSlotContent(){var n;(n=this.appendAllSlotContent)==null||n.call(this)}inject(n){return f("%cinject%c",n),this.injects[n]||(this.injects[n]=R(null)),this.injects[n]}checkInjects(){Object.entries(this.injects).forEach(([n,s])=>{f("%cinject%c",`%c${n}%c`,"from BaseElement (dispatch event)"),this.shadow.dispatchEvent(new CustomEvent(n,{detail:{context:n,callback:i=>b(()=>{s.set(i())})},bubbles:!0,composed:!0}))})}setReactiveValue(n){this.modelValue=n}}E(T,"observedAttributes",[]),E(T,"renderTagName",""),E(T,"styles");const vt=t=>"render"in t&&"setReactiveValue"in t,gt="handleSlotContext",K="onConnected",At=()=>()=>{},G=t=>typeof t=="string"?t:JSON.stringify(t),N=t=>{const e=document.createElement("span");return e.textContent=G(t),e},V=(t,e)=>(t.appendChild(N(e)),t),x=(t,e)=>(t.innerHTML="",V(t,e)),J=t=>{const e=document.createElement("span");return b(()=>{const n=t();e.textContent=G(n)}),e},M=t=>({append(...e){return e.forEach(n=>{t.appendChild(n.hostElement),K in n.hostElement&&setTimeout(()=>{var s,i;(i=(s=n.hostElement).onConnected)==null||i.call(s,n,n.hostElement)})}),this},set(...e){this.clear();const n=document.createDocumentFragment();return e.forEach(s=>{n.appendChild(s.hostElement)}),t.appendChild(n),this},removeChild(...e){return e.forEach(n=>{Array.from(t.childNodes.values()).some(s=>s===n.hostElement)&&t.removeChild(n.hostElement)}),this},addHtmlContent(e){return V(t,e),this},setHtmlContent(e){return x(t,e),this},addEventlistener(e,n,s=!1){return t.addEventListener(e,i=>n(i,this,t),s),this},setAttribute(e,n){let s;if(typeof n=="boolean"&&!(t instanceof T))if(n)s="";else{this.removeAttribute(e);const i=e.toLowerCase();return i in t&&(t[i]=null),this}else typeof n!="string"?s=JSON.stringify(n):s=n;if(t.setAttribute(I(e),s),!(t instanceof T)){const i=e.toLowerCase();i in t&&(t[i]=n)}return this},setCustomAttribute(e,n){let s;return typeof n!="string"?s=JSON.stringify(n):s=n,t.setAttribute(I(e),s),this},setReactiveAttribute(e,n){return b(()=>this.setAttribute(e,n())),this},setReactiveCustomAttribute(e,n){return b(()=>this.setCustomAttribute(e,n())),this},removeAttribute(e){return t.removeAttribute(I(e)),this},addStyle(e){return Object.entries(e).forEach(([n,s])=>{const i=n.startsWith("--");typeof s=="function"?this.addEffect(()=>{if(i){const l=String(s()||"");t.style.setProperty(n,l)}else t.style[n]=s()}):typeof s=="string"&&(i?t.style.setProperty(n,s):t.style[n]=s)}),this},onConnected(e){return Reflect.defineProperty(t,K,{get(){return e}}),this},addClass(...e){return e.forEach(n=>{typeof n=="string"?t.classList.add(...n.split(" ").flatMap(s=>s.split(`
2
+ `)).map(s=>s.trim()).filter(Boolean)):(()=>{let s=null;this.addEffect(()=>{const i=n();i.length>0&&(s?this.replaceClass(s,i):this.addClass(i),s=i)})})()}),this},setClass(...e){return t.classList.remove(...t.classList),t.classList.add(...e),this},addReactiveClass(e){return Object.keys(e).forEach(n=>{b(()=>{e[n]()?this.addClass(n):this.removeClass(n)})}),this},removeClass(...e){return t.classList.remove(...e),this},replaceClass(e,n){return t.classList.replace(e,n),this},addEffect(e){return b(()=>e(this,this.hostElement)),this},addReactiveContent(e){return t.appendChild(J(e)),this},setReactiveContent(e){return this.clear(),t.appendChild(J(e)),this},clear(){return t.innerHTML="",this},hostElement:t}),tt=(t,...e)=>({classList:[...t.map(n=>n.trim()).filter(Boolean),...e]}),Lt=(t,...e)=>tt(t,...e),D=(t,e)=>{if(!e)return t;const n=Object.keys(e||{}).filter(s=>s.startsWith(".")||s.startsWith("@")||s.startsWith("$"));return n.filter(s=>s.startsWith(".")).forEach(s=>{e!=null&&e.attributes||(e.attributes={}),e.attributes[s.slice(1)]=e[s]}),n.filter(s=>s.startsWith("@")).forEach(s=>{e!=null&&e.listeners||(e.listeners={});const i=s.slice(1);e.listeners[i]=e[s]}),n.filter(s=>s.startsWith("$")).forEach(s=>{e!=null&&e.effects||(e.effects=[]),e.effects.push(e[s])}),ot(t,e.classList),lt(t,e.style),ct(t,e.attributes),it(t,e.reactiveClassList),st(t,e.customAttributes),nt(t,e.children),et(t,e.effects),U(t,e.listeners),U(t,e.customListeners),t},U=(t,e)=>{e&&Object.entries(e).forEach(([n,s])=>{typeof s=="function"&&t.addEventlistener(n,s)})},et=(t,e)=>e==null?void 0:e.forEach(n=>t.addEffect(n)),nt=(t,e)=>$(t,...e||[]),st=(t,e)=>{const n=e;n&&Object.keys(n).forEach(s=>{v(n[s])?t.setReactiveCustomAttribute(s,n[s]):typeof n[s]=="function"?t.addEffect(()=>{t.setCustomAttribute(s,n[s]())}):t.setCustomAttribute(s,n[s])})},ot=(t,e)=>t.addClass(...e||[]),it=(t,e)=>t.addReactiveClass(e||{}),lt=(t,e)=>t.addStyle(e||{}),ct=(t,e)=>{const n=e,s=(i,l)=>{l&&(v(l)?t.setReactiveAttribute(i,l):typeof l=="function"?t.addEffect(()=>{t.setAttribute(i,l())}):t.setAttribute(i,l))};n&&Object.keys(n).forEach(i=>{s(i,n[i])})},$=(t,...e)=>(e.forEach(n=>{typeof n=="string"?n.trim().length>0&&t.addHtmlContent(n):v(n)?t.addReactiveContent(n):t.append(n)}),t),k=(t,e)=>{const n=document.createElement(t),s={...M(n)};return D(s,e)},P=(t,e)=>{const[n,...s]=t.split(" ").map(l=>l.trim()),i=k(n,e);return s.length>0&&i.addClass(...s),(...l)=>$(i,...l.filter(Boolean).flat().flatMap(c=>typeof c=="function"&&!v(c)?g(()=>c(i)):c))},g=t=>k("div").addStyle({display:"contents"}).addEffect(e=>{const n=t(),s=[];Array.isArray(n)?s.push(...n):s.push(n),e.clear(),$(e,...s)}),Rt=t=>{const e=s=>typeof s=="string"?s.trim().length>0?M(N(s)):P("div")():v(s)?M(J(s)):s;return rt(()=>{const s=t();return s instanceof Array&&Array.isArray(s)?s.map(e):e(s)})},Tt=(t,e,n)=>{const s=k("div").addStyle({display:"contents"}),i=new Map,l=new Map;let c=[];const d=new Set;let a=t.peek();const h=C=>{d.delete(C),i.delete(C),l.delete(C)};return b(()=>{const C=t();c=C.map(e).map(u=>typeof u=="string"?u:u.toString());const m=Array.from(s.hostElement.children);f("containerChildren",m,c),m.forEach(u=>{const S=u.dataset.key;c.includes(S)||(f("remove element",S,u),u.remove(),h(S))}),c.forEach(u=>{var F,j;const S=C[c.indexOf(u)];i.has(u)?JSON.stringify(S)!==JSON.stringify(a[c.indexOf(u)])&&((F=s.hostElement.querySelector(`[data-key="${u}"]`))==null||F.remove(),(j=i.get(u))==null||j.set(Math.random().toString(36).substring(2,15)),l.set(u,()=>n(S,c.indexOf(u),C).setCustomAttribute("data-key",u))):(f("create new element",u,S),i.set(u,R(Math.random().toString(36).substring(2,15))),l.set(u,()=>n(S,c.indexOf(u),C).setCustomAttribute("data-key",u)))}),a=C;const y=()=>{i.forEach((u,S)=>{f("key from setTimeout foreach currItemSignalMap",S),d.has(S)||(d.add(S),b(()=>{var Ct;u();const F=c.indexOf(S),j=(Ct=l.get(S))==null?void 0:Ct();j&&(f("call effect from setTimeout",S,j.hostElement),F<=s.hostElement.children.length-1?s.hostElement.insertBefore(j.hostElement,s.hostElement.children[F]):s.hostElement.append(j.hostElement))}))})};Promise.resolve().then(()=>y())}),s},rt=t=>{let e=[k("div")],n=!1;return b(()=>{var l,c;const s=t();n=Array.isArray(s);const i=[];i.push(...[s].flat()),i.length===0&&i.push(k("div").addStyle({display:"none"}).setAttribute("id","empty_template"));try{f("newReactiveComponent.map",i.map(d=>{var a;return f("newReactiveComponent hostElement",d.hostElement),(a=d.hostElement)==null?void 0:a.id})),f("currComponent[0].hostElement?.id",(l=e[0].hostElement)==null?void 0:l.id,e),(c=e[0].hostElement)==null||c.replaceWith(...i.map(d=>d.hostElement)),e.slice(1).forEach(d=>{var a;return(a=d.hostElement)==null?void 0:a.remove()}),e=i}catch(d){console.error(d)}}),n?e:e[0]},jt=t=>gt in t,Ot=t=>{const e=P("div")().addStyle({display:"contents"}),n=s=>(e.hostElement.innerHTML=s,e);return typeof t=="string"?n(t):e.addEffect(()=>{n(t())}),e},X=(t,e,n)=>t?g(e):n?g(n):P("div")().setAttribute("id","empty_div_renderIf").addStyle({display:"none"}),at=(t,e,n)=>g(()=>X(!!t(),e,n)),wt=(t,e,n)=>typeof t=="boolean"?X(t,e,n):at(t,e,n),Z=(t,e)=>{const n=g(e);return typeof t=="boolean"?[n].flat().forEach(s=>s.hostElement.style.display=t?"block":"none"):b(()=>{const s=t()?"block":"none";[n].flat().forEach(i=>i.hostElement.style.display=s)}),n},kt=(t,e,n)=>{const s=[Z(t,e)].flat();return n&&s.push(...[Z(()=>typeof t=="boolean"?!t:!t(),n)].flat()),g(()=>s)},dt=(t,e)=>{f("createCustomElement",t);const n=document.createElement(t),s={...M(n),setReactiveValue(i){return n instanceof T&&n.setReactiveValue(i),this},setSlotTemplate(i){const l=n.slotTemplate;return l&&Object.entries(i).forEach(([c,d])=>{l[c]=d}),this}};return D(s,e)},ht=(t,e)=>{const n=t.split(" ").slice(1).map(i=>i.trim()),s=dt(t.split(" ")[0],e);return Array.isArray(n)&&n.length>0&&s.addClass(...n),(...i)=>{L("@rcreateCustomEl content",t,i);const l=i.filter(Boolean).flat().flatMap(c=>typeof c=="function"&&!v(c)?g(()=>c(s)):c);return s.hostElement.allSlotContent=l,s.hostElement.slotContent=l.filter(A).reduce((c,d)=>{const a=d.hostElement.getAttribute("slot")||"default";return c[a]||(c[a]=[]),c[a].push(d),c},{}),s.hostElement.appendAllSlotContent=()=>$(s,...l),s}},ut=(t,e,n)=>ht(`${t.renderTagName}${e&&typeof e=="string"?" "+e:""}`,p(e)?e:e&&typeof e=="string"?n:void 0),It=()=>{const t=()=>{};return t.oldValue=null,t},Mt=()=>({}),$t=(t,e,n)=>{const s=e?mt(e,n)(t):t;return(i,...l)=>{const c=[...l];return i&&!p(i)&&c.unshift(i),ut(s,p(i)?i:{})(...c)}},r={};["div","span","section","input","button","table","tr","td","th","ul","li","ol","form","label","select","option","textarea","img","a","p","h1","h2","h3","h4","h5","h6","br","hr","pre","code","nav","header","footer","main","aside","article","figure","figcaption","blockquote","cite","small","strong","em","b","i","u","s","sub","sup","mark","del","ins","details","summary","progress","meter","audio","video","canvas","slot"].forEach(t=>{r[t]=(e,...n)=>{let s=[...n];return e&&!p(e)&&(s=[e].concat(s)),P(t,p(e)?e:{})(...s)}});const ft=r.div,Pt=r.span,Ht=r.section,Ft=r.input,Wt=r.button,_t=r.table,Bt=r.tr,Jt=r.td,zt=r.th,qt=r.ul,Gt=r.li,Nt=r.ol,Vt=r.form,Dt=r.label,Ut=r.select,Xt=r.option,Zt=r.textarea,Qt=r.img,Yt=r.a,Kt=r.p,xt=r.h1,te=r.h2,ee=r.h3,ne=r.h4,se=r.h5,oe=r.h6,ie=r.br,le=r.hr,ce=r.pre,re=r.code,ae=r.nav,de=r.header,he=r.footer,ue=r.main,fe=r.aside,me=r.article,Ce=r.figure,be=r.figcaption,pe=r.blockquote,Ee=r.cite,ye=r.small,Se=r.strong,ve=r.em,ge=r.b,Ae=r.i,Le=r.u,Re=r.s,Te=r.sub,je=r.sup,Oe=r.mark,we=r.del,ke=r.ins,Ie=r.details,Me=r.summary,$e=r.progress,Pe=r.meter,He=r.audio,Fe=r.video,We=r.canvas,_e=r.slot,Be=t=>e=>t(e).addClass(...e.classList??[]).addReactiveClass(e.reactiveClassList??{}),z="eventProps",q="EVENT_CONFIG",H="observedAttributes",Je=()=>(t,e)=>{Reflect.get(t,H)||Reflect.defineProperty(t,H,{value:[]}),Reflect.get(t,H).push(I(e))},ze=t=>(e,n)=>{Reflect.get(e,z)||Reflect.defineProperty(e,z,{value:[]}),Reflect.get(e,q)||Reflect.defineProperty(e,q,{value:{}}),Reflect.get(e,q)[n]={bubbles:(t==null?void 0:t.bubbles)??!1,composed:(t==null?void 0:t.composed)??!1},Reflect.get(e,z).push(n)},mt=(t,e=!1)=>n=>{f(t,"start register static attr",n.prototype[H]);const s=[];if(n.styles){const l=n.styles,c=[];Array.isArray(l)?c.push(...l):c.push(l),c.forEach(d=>{const a=new CSSStyleSheet;a.replaceSync(d),s.push(a);const h=new CSSStyleSheet;h.replaceSync(d.slice(d.indexOf("@property"))),document.adoptedStyleSheets.push(h)})}class i extends n{constructor(...c){f("constructor",`%c${t}%c`),super(e,...c),L("@osheet",s),s.length>0&&this.shadow.adoptedStyleSheets.push(...s)}render(){f("rwc: render from new class");let c=ft();const d=()=>{f("rwc: wrapperEffectCallback"),c=n.prototype.render.call(this)};return d.fake=!0,b(d),c}attributeChangedCallback(c,d,a){f("%cAttribute has changed.%c",`%c${c}%c`,`oldValue: ${d}, newValue: ${a}`,`%c${t}%c`);try{a=JSON.parse(a)}catch{}const h=Q(c);if(h in this&&v(this[h])){const C=this[h];a===null?(C.set(C.initValue),this.removeAttribute(c)):C.set(a)}W(this,n.prototype.attributeChangedCallback,c,d,a)}connectedCallback(){var d;f("rwc: connectedCallback"),f("connectedCallback",`%c${t}%c`,this),this.providers&&Object.keys(this.providers).length>0&&(f("WRAPPER for providers",t),Object.entries(this.providers).forEach(([a,h])=>{f("register provider",a,h()),this.addEventListener(a,C=>{var y;f("send provider",a,h());const m=C;((y=m.detail)==null?void 0:y.context)===a&&(m.stopPropagation(),m.detail.callback(h))})})),this.checkInjects(),(d=n.prototype[z])==null||d.forEach(a=>{this[a]=h=>{const C=n.prototype[q][a],{bubbles:m,composed:y}=C;v(h)?b(()=>{L("@oemit reactive value",h()),this.dispatchEvent(new CustomEvent(a,{detail:h(),bubbles:m,composed:y}))}):(L("@oemit value",h),this.dispatchEvent(new CustomEvent(a,{detail:h,bubbles:m,composed:y})))}}),f("start render",`%c${t}%c`,t);const c=()=>{f("rwc: insertRenderTemplate");const a=this.render();this.shadow.appendChild(a.hostElement),W(this,n.prototype.connectedCallback),this.appendSlotContent()};if(this.rootStyle&&!n.styles){const a=m=>m instanceof Promise||Array.isArray(m)&&m.every(y=>y instanceof Promise),h=this.rootStyle,C=m=>{const y=new CSSStyleSheet;y.replaceSync(m),this.shadow.adoptedStyleSheets.push(y);const u=new CSSStyleSheet;u.replaceSync(m.slice(m.indexOf("@property"))),document.adoptedStyleSheets.push(u)};if(a(h)){const m=[];Array.isArray(h)?m.push(...h):m.push(h),Promise.all(m).then(y=>y.forEach(u=>C(u.default))).then(()=>c())}else{const m=[];Array.isArray(h)?m.push(...h):m.push(h),m.forEach(y=>C(y)),c()}}else c();this.slotContext&&Object.keys(this.slotContext).length>0&&this.shadow.querySelectorAll("slot").forEach(a=>{f(this.slotContext,this.slotContext&&this.slotContext[a.name]),L("@bslot element",a,`name:${a.name};`,a.assignedElements()),a.assignedElements().forEach(h=>{const C=this.slotContext[a.name];this.slotContext&&v(C)&&(L("@oslot element",a,`name:${a.name};`,a.assignedElements()),b(()=>{h.dispatchEvent(new CustomEvent("handleSlotContext",{detail:C()}))}))})})}disconnectedCallback(){this.shadow.replaceChildren(),this.replaceChildren(),W(this,n.prototype.disconnectedCallback)}}return E(i,"observedAttributes",n.prototype[H]??[]),E(i,"renderTagName",t),i.toString=()=>t,customElements.get(t)?console.error(`название тега ${t} повторяется, компонент ${n.name} не зарегистрирован`):customElements.define(t,i),n.renderTagName=t,n};o.BaseElement=T,o.a=Yt,o.addAttributeList=ct,o.addClassList=ot,o.addCustomAttributes=st,o.addHtmlContent=V,o.addReactiveClassList=it,o.addStyleList=lt,o.appendContentItem=$,o.article=me,o.aside=fe,o.audio=He,o.b=ge,o.bindReactiveSignals=yt,o.blockquote=pe,o.br=ie,o.button=Wt,o.camelToKebab=I,o.canvas=We,o.checkCall=W,o.cite=Ee,o.classList=tt,o.cls=Lt,o.code=re,o.colorLog=L,o.component=mt,o.createComponent=Be,o.createCustom=ut,o.createCustomEl=ht,o.createCustomElement=dt,o.createEl=P,o.createElement=k,o.createSignal=Et,o.defineSlotTemplate=Mt,o.del=we,o.details=Ie,o.disableLogs=Y,o.div=ft,o.effect=b,o.elementHelpers=M,o.em=ve,o.enableLogs=bt,o.event=ze,o.eventEmitter=At,o.figcaption=be,o.figure=Ce,o.footer=he,o.forkJoin=St,o.form=Vt,o.getList=Tt,o.getReactiveTemplate=Rt,o.getSignalContent=g,o.getTextContent=G,o.h1=xt,o.h2=te,o.h3=ee,o.h4=ne,o.h5=se,o.h6=oe,o.header=de,o.hr=le,o.htmlEffectWrapper=J,o.i=Ae,o.img=Qt,o.initComponent=D,o.input=Ft,o.ins=ke,o.isBaseElement=vt,o.isComponentConfig=A,o.isComponentInitConfig=p,o.isReactiveSignal=v,o.isSlotTemplate=jt,o.kebabToCamel=Q,o.label=Dt,o.li=Gt,o.main=ue,o.mark=Oe,o.meter=Pe,o.nav=ae,o.newEventEmitter=It,o.ol=Nt,o.option=Xt,o.p=Kt,o.pre=ce,o.progress=$e,o.projectLog=f,o.property=Je,o.renderIf=X,o.rs=pt,o.rxRenderIf=at,o.s=Re,o.section=Ht,o.select=Ut,o.setChildren=nt,o.setEffects=et,o.setHtmlContent=x,o.setListeners=U,o.show=kt,o.showIf=Z,o.signal=R,o.signalComponent=rt,o.slot=_e,o.small=ye,o.span=Pt,o.strong=Se,o.sub=Te,o.summary=Me,o.sup=je,o.table=_t,o.td=Jt,o.textContentWrapper=N,o.textarea=Zt,o.th=zt,o.tr=Bt,o.u=Le,o.ul=qt,o.unsafeHtml=Ot,o.useCustomComponent=$t,o.video=Fe,o.when=wt,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
@@ -24,7 +24,7 @@ export type EffectCallback<T extends HTMLElement> = (self: ComponentConfig<T>, h
24
24
  export type ComponentContent = ComponentConfig<any> | string | ReactiveSignal<any>;
25
25
  export type CompFuncContent = () => ComponentContent | ComponentContent[];
26
26
  export type ContextCompFuncContent<T extends ExtraHTMLElement> = (self: ComponentConfig<T>) => ComponentContent | ComponentContent[];
27
- export type ChildrenContent<T extends ExtraHTMLElement> = ComponentContent | ContextCompFuncContent<T>;
27
+ export type ChildrenContent<T extends ExtraHTMLElement> = ComponentContent | ContextCompFuncContent<T> | (ComponentContent | ContextCompFuncContent<T>)[];
28
28
  export interface ComponentConfig<T extends ExtraHTMLElement> {
29
29
  /**
30
30
  * append child components
@@ -1,11 +1,7 @@
1
- import { ChildrenContent, ComponentConfig, ComponentInitConfig, CustomComponentConfig, EventEmitter, SlotTemplate } from '../../types/element';
1
+ import { ChildrenContent, ComponentInitConfig, CustomComponentConfig, EventEmitter, SlotTemplate } from '../../types/element';
2
2
  import { BaseElement, BaseElementConstructor } from './base-element';
3
3
  export declare const createCustomElement: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => CustomComponentConfig<T>;
4
4
  export declare const createCustomEl: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => (...content: ChildrenContent<T>[]) => CustomComponentConfig<T>;
5
5
  export declare const createCustom: <T extends BaseElementConstructor, K extends string | ComponentInitConfig<InstanceType<T>>>(srcComp: T, classList?: K, config?: K extends string ? ComponentInitConfig<InstanceType<T>> : never) => (...content: ChildrenContent<InstanceType<T>>[]) => CustomComponentConfig<InstanceType<T>>;
6
- export declare const customEl: <T extends BaseElementConstructor, K extends string | ComponentInitConfig<InstanceType<T>>>(srcComp: T, classList?: K, config?: K extends string ? ComponentInitConfig<InstanceType<T>> : never) => ((...content: ChildrenContent<InstanceType<T>>[]) => CustomComponentConfig<InstanceType<T>>) & {
7
- setReactiveValue<ModelType = unknown>(value: import('..').ReactiveSignal<ModelType>): CustomComponentConfig<InstanceType<T>>;
8
- setSlotTemplate<K_1 extends keyof InstanceType<T>["slotTemplate"] & string>(templateConfig: { [slotKey in K_1]: InstanceType<T>["slotTemplate"][slotKey]; }): CustomComponentConfig<InstanceType<T>>;
9
- } & ComponentConfig<InstanceType<T>>;
10
6
  export declare const newEventEmitter: <T = void>() => EventEmitter<T>;
11
7
  export declare const defineSlotTemplate: <S extends SlotTemplate>() => Partial<S>;
@@ -1,9 +1,11 @@
1
- import { ReactiveSignal } from '../signal';
2
1
  import { ComponentConfig, ComponentContent, ComponentInitConfig, ConfigAttribute, ConfigChildren, ConfigClassList, ConfigCustomAttribute, ConfigEffect, ConfigListeners, ConfigReactiveClassList, ConfigStyle, CustomComponentConfig, ExtraHTMLElement } from '../../types/element';
2
+ import { ReactiveSignal } from '../signal';
3
3
  export declare const eventEmitter: () => () => void;
4
+ export declare const getTextContent: (content: string | unknown) => string;
5
+ export declare const textContentWrapper: (content: string | unknown) => HTMLSpanElement;
4
6
  export declare const addHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
5
7
  export declare const setHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
6
- export declare const htmlEffectWrapper: (content: ReactiveSignal<unknown>) => HTMLDivElement;
8
+ export declare const htmlEffectWrapper: (content: ReactiveSignal<unknown>) => HTMLSpanElement;
7
9
  export declare const elementHelpers: <T extends ExtraHTMLElement>(wrapper: T) => ComponentConfig<T>;
8
10
  export declare const classList: (strings: TemplateStringsArray, ...args: (string | (() => string))[]) => {
9
11
  classList: (string | (() => string))[];
@@ -2,12 +2,11 @@ import { ChildrenContent, CompFuncContent, ComponentConfig, ComponentInitConfig,
2
2
  import { ReactiveSignal } from '../signal';
3
3
  export declare const createElement: <K extends HtmlTagName>(tagName: K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => ComponentConfig<HTMLElementTagNameMap[K]>;
4
4
  export declare const createEl: <K extends HtmlTagName>(tagName: `${K} ${string}` | K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => (...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ComponentConfig<HTMLElementTagNameMap[K]>;
5
- export declare const el: <K extends HtmlTagName>(tagName: `${K} ${string}` | K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => ((...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ComponentConfig<HTMLElementTagNameMap[K]>) & ComponentConfig<HTMLElementTagNameMap[K]>;
5
+ export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<HTMLDivElement>;
6
6
  /**
7
- * Создает реактивный контейнер-элемент, который автоматически обновляет свое содержимое на основе функции обратного вызова.
8
- * Контейнер будет перерендериваться при изменении зависимостей функции обратного вызова.
7
+ * @deprecated
9
8
  */
10
- export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<HTMLDivElement>;
9
+ export declare const getReactiveTemplate: <Cb extends CompFuncContent>(cb: Cb) => ReturnType<typeof cb>;
11
10
  /**
12
11
  * Создает реактивный список элементов, который автоматически обновляется при изменении массива данных.
13
12
  * Поддерживает эффективное обновление DOM с минимальными перерисовками.
@@ -20,7 +19,6 @@ export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<
20
19
  * @returns Контейнер с реактивным списком элементов
21
20
  */
22
21
  export declare const getList: <I extends Record<string, any>, K extends keyof I>(items: ReactiveSignal<I[]>, keyFn: (item: I) => I[K] | string, cb: (item: I, index: number, items: I[]) => ComponentConfig<any>) => ComponentConfig<HTMLDivElement>;
23
- export declare const oldGetList: <I extends Record<string, any>, K extends keyof I>(items: ReactiveSignal<I[]>, keyFn: (item: I) => I[K] | string, cb: (item: I, index: number, items: I[]) => ComponentConfig<any>) => ComponentConfig<HTMLDivElement>;
24
22
  /**
25
23
  * Создает реактивный компонент, который автоматически обновляется при изменении его зависимостей.
26
24
  *
@@ -1,7 +1,7 @@
1
1
  import { ChildrenContent, ComponentInitConfig, HtmlTagName } from '../../types/element';
2
- import { el } from '../html-elements/element';
2
+ import { createEl } from '../html-elements/element';
3
3
  type HtmlFactories = {
4
- [K in HtmlTagName]: (config?: ComponentInitConfig<HTMLElementTagNameMap[K]> | ChildrenContent<HTMLElementTagNameMap[K]>, ...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ReturnType<ReturnType<typeof el<K>>>;
4
+ [K in HtmlTagName]: (config?: ComponentInitConfig<HTMLElementTagNameMap[K]> | ChildrenContent<HTMLElementTagNameMap[K]>, ...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ReturnType<ReturnType<typeof createEl<K>>>;
5
5
  };
6
6
  declare const htmlFactories: HtmlFactories;
7
7
  export declare const div: (config?: ChildrenContent<HTMLDivElement> | ComponentInitConfig<HTMLDivElement> | undefined, ...content: ChildrenContent<HTMLDivElement>[]) => import('../..').ComponentConfig<HTMLDivElement>;
@@ -1,2 +0,0 @@
1
- (function(o,y){typeof exports=="object"&&typeof module<"u"?y(exports):typeof define=="function"&&define.amd?define(["exports"],y):(o=typeof globalThis<"u"?globalThis:o||self,y(o.ReactiveComponent={}))})(this,function(o){"use strict";var ze=Object.defineProperty;var Ge=(o,y,A)=>y in o?ze(o,y,{enumerable:!0,configurable:!0,writable:!0,value:A}):o[y]=A;var p=(o,y,A)=>Ge(o,typeof y!="symbol"?y+"":y,A);const y=t=>t&&typeof t=="object"&&("classList"in t||"attributes"in t||"customAttributes"in t||"reactiveClassList"in t||"listeners"in t||"customListeners"in t||"children"in t||"effects"in t||"style"in t||Object.keys(t).some(e=>e.startsWith(".")||e.startsWith("@")||e.startsWith("$")))&&!("hostElement"in t),A=t=>t&&typeof t=="object"&&"hostElement"in t&&"append"in t&&"set"in t&&"addStyle"in t&&"setAttribute"in t&&"addClass"in t&&"addEffect"in t&&"addReactiveContent"in t&&"setReactiveContent"in t&&"clear"in t,H=(t,e,...n)=>{e&&e.apply(t,n)};let W=!0;const E=(...t)=>{W&&console.log(t.join(" | "),...Array.from(t.join("").matchAll(/%c/gm)).map((e,n)=>n%2===0?"color:red":"color:inherit"))},I=t=>t.replace(/([A-Z])/gm,e=>`-${e.toLowerCase()}`),Z=t=>t.replace(/-(\w)/gm,(e,n)=>n.toUpperCase()),L=(t,...e)=>{if(!W)return;const n={r:"color: #ff0000",g:"color: #00ff00",b:"color: #0000ff",y:"color: #ffff00",p:"color: #800080",c:"color: #00ffff",o:"color: #ffa500",w:"color: #808080"},s=t.match(/@[rgbpycow]/g)||[],i=s.map(l=>{const h=l.slice(1);return n[h]||"color: inherit"});let c=t;s.forEach(l=>{const h=new RegExp(`\\${l}([^\\s,]+)`,"g");c=c.replace(h,"%c$1")}),console.log(c,...i,...e)},Ct=()=>{W=!0},Q=()=>{W=!1};Q();const w=new WeakMap,F=[],k=[];function R(t,e=()=>!0){const n=new Set;let s=e;function i(){const c=F[F.length-1];if(c&&!("fake"in c&&c.fake)){const l=w.get(c),h=l==null?void 0:l.parent;if(h){const a=w.get(h);a==null||a.cleanupFns.add(()=>{n.delete(c)})}n.add(c)}return t}return i.getSubscribers=()=>[...n],i.setCompareFn=function(c){return s=c,i},i.clearSubscribers=function(){n.clear()},i.peek=function(){return Object.freeze(t)},i.initValue=Object.freeze(t),i.oldValue=Object.freeze(t),i.forceSet=function(c){i.oldValue=Object.freeze(t),t=c,n.forEach(l=>Promise.resolve(l).then(h=>{const a=w.get(h);a&&a.cleanupFns.size>0&&(a.cleanupFns.forEach(d=>d()),a.cleanupFns.clear()),k.push(h),h(),k.pop()}))},i.set=function(c,l=s){t!==c&&l(t,c)&&i.forceSet(c)},i.update=function(c){i.set(c(t))},i.pipe=c=>{const l=R(null);return b(()=>{const h=c(i());h instanceof Promise?h.then(a=>l.set(a)):v(h)?b(()=>l.set(h())):l.set(h)}),l},i}function b(t){const e=Date.now();E("current effect",`%c${e}%c`);const n=t;t=()=>(E("current effect callback",`%c${e}%c`),n());const s=k[k.length-1];w.has(t)||w.set(t,{cleanupFns:new Set});const i=w.get(t);s?i.parent=s:delete i.parent,k.push(t),F.push(t),t(),F.pop(),k.pop()}const v=t=>!!t&&["object","function"].includes(typeof t)&&"set"in t&&"oldValue"in t&&"update"in t&&"forceSet"in t;function bt(t,...e){const n=R("");return b(()=>{const s=e.map(c=>v(c)?String(c()):String(c)),i=[t[0]];s.forEach((c,l)=>{i.push(c,t[l+1])}),n.set(i.join(""))}),n}function Et(t,e){const n=R(e??null),s=i=>n.set(i);return t instanceof Promise?t.then(s):typeof t=="function"&&b(()=>{const i=t();i instanceof Promise?i.then(s):v(i)?b(()=>s(i())):s(i)}),n}function yt(t,e){let n=t(),s=e();b(()=>{const i=t(),c=e();i!==c&&(i!==n?e.set(i):c!==s&&t.set(c)),n=i,s=c})}function pt(...t){let e=t.map(s=>s());const n=R(e);return t.forEach((s,i)=>{b(()=>{const c=()=>e.filter(l=>l!==void 0).length;c()===t.length&&(e=Array.from(e).fill(void 0)),e[i]=s(),c()===t.length&&n.set([...e])})}),n}class O extends HTMLElement{constructor(n=!1){super();p(this,"isSlotLazyLoading",!1);p(this,"slotTemplate");p(this,"slotContext");p(this,"rootStyle");p(this,"modelValue");p(this,"providers");p(this,"appendAllSlotContent");p(this,"allSlotContent",[]);p(this,"slotContent",{});p(this,"htmlSlotContent",{});p(this,"shadow");p(this,"injects",{});this.shadow=this.attachShadow({mode:n?"closed":"open"})}appendChild(n,s=!0){var i;if(this.isSlotLazyLoading&&s){if(n instanceof HTMLElement){const c=n.slot||"default";this.htmlSlotContent[c]||(this.htmlSlotContent[c]=[]),(i=this.htmlSlotContent[c])==null||i.push(n)}}else return super.appendChild(n)}appendSlotContent(){var n;(n=this.appendAllSlotContent)==null||n.call(this)}inject(n){return E("%cinject%c",n),this.injects[n]||(this.injects[n]=R(null)),this.injects[n]}checkInjects(){Object.entries(this.injects).forEach(([n,s])=>{E("%cinject%c",`%c${n}%c`,"from BaseElement (dispatch event)"),this.shadow.dispatchEvent(new CustomEvent(n,{detail:{context:n,callback:i=>b(()=>{s.set(i())})},bubbles:!0,composed:!0}))})}setReactiveValue(n){this.modelValue=n}}p(O,"observedAttributes",[]),p(O,"renderTagName",""),p(O,"styles");const St=t=>"render"in t&&"setReactiveValue"in t,vt="handleSlotContext",Y="onConnected",gt=()=>()=>{},_=(t,e)=>{const n=new Text(typeof e=="string"?e:JSON.stringify(e));return t.appendChild(n),t},q=(t,e)=>(t.innerHTML="",_(t,e)),z=t=>{const e=document.createElement("div");return e.style.display="contents",b(()=>{const n=t();q(e,n)}),e},G=t=>({append(...e){return e.forEach(n=>{t.appendChild(n.hostElement),Y in n.hostElement&&setTimeout(()=>{var s,i;(i=(s=n.hostElement).onConnected)==null||i.call(s,n,n.hostElement)})}),this},set(...e){this.clear();const n=document.createDocumentFragment();return e.forEach(s=>{n.appendChild(s.hostElement)}),t.appendChild(n),this},removeChild(...e){return e.forEach(n=>{Array.from(t.childNodes.values()).some(s=>s===n.hostElement)&&t.removeChild(n.hostElement)}),this},addHtmlContent(e){return _(t,e),this},setHtmlContent(e){return q(t,e),this},addEventlistener(e,n,s=!1){return t.addEventListener(e,i=>n(i,this,t),s),this},setAttribute(e,n){let s;if(typeof n=="boolean"&&!(t instanceof O))if(n)s="";else{this.removeAttribute(e);const i=e.toLowerCase();return i in t&&(t[i]=null),this}else typeof n!="string"?s=JSON.stringify(n):s=n;if(t.setAttribute(I(e),s),!(t instanceof O)){const i=e.toLowerCase();i in t&&(t[i]=n)}return this},setCustomAttribute(e,n){let s;return typeof n!="string"?s=JSON.stringify(n):s=n,t.setAttribute(I(e),s),this},setReactiveAttribute(e,n){return b(()=>this.setAttribute(e,n())),this},setReactiveCustomAttribute(e,n){return b(()=>this.setCustomAttribute(e,n())),this},removeAttribute(e){return t.removeAttribute(I(e)),this},addStyle(e){return Object.entries(e).forEach(([n,s])=>{const i=n.startsWith("--");typeof s=="function"?this.addEffect(()=>{if(i){const c=String(s()||"");t.style.setProperty(n,c)}else t.style[n]=s()}):typeof s=="string"&&(i?t.style.setProperty(n,s):t.style[n]=s)}),this},onConnected(e){return Reflect.defineProperty(t,Y,{get(){return e}}),this},addClass(...e){return e.forEach(n=>{typeof n=="string"?t.classList.add(...n.split(" ").flatMap(s=>s.split(`
2
- `)).map(s=>s.trim()).filter(Boolean)):(()=>{let s=null;this.addEffect(()=>{const i=n();i.length>0&&(s?this.replaceClass(s,i):this.addClass(i),s=i)})})()}),this},setClass(...e){return t.classList.remove(...t.classList),t.classList.add(...e),this},addReactiveClass(e){return Object.keys(e).forEach(n=>{b(()=>{e[n]()?this.addClass(n):this.removeClass(n)})}),this},removeClass(...e){return t.classList.remove(...e),this},replaceClass(e,n){return t.classList.replace(e,n),this},addEffect(e){return b(()=>e(this,this.hostElement)),this},addReactiveContent(e){return t.appendChild(z(e)),this},setReactiveContent(e){return this.clear(),t.appendChild(z(e)),this},clear(){return t.innerHTML="",this},hostElement:t}),K=(t,...e)=>({classList:[...t.map(n=>n.trim()).filter(Boolean),...e]}),At=(t,...e)=>K(t,...e),N=(t,e)=>{if(!e)return t;const n=Object.keys(e||{}).filter(s=>s.startsWith(".")||s.startsWith("@")||s.startsWith("$"));return n.filter(s=>s.startsWith(".")).forEach(s=>{e!=null&&e.attributes||(e.attributes={}),e.attributes[s.slice(1)]=e[s]}),n.filter(s=>s.startsWith("@")).forEach(s=>{e!=null&&e.listeners||(e.listeners={});const i=s.slice(1);e.listeners[i]=e[s]}),n.filter(s=>s.startsWith("$")).forEach(s=>{e!=null&&e.effects||(e.effects=[]),e.effects.push(e[s])}),nt(t,e.classList),ot(t,e.style),it(t,e.attributes),st(t,e.reactiveClassList),et(t,e.customAttributes),tt(t,e.children),x(t,e.effects),D(t,e.listeners),D(t,e.customListeners),t},D=(t,e)=>{e&&Object.entries(e).forEach(([n,s])=>{typeof s=="function"&&t.addEventlistener(n,s)})},x=(t,e)=>e==null?void 0:e.forEach(n=>t.addEffect(n)),tt=(t,e)=>$(t,...e||[]),et=(t,e)=>{const n=e;n&&Object.keys(n).forEach(s=>{v(n[s])?t.setReactiveCustomAttribute(s,n[s]):typeof n[s]=="function"?t.addEffect(()=>{t.setCustomAttribute(s,n[s]())}):t.setCustomAttribute(s,n[s])})},nt=(t,e)=>t.addClass(...e||[]),st=(t,e)=>t.addReactiveClass(e||{}),ot=(t,e)=>t.addStyle(e||{}),it=(t,e)=>{const n=e,s=(i,c)=>{c&&(v(c)?t.setReactiveAttribute(i,c):typeof c=="function"?t.addEffect(()=>{t.setAttribute(i,c())}):t.setAttribute(i,c))};n&&Object.keys(n).forEach(i=>{s(i,n[i])})},$=(t,...e)=>(e.forEach(n=>{typeof n=="string"?n.trim().length>0&&t.addHtmlContent(n):v(n)?t.addReactiveContent(n):t.append(n)}),t),j=(t,e)=>{const n=document.createElement(t),s={...G(n)};return N(s,e)},lt=(t,e)=>{const[n,...s]=t.split(" ").map(c=>c.trim()),i=j(n,e);return s.length>0&&i.addClass(...s),(...c)=>$(i,...c.filter(Boolean).map(l=>typeof l=="function"&&!v(l)?g(()=>l(i)):l))},V=(t,e)=>{const n=lt(t,e);return Object.assign(n,n())},g=t=>j("div").addStyle({display:"contents"}).addEffect(e=>{const n=t(),s=[];Array.isArray(n)?s.push(...n):s.push(n),e.clear(),$(e,...s)}),Lt=(t,e,n)=>{const s=j("div").addStyle({display:"contents"}),i=new Map,c=new Map;let l=[];const h=new Set;let a=t.peek();const d=u=>{h.delete(u),i.delete(u),c.delete(u)};return b(()=>{const u=t();l=u.map(e).map(m=>typeof m=="string"?m:m.toString());const f=Array.from(s.hostElement.children);E("containerChildren",f,l),f.forEach(m=>{const S=m.dataset.key;l.includes(S)||(E("remove element",S,m),m.remove(),d(S))}),l.forEach(m=>{var P,T;const S=u[l.indexOf(m)];i.has(m)?JSON.stringify(S)!==JSON.stringify(a[l.indexOf(m)])&&((P=s.hostElement.querySelector(`[data-key="${m}"]`))==null||P.remove(),(T=i.get(m))==null||T.set(Math.random().toString(36).substring(2,15)),c.set(m,()=>n(S,l.indexOf(m),u).setCustomAttribute("data-key",m))):(E("create new element",m,S),i.set(m,R(Math.random().toString(36).substring(2,15))),c.set(m,()=>n(S,l.indexOf(m),u).setCustomAttribute("data-key",m)))}),a=u;const C=()=>{i.forEach((m,S)=>{E("key from setTimeout foreach currItemSignalMap",S),h.has(S)||(h.add(S),b(()=>{var mt;m();const P=l.indexOf(S),T=(mt=c.get(S))==null?void 0:mt();T&&(E("call effect from setTimeout",S,T.hostElement),P<=s.hostElement.children.length-1?s.hostElement.insertBefore(T.hostElement,s.hostElement.children[P]):s.hostElement.append(T.hostElement))}))})};Promise.resolve().then(()=>C())}),s},Rt=(t,e,n)=>{const s=j("div").addStyle({display:"contents"}),i=new Map;return b(()=>{let c=Array.from(s.hostElement.children).map(d=>d.dataset.key);const l=t(),h=l.map(e).map(d=>d.toString()),a=new Map;l.forEach((d,u)=>a.set(h[u],d)),c.filter(d=>!h.includes(d)).forEach(d=>{var u;return(u=s.hostElement.querySelector(`[data-key="${d}"]`))==null?void 0:u.remove()}),c=c.filter(d=>h.includes(d)),h.forEach((d,u)=>{if(c.includes(d)){if(JSON.stringify(i.get(d))!==JSON.stringify(a.get(d))){const f=n(l[u],u,l).setCustomAttribute("data-key",d).hostElement;s.hostElement.querySelector(`[data-key="${d}"]`).replaceWith(f);const C=s.hostElement.children;u>C.length-2?s.hostElement.append(f):s.hostElement.insertBefore(f,C[u+1])}}else{const f=n(l[u],u,l).setCustomAttribute("data-key",d),C=s.hostElement.children;u>C.length-1?s.hostElement.append(f.hostElement):s.hostElement.insertBefore(f.hostElement,C[u])}}),l.forEach((d,u)=>i.set(h[u],d))}),s},Ot=t=>{let e=[j("div")],n=!1;return b(()=>{var c;const s=t(),i=[];Array.isArray(s)?(i.push(...s),n=!0):i.push(s),i.length===0&&i.push(j("div").addStyle({display:"none"}));try{(c=e[0].hostElement)==null||c.replaceWith(...i.map(l=>l.hostElement)),e.forEach(l=>{var h;return(h=l.hostElement)==null?void 0:h.remove()}),e=i}catch(l){console.error(l)}}),n?e:e[0]},jt=t=>vt in t,Tt=t=>{const e=V("div").addStyle({display:"contents"}),n=s=>(e.hostElement.innerHTML=s,e);return typeof t=="string"?n(t):e.addEffect(()=>{n(t())}),e},U=(t,e,n)=>g(t?e:n||(()=>"")),ct=(t,e,n)=>g(()=>U(!!t(),e,n)),wt=(t,e,n)=>typeof t=="boolean"?U(t,e,n):ct(t,e,n),X=(t,e)=>{const n=g(e);return typeof t=="boolean"?n.hostElement.style.display=t?"contents":"none":n.addEffect((s,i)=>{i.style.display=t()?"contents":"none"}),n},kt=(t,e,n)=>{const s=[];return s.push(X(t,e)),n&&s.push(X(()=>typeof t=="boolean"?!t:!t(),n)),g(()=>s)},rt=(t,e)=>{E("createCustomElement",t);const n=document.createElement(t),s={...G(n),setReactiveValue(i){return n instanceof O&&n.setReactiveValue(i),this},setSlotTemplate(i){const c=n.slotTemplate;return c&&Object.entries(i).forEach(([l,h])=>{c[l]=h}),this}};return N(s,e)},at=(t,e)=>{const n=t.split(" ").slice(1).map(i=>i.trim()),s=rt(t.split(" ")[0],e);return Array.isArray(n)&&n.length>0&&s.addClass(...n),(...i)=>{L("@rcreateCustomEl content",t,i);const c=i.filter(Boolean).map(l=>typeof l=="function"&&!v(l)?g(()=>l(s)):l);return s.hostElement.allSlotContent=c,s.hostElement.slotContent=c.filter(A).reduce((l,h)=>{const a=h.hostElement.getAttribute("slot")||"default";return l[a]||(l[a]=[]),l[a].push(h),l},{}),s.hostElement.appendAllSlotContent=()=>$(s,...c),s}},dt=(t,e,n)=>at(`${t.renderTagName}${e&&typeof e=="string"?" "+e:""}`,y(e)?e:e&&typeof e=="string"?n:void 0),ht=(t,e,n)=>{const s=dt(t,e,n);return Object.assign(s,s())},It=()=>{const t=()=>{};return t.oldValue=null,t},$t=()=>({}),Mt=(t,e,n)=>{const s=e?ft(e,n)(t):t;return(i,...c)=>{const l=[...c];return i&&!y(i)&&l.unshift(i),ht(s,y(i)?i:{})(...l)}},r={};["div","span","section","input","button","table","tr","td","th","ul","li","ol","form","label","select","option","textarea","img","a","p","h1","h2","h3","h4","h5","h6","br","hr","pre","code","nav","header","footer","main","aside","article","figure","figcaption","blockquote","cite","small","strong","em","b","i","u","s","sub","sup","mark","del","ins","details","summary","progress","meter","audio","video","canvas","slot"].forEach(t=>{r[t]=(e,...n)=>{let s=[...n];return e&&!y(e)&&(s=[e].concat(s)),V(t,y(e)?e:{})(...s)}});const ut=r.div,Pt=r.span,Ht=r.section,Wt=r.input,Ft=r.button,Bt=r.table,Jt=r.tr,_t=r.td,qt=r.th,zt=r.ul,Gt=r.li,Nt=r.ol,Dt=r.form,Vt=r.label,Ut=r.select,Xt=r.option,Zt=r.textarea,Qt=r.img,Yt=r.a,Kt=r.p,xt=r.h1,te=r.h2,ee=r.h3,ne=r.h4,se=r.h5,oe=r.h6,ie=r.br,le=r.hr,ce=r.pre,re=r.code,ae=r.nav,de=r.header,he=r.footer,ue=r.main,fe=r.aside,me=r.article,Ce=r.figure,be=r.figcaption,Ee=r.blockquote,ye=r.cite,pe=r.small,Se=r.strong,ve=r.em,ge=r.b,Ae=r.i,Le=r.u,Re=r.s,Oe=r.sub,je=r.sup,Te=r.mark,we=r.del,ke=r.ins,Ie=r.details,$e=r.summary,Me=r.progress,Pe=r.meter,He=r.audio,We=r.video,Fe=r.canvas,Be=r.slot,Je=t=>e=>t(e).addClass(...e.classList??[]).addReactiveClass(e.reactiveClassList??{}),B="eventProps",J="EVENT_CONFIG",M="observedAttributes",_e=()=>(t,e)=>{Reflect.get(t,M)||Reflect.defineProperty(t,M,{value:[]}),Reflect.get(t,M).push(I(e))},qe=t=>(e,n)=>{Reflect.get(e,B)||Reflect.defineProperty(e,B,{value:[]}),Reflect.get(e,J)||Reflect.defineProperty(e,J,{value:{}}),Reflect.get(e,J)[n]={bubbles:(t==null?void 0:t.bubbles)??!1,composed:(t==null?void 0:t.composed)??!1},Reflect.get(e,B).push(n)},ft=(t,e=!1)=>n=>{E(t,"start register static attr",n.prototype[M]);const s=[];if(n.styles){const c=n.styles,l=[];Array.isArray(c)?l.push(...c):l.push(c),l.forEach(h=>{const a=new CSSStyleSheet;a.replaceSync(h),s.push(a);const d=new CSSStyleSheet;d.replaceSync(h.slice(h.indexOf("@property"))),document.adoptedStyleSheets.push(d)})}class i extends n{constructor(...l){E("constructor",`%c${t}%c`),super(e,...l),L("@osheet",s),s.length>0&&this.shadow.adoptedStyleSheets.push(...s)}render(){console.debug("rwc: render from new class");let l=ut();const h=()=>{console.debug("rwc: wrapperEffectCallback"),l=n.prototype.render.call(this)};return h.fake=!0,b(h),l}attributeChangedCallback(l,h,a){E("%cAttribute has changed.%c",`%c${l}%c`,`oldValue: ${h}, newValue: ${a}`,`%c${t}%c`);try{a=JSON.parse(a)}catch{}const d=Z(l);if(d in this&&v(this[d])){const u=this[d];a===null?(u.set(u.initValue),this.removeAttribute(l)):u.set(a)}H(this,n.prototype.attributeChangedCallback,l,h,a)}connectedCallback(){var h;console.debug("rwc: connectedCallback"),E("connectedCallback",`%c${t}%c`,this),this.providers&&Object.keys(this.providers).length>0&&(E("WRAPPER for providers",t),Object.entries(this.providers).forEach(([a,d])=>{E("register provider",a,d()),this.addEventListener(a,u=>{var C;E("send provider",a,d());const f=u;((C=f.detail)==null?void 0:C.context)===a&&(f.stopPropagation(),f.detail.callback(d))})})),this.checkInjects(),(h=n.prototype[B])==null||h.forEach(a=>{this[a]=d=>{const u=n.prototype[J][a],{bubbles:f,composed:C}=u;v(d)?b(()=>{L("@oemit reactive value",d()),this.dispatchEvent(new CustomEvent(a,{detail:d(),bubbles:f,composed:C}))}):(L("@oemit value",d),this.dispatchEvent(new CustomEvent(a,{detail:d,bubbles:f,composed:C})))}}),E("start render",`%c${t}%c`,t);const l=()=>{console.debug("rwc: insertRenderTemplate");const a=this.render();this.shadow.appendChild(a.hostElement),H(this,n.prototype.connectedCallback),this.appendSlotContent()};if(this.rootStyle&&!n.styles){const a=f=>f instanceof Promise||Array.isArray(f)&&f.every(C=>C instanceof Promise),d=this.rootStyle,u=f=>{const C=new CSSStyleSheet;C.replaceSync(f),this.shadow.adoptedStyleSheets.push(C);const m=new CSSStyleSheet;m.replaceSync(f.slice(f.indexOf("@property"))),document.adoptedStyleSheets.push(m)};if(a(d)){const f=[];Array.isArray(d)?f.push(...d):f.push(d),Promise.all(f).then(C=>C.forEach(m=>u(m.default))).then(()=>l())}else{const f=[];Array.isArray(d)?f.push(...d):f.push(d),f.forEach(C=>u(C)),l()}}else l();this.slotContext&&Object.keys(this.slotContext).length>0&&this.shadow.querySelectorAll("slot").forEach(a=>{E(this.slotContext,this.slotContext&&this.slotContext[a.name]),L("@bslot element",a,`name:${a.name};`,a.assignedElements()),a.assignedElements().forEach(d=>{const u=this.slotContext[a.name];this.slotContext&&v(u)&&(L("@oslot element",a,`name:${a.name};`,a.assignedElements()),b(()=>{d.dispatchEvent(new CustomEvent("handleSlotContext",{detail:u()}))}))})})}disconnectedCallback(){this.shadow.replaceChildren(),this.replaceChildren(),H(this,n.prototype.disconnectedCallback)}}return p(i,"observedAttributes",n.prototype[M]??[]),p(i,"renderTagName",t),i.toString=()=>t,customElements.get(t)?console.error(`название тега ${t} повторяется, компонент ${n.name} не зарегистрирован`):customElements.define(t,i),n.renderTagName=t,n};o.BaseElement=O,o.a=Yt,o.addAttributeList=it,o.addClassList=nt,o.addCustomAttributes=et,o.addHtmlContent=_,o.addReactiveClassList=st,o.addStyleList=ot,o.appendContentItem=$,o.article=me,o.aside=fe,o.audio=He,o.b=ge,o.bindReactiveSignals=yt,o.blockquote=Ee,o.br=ie,o.button=Ft,o.camelToKebab=I,o.canvas=Fe,o.checkCall=H,o.cite=ye,o.classList=K,o.cls=At,o.code=re,o.colorLog=L,o.component=ft,o.createComponent=Je,o.createCustom=dt,o.createCustomEl=at,o.createCustomElement=rt,o.createEl=lt,o.createElement=j,o.createSignal=Et,o.customEl=ht,o.defineSlotTemplate=$t,o.del=we,o.details=Ie,o.disableLogs=Q,o.div=ut,o.effect=b,o.el=V,o.elementHelpers=G,o.em=ve,o.enableLogs=Ct,o.event=qe,o.eventEmitter=gt,o.figcaption=be,o.figure=Ce,o.footer=he,o.forkJoin=pt,o.form=Dt,o.getList=Lt,o.getSignalContent=g,o.h1=xt,o.h2=te,o.h3=ee,o.h4=ne,o.h5=se,o.h6=oe,o.header=de,o.hr=le,o.htmlEffectWrapper=z,o.i=Ae,o.img=Qt,o.initComponent=N,o.input=Wt,o.ins=ke,o.isBaseElement=St,o.isComponentConfig=A,o.isComponentInitConfig=y,o.isReactiveSignal=v,o.isSlotTemplate=jt,o.kebabToCamel=Z,o.label=Vt,o.li=Gt,o.main=ue,o.mark=Te,o.meter=Pe,o.nav=ae,o.newEventEmitter=It,o.ol=Nt,o.oldGetList=Rt,o.option=Xt,o.p=Kt,o.pre=ce,o.progress=Me,o.projectLog=E,o.property=_e,o.renderIf=U,o.rs=bt,o.rxRenderIf=ct,o.s=Re,o.section=Ht,o.select=Ut,o.setChildren=tt,o.setEffects=x,o.setHtmlContent=q,o.setListeners=D,o.show=kt,o.showIf=X,o.signal=R,o.signalComponent=Ot,o.slot=Be,o.small=pe,o.span=Pt,o.strong=Se,o.sub=Oe,o.summary=$e,o.sup=je,o.table=Bt,o.td=_t,o.textarea=Zt,o.th=qt,o.tr=Jt,o.u=Le,o.ul=zt,o.unsafeHtml=Tt,o.useCustomComponent=Mt,o.video=We,o.when=wt,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});