@reactive-web-components/rwc 2.51.8 → 2.51.9

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.
Files changed (37) hide show
  1. package/package.json +32 -5
  2. package/main.d.ts +0 -0
  3. package/reactive-web-component.C6ivwJzW.js +0 -916
  4. package/reactive-web-component.D9B4LRRS.umd.cjs +0 -2
  5. package/shared/constants/constants.d.ts +0 -2
  6. package/shared/index.d.ts +0 -2
  7. package/shared/types/base-element.d.ts +0 -1
  8. package/shared/types/element.d.ts +0 -191
  9. package/shared/types/index.d.ts +0 -3
  10. package/shared/types/list.type.d.ts +0 -7
  11. package/shared/utils/helpers.d.ts +0 -7
  12. package/shared/utils/html-decorators/html-property.d.ts +0 -6
  13. package/shared/utils/html-decorators/index.d.ts +0 -1
  14. package/shared/utils/html-elements/__tests__/element.test.d.ts +0 -1
  15. package/shared/utils/html-elements/base-element.d.ts +0 -33
  16. package/shared/utils/html-elements/custom-element.d.ts +0 -11
  17. package/shared/utils/html-elements/element-helper.d.ts +0 -21
  18. package/shared/utils/html-elements/element.d.ts +0 -84
  19. package/shared/utils/html-elements/index.d.ts +0 -4
  20. package/shared/utils/html-fabric/custom-fabric.d.ts +0 -3
  21. package/shared/utils/html-fabric/fabric.d.ts +0 -67
  22. package/shared/utils/html-fabric/fn-component.d.ts +0 -5
  23. package/shared/utils/html-fabric/index.d.ts +0 -3
  24. package/shared/utils/index.d.ts +0 -5
  25. package/shared/utils/routing/router.d.ts +0 -10
  26. package/shared/utils/signal/helpers.types.d.ts +0 -3
  27. package/shared/utils/signal/index.d.ts +0 -3
  28. package/shared/utils/signal/signal.d.ts +0 -18
  29. package/shared/utils/signal/signal.type.d.ts +0 -18
  30. package/shared/utils/signal/utils.d.ts +0 -10
  31. package/test-components/examples/button/button.d.ts +0 -12
  32. package/test-components/examples/counter.d.ts +0 -15
  33. package/test-components/examples/test-list/dynamic-items-test.d.ts +0 -17
  34. package/test-components/examples/test-list/example.list.d.ts +0 -26
  35. package/test-components/examples/useCustomComponent.d.ts +0 -21
  36. package/test-components/examples/when.d.ts +0 -6
  37. package/test-components/tab-bar.d.ts +0 -23
