@skeletonizer/utils 0.0.16-alpha.0 → 0.0.19-alpha.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.
@@ -1,6 +1,5 @@
1
- import { TSchemaConfig } from '../types';
2
1
  import { Schema } from '../models';
3
-
2
+ import { TSchemaConfig } from '../types';
4
3
  export declare abstract class SkeletonAbstractComponent<T extends object> {
5
4
  abstract skeletonConfig: TSchemaConfig<T>;
6
5
  abstract showSkeleton: boolean;
@@ -1,6 +1,5 @@
1
- import { Schema } from '../models';
2
1
  import { TSchemaConfig } from '../types';
3
-
2
+ import { Schema } from '../models';
4
3
  export declare class SkeletonAdapterComponent<T extends object> {
5
4
  config: TSchemaConfig<T> | null;
6
5
  viewModels: Array<Schema<T>>;
@@ -1,5 +1,4 @@
1
1
  import { ISkeletonizerColorSchema } from '../types';
2
-
3
2
  export declare class SkeletonDirective {
4
3
  static readonly dataAttr: string;
5
4
  static skeletonizeProjectedTemplate(template: HTMLElement, colorSchema?: ISkeletonizerColorSchema): void;
@@ -1,5 +1,4 @@
1
1
  import { TSchemaGenerator, TSchemaTransformer } from '../types';
2
-
3
2
  export declare class Schema<T extends object> {
4
3
  readonly generator: TSchemaGenerator<T>;
5
4
  viewModel: TSchemaTransformer<T>;
@@ -1,5 +1,4 @@
1
1
  import { TSchemaTransformer } from './transformer.types';
2
-
3
2
  export type TSchemaGenerator<T extends object> = () => TSchemaTransformer<T>;
4
3
  export type TSchemaConfig<T extends object> = {
5
4
  repeat: number;
@@ -1,5 +1,4 @@
1
1
  import { SchemaItem } from '../models';
2
-
3
2
  export type TSchemaTransformer<T> = T extends Array<infer Element> ? Array<TSchemaTransformer<Element>> : T extends Date ? SchemaItem<Date> : T extends boolean ? SchemaItem<boolean> : T extends object ? {
4
3
  [K in keyof T]: TSchemaTransformer<T[K]>;
5
4
  } : SchemaItem<T>;
package/dist/utils.mjs CHANGED
@@ -1,13 +1,9 @@
1
- var b = (s, e, t) => {
2
- if (!e.has(s))
3
- throw TypeError("Cannot " + t);
1
+ var b = (s) => {
2
+ throw TypeError(s);
4
3
  };
5
- var g = (s, e, t) => (b(s, e, "read from private field"), t ? t.call(s) : e.get(s)), f = (s, e, t) => {
6
- if (e.has(s))
7
- throw TypeError("Cannot add the same private member more than once");
8
- e instanceof WeakSet ? e.add(s) : e.set(s, t);
9
- }, u = (s, e, t, i) => (b(s, e, "write to private field"), i ? i.call(s, t) : e.set(s, t), t);
10
- const q = [
4
+ var f = (s, e, t) => e.has(s) || b("Cannot " + t);
5
+ var g = (s, e, t) => (f(s, e, "read from private field"), t ? t.call(s) : e.get(s)), q = (s, e, t) => e.has(s) ? b("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), u = (s, e, t, i) => (f(s, e, "write to private field"), i ? i.call(s, t) : e.set(s, t), t);
6
+ const y = [
11
7
  "Lorem",
12
8
  "ipsum",
13
9
  "dolor",
@@ -511,11 +507,11 @@ class h {
511
507
  return new Date(e.getTime() + Math.random() * (t.getTime() - e.getTime()));
512
508
  }
513
509
  }
514
- let y = 0;
510
+ let M = 0;
515
511
  var r;
516
- class w {
512
+ class x {
517
513
  constructor() {
518
- f(this, r, void 0);
514
+ q(this, r);
519
515
  }
520
516
  get value() {
521
517
  return g(this, r);
@@ -550,7 +546,7 @@ class w {
550
546
  return e.isFuture ? i = new Date(Date.now() + h.daysInMs(1)) : e.isPast && (t = new Date(Date.now() - h.daysInMs(1))), u(this, r, h.dateBetween(i, t)), this;
551
547
  }
552
548
  uuid() {
553
- return y++, this.assertType(), u(this, r, y), this;
549
+ return M++, this.assertType(), u(this, r, M), this;
554
550
  }
555
551
  boolean() {
556
552
  return this.assertType(), u(this, r, Math.random() <= 0.5), this;
@@ -564,8 +560,8 @@ class w {
564
560
  assertType() {
565
561
  }
566
562
  randomLoremWord() {
567
- const e = Math.floor(Math.random() * q.length);
568
- return q[e] ?? "lorem";
563
+ const e = Math.floor(Math.random() * y.length);
564
+ return y[e] ?? "lorem";
569
565
  }
570
566
  }
571
567
  r = new WeakMap();
@@ -577,7 +573,7 @@ class d {
577
573
  return this.val;
578
574
  }
579
575
  static modelToValue(e) {
580
- if (e instanceof w)
576
+ if (e instanceof x)
581
577
  return e.value;
582
578
  if (Array.isArray(e))
583
579
  return e.map(this.modelToValue);
@@ -591,7 +587,7 @@ class d {
591
587
  }
592
588
  }
593
589
  }
594
- class I {
590
+ class C {
595
591
  // when accessing skeletonized component properties / methods from within the view, they should be accessed via proxy method
596
592
  // this is necessary to ensure:
597
593
  // - that all properties / methods accessed from within skeletonized part of the view are a part of skeletonSchema
@@ -600,7 +596,7 @@ class I {
600
596
  return e instanceof d ? e.value : e;
601
597
  }
602
598
  }
603
- class C {
599
+ class P {
604
600
  constructor() {
605
601
  this.config = null, this.viewModels = [];
606
602
  }
@@ -619,7 +615,7 @@ const n = class n {
619
615
  "style",
620
616
  `--skeletonizer-primary-color: ${i}; --skeletonizer-secondary-color: ${c};`
621
617
  ), Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach((o) => {
622
- const T = [
618
+ const A = [
623
619
  "br",
624
620
  "b",
625
621
  "strong",
@@ -631,12 +627,12 @@ const n = class n {
631
627
  "ins",
632
628
  "sub",
633
629
  "sup"
634
- ], p = Array.from(o.childNodes).map((a) => a.nodeName.toLowerCase()).filter((a) => !T.includes(a)), A = p.length > 0 && p.some((a) => a !== p[0]);
630
+ ], p = Array.from(o.childNodes).map((a) => a.nodeName.toLowerCase()).filter((a) => !A.includes(a)), w = p.length > 0 && p.some((a) => a !== p[0]);
635
631
  o.childNodes.forEach((a) => {
636
632
  switch (a.nodeName.toLowerCase()) {
637
633
  case "#text": {
638
634
  if (this.assertAs(a), a.wholeText.trim())
639
- if (A) {
635
+ if (w) {
640
636
  const m = document.createElement("span");
641
637
  m.innerText = a.cloneNode().wholeText, m.innerText.length && a.replaceWith(
642
638
  n.skeletonizedSpanGenerator(m.innerText, l.Text)
@@ -671,11 +667,11 @@ const n = class n {
671
667
  }
672
668
  };
673
669
  n.dataAttr = "data-skeletonizer";
674
- let M = n;
670
+ let T = n;
675
671
  export {
676
672
  d as Schema,
677
- w as SchemaItem,
678
- I as SkeletonAbstractComponent,
679
- C as SkeletonAdapterComponent,
680
- M as SkeletonDirective
673
+ x as SchemaItem,
674
+ C as SkeletonAbstractComponent,
675
+ P as SkeletonAdapterComponent,
676
+ T as SkeletonDirective
681
677
  };
package/dist/utils.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(i,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(i=typeof globalThis<"u"?globalThis:i||self,s(i["@skeletonizer/utils"]={}))})(this,function(i){"use strict";var M=(i,s,a)=>{if(!s.has(i))throw TypeError("Cannot "+a)};var y=(i,s,a)=>(M(i,s,"read from private field"),a?a.call(i):s.get(i)),A=(i,s,a)=>{if(s.has(i))throw TypeError("Cannot add the same private member more than once");s instanceof WeakSet?s.add(i):s.set(i,a)},m=(i,s,a,d)=>(M(i,s,"write to private field"),d?d.call(i,a):s.set(i,a),a);var o;const s=["Lorem","ipsum","dolor","sit","amet,","consectetur","adipiscing","elit.","Mauris","posuere","tincidunt","purus,","id","laoreet","mauris","cursus","nec.","Quisque","id","ante","id","tellus","aliquam","pulvinar","eget","eu","dolor.","Donec","egestas","dapibus","massa,","vel","finibus","lectus","congue","eu.","Morbi","quis","erat","condimentum,","molestie","ex","a,","sollicitudin","metus.","Vestibulum","orci","metus,","sagittis","a","sagittis","a,","varius","id","diam.","Cras","egestas","eros","vestibulum,","tempus","ipsum","pellentesque,","dictum","justo.","Quisque","sed","justo","metus.","Suspendisse","id","felis","vitae","nunc","auctor","tristique","eu","sit","amet","mi.","Ut","luctus","posuere","viverra.","Nunc","sed","augue","a","velit","sodales","iaculis.","Sed","at","arcu","non","massa","hendrerit","scelerisque.","Nunc","commodo","vulputate","vestibulum.","Duis","ut","leo","nisi.","Mauris","dignissim","quis","sem","non","blandit.","Suspendisse","id","elit","eget","leo","efficitur","maximus.","Ut","eu","auctor","ligula.","Nulla","in","leo","luctus,","tempor","justo","vitae,","condimentum","massa.","Quisque","venenatis","elementum","posuere.","Sed","bibendum","bibendum","enim,","in","faucibus","ante.","Aliquam","pretium","sapien","ac","eleifend","suscipit.","Duis","lacinia","justo","quis","diam","elementum,","vitae","fringilla","lectus","faucibus.","Integer","dictum","commodo","diam","a","tempus.","Aenean","elementum","egestas","quam,","eget","feugiat","ligula","imperdiet","vitae.","Morbi","mattis","dui","sed","elementum","mollis.","In","interdum","viverra","urna,","at","scelerisque","sapien.","Sed","molestie","blandit","risus","nec","ornare.","Integer","pharetra","massa","purus,","ut","fringilla","augue","sollicitudin","in.","Pellentesque","eu","leo","pharetra,","hendrerit","lectus","id,","dapibus","ipsum.","Quisque","tincidunt","euismod","venenatis.","Sed","lacus","ex,","pulvinar","at","dui","vitae,","condimentum","rutrum","eros.","Nunc","viverra","cursus","ante,","ac","dapibus","ligula","volutpat","nec.","Integer","commodo","in","tortor","eget","aliquet.","Nam","bibendum","lectus","vitae","ligula","interdum","scelerisque.","Morbi","sit","amet","augue","diam.","Etiam","purus","lorem,","sodales","sed","sodales","ac,","dignissim","a","tellus.","Nunc","vehicula","nibh","in","erat","rhoncus","ullamcorper.","Orci","varius","natoque","penatibus","et","magnis","dis","parturient","montes,","nascetur","ridiculus","mus.","Aliquam","augue","nunc,","fringilla","at","dictum","quis,","luctus","sit","amet","nisl.","Nam","lectus","felis,","egestas","nec","lacinia","non,","auctor","eget","lorem.","Nunc","vel","velit","quis","magna","hendrerit","volutpat","in","nec","leo.","Aenean","tempor","lectus","tortor,","nec","bibendum","elit","aliquam","at.","In","id","libero","tincidunt,","interdum","libero","sit","amet,","gravida","est.","Morbi","ut","ipsum","enim.","Duis","vel","posuere","ante.","Praesent","sollicitudin","lacus","sit","amet","luctus","euismod.","Phasellus","lorem","elit,","auctor","sed","risus","a,","faucibus","tempor","lacus.","Integer","id","tellus","ut","eros","congue","ornare.","Cras","vitae","ornare","sem.","Cras","tincidunt","arcu","efficitur","mauris","molestie,","eu","eleifend","eros","mattis.","Integer","id","diam","mauris.","Duis","suscipit","enim","risus,","non","dignissim","nulla","imperdiet","hendrerit.","Vestibulum","sed","dignissim","erat.","Aliquam","erat","volutpat.","Nunc","mattis","auctor","justo,","non","fringilla","dolor","blandit","a.","Donec","et","velit","tristique","lacus","varius","aliquam.","Praesent","ac","molestie","quam,","vitae","scelerisque","tellus.","Praesent","eleifend","sed","diam","in","gravida.","Donec","tristique","sapien","ante,","in","egestas","diam","porta","ac.","Proin","ac","justo","eleifend,","consequat","ante","vitae,","laoreet","augue.","Mauris","scelerisque","arcu","dolor,","quis","lobortis","risus","pellentesque","eu.","Praesent","in","enim","a","elit","feugiat","dapibus.","Duis","quis","bibendum","mi.","Vestibulum","lacinia,","sem","at","efficitur","volutpat,","velit","ligula","vulputate","nisi,","sit","amet","dapibus","risus","metus","sed","est.","Sed","in","venenatis","ante.","Pellentesque","vel","ipsum","pharetra,","efficitur","quam","ut,","hendrerit","dolor."];var a=(u=>(u.Text="text",u.Input="input",u.Image="image",u.Video="video",u.WrapperElement="wrapper-element",u))(a||{}),d=(u=>(u.PrimaryColor="rgba(100, 100, 100, .6)",u.SecondaryColor="rgba(100, 100, 100, .3)",u))(d||{});class b{static daysInMs(e){return e*24*60*60*1e3}static dateBetween(e,t){return new Date(e.getTime()+Math.random()*(t.getTime()-e.getTime()))}}let q=0;class T{constructor(){A(this,o,void 0)}get value(){return y(this,o)}words(e){this.assertType();let t="",r=0;for(;r<e;)t+=this.randomLoremWord()+" ",r++;return m(this,o,t.trim()),this}paragraphs(e){this.assertType();let t="",r=0;const g=50;for(;r<e;){const p=g-Math.round(g*Math.random()*.2)*(Math.random()<.5?-1:1);t+=this.words(p).value,r!==e-1&&(t+=`
2
- `),r++}return m(this,o,t),this}number(e=0,t=1e3){return this.assertType(),m(this,o,Math.ceil(Math.random()*(t-e))+e),this}multiply(e){return this.assertType(),m(this,o,y(this,o)*e),this}date(e={}){this.assertType();let t=e.max??new Date("2100-01-01"),r=e.min??new Date("1970-01-01");return e.isFuture?r=new Date(Date.now()+b.daysInMs(1)):e.isPast&&(t=new Date(Date.now()-b.daysInMs(1))),m(this,o,b.dateBetween(r,t)),this}uuid(){return q++,this.assertType(),m(this,o,q),this}boolean(){return this.assertType(),m(this,o,Math.random()<=.5),this}symbol(e=0){return this.assertType(),m(this,o,Symbol(e)),this}identical(e){return this.assertType(),m(this,o,e),this}assertType(){}randomLoremWord(){const e=Math.floor(Math.random()*s.length);return s[e]??"lorem"}}o=new WeakMap;class c{constructor(e){this.generator=e,this.viewModel=this.generator(),this.val=c.modelToValue(this.viewModel)}get value(){return this.val}static modelToValue(e){if(e instanceof T)return e.value;if(Array.isArray(e))return e.map(this.modelToValue);{const t={};return Object.keys(e).forEach(r=>{t[r]=c.modelToValue(e[r])}),t}}}class w{proxy(e){return e instanceof c?e.value:e}}class C{constructor(){this.config=null,this.viewModels=[]}setupModels(){if(this.config){const e=this.config.schemaGenerator;this.viewModels=Array.from({length:this.config.repeat},()=>new c(e))}}}const l=class l{static skeletonizeProjectedTemplate(e,t){const r=(t==null?void 0:t.primaryColor)??d.PrimaryColor,g=(t==null?void 0:t.secondaryColor)??d.SecondaryColor;e.setAttribute("style",`--skeletonizer-primary-color: ${r}; --skeletonizer-secondary-color: ${g};`),Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach(p=>{const I=["br","b","strong","i","em","mark","small","del","ins","sub","sup"],f=Array.from(p.childNodes).map(n=>n.nodeName.toLowerCase()).filter(n=>!I.includes(n)),x=f.length>0&&f.some(n=>n!==f[0]);p.childNodes.forEach(n=>{switch(n.nodeName.toLowerCase()){case"#text":{if(this.assertAs(n),n.wholeText.trim())if(x){const h=document.createElement("span");h.innerText=n.cloneNode().wholeText,h.innerText.length&&n.replaceWith(l.skeletonizedSpanGenerator(h.innerText,a.Text))}else{const h=l.skeletonizedSpanGenerator(p.innerHTML,a.Text);p.innerHTML=h.outerHTML}break}case"input":{n.setAttribute(l.dataAttr,a.Input);break}case"img":{n.setAttribute(l.dataAttr,a.Image);break}case"video":{n.setAttribute(l.dataAttr,a.Video);break}}})}),e.setAttribute(l.dataAttr,a.WrapperElement)}static skeletonizedSpanGenerator(e,t){const r=document.createElement("span");return r.innerHTML=e,r.setAttribute(l.dataAttr,t),r}static assertAs(e){}};l.dataAttr="data-skeletonizer";let v=l;i.Schema=c,i.SchemaItem=T,i.SkeletonAbstractComponent=w,i.SkeletonAdapterComponent=C,i.SkeletonDirective=v,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
1
+ (function(t,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(t=typeof globalThis<"u"?globalThis:t||self,s(t["@skeletonizer/utils"]={}))})(this,function(t){"use strict";var M=t=>{throw TypeError(t)};var A=(t,s,a)=>s.has(t)||M("Cannot "+a);var y=(t,s,a)=>(A(t,s,"read from private field"),a?a.call(t):s.get(t)),w=(t,s,a)=>s.has(t)?M("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(t):s.set(t,a),m=(t,s,a,d)=>(A(t,s,"write to private field"),d?d.call(t,a):s.set(t,a),a);var o;const s=["Lorem","ipsum","dolor","sit","amet,","consectetur","adipiscing","elit.","Mauris","posuere","tincidunt","purus,","id","laoreet","mauris","cursus","nec.","Quisque","id","ante","id","tellus","aliquam","pulvinar","eget","eu","dolor.","Donec","egestas","dapibus","massa,","vel","finibus","lectus","congue","eu.","Morbi","quis","erat","condimentum,","molestie","ex","a,","sollicitudin","metus.","Vestibulum","orci","metus,","sagittis","a","sagittis","a,","varius","id","diam.","Cras","egestas","eros","vestibulum,","tempus","ipsum","pellentesque,","dictum","justo.","Quisque","sed","justo","metus.","Suspendisse","id","felis","vitae","nunc","auctor","tristique","eu","sit","amet","mi.","Ut","luctus","posuere","viverra.","Nunc","sed","augue","a","velit","sodales","iaculis.","Sed","at","arcu","non","massa","hendrerit","scelerisque.","Nunc","commodo","vulputate","vestibulum.","Duis","ut","leo","nisi.","Mauris","dignissim","quis","sem","non","blandit.","Suspendisse","id","elit","eget","leo","efficitur","maximus.","Ut","eu","auctor","ligula.","Nulla","in","leo","luctus,","tempor","justo","vitae,","condimentum","massa.","Quisque","venenatis","elementum","posuere.","Sed","bibendum","bibendum","enim,","in","faucibus","ante.","Aliquam","pretium","sapien","ac","eleifend","suscipit.","Duis","lacinia","justo","quis","diam","elementum,","vitae","fringilla","lectus","faucibus.","Integer","dictum","commodo","diam","a","tempus.","Aenean","elementum","egestas","quam,","eget","feugiat","ligula","imperdiet","vitae.","Morbi","mattis","dui","sed","elementum","mollis.","In","interdum","viverra","urna,","at","scelerisque","sapien.","Sed","molestie","blandit","risus","nec","ornare.","Integer","pharetra","massa","purus,","ut","fringilla","augue","sollicitudin","in.","Pellentesque","eu","leo","pharetra,","hendrerit","lectus","id,","dapibus","ipsum.","Quisque","tincidunt","euismod","venenatis.","Sed","lacus","ex,","pulvinar","at","dui","vitae,","condimentum","rutrum","eros.","Nunc","viverra","cursus","ante,","ac","dapibus","ligula","volutpat","nec.","Integer","commodo","in","tortor","eget","aliquet.","Nam","bibendum","lectus","vitae","ligula","interdum","scelerisque.","Morbi","sit","amet","augue","diam.","Etiam","purus","lorem,","sodales","sed","sodales","ac,","dignissim","a","tellus.","Nunc","vehicula","nibh","in","erat","rhoncus","ullamcorper.","Orci","varius","natoque","penatibus","et","magnis","dis","parturient","montes,","nascetur","ridiculus","mus.","Aliquam","augue","nunc,","fringilla","at","dictum","quis,","luctus","sit","amet","nisl.","Nam","lectus","felis,","egestas","nec","lacinia","non,","auctor","eget","lorem.","Nunc","vel","velit","quis","magna","hendrerit","volutpat","in","nec","leo.","Aenean","tempor","lectus","tortor,","nec","bibendum","elit","aliquam","at.","In","id","libero","tincidunt,","interdum","libero","sit","amet,","gravida","est.","Morbi","ut","ipsum","enim.","Duis","vel","posuere","ante.","Praesent","sollicitudin","lacus","sit","amet","luctus","euismod.","Phasellus","lorem","elit,","auctor","sed","risus","a,","faucibus","tempor","lacus.","Integer","id","tellus","ut","eros","congue","ornare.","Cras","vitae","ornare","sem.","Cras","tincidunt","arcu","efficitur","mauris","molestie,","eu","eleifend","eros","mattis.","Integer","id","diam","mauris.","Duis","suscipit","enim","risus,","non","dignissim","nulla","imperdiet","hendrerit.","Vestibulum","sed","dignissim","erat.","Aliquam","erat","volutpat.","Nunc","mattis","auctor","justo,","non","fringilla","dolor","blandit","a.","Donec","et","velit","tristique","lacus","varius","aliquam.","Praesent","ac","molestie","quam,","vitae","scelerisque","tellus.","Praesent","eleifend","sed","diam","in","gravida.","Donec","tristique","sapien","ante,","in","egestas","diam","porta","ac.","Proin","ac","justo","eleifend,","consequat","ante","vitae,","laoreet","augue.","Mauris","scelerisque","arcu","dolor,","quis","lobortis","risus","pellentesque","eu.","Praesent","in","enim","a","elit","feugiat","dapibus.","Duis","quis","bibendum","mi.","Vestibulum","lacinia,","sem","at","efficitur","volutpat,","velit","ligula","vulputate","nisi,","sit","amet","dapibus","risus","metus","sed","est.","Sed","in","venenatis","ante.","Pellentesque","vel","ipsum","pharetra,","efficitur","quam","ut,","hendrerit","dolor."];var a=(u=>(u.Text="text",u.Input="input",u.Image="image",u.Video="video",u.WrapperElement="wrapper-element",u))(a||{}),d=(u=>(u.PrimaryColor="rgba(100, 100, 100, .6)",u.SecondaryColor="rgba(100, 100, 100, .3)",u))(d||{});class b{static daysInMs(e){return e*24*60*60*1e3}static dateBetween(e,i){return new Date(e.getTime()+Math.random()*(i.getTime()-e.getTime()))}}let q=0;class T{constructor(){w(this,o)}get value(){return y(this,o)}words(e){this.assertType();let i="",r=0;for(;r<e;)i+=this.randomLoremWord()+" ",r++;return m(this,o,i.trim()),this}paragraphs(e){this.assertType();let i="",r=0;const g=50;for(;r<e;){const p=g-Math.round(g*Math.random()*.2)*(Math.random()<.5?-1:1);i+=this.words(p).value,r!==e-1&&(i+=`
2
+ `),r++}return m(this,o,i),this}number(e=0,i=1e3){return this.assertType(),m(this,o,Math.ceil(Math.random()*(i-e))+e),this}multiply(e){return this.assertType(),m(this,o,y(this,o)*e),this}date(e={}){this.assertType();let i=e.max??new Date("2100-01-01"),r=e.min??new Date("1970-01-01");return e.isFuture?r=new Date(Date.now()+b.daysInMs(1)):e.isPast&&(i=new Date(Date.now()-b.daysInMs(1))),m(this,o,b.dateBetween(r,i)),this}uuid(){return q++,this.assertType(),m(this,o,q),this}boolean(){return this.assertType(),m(this,o,Math.random()<=.5),this}symbol(e=0){return this.assertType(),m(this,o,Symbol(e)),this}identical(e){return this.assertType(),m(this,o,e),this}assertType(){}randomLoremWord(){const e=Math.floor(Math.random()*s.length);return s[e]??"lorem"}}o=new WeakMap;class c{constructor(e){this.generator=e,this.viewModel=this.generator(),this.val=c.modelToValue(this.viewModel)}get value(){return this.val}static modelToValue(e){if(e instanceof T)return e.value;if(Array.isArray(e))return e.map(this.modelToValue);{const i={};return Object.keys(e).forEach(r=>{i[r]=c.modelToValue(e[r])}),i}}}class C{proxy(e){return e instanceof c?e.value:e}}class I{constructor(){this.config=null,this.viewModels=[]}setupModels(){if(this.config){const e=this.config.schemaGenerator;this.viewModels=Array.from({length:this.config.repeat},()=>new c(e))}}}const l=class l{static skeletonizeProjectedTemplate(e,i){const r=(i==null?void 0:i.primaryColor)??d.PrimaryColor,g=(i==null?void 0:i.secondaryColor)??d.SecondaryColor;e.setAttribute("style",`--skeletonizer-primary-color: ${r}; --skeletonizer-secondary-color: ${g};`),Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach(p=>{const x=["br","b","strong","i","em","mark","small","del","ins","sub","sup"],f=Array.from(p.childNodes).map(n=>n.nodeName.toLowerCase()).filter(n=>!x.includes(n)),P=f.length>0&&f.some(n=>n!==f[0]);p.childNodes.forEach(n=>{switch(n.nodeName.toLowerCase()){case"#text":{if(this.assertAs(n),n.wholeText.trim())if(P){const h=document.createElement("span");h.innerText=n.cloneNode().wholeText,h.innerText.length&&n.replaceWith(l.skeletonizedSpanGenerator(h.innerText,a.Text))}else{const h=l.skeletonizedSpanGenerator(p.innerHTML,a.Text);p.innerHTML=h.outerHTML}break}case"input":{n.setAttribute(l.dataAttr,a.Input);break}case"img":{n.setAttribute(l.dataAttr,a.Image);break}case"video":{n.setAttribute(l.dataAttr,a.Video);break}}})}),e.setAttribute(l.dataAttr,a.WrapperElement)}static skeletonizedSpanGenerator(e,i){const r=document.createElement("span");return r.innerHTML=e,r.setAttribute(l.dataAttr,i),r}static assertAs(e){}};l.dataAttr="data-skeletonizer";let v=l;t.Schema=c,t.SchemaItem=T,t.SkeletonAbstractComponent=C,t.SkeletonAdapterComponent=I,t.SkeletonDirective=v,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skeletonizer/utils",
3
- "version": "0.0.16-alpha.0",
3
+ "version": "0.0.19-alpha.0",
4
4
  "description": "Utils for all skeletonizer packages",
5
5
  "author": "Luka Varga",
6
6
  "license": "MIT",
@@ -49,10 +49,10 @@
49
49
  "**/*.{ts,js}": "eslint --fix"
50
50
  },
51
51
  "devDependencies": {
52
- "@vitest/coverage-istanbul": "1.5.1",
52
+ "@vitest/coverage-istanbul": "2.1.2",
53
53
  "sass": "^1.72.0",
54
- "vite-plugin-dts": "^3.8.1",
55
- "vitest": "1.5.1"
54
+ "vite-plugin-dts": "^4.2.3",
55
+ "vitest": "2.1.2"
56
56
  },
57
- "gitHead": "aec0c2169afdd5f14e66f471fddad0b465450b23"
57
+ "gitHead": "4e0e1624e0f04c0e52658f573c15004ae2b9b3bd"
58
58
  }