@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.
- package/main.d.ts +26 -0
- package/package.json +5 -5
- package/reactive-web-component.B3EcXnMG.js +877 -0
- package/reactive-web-component.DLpZ2nci.umd.cjs +2 -0
- package/shared/types/element.d.ts +1 -1
- package/shared/utils/html-elements/custom-element.d.ts +1 -5
- package/shared/utils/html-elements/element-helper.d.ts +4 -2
- package/shared/utils/html-elements/element.d.ts +3 -5
- package/shared/utils/html-fabric/fabric.d.ts +2 -2
- package/reactive-web-component.BPTpUu6U.umd.cjs +0 -2
- package/reactive-web-component.DV9mXMMk.js +0 -912
- package/shared/utils/html-elements/__tests__/element.test.d.ts +0 -1
|
@@ -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,
|
|
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>) =>
|
|
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
|
|
5
|
+
export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<HTMLDivElement>;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
* Контейнер будет перерендериваться при изменении зависимостей функции обратного вызова.
|
|
7
|
+
* @deprecated
|
|
9
8
|
*/
|
|
10
|
-
export declare const
|
|
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 {
|
|
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
|
|
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"})});
|