@@ -1,2 +0,0 @@
1
- (function(o,S){typeof exports=="object"&&typeof module<"u"?S(exports):typeof define=="function"&&define.amd?define(["exports"],S):(o=typeof globalThis<"u"?globalThis:o||self,S(o.ReactiveComponent={}))})(this,function(o){"use strict";var ze=Object.defineProperty;var Ge=(o,S,A)=>S in o?ze(o,S,{enumerable:!0,configurable:!0,writable:!0,value:A}):o[S]=A;var p=(o,S,A)=>Ge(o,typeof S!="symbol"?S+"":S,A);const S=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,F=(t,e,...n)=>{e&&e.apply(t,n)};let H=!0;const E=(...t)=>{H&&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(!H)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)},Ct=()=>{H=!0},Q=()=>{H=!1};Q();const k=new WeakMap,W=[],w=[];function R(t,e=()=>!0){const n=new Set;let s=e;function i(){const l=W[W.length-1];if(l&&!("fake"in l&&l.fake)){const c=k.get(l),d=c==null?void 0:c.parent;if(d){const f=k.get(d);f==null||f.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 f=k.get(d);f&&f.cleanupFns.size>0&&(f.cleanupFns.forEach(a=>a()),f.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(f=>c.set(f)):v(d)?b(()=>c.set(d())):c.set(d)}),c},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=w[w.length-1];k.has(t)||k.set(t,{cleanupFns:new Set});const i=k.get(t);s?i.parent=s:delete i.parent,w.push(t),W.push(t),t(),W.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 bt(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 pt(...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 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 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 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 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,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),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])}),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),N(t,e.listeners),N(t,e.customListeners),t},N=(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,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),j=(t,e)=>{const n=document.createElement(t),s={...G(n)};return D(s,e)},lt=(t,e)=>{const[n,...s]=t.split(" ").map(l=>l.trim()),i=j(n,e);return s.length>0&&i.addClass(...s),(...l)=>$(i,...l.filter(Boolean).map(c=>typeof c=="function"&&!v(c)?g(()=>c(i)):c))},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,l=new Map;let c=[];const d=new Set;let f=t.peek();const a=h=>{d.delete(h),i.delete(h),l.delete(h)};return b(()=>{const h=t();c=h.map(e).map(u=>typeof u=="string"?u:u.toString());const C=Array.from(s.hostElement.children);E("containerChildren",C,c),C.forEach(u=>{const y=u.dataset.key;c.includes(y)||(E("remove element",y,u),u.remove(),a(y))}),c.forEach(u=>{var P,T;const y=h[c.indexOf(u)];i.has(u)?JSON.stringify(y)!==JSON.stringify(f[c.indexOf(u)])&&((P=s.hostElement.querySelector(`[data-key="${u}"]`))==null||P.remove(),(T=i.get(u))==null||T.set(Math.random().toString(36).substring(2,15)),l.set(u,()=>n(y,c.indexOf(u),h).setCustomAttribute("data-key",u))):(E("create new element",u,y),i.set(u,R(Math.random().toString(36).substring(2,15))),l.set(u,()=>n(y,c.indexOf(u),h).setCustomAttribute("data-key",u)))}),f=h;const m=()=>{i.forEach((u,y)=>{E("key from setTimeout foreach currItemSignalMap",y),d.has(y)||(d.add(y),b(()=>{var mt;u();const P=c.indexOf(y),T=(mt=l.get(y))==null?void 0:mt();T&&(E("call effect from setTimeout",y,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(()=>m())}),s},Rt=(t,e,n)=>{const s=j("div").addStyle({display:"contents"}),i=new Map;return b(()=>{let l=Array.from(s.hostElement.children).map(a=>a.dataset.key);const c=t(),d=c.map(e).map(a=>a.toString()),f=new Map;c.forEach((a,h)=>f.set(d[h],a)),l.filter(a=>!d.includes(a)).forEach(a=>{var h;return(h=s.hostElement.querySelector(`[data-key="${a}"]`))==null?void 0:h.remove()}),l=l.filter(a=>d.includes(a)),d.forEach((a,h)=>{if(l.includes(a)){if(JSON.stringify(i.get(a))!==JSON.stringify(f.get(a))){const C=n(c[h],h,c).setCustomAttribute("data-key",a).hostElement;s.hostElement.querySelector(`[data-key="${a}"]`).replaceWith(C);const m=s.hostElement.children;h>m.length-2?s.hostElement.append(C):s.hostElement.insertBefore(C,m[h+1])}}else{const C=n(c[h],h,c).setCustomAttribute("data-key",a),m=s.hostElement.children;h>m.length-1?s.hostElement.append(C.hostElement):s.hostElement.insertBefore(C.hostElement,m[h])}}),c.forEach((a,h)=>i.set(d[h],a))}),s},Ot=t=>{let e=[j("div")],n=!1;return b(()=>{var l;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{(l=e[0].hostElement)==null||l.replaceWith(...i.map(c=>c.hostElement)),e.forEach(c=>{var d;return(d=c.hostElement)==null?void 0:d.remove()}),e=i}catch(c){console.error(c)}}),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)),kt=(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},wt=(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 l=n.slotTemplate;return l&&Object.entries(i).forEach(([c,d])=>{l[c]=d}),this}};return D(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 l=i.filter(Boolean).map(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 f=d.hostElement.getAttribute("slot")||"default";return c[f]||(c[f]=[]),c[f].push(d),c},{}),s.hostElement.appendAllSlotContent=()=>$(s,...l),s}},dt=(t,e,n)=>at(`${t.renderTagName}${e&&typeof e=="string"?" "+e:""}`,S(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,...l)=>{const c=[...l];return i&&!S(i)&&c.unshift(i),ht(s,S(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&&!S(e)&&(s=[e].concat(s)),V(t,S(e)?e:{})(...s)}});const ut=r.div,Pt=r.span,Ft=r.section,Ht=r.input,Wt=r.button,Bt=r.table,Jt=r.tr,_t=r.td,qt=r.th,zt=r.ul,Gt=r.li,Dt=r.ol,Nt=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,ke=r.del,we=r.ins,Ie=r.details,$e=r.summary,Me=r.progress,Pe=r.meter,Fe=r.audio,He=r.video,We=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 l=n.styles,c=[];Array.isArray(l)?c.push(...l):c.push(l),c.forEach(d=>{const f=new CSSStyleSheet;f.replaceSync(d),s.push(f);const a=new CSSStyleSheet;a.replaceSync(d.slice(d.indexOf("@property"))),document.adoptedStyleSheets.push(a)})}class i extends n{constructor(...d){E("constructor",`%c${t}%c`);super(e,...d);p(this,"isFirstRender",!0);L("@osheet",s),s.length>0&&this.shadow.adoptedStyleSheets.push(...s)}render(){let d=ut();const f=()=>{d=n.prototype.render.call(this)};return f.fake=!0,b(f),d}attributeChangedCallback(d,f,a){E("%cAttribute has changed.%c",`%c${d}%c`,`oldValue: ${f}, newValue: ${a}`,`%c${t}%c`);try{a=JSON.parse(a)}catch{}const h=Z(d);if(h in this&&v(this[h])){const C=this[h];a===null?(C.set(C.initValue),this.removeAttribute(d)):C.set(a)}F(this,n.prototype.attributeChangedCallback,d,f,a)}connectedCallback(){var f;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,h])=>{E("register provider",a,h()),this.addEventListener(a,C=>{var u;E("send provider",a,h());const m=C;((u=m.detail)==null?void 0:u.context)===a&&(m.stopPropagation(),m.detail.callback(h))})})),this.checkInjects(),(f=n.prototype[B])==null||f.forEach(a=>{this[a]=h=>{const C=n.prototype[J][a],{bubbles:m,composed:u}=C;v(h)?b(()=>{L("@oemit reactive value",h()),this.dispatchEvent(new CustomEvent(a,{detail:h(),bubbles:m,composed:u}))}):(L("@oemit value",h),this.dispatchEvent(new CustomEvent(a,{detail:h,bubbles:m,composed:u})))}}),E("start render",`%c${t}%c`,t);const d=()=>{if(setTimeout(()=>{F(this,n.prototype.connectedCallback)}),!this.isFirstRender)return;const a=this.render();this.shadow.appendChild(a.hostElement),this.appendSlotContent(),this.isFirstRender=!1};if(this.rootStyle&&!n.styles){const a=m=>m instanceof Promise||Array.isArray(m)&&m.every(u=>u instanceof Promise),h=this.rootStyle,C=m=>{const u=new CSSStyleSheet;u.replaceSync(m),this.shadow.adoptedStyleSheets.push(u);const y=new CSSStyleSheet;y.replaceSync(m.slice(m.indexOf("@property"))),document.adoptedStyleSheets.push(y)};if(a(h)){const m=[];Array.isArray(h)?m.push(...h):m.push(h),Promise.all(m).then(u=>u.forEach(y=>C(y.default))).then(()=>d())}else{const m=[];Array.isArray(h)?m.push(...h):m.push(h),m.forEach(u=>C(u)),d()}}else d();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(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(){F(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),i};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=Fe,o.b=ge,o.bindReactiveSignals=yt,o.blockquote=Ee,o.br=ie,o.button=Wt,o.camelToKebab=I,o.canvas=We,o.checkCall=F,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=ke,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=Nt,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=D,o.input=Ht,o.ins=we,o.isBaseElement=St,o.isComponentConfig=A,o.isComponentInitConfig=S,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=Dt,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=Ft,o.select=Ut,o.setChildren=tt,o.setEffects=x,o.setHtmlContent=q,o.setListeners=N,o.show=wt,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=He,o.when=kt,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
@@ -1,2 +0,0 @@
1
- export declare const HANDLE_SLOT_CONTEXT_NAME = "handleSlotContext";
2
- export declare const ON_CONNECTED_NAME = "onConnected";
package/shared/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types/';
2
- export * from './utils/';
@@ -1 +0,0 @@
1
- export type RootStyle = Promise<typeof import("*?inline")> | Array<Promise<typeof import("*?inline")>> | string | string[];
@@ -1,191 +0,0 @@
1
- import { ReactiveSignal } from '../utils/signal';
2
- export type Split<S extends string, D extends string> = string extends S ? string[] : S extends "" ? [] : S extends `${infer T}${D}${infer U}` ? [T, ...Split<U, D>] : [S];
3
- export type Join<T extends unknown[], D extends string> = T extends [] ? "" : T extends [string | number | boolean | bigint] ? `${T[0]}` : T extends [string | number | boolean | bigint, ...infer U] ? `${T[0]}${D}${Join<U, D>}` : string;
4
- export type HtmlTagName = keyof HTMLElementTagNameMap;
5
- export type ExtraHTMLElement = HTMLElement & {
6
- render?: () => ComponentConfig<any>;
7
- onConnected?: (self: ComponentConfig<ExtraHTMLElement>, host: ExtraHTMLElement) => void;
8
- slotTemplate?: SlotTemplate;
9
- };
10
- export type SignalValue<T> = T extends ReactiveSignal<infer V> ? V : T;
11
- export type EventKeys<T> = {
12
- [k in keyof T]: T[k] extends EventEmitter<any> ? k : never;
13
- }[keyof T];
14
- export type ComponentEventListener<T extends ExtraHTMLElement, E extends Event> = (e: E, self: ComponentConfig<T>, host: T) => void;
15
- export type CustomEventListener<DetailValue, T extends ExtraHTMLElement> = (e: CustomEvent<DetailValue>, self: ComponentConfig<T>, host: T) => void;
16
- export type CustomEventValue<T> = T extends EventEmitter<infer V> ? V : T;
17
- export type ComponentCallback<T extends ExtraHTMLElement> = (self: ComponentConfig<T>, host: T) => void;
18
- export type AttrSignal<T extends HTMLElement & {
19
- render?: () => ComponentConfig<any>;
20
- }> = T["render"] extends () => ComponentConfig<any> ? {
21
- [k in keyof T]: T[k] extends ReactiveSignal<any> ? k : never;
22
- }[keyof T & string] : keyof T & string;
23
- export type EffectCallback<T extends HTMLElement> = (self: ComponentConfig<T>, host: T) => void;
24
- export type ComponentContent = ComponentConfig<any> | string | ReactiveSignal<any>;
25
- export type CompFuncContent = () => ComponentContent | ComponentContent[];
26
- export type ContextCompFuncContent<T extends ExtraHTMLElement> = (self: ComponentConfig<T>) => ComponentContent | ComponentContent[];
27
- export type ChildrenContent<T extends ExtraHTMLElement> = ComponentContent | ContextCompFuncContent<T>;
28
- export interface ComponentConfig<T extends ExtraHTMLElement> {
29
- /**
30
- * append child components
31
- */
32
- append(...args: ComponentConfig<any>[]): ComponentConfig<T>;
33
- /**
34
- * clear and append child components
35
- */
36
- set(...args: ComponentConfig<any>[]): ComponentConfig<T>;
37
- /**
38
- * remove child components
39
- */
40
- removeChild(...args: ComponentConfig<any>[]): ComponentConfig<T>;
41
- /**
42
- * add html (string) content to host element
43
- */
44
- addHtmlContent(content: string): ComponentConfig<T>;
45
- /**
46
- * clear and add html (string) content to host element
47
- */
48
- setHtmlContent(content: string): ComponentConfig<T>;
49
- /**
50
- * add css style to host element
51
- */
52
- addStyle(style: ConfigStyle): ComponentConfig<T>;
53
- /**
54
- * add event listener to component
55
- */
56
- addEventlistener<K extends T["render"] extends () => ComponentConfig<any> ? never : keyof HTMLElementEventMap>(eventName: K, cb: ComponentEventListener<T, HTMLElementEventMap[K]>, options?: boolean | AddEventListenerOptions): ComponentConfig<T>;
57
- addEventlistener<K extends EventKeys<T>>(eventName: K, cb: CustomEventListener<CustomEventValue<T[K]>, T>, options?: boolean | AddEventListenerOptions): ComponentConfig<T>;
58
- /**
59
- * set attribute value to component
60
- */
61
- setAttribute<AttrName extends AttrSignal<T>, AttrValue extends SignalValue<T[AttrName]>>(attrName: AttrName, value: AttrValue): ComponentConfig<T>;
62
- setCustomAttribute(attrName: string, value: unknown): ComponentConfig<T>;
63
- /**
64
- * bind reactive signal with attribute
65
- */
66
- setReactiveAttribute<AttrName extends AttrSignal<T>, AttrValue extends ReactiveSignal<SignalValue<T[AttrName]>>>(attrName: AttrName, value: AttrValue): ComponentConfig<T>;
67
- setReactiveCustomAttribute(attrName: string, value: ReactiveSignal<unknown>): ComponentConfig<T>;
68
- /**
69
- * remove attribute from component
70
- */
71
- removeAttribute<AttrName extends keyof T & string>(attrName: AttrName): ComponentConfig<T>;
72
- /**
73
- * callback function for handling components slot context
74
- */
75
- /**
76
- * callback function for handling components connected event
77
- */
78
- onConnected(cb: (self: ComponentConfig<T>, host: T) => void): ComponentConfig<T>;
79
- /**
80
- * add css-class to component
81
- */
82
- addClass(...className: (string | (() => string))[]): ComponentConfig<T>;
83
- /**
84
- * set css-class to component
85
- */
86
- setClass(...className: string[]): ComponentConfig<T>;
87
- /**
88
- * bind reactive signal with component css-class
89
- */
90
- addReactiveClass(classConfig: {
91
- [className: string]: ReactiveSignal<boolean>;
92
- }): ComponentConfig<T>;
93
- /**
94
- * remove css-class from component
95
- */
96
- removeClass(...className: string[]): ComponentConfig<T>;
97
- /**
98
- * replace css-class from component
99
- */
100
- replaceClass(oldClass: string, newClass: string): ComponentConfig<T>;
101
- /**
102
- * add reactive effect for component instance
103
- */
104
- addEffect(cb: EffectCallback<T>): ComponentConfig<T>;
105
- /**
106
- * bind reactive signal with component innerHtml
107
- */
108
- addReactiveContent(content: ReactiveSignal<unknown>): ComponentConfig<T>;
109
- /**
110
- * clear content and bind reactive signal with component innerHtml
111
- */
112
- setReactiveContent(content: ReactiveSignal<unknown>): ComponentConfig<T>;
113
- /**
114
- * clear component content
115
- */
116
- clear(): ComponentConfig<T>;
117
- /**
118
- * host element
119
- */
120
- hostElement: T;
121
- }
122
- export type SlotTemplate = Record<string, (slotCtx: any) => ComponentConfig<any> | null>;
123
- export type CustomComponentConfig<T extends ExtraHTMLElement> = {
124
- setReactiveValue<ModelType = unknown>(value: ReactiveSignal<ModelType>): CustomComponentConfig<T>;
125
- /**
126
- * slot template
127
- */
128
- setSlotTemplate<K extends keyof T["slotTemplate"] & string>(templateConfig: {
129
- [slotKey in K]: T["slotTemplate"][slotKey];
130
- }): CustomComponentConfig<T>;
131
- } & ComponentConfig<T>;
132
- export type CssKey = Exclude<keyof CSSStyleDeclaration, "length" | "parentRule">;
133
- export interface EventEmitterWrapper {
134
- <EventValue = unknown>(): EventEmitter<EventValue>;
135
- }
136
- export interface EventEmitter<EventValue> {
137
- (_value: EventValue | ReactiveSignal<EventValue>): void;
138
- oldValue: null;
139
- }
140
- export type SlotContext = {
141
- [slotName: string]: ReactiveSignal<unknown>;
142
- };
143
- export type AttributeValue<T extends ExtraHTMLElement, K extends AttrSignal<T>> = ReactiveSignal<SignalValue<T[K]>> | SignalValue<T[K]> | (() => SignalValue<T[K]>);
144
- export type ConfigAttribute<T extends ExtraHTMLElement> = {
145
- [key in AttrSignal<T>]?: AttributeValue<T, key>;
146
- };
147
- export type ConfigEventListener<T extends ExtraHTMLElement> = {
148
- [key in keyof HTMLElementEventMap]?: ComponentEventListener<T, HTMLElementEventMap[key]>;
149
- };
150
- export type ConfigCustomEventListener<T extends ExtraHTMLElement> = {
151
- [key in EventKeys<T>]?: CustomEventListener<CustomEventValue<T[key]>, T>;
152
- };
153
- export type ConfigCustomAttribute = Record<string, unknown>;
154
- export type ConfigCustomListeners<T extends ExtraHTMLElement> = Record<string, CustomEventListener<unknown, T>>;
155
- export type ConfigReactiveClassList = Record<string, ReactiveSignal<boolean>>;
156
- export type ConfigChildren = ComponentContent[];
157
- export type ConfigEffect<T extends ExtraHTMLElement> = EffectCallback<T>[];
158
- export type ConfigListeners<T extends ExtraHTMLElement> = ConfigEventListener<T> & ConfigCustomEventListener<T>;
159
- export type ConfigClassList = (string | (() => string))[];
160
- export type ConfigStyle = Partial<{
161
- [key in CssKey]: CSSStyleDeclaration[key] | (() => CSSStyleDeclaration[key]);
162
- }> & Partial<{
163
- [key in `--${string}`]: string | (() => string);
164
- }>;
165
- export type ComponentInitConfig<T extends ExtraHTMLElement> = Partial<{
166
- classList: ConfigClassList;
167
- style: ConfigStyle;
168
- attributes: ConfigAttribute<T>;
169
- customAttributes: ConfigCustomAttribute;
170
- reactiveClassList: ConfigReactiveClassList;
171
- children: ConfigChildren;
172
- effects: ConfigEffect<T>;
173
- listeners: ConfigListeners<T>;
174
- customListeners: ConfigCustomListeners<T>;
175
- }> & Partial<{
176
- [key in AttrSignal<T> as `.${key}`]?: AttributeValue<T, key>;
177
- } & {
178
- [K in keyof HTMLElementEventMap as `@${string & K}`]?: ComponentEventListener<T, HTMLElementEventMap[K]>;
179
- } & {
180
- [K in EventKeys<T> as `@${string & K}`]?: CustomEventListener<CustomEventValue<T[K]>, T>;
181
- } & {
182
- [key in `$${string}`]: EffectCallback<T>;
183
- }>;
184
- export declare const isComponentInitConfig: (item: any) => item is ComponentInitConfig<any>;
185
- export interface ContextEvent<T> extends CustomEvent {
186
- detail: {
187
- context: string;
188
- callback: (value: T) => void;
189
- };
190
- }
191
- export declare const isComponentConfig: <T extends ExtraHTMLElement>(item: any) => item is ComponentConfig<T>;
@@ -1,3 +0,0 @@
1
- export * from './base-element';
2
- export * from './element';
3
- export * from './list.type';
@@ -1,7 +0,0 @@
1
- export interface ListItem {
2
- label: string;
3
- value: string;
4
- }
5
- export interface SelectedItem {
6
- [value: string]: string;
7
- }
@@ -1,7 +0,0 @@
1
- export declare const checkCall: (ctx: HTMLElement, fn?: (...args: any[]) => any, ...args: any[]) => void;
2
- export declare const projectLog: (...values: any[]) => void;
3
- export declare const camelToKebab: (v: string) => string;
4
- export declare const kebabToCamel: (v: string) => string;
5
- export declare const colorLog: (message: string, ...args: any[]) => void;
6
- export declare const enableLogs: () => void;
7
- export declare const disableLogs: () => void;
@@ -1,6 +0,0 @@
1
- import { BaseElementConstructor } from '../html-elements';
2
- type EventConfig = Pick<CustomEventInit, "bubbles" | "composed">;
3
- export declare const property: () => (<T extends HTMLElement, K extends keyof T>(target: T, propName: K) => void);
4
- export declare const event: (config?: EventConfig) => (<T extends HTMLElement, K extends keyof T>(target: T, propName: K) => void);
5
- export declare const component: (selector: `${string}-${string}`, isClosed?: boolean) => (<T extends BaseElementConstructor>(target: T) => T);
6
- export {};
@@ -1 +0,0 @@
1
- export * from './html-property';
@@ -1,33 +0,0 @@
1
- import { ComponentConfig, ComponentContent, RootStyle, SlotContext, SlotTemplate } from '../../types';
2
- import { ReactiveSignal } from '../signal';
3
- export declare abstract class BaseElement extends HTMLElement {
4
- static observedAttributes: string[];
5
- static renderTagName: string;
6
- static styles?: string | string[];
7
- isSlotLazyLoading: boolean;
8
- slotTemplate?: SlotTemplate;
9
- slotContext?: SlotContext;
10
- rootStyle?: RootStyle;
11
- modelValue?: ReactiveSignal<unknown>;
12
- providers?: Record<string, ReactiveSignal<any>>;
13
- appendAllSlotContent?: () => ComponentConfig<any>;
14
- allSlotContent?: ComponentContent[];
15
- slotContent: Record<string, ComponentConfig<any>[]>;
16
- htmlSlotContent: Record<string, HTMLElement[]>;
17
- shadow: ShadowRoot;
18
- appendChild<T extends Node>(node: T, isLazy?: boolean): T;
19
- constructor(isClosed?: boolean);
20
- appendSlotContent(): void;
21
- injects: Record<string, ReactiveSignal<any>>;
22
- inject<T>(contextKey: string): ReactiveSignal<T | null>;
23
- checkInjects(): void;
24
- abstract render(): ComponentConfig<any>;
25
- setReactiveValue<ModelType = unknown>(value: ReactiveSignal<ModelType>): void;
26
- }
27
- export interface BaseElementConstructor {
28
- new (...params: any[]): BaseElement;
29
- renderTagName: string;
30
- styles?: string | string[];
31
- observedAttributes: string[];
32
- }
33
- export declare const isBaseElement: (item: any) => item is BaseElement;
@@ -1,11 +0,0 @@
1
- import { ChildrenContent, ComponentConfig, ComponentInitConfig, CustomComponentConfig, EventEmitter, SlotTemplate } from '../../types/element';
2
- import { BaseElement, BaseElementConstructor } from './base-element';
3
- export declare const createCustomElement: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => CustomComponentConfig<T>;
4
- export declare const createCustomEl: <T extends BaseElement>(tagName: string, config?: ComponentInitConfig<T>) => (...content: ChildrenContent<T>[]) => CustomComponentConfig<T>;
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
- export declare const newEventEmitter: <T = void>() => EventEmitter<T>;
11
- export declare const defineSlotTemplate: <S extends SlotTemplate>() => Partial<S>;
@@ -1,21 +0,0 @@
1
- import { ReactiveSignal } from '../signal';
2
- import { ComponentConfig, ComponentContent, ComponentInitConfig, ConfigAttribute, ConfigChildren, ConfigClassList, ConfigCustomAttribute, ConfigEffect, ConfigListeners, ConfigReactiveClassList, ConfigStyle, CustomComponentConfig, ExtraHTMLElement } from '../../types/element';
3
- export declare const eventEmitter: () => () => void;
4
- export declare const addHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
5
- export declare const setHtmlContent: <T extends HTMLElement = HTMLElement>(htmlElement: T, content: string | unknown) => T;
6
- export declare const htmlEffectWrapper: (content: ReactiveSignal<unknown>) => HTMLDivElement;
7
- export declare const elementHelpers: <T extends ExtraHTMLElement>(wrapper: T) => ComponentConfig<T>;
8
- export declare const classList: (strings: TemplateStringsArray, ...args: (string | (() => string))[]) => {
9
- classList: (string | (() => string))[];
10
- };
11
- export declare const cls: (strings: TemplateStringsArray, ...values: (string | (() => string))[]) => ReturnType<typeof classList>;
12
- export declare const initComponent: <T extends ExtraHTMLElement, K extends ComponentConfig<T> | CustomComponentConfig<T>>(component: K, config?: ComponentInitConfig<T>) => K;
13
- export declare const setListeners: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, listeners?: ConfigListeners<T>) => void;
14
- export declare const setEffects: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, effects?: ConfigEffect<T>) => void | undefined;
15
- export declare const setChildren: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, children?: ConfigChildren) => ComponentConfig<T>;
16
- export declare const addCustomAttributes: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, attributeList?: ConfigCustomAttribute) => void;
17
- export declare const addClassList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, classList?: ConfigClassList) => ComponentConfig<T>;
18
- export declare const addReactiveClassList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, classList?: ConfigReactiveClassList) => ComponentConfig<T>;
19
- export declare const addStyleList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, styleList?: ConfigStyle) => ComponentConfig<T>;
20
- export declare const addAttributeList: <T extends ExtraHTMLElement>(comp: ComponentConfig<T>, attributeList?: ConfigAttribute<T>) => void;
21
- export declare const appendContentItem: <T extends ExtraHTMLElement, Component extends ComponentConfig<T> | CustomComponentConfig<T>>(comp: Component, ...items: ComponentContent[]) => Component;
@@ -1,84 +0,0 @@
1
- import { ChildrenContent, CompFuncContent, ComponentConfig, ComponentInitConfig, CustomComponentConfig, ExtraHTMLElement, HtmlTagName } from '../../types/element';
2
- import { ReactiveSignal } from '../signal';
3
- export declare const createElement: <K extends HtmlTagName>(tagName: K, config?: ComponentInitConfig<HTMLElementTagNameMap[K]>) => ComponentConfig<HTMLElementTagNameMap[K]>;
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]>;
6
- /**
7
- * Создает реактивный контейнер-элемент, который автоматически обновляет свое содержимое на основе функции обратного вызова.
8
- * Контейнер будет перерендериваться при изменении зависимостей функции обратного вызова.
9
- */
10
- export declare const getSignalContent: (cb: CompFuncContent) => ComponentConfig<HTMLDivElement>;
11
- /**
12
- * Создает реактивный список элементов, который автоматически обновляется при изменении массива данных.
13
- * Поддерживает эффективное обновление DOM с минимальными перерисовками.
14
- *
15
- * @template I - Тип элементов массива (должен быть объектом)
16
- * @template K - Ключ для уникальной идентификации элементов
17
- * @param items - Реактивный сигнал с массивом данных
18
- * @param keyFn - Функция для получения уникального ключа элемента
19
- * @param cb - Функция рендеринга элемента, принимающая элемент, индекс и весь массив
20
- * @returns Контейнер с реактивным списком элементов
21
- */
22
- 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
- /**
25
- * Создает реактивный компонент, который автоматически обновляется при изменении его зависимостей.
26
- *
27
- * @example
28
- * // Создание компонента, который обновляется при изменении сигнала
29
- * const count = signal(0);
30
- * const counterComponent = signalComponent(() =>
31
- * el('div', { text: () => `Счетчик: ${count()}` })
32
- * );
33
- *
34
- * // Позже, когда значение count изменится, компонент автоматически обновится
35
- * count(1); // Компонент перерендерится с текстом "Счетчик: 1"
36
- */
37
- export declare const signalComponent: <T extends ExtraHTMLElement, R extends ComponentConfig<T> | CustomComponentConfig<T> | Array<ComponentConfig<T> | CustomComponentConfig<T>>>(cb: () => R) => R;
38
- export declare const isSlotTemplate: (item: Element) => item is ExtraHTMLElement;
39
- export declare const unsafeHtml: (html: string | ReactiveSignal<string>) => ComponentConfig<HTMLDivElement>;
40
- export declare const renderIf: (condition: boolean, content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
41
- export declare const rxRenderIf: (condition: ReactiveSignal<any> | (() => boolean), content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
42
- /**
43
- * Условный рендеринг компонентов на основе условия.
44
- * Поддерживает как статические, так и реактивные условия.
45
- *
46
- * @template T1 - Тип HTML-элемента для основного контента
47
- * @template T2 - Тип HTML-элемента для альтернативного контента
48
- *
49
- * @param {boolean | ReactiveSignal<boolean> | (() => boolean)} condition - Условие для рендеринга.
50
- * Может быть статическим boolean, реактивным сигналом или функцией, возвращающей boolean.
51
- * @param {() => ComponentConfig<T1>} content - Функция, возвращающая компонент для отображения при истинном условии
52
- * @param {() => ComponentConfig<T2>} [elseContent] - Опциональная функция, возвращающая компонент для отображения при ложном условии
53
- *
54
- * @returns {ComponentConfig<T1> | ComponentConfig<T2> | ''} Компонент, соответствующий условию, или пустая строка
55
- *
56
- * @example
57
- * // Статическое условие
58
- * const isVisible = true;
59
- * const component = when(
60
- * isVisible,
61
- * () => el('div', { text: 'Видимый контент' }),
62
- * () => el('div', { text: 'Скрытый контент' })
63
- * );
64
- *
65
- * @example
66
- * // Реактивное условие с сигналом
67
- * const isActive = signal(false);
68
- * const component = when(
69
- * isActive,
70
- * () => el('div', { text: 'Активный' }),
71
- * () => el('div', { text: 'Неактивный' })
72
- * );
73
- *
74
- * @example
75
- * // Условный рендеринг без elseContent
76
- * const hasData = signal(true);
77
- * const component = when(
78
- * hasData,
79
- * () => el('div', { text: 'Данные загружены' })
80
- * );
81
- */
82
- export declare const when: (condition: boolean | ReactiveSignal<any> | (() => boolean), content: CompFuncContent, elseContent?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
83
- export declare const showIf: (condition: boolean | ReactiveSignal<any> | (() => boolean), template: CompFuncContent) => ComponentConfig<HTMLDivElement>;
84
- export declare const show: (condition: boolean | ReactiveSignal<any> | (() => boolean), template: CompFuncContent, elseTemplate?: CompFuncContent) => ComponentConfig<HTMLDivElement>;
@@ -1,4 +0,0 @@
1
- export * from './base-element';
2
- export * from './custom-element';
3
- export * from './element';
4
- export * from './element-helper';
@@ -1,3 +0,0 @@
1
- import { ChildrenContent, ComponentInitConfig } from '../../types';
2
- import { BaseElementConstructor } from '../html-elements';
3
- export declare const useCustomComponent: <B extends BaseElementConstructor>(comp: B, selector?: `${string}-${string}`, isClosed?: boolean) => (config?: ComponentInitConfig<InstanceType<B>> | ChildrenContent<InstanceType<B>>, ...content: ChildrenContent<InstanceType<B>>[]) => import('../../types').CustomComponentConfig<InstanceType<B>>;
@@ -1,67 +0,0 @@
1
- import { ChildrenContent, ComponentInitConfig, HtmlTagName } from '../../types/element';
2
- import { el } from '../html-elements/element';
3
- type HtmlFactories = {
4
- [K in HtmlTagName]: (config?: ComponentInitConfig<HTMLElementTagNameMap[K]> | ChildrenContent<HTMLElementTagNameMap[K]>, ...content: ChildrenContent<HTMLElementTagNameMap[K]>[]) => ReturnType<ReturnType<typeof el<K>>>;
5
- };
6
- declare const htmlFactories: HtmlFactories;
7
- export declare const div: (config?: ChildrenContent<HTMLDivElement> | ComponentInitConfig<HTMLDivElement> | undefined, ...content: ChildrenContent<HTMLDivElement>[]) => import('../..').ComponentConfig<HTMLDivElement>;
8
- export declare const span: (config?: ChildrenContent<HTMLSpanElement> | ComponentInitConfig<HTMLSpanElement> | undefined, ...content: ChildrenContent<HTMLSpanElement>[]) => import('../..').ComponentConfig<HTMLSpanElement>;
9
- export declare const section: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
10
- export declare const input: (config?: ChildrenContent<HTMLInputElement> | ComponentInitConfig<HTMLInputElement> | undefined, ...content: ChildrenContent<HTMLInputElement>[]) => import('../..').ComponentConfig<HTMLInputElement>;
11
- export declare const button: (config?: ChildrenContent<HTMLButtonElement> | ComponentInitConfig<HTMLButtonElement> | undefined, ...content: ChildrenContent<HTMLButtonElement>[]) => import('../..').ComponentConfig<HTMLButtonElement>;
12
- export declare const table: (config?: ChildrenContent<HTMLTableElement> | ComponentInitConfig<HTMLTableElement> | undefined, ...content: ChildrenContent<HTMLTableElement>[]) => import('../..').ComponentConfig<HTMLTableElement>;
13
- export declare const tr: (config?: ChildrenContent<HTMLTableRowElement> | ComponentInitConfig<HTMLTableRowElement> | undefined, ...content: ChildrenContent<HTMLTableRowElement>[]) => import('../..').ComponentConfig<HTMLTableRowElement>;
14
- export declare const td: (config?: ChildrenContent<HTMLTableCellElement> | ComponentInitConfig<HTMLTableCellElement> | undefined, ...content: ChildrenContent<HTMLTableCellElement>[]) => import('../..').ComponentConfig<HTMLTableCellElement>;
15
- export declare const th: (config?: ChildrenContent<HTMLTableCellElement> | ComponentInitConfig<HTMLTableCellElement> | undefined, ...content: ChildrenContent<HTMLTableCellElement>[]) => import('../..').ComponentConfig<HTMLTableCellElement>;
16
- export declare const ul: (config?: ChildrenContent<HTMLUListElement> | ComponentInitConfig<HTMLUListElement> | undefined, ...content: ChildrenContent<HTMLUListElement>[]) => import('../..').ComponentConfig<HTMLUListElement>;
17
- export declare const li: (config?: ChildrenContent<HTMLLIElement> | ComponentInitConfig<HTMLLIElement> | undefined, ...content: ChildrenContent<HTMLLIElement>[]) => import('../..').ComponentConfig<HTMLLIElement>;
18
- export declare const ol: (config?: ChildrenContent<HTMLOListElement> | ComponentInitConfig<HTMLOListElement> | undefined, ...content: ChildrenContent<HTMLOListElement>[]) => import('../..').ComponentConfig<HTMLOListElement>;
19
- export declare const form: (config?: ChildrenContent<HTMLFormElement> | ComponentInitConfig<HTMLFormElement> | undefined, ...content: ChildrenContent<HTMLFormElement>[]) => import('../..').ComponentConfig<HTMLFormElement>;
20
- export declare const label: (config?: ChildrenContent<HTMLLabelElement> | ComponentInitConfig<HTMLLabelElement> | undefined, ...content: ChildrenContent<HTMLLabelElement>[]) => import('../..').ComponentConfig<HTMLLabelElement>;
21
- export declare const select: (config?: ChildrenContent<HTMLSelectElement> | ComponentInitConfig<HTMLSelectElement> | undefined, ...content: ChildrenContent<HTMLSelectElement>[]) => import('../..').ComponentConfig<HTMLSelectElement>;
22
- export declare const option: (config?: ChildrenContent<HTMLOptionElement> | ComponentInitConfig<HTMLOptionElement> | undefined, ...content: ChildrenContent<HTMLOptionElement>[]) => import('../..').ComponentConfig<HTMLOptionElement>;
23
- export declare const textarea: (config?: ChildrenContent<HTMLTextAreaElement> | ComponentInitConfig<HTMLTextAreaElement> | undefined, ...content: ChildrenContent<HTMLTextAreaElement>[]) => import('../..').ComponentConfig<HTMLTextAreaElement>;
24
- export declare const img: (config?: ChildrenContent<HTMLImageElement> | ComponentInitConfig<HTMLImageElement> | undefined, ...content: ChildrenContent<HTMLImageElement>[]) => import('../..').ComponentConfig<HTMLImageElement>;
25
- export declare const a: (config?: ChildrenContent<HTMLAnchorElement> | ComponentInitConfig<HTMLAnchorElement> | undefined, ...content: ChildrenContent<HTMLAnchorElement>[]) => import('../..').ComponentConfig<HTMLAnchorElement>;
26
- export declare const p: (config?: ChildrenContent<HTMLParagraphElement> | ComponentInitConfig<HTMLParagraphElement> | undefined, ...content: ChildrenContent<HTMLParagraphElement>[]) => import('../..').ComponentConfig<HTMLParagraphElement>;
27
- export declare const h1: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
28
- export declare const h2: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
29
- export declare const h3: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
30
- export declare const h4: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
31
- export declare const h5: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
32
- export declare const h6: (config?: ChildrenContent<HTMLHeadingElement> | ComponentInitConfig<HTMLHeadingElement> | undefined, ...content: ChildrenContent<HTMLHeadingElement>[]) => import('../..').ComponentConfig<HTMLHeadingElement>;
33
- export declare const br: (config?: ChildrenContent<HTMLBRElement> | ComponentInitConfig<HTMLBRElement> | undefined, ...content: ChildrenContent<HTMLBRElement>[]) => import('../..').ComponentConfig<HTMLBRElement>;
34
- export declare const hr: (config?: ChildrenContent<HTMLHRElement> | ComponentInitConfig<HTMLHRElement> | undefined, ...content: ChildrenContent<HTMLHRElement>[]) => import('../..').ComponentConfig<HTMLHRElement>;
35
- export declare const pre: (config?: ChildrenContent<HTMLPreElement> | ComponentInitConfig<HTMLPreElement> | undefined, ...content: ChildrenContent<HTMLPreElement>[]) => import('../..').ComponentConfig<HTMLPreElement>;
36
- export declare const code: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
37
- export declare const nav: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
38
- export declare const header: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
39
- export declare const footer: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
40
- export declare const main: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
41
- export declare const aside: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
42
- export declare const article: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
43
- export declare const figure: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
44
- export declare const figcaption: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
45
- export declare const blockquote: (config?: ChildrenContent<HTMLQuoteElement> | ComponentInitConfig<HTMLQuoteElement> | undefined, ...content: ChildrenContent<HTMLQuoteElement>[]) => import('../..').ComponentConfig<HTMLQuoteElement>;
46
- export declare const cite: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
47
- export declare const small: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
48
- export declare const strong: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
49
- export declare const em: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
50
- export declare const b: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
51
- export declare const i: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
52
- export declare const u: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
53
- export declare const s: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
54
- export declare const sub: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
55
- export declare const sup: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
56
- export declare const mark: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
57
- export declare const del: (config?: ChildrenContent<HTMLModElement> | ComponentInitConfig<HTMLModElement> | undefined, ...content: ChildrenContent<HTMLModElement>[]) => import('../..').ComponentConfig<HTMLModElement>;
58
- export declare const ins: (config?: ChildrenContent<HTMLModElement> | ComponentInitConfig<HTMLModElement> | undefined, ...content: ChildrenContent<HTMLModElement>[]) => import('../..').ComponentConfig<HTMLModElement>;
59
- export declare const details: (config?: ChildrenContent<HTMLDetailsElement> | ComponentInitConfig<HTMLDetailsElement> | undefined, ...content: ChildrenContent<HTMLDetailsElement>[]) => import('../..').ComponentConfig<HTMLDetailsElement>;
60
- export declare const summary: (config?: ChildrenContent<HTMLElement> | ComponentInitConfig<HTMLElement> | undefined, ...content: ChildrenContent<HTMLElement>[]) => import('../..').ComponentConfig<HTMLElement>;
61
- export declare const progress: (config?: ChildrenContent<HTMLProgressElement> | ComponentInitConfig<HTMLProgressElement> | undefined, ...content: ChildrenContent<HTMLProgressElement>[]) => import('../..').ComponentConfig<HTMLProgressElement>;
62
- export declare const meter: (config?: ChildrenContent<HTMLMeterElement> | ComponentInitConfig<HTMLMeterElement> | undefined, ...content: ChildrenContent<HTMLMeterElement>[]) => import('../..').ComponentConfig<HTMLMeterElement>;
63
- export declare const audio: (config?: ChildrenContent<HTMLAudioElement> | ComponentInitConfig<HTMLAudioElement> | undefined, ...content: ChildrenContent<HTMLAudioElement>[]) => import('../..').ComponentConfig<HTMLAudioElement>;
64
- export declare const video: (config?: ChildrenContent<HTMLVideoElement> | ComponentInitConfig<HTMLVideoElement> | undefined, ...content: ChildrenContent<HTMLVideoElement>[]) => import('../..').ComponentConfig<HTMLVideoElement>;
65
- export declare const canvas: (config?: ChildrenContent<HTMLCanvasElement> | ComponentInitConfig<HTMLCanvasElement> | undefined, ...content: ChildrenContent<HTMLCanvasElement>[]) => import('../..').ComponentConfig<HTMLCanvasElement>;
66
- export declare const slot: (config?: ChildrenContent<HTMLSlotElement> | ComponentInitConfig<HTMLSlotElement> | undefined, ...content: ChildrenContent<HTMLSlotElement>[]) => import('../..').ComponentConfig<HTMLSlotElement>;
67
- export default htmlFactories;
@@ -1,5 +0,0 @@
1
- import { ComponentConfig, ConfigClassList, ConfigReactiveClassList } from '../../types/element';
2
- export declare const createComponent: <Props, R extends ComponentConfig<HTMLElement>>(cb: (props: Props) => R) => (props: Props & {
3
- classList?: ConfigClassList;
4
- reactiveClassList?: ConfigReactiveClassList;
5
- }) => ReturnType<typeof cb>;
@@ -1,3 +0,0 @@
1
- export * from './custom-fabric';
2
- export * from './fabric';
3
- export * from './fn-component';
@@ -1,5 +0,0 @@
1
- export * from './helpers';
2
- export * from './html-decorators';
3
- export * from './html-elements';
4
- export * from './html-fabric';
5
- export * from './signal';
@@ -1,10 +0,0 @@
1
- import { ComponentConfig } from '../../types';
2
- type RouterConfig = {
3
- path: string;
4
- comp: () => ComponentConfig<any>;
5
- }[];
6
- export declare const routes: RouterConfig;
7
- export declare const linkTo: (path: string, comp: ComponentConfig<any>) => void;
8
- export declare const comparePaths: (path1: string, path2: string) => boolean;
9
- export declare const routerOutlet: (routes: RouterConfig) => ComponentConfig<HTMLDivElement>;
10
- export {};
@@ -1,3 +0,0 @@
1
- export type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
2
- export type IsPromise<T> = T extends Promise<any> ? true : false;
3
- export type IsPromiseFunction<T> = T extends () => Promise<any> ? true : false;
@@ -1,3 +0,0 @@
1
- export * from './signal';
2
- export * from './signal.type';
3
- export * from './utils';
@@ -1,18 +0,0 @@
1
- import { IsPromise, IsPromiseFunction, UnwrapPromise } from './helpers.types';
2
- import { CompareFn, ReactiveSignal, UnwrapSignal } from './signal.type';
3
- export declare function signal<T = unknown>(initValue: T, signalCompareFn?: CompareFn<T>): ReactiveSignal<T>;
4
- export declare function effect(cb: () => void): void;
5
- export declare const isReactiveSignal: <R extends ReactiveSignal<any>>(v: R | any) => v is R;
6
- /**
7
- * Reactive String (rs). Создаёт зависимый string сигнал от источника.
8
- * @param strings
9
- * @param values
10
- * @returns
11
- *
12
- * @example
13
- * const source: ReactiveSignal<string> = signal('test')
14
- * const dependent: ReactiveSignal<string> = rs`abc-${source}`
15
- * // log: "abc-test"
16
- */
17
- export declare function rs<T extends ReactiveSignal<any> | any>(strings: TemplateStringsArray, ...values: T[]): ReactiveSignal<string>;
18
- export declare function createSignal<T extends Promise<any> | (() => any), I extends UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : T> | undefined>(cb: T, initializeValue?: I): I extends undefined ? (IsPromise<T> extends true ? ReactiveSignal<UnwrapPromise<T> | null> : (IsPromiseFunction<T> extends true ? ReactiveSignal<UnwrapPromise<T extends () => infer R ? R : never> | null> : ReactiveSignal<UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : never>>)) : ReactiveSignal<UnwrapPromise<T extends () => infer R ? UnwrapSignal<R> : T>>;