@skeletonizer/utils 1.2.0 → 1.3.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/README.md CHANGED
@@ -1,4 +1,8 @@
1
1
  # `@skeletonizer/utils`
2
+ [![codecov](https://codecov.io/github/lukaVarga/skeletonizer/graph/badge.svg?token=4YZYRB9UN7)](https://codecov.io/github/lukaVarga/skeletonizer?style=for-the-badge)
3
+ ![NPM Downloads](https://img.shields.io/npm/dy/%40skeletonizer%2Futils?style=for-the-badge&labelColor=%23444&color=%23090)
4
+
5
+
2
6
  This is the general utility package for the Skeletonizer project. It should be used together with every adapter (eg. Vue, Angular) package.
3
7
  Roughly speaking, the usage of skeleton in the template boils down to the following steps:
4
8
  - surrounding the content you want to skeletonize with the `skeletonizer-skeleton` component and passing it through via content projection
@@ -62,6 +66,10 @@ This can be used for chaining the `SchemaItem().foo()` methods if `foo` returns
62
66
  Generates a random date within the range specified by the `config` parameter.
63
67
  This can be used eg. for simulating dates of birth, dates of creation, etc.
64
68
 
69
+ ### `timeOfDay(config: Partial<{ use12HourFormat: boolean; showSeconds: boolean; showAmPm: boolean }> = {})`
70
+ Generates a random time of day, using the formatting specified by the `config` parameter.
71
+ It can be chained to the `date` method should you wish to further restrict available times (eg. by providing a min and max date to the `date` method that are on the same day within the desired time range).
72
+
65
73
  ### `uuid()`
66
74
  Increments a global `uuid` variable and sets the current value of the `SchemaItem` instance to this new value.
67
75
  This can be used eg. for simulating user ids, etc.
@@ -17,6 +17,11 @@ export declare class SchemaItem<T = never> {
17
17
  max: Date;
18
18
  min: Date;
19
19
  }>): TSchemaInstance<Date>;
20
+ timeOfDay(this: TSchemaInstance<Date | undefined>, config?: Partial<{
21
+ use12HourFormat: boolean;
22
+ showSeconds: boolean;
23
+ showAmPm: boolean;
24
+ }>): TSchemaInstance<string>;
20
25
  uuid(this: TSchemaInstance<number | undefined>): TSchemaInstance<number>;
21
26
  boolean(this: TSchemaInstance<boolean | undefined>): TSchemaInstance<boolean>;
22
27
  symbol(this: TSchemaInstance<symbol | undefined>, val?: string | number): TSchemaInstance<symbol>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-item.model.d.ts","sourceRoot":"","sources":["../../../src/models/schema-item.model.ts"],"names":[],"mappings":"AAKA,KAAK,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,qBAAa,UAAU,CAAC,CAAC,GAAG,KAAK;;IAC/B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAIM,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAexF,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAsB7F,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAE,MAAU,EAAE,GAAG,GAAE,MAAa,GAAG,eAAe,CAAC,MAAM,CAAC;IAO/G,QAAQ,CACb,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,UAAU,CAAC,CAAA;KAAE,GAC3G,eAAe,CAAC,MAAM,CAAC;IAWnB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOpF,IAAI,CACT,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,EACvC,MAAM,GAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAM,GACjF,eAAe,CAAC,IAAI,CAAC;IAiBjB,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;IAQxE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC;IAO7E,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAE,MAAM,GAAG,MAAU,GAAG,eAAe,CAAC,MAAM,CAAC;IAOpG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;IAUnF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOvF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOvF,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAO1F,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,eAAe;CAKxB"}
1
+ {"version":3,"file":"schema-item.model.d.ts","sourceRoot":"","sources":["../../../src/models/schema-item.model.ts"],"names":[],"mappings":"AAKA,KAAK,eAAe,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,qBAAa,UAAU,CAAC,CAAC,GAAG,KAAK;;IAC/B,IAAW,KAAK,IAAI,CAAC,CAEpB;IAIM,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAexF,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAsB7F,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAE,MAAU,EAAE,GAAG,GAAE,MAAa,GAAG,eAAe,CAAC,MAAM,CAAC;IAO/G,QAAQ,CACb,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,GAAG,UAAU,CAAC,CAAA;KAAE,GAC3G,eAAe,CAAC,MAAM,CAAC;IAWnB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOpF,IAAI,CACT,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,EACvC,MAAM,GAAE,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,IAAI,CAAC;QAAC,GAAG,EAAE,IAAI,CAAA;KAAE,CAAM,GACjF,eAAe,CAAC,IAAI,CAAC;IAiBjB,SAAS,CACd,IAAI,EAAE,eAAe,CAAC,IAAI,GAAG,SAAS,CAAC,EACvC,MAAM,GAAE,OAAO,CAAC;QAAE,eAAe,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAM,GAC1F,eAAe,CAAC,MAAM,CAAC;IAwBnB,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;IAQxE,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC;IAO7E,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAE,MAAM,GAAG,MAAU,GAAG,eAAe,CAAC,MAAM,CAAC;IAOpG,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;IAUnF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOvF,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAOvF,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAO1F,OAAO,CAAC,UAAU;IAElB,OAAO,CAAC,eAAe;CAKxB"}
package/dist/utils.mjs CHANGED
@@ -1,8 +1,8 @@
1
- var v = (s) => {
1
+ var f = (s) => {
2
2
  throw TypeError(s);
3
3
  };
4
- var f = (s, e, t) => e.has(s) || v("Cannot " + t);
5
- var m = (s, e, t) => (f(s, e, "read from private field"), t ? t.call(s) : e.get(s)), y = (s, e, t) => e.has(s) ? v("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);
4
+ var y = (s, e, t) => e.has(s) || f("Cannot " + t);
5
+ var l = (s, e, t) => (y(s, e, "read from private field"), t ? t.call(s) : e.get(s)), T = (s, e, t) => e.has(s) ? f("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), r = (s, e, t, i) => (y(s, e, "write to private field"), i ? i.call(s, t) : e.set(s, t), t);
6
6
  const q = [
7
7
  "Lorem",
8
8
  "ipsum",
@@ -498,8 +498,8 @@ const q = [
498
498
  "hendrerit",
499
499
  "dolor."
500
500
  ];
501
- var l = /* @__PURE__ */ ((s) => (s.Text = "text", s.Input = "input", s.Image = "image", s.Video = "video", s.WrapperElement = "wrapper-element", s))(l || {}), b = /* @__PURE__ */ ((s) => (s.PrimaryColor = "rgba(100, 100, 100, .6)", s.SecondaryColor = "rgba(100, 100, 100, .3)", s))(b || {});
502
- class g {
501
+ var c = /* @__PURE__ */ ((s) => (s.Text = "text", s.Input = "input", s.Image = "image", s.Video = "video", s.WrapperElement = "wrapper-element", s))(c || {}), b = /* @__PURE__ */ ((s) => (s.PrimaryColor = "rgba(100, 100, 100, .6)", s.SecondaryColor = "rgba(100, 100, 100, .3)", s))(b || {});
502
+ class v {
503
503
  static daysInMs(e) {
504
504
  return e * 24 * 60 * 60 * 1e3;
505
505
  }
@@ -507,72 +507,78 @@ class g {
507
507
  return new Date(e.getTime() + Math.random() * (t.getTime() - e.getTime()));
508
508
  }
509
509
  }
510
- let T = 0;
510
+ let M = 0;
511
511
  var a;
512
512
  class x {
513
513
  constructor() {
514
- y(this, a);
514
+ T(this, a);
515
515
  }
516
516
  get value() {
517
- return m(this, a);
517
+ return l(this, a);
518
518
  }
519
519
  words(e) {
520
520
  this.assertType();
521
521
  let t = "", i = 0;
522
522
  for (; i < e; )
523
523
  t += this.randomLoremWord() + " ", i++;
524
- return u(this, a, t.trim()), this;
524
+ return r(this, a, t.trim()), this;
525
525
  }
526
526
  paragraphs(e) {
527
527
  this.assertType();
528
528
  let t = "", i = 0;
529
- const p = 50;
529
+ const m = 50;
530
530
  for (; i < e; ) {
531
- const o = p - Math.round(p * Math.random() * 0.2) * (Math.random() < 0.5 ? -1 : 1);
531
+ const o = m - Math.round(m * Math.random() * 0.2) * (Math.random() < 0.5 ? -1 : 1);
532
532
  t += this.words(o).value, i !== e - 1 && (t += `
533
533
  `), i++;
534
534
  }
535
- return u(this, a, t), this;
535
+ return r(this, a, t), this;
536
536
  }
537
537
  number(e = 0, t = 1e3) {
538
- return this.assertType(), u(this, a, Math.ceil(Math.random() * (t - e)) + e), this;
538
+ return this.assertType(), r(this, a, Math.ceil(Math.random() * (t - e)) + e), this;
539
539
  }
540
540
  currency(e) {
541
- return this.assertType(), u(this, a, new Intl.NumberFormat(
541
+ return this.assertType(), r(this, a, new Intl.NumberFormat(
542
542
  e.locale,
543
543
  { ...e.options, style: "currency", currency: e.currency }
544
- ).format(+m(this, a))), this;
544
+ ).format(+l(this, a))), this;
545
545
  }
546
546
  multiply(e) {
547
- return this.assertType(), u(this, a, m(this, a) * e), this;
547
+ return this.assertType(), r(this, a, l(this, a) * e), this;
548
548
  }
549
549
  date(e = {}) {
550
550
  this.assertType();
551
551
  let t = e.max ?? /* @__PURE__ */ new Date("2100-01-01"), i = e.min ?? /* @__PURE__ */ new Date("1970-01-01");
552
- return e.isFuture ? i = new Date(Date.now() + g.daysInMs(1)) : e.isPast && (t = new Date(Date.now() - g.daysInMs(1))), u(this, a, g.dateBetween(i, t)), this;
552
+ return e.isFuture ? i = new Date(Date.now() + v.daysInMs(1)) : e.isPast && (t = new Date(Date.now() - v.daysInMs(1))), r(this, a, v.dateBetween(i, t)), this;
553
+ }
554
+ timeOfDay(e = {}) {
555
+ const t = l(this, a) ?? this.date().value;
556
+ this.assertType();
557
+ const i = (e.use12HourFormat ? t.getUTCHours() % 12 : t.getUTCHours()).toString().padStart(2, "0"), m = t.getMinutes().toString().padStart(2, "0"), o = t.getSeconds().toString().padStart(2, "0"), d = this;
558
+ return r(d, a, e.showSeconds ? `${i}:${m}:${o}` : `${i}:${m}`), e.showAmPm && r(d, a, l(d, a) + (t.getUTCHours() >= 12 ? " PM" : " AM")), d;
553
559
  }
554
560
  uuid() {
555
- return T++, this.assertType(), u(this, a, T), this;
561
+ return M++, this.assertType(), r(this, a, M), this;
556
562
  }
557
563
  boolean() {
558
- return this.assertType(), u(this, a, Math.random() <= 0.5), this;
564
+ return this.assertType(), r(this, a, Math.random() <= 0.5), this;
559
565
  }
560
566
  symbol(e = 0) {
561
- return this.assertType(), u(this, a, Symbol(e)), this;
567
+ return this.assertType(), r(this, a, Symbol(e)), this;
562
568
  }
563
569
  randomItem(e) {
564
570
  this.assertType();
565
571
  const t = Math.floor(Math.random() * e.length);
566
- return u(this, a, e[t]), this;
572
+ return r(this, a, e[t]), this;
567
573
  }
568
574
  prefix(e) {
569
- return this.assertType(), u(this, a, `${e}${m(this, a)}`), this;
575
+ return this.assertType(), r(this, a, `${e}${l(this, a)}`), this;
570
576
  }
571
577
  suffix(e) {
572
- return this.assertType(), u(this, a, `${m(this, a)}${e}`), this;
578
+ return this.assertType(), r(this, a, `${l(this, a)}${e}`), this;
573
579
  }
574
580
  identical(e) {
575
- return this.assertType(), u(this, a, e), this;
581
+ return this.assertType(), r(this, a, e), this;
576
582
  }
577
583
  assertType() {
578
584
  }
@@ -583,9 +589,9 @@ class x {
583
589
  }
584
590
  a = new WeakMap();
585
591
  let I = 0;
586
- class c {
592
+ class h {
587
593
  constructor(e) {
588
- this.generator = e, this.uuid = I++, this.viewModel = this.generator(), this.val = c.modelToValue(this.viewModel);
594
+ this.generator = e, this.uuid = I++, this.viewModel = this.generator(), this.val = h.modelToValue(this.viewModel);
589
595
  }
590
596
  get value() {
591
597
  return this.val;
@@ -598,7 +604,7 @@ class c {
598
604
  {
599
605
  const t = {};
600
606
  return Object.keys(e).forEach((i) => {
601
- t[i] = c.modelToValue(
607
+ t[i] = h.modelToValue(
602
608
  e[i]
603
609
  );
604
610
  }), t;
@@ -611,10 +617,10 @@ class P {
611
617
  // - that all properties / methods accessed from within skeletonized part of the view are a part of skeletonSchema
612
618
  // - that typescript understands correct type of each property / method accessed from within the skeletonized part of the view
613
619
  proxy(e) {
614
- return e instanceof c ? e.value : e;
620
+ return e instanceof h ? e.value : e;
615
621
  }
616
622
  }
617
- class N {
623
+ class D {
618
624
  constructor() {
619
625
  this.config = null, this.viewModels = [];
620
626
  }
@@ -622,18 +628,18 @@ class N {
622
628
  setupModels() {
623
629
  if (this.config) {
624
630
  const e = this.config.schemaGenerator;
625
- this.viewModels = Array.from({ length: this.config.repeat }, () => new c(e));
631
+ this.viewModels = Array.from({ length: this.config.repeat }, () => new h(e));
626
632
  }
627
633
  }
628
634
  }
629
635
  const n = class n {
630
636
  static skeletonizeProjectedTemplate(e, t) {
631
- const i = (t == null ? void 0 : t.primaryColor) ?? b.PrimaryColor, p = (t == null ? void 0 : t.secondaryColor) ?? b.SecondaryColor;
637
+ const i = (t == null ? void 0 : t.primaryColor) ?? b.PrimaryColor, m = (t == null ? void 0 : t.secondaryColor) ?? b.SecondaryColor;
632
638
  e.setAttribute(
633
639
  "style",
634
- `--skeletonizer-primary-color: ${i}; --skeletonizer-secondary-color: ${p};`
640
+ `--skeletonizer-primary-color: ${i}; --skeletonizer-secondary-color: ${m};`
635
641
  ), Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach((o) => {
636
- const w = [
642
+ const d = [
637
643
  "br",
638
644
  "b",
639
645
  "strong",
@@ -645,37 +651,37 @@ const n = class n {
645
651
  "ins",
646
652
  "sub",
647
653
  "sup"
648
- ], h = Array.from(o.childNodes).map((r) => r.nodeName.toLowerCase()).filter((r) => !w.includes(r)), A = h.length > 0 && h.some((r) => r !== h[0]);
649
- o.childNodes.forEach((r) => {
650
- switch (r.nodeName.toLowerCase()) {
654
+ ], g = Array.from(o.childNodes).map((u) => u.nodeName.toLowerCase()).filter((u) => !d.includes(u)), A = g.length > 0 && g.some((u) => u !== g[0]);
655
+ o.childNodes.forEach((u) => {
656
+ switch (u.nodeName.toLowerCase()) {
651
657
  case "#text": {
652
- if (this.assertAs(r), r.wholeText.trim())
658
+ if (this.assertAs(u), u.wholeText.trim())
653
659
  if (A) {
654
- const d = document.createElement("span");
655
- d.innerText = r.cloneNode().wholeText, d.innerText.length && r.replaceWith(
656
- n.skeletonizedSpanGenerator(d.innerText, l.Text)
660
+ const p = document.createElement("span");
661
+ p.innerText = u.cloneNode().wholeText, p.innerText.length && u.replaceWith(
662
+ n.skeletonizedSpanGenerator(p.innerText, c.Text)
657
663
  );
658
664
  } else {
659
- const d = n.skeletonizedSpanGenerator(o.innerHTML, l.Text);
660
- o.innerHTML = d.outerHTML;
665
+ const p = n.skeletonizedSpanGenerator(o.innerHTML, c.Text);
666
+ o.innerHTML = p.outerHTML;
661
667
  }
662
668
  break;
663
669
  }
664
670
  case "input": {
665
- r.setAttribute(n.dataAttr, l.Input);
671
+ u.setAttribute(n.dataAttr, c.Input);
666
672
  break;
667
673
  }
668
674
  case "img": {
669
- r.setAttribute(n.dataAttr, l.Image);
675
+ u.setAttribute(n.dataAttr, c.Image);
670
676
  break;
671
677
  }
672
678
  case "video": {
673
- r.setAttribute(n.dataAttr, l.Video);
679
+ u.setAttribute(n.dataAttr, c.Video);
674
680
  break;
675
681
  }
676
682
  }
677
683
  });
678
- }), e.setAttribute(n.dataAttr, l.WrapperElement);
684
+ }), e.setAttribute(n.dataAttr, c.WrapperElement);
679
685
  }
680
686
  static skeletonizedSpanGenerator(e, t) {
681
687
  const i = document.createElement("span");
@@ -685,11 +691,11 @@ const n = class n {
685
691
  }
686
692
  };
687
693
  n.dataAttr = "data-skeletonizer";
688
- let M = n;
694
+ let w = n;
689
695
  export {
690
- c as Schema,
696
+ h as Schema,
691
697
  x as SchemaItem,
692
698
  P as SkeletonAbstractComponent,
693
- N as SkeletonAdapterComponent,
694
- M as SkeletonDirective
699
+ D as SkeletonAdapterComponent,
700
+ w as SkeletonDirective
695
701
  };
package/dist/utils.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- (function(s,a){typeof exports=="object"&&typeof module<"u"?a(exports):typeof define=="function"&&define.amd?define(["exports"],a):(s=typeof globalThis<"u"?globalThis:s||self,a(s["@skeletonizer/utils"]={}))})(this,function(s){"use strict";var M=s=>{throw TypeError(s)};var A=(s,a,r)=>a.has(s)||M("Cannot "+r);var h=(s,a,r)=>(A(s,a,"read from private field"),r?r.call(s):a.get(s)),w=(s,a,r)=>a.has(s)?M("Cannot add the same private member more than once"):a instanceof WeakSet?a.add(s):a.set(s,r),l=(s,a,r,d)=>(A(s,a,"write to private field"),d?d.call(s,r):a.set(s,r),r);var i;const a=["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 r=(u=>(u.Text="text",u.Input="input",u.Image="image",u.Video="video",u.WrapperElement="wrapper-element",u))(r||{}),d=(u=>(u.PrimaryColor="rgba(100, 100, 100, .6)",u.SecondaryColor="rgba(100, 100, 100, .3)",u))(d||{});class v{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 T=0;class q{constructor(){w(this,i)}get value(){return h(this,i)}words(e){this.assertType();let t="",n=0;for(;n<e;)t+=this.randomLoremWord()+" ",n++;return l(this,i,t.trim()),this}paragraphs(e){this.assertType();let t="",n=0;const b=50;for(;n<e;){const p=b-Math.round(b*Math.random()*.2)*(Math.random()<.5?-1:1);t+=this.words(p).value,n!==e-1&&(t+=`
2
- `),n++}return l(this,i,t),this}number(e=0,t=1e3){return this.assertType(),l(this,i,Math.ceil(Math.random()*(t-e))+e),this}currency(e){return this.assertType(),l(this,i,new Intl.NumberFormat(e.locale,{...e.options,style:"currency",currency:e.currency}).format(+h(this,i))),this}multiply(e){return this.assertType(),l(this,i,h(this,i)*e),this}date(e={}){this.assertType();let t=e.max??new Date("2100-01-01"),n=e.min??new Date("1970-01-01");return e.isFuture?n=new Date(Date.now()+v.daysInMs(1)):e.isPast&&(t=new Date(Date.now()-v.daysInMs(1))),l(this,i,v.dateBetween(n,t)),this}uuid(){return T++,this.assertType(),l(this,i,T),this}boolean(){return this.assertType(),l(this,i,Math.random()<=.5),this}symbol(e=0){return this.assertType(),l(this,i,Symbol(e)),this}randomItem(e){this.assertType();const t=Math.floor(Math.random()*e.length);return l(this,i,e[t]),this}prefix(e){return this.assertType(),l(this,i,`${e}${h(this,i)}`),this}suffix(e){return this.assertType(),l(this,i,`${h(this,i)}${e}`),this}identical(e){return this.assertType(),l(this,i,e),this}assertType(){}randomLoremWord(){const e=Math.floor(Math.random()*a.length);return a[e]??"lorem"}}i=new WeakMap;let x=0;class c{constructor(e){this.generator=e,this.uuid=x++,this.viewModel=this.generator(),this.val=c.modelToValue(this.viewModel)}get value(){return this.val}static modelToValue(e){if(e instanceof q)return e.value;if(Array.isArray(e))return e.map(this.modelToValue);{const t={};return Object.keys(e).forEach(n=>{t[n]=c.modelToValue(e[n])}),t}}}class I{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 m=class m{static skeletonizeProjectedTemplate(e,t){const n=(t==null?void 0:t.primaryColor)??d.PrimaryColor,b=(t==null?void 0:t.secondaryColor)??d.SecondaryColor;e.setAttribute("style",`--skeletonizer-primary-color: ${n}; --skeletonizer-secondary-color: ${b};`),Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach(p=>{const P=["br","b","strong","i","em","mark","small","del","ins","sub","sup"],y=Array.from(p.childNodes).map(o=>o.nodeName.toLowerCase()).filter(o=>!P.includes(o)),k=y.length>0&&y.some(o=>o!==y[0]);p.childNodes.forEach(o=>{switch(o.nodeName.toLowerCase()){case"#text":{if(this.assertAs(o),o.wholeText.trim())if(k){const g=document.createElement("span");g.innerText=o.cloneNode().wholeText,g.innerText.length&&o.replaceWith(m.skeletonizedSpanGenerator(g.innerText,r.Text))}else{const g=m.skeletonizedSpanGenerator(p.innerHTML,r.Text);p.innerHTML=g.outerHTML}break}case"input":{o.setAttribute(m.dataAttr,r.Input);break}case"img":{o.setAttribute(m.dataAttr,r.Image);break}case"video":{o.setAttribute(m.dataAttr,r.Video);break}}})}),e.setAttribute(m.dataAttr,r.WrapperElement)}static skeletonizedSpanGenerator(e,t){const n=document.createElement("span");return n.innerHTML=e,n.setAttribute(m.dataAttr,t),n}static assertAs(e){}};m.dataAttr="data-skeletonizer";let f=m;s.Schema=c,s.SchemaItem=q,s.SkeletonAbstractComponent=I,s.SkeletonAdapterComponent=C,s.SkeletonDirective=f,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
1
+ (function(s,r){typeof exports=="object"&&typeof module<"u"?r(exports):typeof define=="function"&&define.amd?define(["exports"],r):(s=typeof globalThis<"u"?globalThis:s||self,r(s["@skeletonizer/utils"]={}))})(this,function(s){"use strict";var A=s=>{throw TypeError(s)};var w=(s,r,n)=>r.has(s)||A("Cannot "+n);var c=(s,r,n)=>(w(s,r,"read from private field"),n?n.call(s):r.get(s)),x=(s,r,n)=>r.has(s)?A("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(s):r.set(s,n),u=(s,r,n,g)=>(w(s,r,"write to private field"),g?g.call(s,n):r.set(s,n),n);var i;const r=["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 n=(o=>(o.Text="text",o.Input="input",o.Image="image",o.Video="video",o.WrapperElement="wrapper-element",o))(n||{}),g=(o=>(o.PrimaryColor="rgba(100, 100, 100, .6)",o.SecondaryColor="rgba(100, 100, 100, .3)",o))(g||{});class f{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 M=0;class q{constructor(){x(this,i)}get value(){return c(this,i)}words(e){this.assertType();let t="",a=0;for(;a<e;)t+=this.randomLoremWord()+" ",a++;return u(this,i,t.trim()),this}paragraphs(e){this.assertType();let t="",a=0;const p=50;for(;a<e;){const d=p-Math.round(p*Math.random()*.2)*(Math.random()<.5?-1:1);t+=this.words(d).value,a!==e-1&&(t+=`
2
+ `),a++}return u(this,i,t),this}number(e=0,t=1e3){return this.assertType(),u(this,i,Math.ceil(Math.random()*(t-e))+e),this}currency(e){return this.assertType(),u(this,i,new Intl.NumberFormat(e.locale,{...e.options,style:"currency",currency:e.currency}).format(+c(this,i))),this}multiply(e){return this.assertType(),u(this,i,c(this,i)*e),this}date(e={}){this.assertType();let t=e.max??new Date("2100-01-01"),a=e.min??new Date("1970-01-01");return e.isFuture?a=new Date(Date.now()+f.daysInMs(1)):e.isPast&&(t=new Date(Date.now()-f.daysInMs(1))),u(this,i,f.dateBetween(a,t)),this}timeOfDay(e={}){const t=c(this,i)??this.date().value;this.assertType();const a=(e.use12HourFormat?t.getUTCHours()%12:t.getUTCHours()).toString().padStart(2,"0"),p=t.getMinutes().toString().padStart(2,"0"),d=t.getSeconds().toString().padStart(2,"0"),h=this;return u(h,i,e.showSeconds?`${a}:${p}:${d}`:`${a}:${p}`),e.showAmPm&&u(h,i,c(h,i)+(t.getUTCHours()>=12?" PM":" AM")),h}uuid(){return M++,this.assertType(),u(this,i,M),this}boolean(){return this.assertType(),u(this,i,Math.random()<=.5),this}symbol(e=0){return this.assertType(),u(this,i,Symbol(e)),this}randomItem(e){this.assertType();const t=Math.floor(Math.random()*e.length);return u(this,i,e[t]),this}prefix(e){return this.assertType(),u(this,i,`${e}${c(this,i)}`),this}suffix(e){return this.assertType(),u(this,i,`${c(this,i)}${e}`),this}identical(e){return this.assertType(),u(this,i,e),this}assertType(){}randomLoremWord(){const e=Math.floor(Math.random()*r.length);return r[e]??"lorem"}}i=new WeakMap;let C=0;class b{constructor(e){this.generator=e,this.uuid=C++,this.viewModel=this.generator(),this.val=b.modelToValue(this.viewModel)}get value(){return this.val}static modelToValue(e){if(e instanceof q)return e.value;if(Array.isArray(e))return e.map(this.modelToValue);{const t={};return Object.keys(e).forEach(a=>{t[a]=b.modelToValue(e[a])}),t}}}class I{proxy(e){return e instanceof b?e.value:e}}class P{constructor(){this.config=null,this.viewModels=[]}setupModels(){if(this.config){const e=this.config.schemaGenerator;this.viewModels=Array.from({length:this.config.repeat},()=>new b(e))}}}const m=class m{static skeletonizeProjectedTemplate(e,t){const a=(t==null?void 0:t.primaryColor)??g.PrimaryColor,p=(t==null?void 0:t.secondaryColor)??g.SecondaryColor;e.setAttribute("style",`--skeletonizer-primary-color: ${a}; --skeletonizer-secondary-color: ${p};`),Array.from(e.querySelectorAll("*:not(svg, [data-skeletonizer])")).forEach(d=>{const h=["br","b","strong","i","em","mark","small","del","ins","sub","sup"],T=Array.from(d.childNodes).map(l=>l.nodeName.toLowerCase()).filter(l=>!h.includes(l)),S=T.length>0&&T.some(l=>l!==T[0]);d.childNodes.forEach(l=>{switch(l.nodeName.toLowerCase()){case"#text":{if(this.assertAs(l),l.wholeText.trim())if(S){const v=document.createElement("span");v.innerText=l.cloneNode().wholeText,v.innerText.length&&l.replaceWith(m.skeletonizedSpanGenerator(v.innerText,n.Text))}else{const v=m.skeletonizedSpanGenerator(d.innerHTML,n.Text);d.innerHTML=v.outerHTML}break}case"input":{l.setAttribute(m.dataAttr,n.Input);break}case"img":{l.setAttribute(m.dataAttr,n.Image);break}case"video":{l.setAttribute(m.dataAttr,n.Video);break}}})}),e.setAttribute(m.dataAttr,n.WrapperElement)}static skeletonizedSpanGenerator(e,t){const a=document.createElement("span");return a.innerHTML=e,a.setAttribute(m.dataAttr,t),a}static assertAs(e){}};m.dataAttr="data-skeletonizer";let y=m;s.Schema=b,s.SchemaItem=q,s.SkeletonAbstractComponent=I,s.SkeletonAdapterComponent=P,s.SkeletonDirective=y,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skeletonizer/utils",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Utils for all skeletonizer packages",
5
5
  "author": "Luka Varga",
6
6
  "license": "MIT",
@@ -55,5 +55,5 @@
55
55
  "vite-plugin-dts": "^4.3.0",
56
56
  "vitest": "2.1.4"
57
57
  },
58
- "gitHead": "fd61bebc869a7867b27c5f757961eaaa889c0021"
58
+ "gitHead": "f92c5f202d62cb226317cf0c9a0a59e0921f5470"
59
59
  }