valtech-components 2.0.775 → 2.0.776

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.
@@ -54,7 +54,7 @@ export class PatternComponent {
54
54
  if (value.reshuffleInterval !== undefined && value.reshuffleInterval > 0) {
55
55
  this.reshuffleInterval.set(value.reshuffleInterval);
56
56
  }
57
- if (value.tilesPerTick !== undefined && value.tilesPerTick > 0) {
57
+ if (value.tilesPerTick !== undefined && value.tilesPerTick >= 0) {
58
58
  this.tilesPerTick.set(Math.floor(value.tilesPerTick));
59
59
  }
60
60
  if (value.animated !== undefined)
@@ -69,10 +69,10 @@ export class PatternComponent {
69
69
  this.chevronDensity = signal(0.55);
70
70
  this.preserveAspect = signal('slice');
71
71
  this.animated = signal(false);
72
- /** ms entre updates individuales de tiles (modo animated). Default 1200ms. */
73
- this.reshuffleInterval = signal(1200);
74
- /** Cuántos tiles cambiar por tick (default 1cambio sutil). */
75
- this.tilesPerTick = signal(1);
72
+ /** ms entre reshuffles (modo animated). Default 8000ms — "de vez en cuando". */
73
+ this.reshuffleInterval = signal(8000);
74
+ /** Tiles a cambiar por tick. 0 → reseed grid completo (default). >0staggered. */
75
+ this.tilesPerTick = signal(0);
76
76
  /**
77
77
  * Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
78
78
  * palette/density. En modo animated, tiles individuales se sobrescriben sin
@@ -100,9 +100,10 @@ export class PatternComponent {
100
100
  const density = this.chevronDensity();
101
101
  this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density }));
102
102
  });
103
- // Modo animated: cada `reshuffleInterval` ms, sobrescribe `tilesPerTick`
104
- // tiles random efecto staggered (no toda la grid de una). Si el user
105
- // desactiva animated, el timer se limpia automáticamente.
103
+ // Modo animated: cada `reshuffleInterval` ms regenera el grid completo
104
+ // con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
105
+ // Si `tilesPerTick > 0` y < total tiles, hace staggered (reemplaza solo
106
+ // N tiles en vez de toda la grid). Default tilesPerTick=0 → reseed total.
106
107
  effect(onCleanup => {
107
108
  const isAnimated = this.animated();
108
109
  const interval = this.reshuffleInterval();
@@ -112,7 +113,14 @@ export class PatternComponent {
112
113
  this.timer = undefined;
113
114
  if (!isAnimated)
114
115
  return;
115
- this.timer = setInterval(() => this.mutateRandomTiles(perTick), interval);
116
+ this.timer = setInterval(() => {
117
+ if (perTick > 0) {
118
+ this.mutateRandomTiles(perTick);
119
+ }
120
+ else {
121
+ this.seed.set(this.randomSeed());
122
+ }
123
+ }, interval);
116
124
  onCleanup(() => {
117
125
  if (this.timer) {
118
126
  clearInterval(this.timer);
@@ -123,7 +131,7 @@ export class PatternComponent {
123
131
  }
124
132
  /**
125
133
  * Reemplaza `count` tiles random del grid actual con tiles nuevos generados.
126
- * Usado por el modo animated para staggered reshuffle.
134
+ * Usado para staggered reshuffle (opt-in via `tilesPerTick > 0`).
127
135
  */
128
136
  mutateRandomTiles(count) {
129
137
  const current = this.tiles();
@@ -161,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
161
169
  }], ctorParameters: () => [], propDecorators: { props: [{
162
170
  type: Input
163
171
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBR2hCLHFCQUFxQixHQUN0QixNQUFNLFVBQVUsQ0FBQzs7QUFHbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQThCSCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixrRUFBa0U7SUFDbEUsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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QztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sY0FBYyxDQUFDLENBQStCO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JCLDJFQUEyRTtZQUMzRSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUNyRCxDQUFDO1FBQ0QsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDeEQsQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDOytHQXpIVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQixtR0F6QmpCLDJEQUEyRCx1UkFEM0QsWUFBWTs7NEZBMEJYLGdCQUFnQjtrQkE3QjVCLFNBQVM7K0JBQ0UsYUFBYSxjQUNYLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLDJEQUEyRDt3REEyQ3hELEtBQUs7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBJbnB1dCwgT25EZXN0cm95LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2VuZXJhdGVQYXR0ZXJuVGlsZXMsXG4gIGdlbmVyYXRlUmFuZG9tVGlsZSxcbiAgUEFUVEVSTl9QQUxFVFRFUyxcbiAgUGF0dGVyblBhbGV0dGVLZXksXG4gIFBhdHRlcm5UaWxlLFxuICByZW5kZXJQYXR0ZXJuU3ZnSW5uZXIsXG59IGZyb20gJy4vbW90aWZzJztcbmltcG9ydCB7IFBhdHRlcm5NZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIGB2YWwtcGF0dGVybmBcbiAqXG4gKiBDb21wb25lbnRlIGRlIGZvbmRvIGdlb23DqXRyaWNvIGluc3BpcmFkbyBlbiBlbCBzaXN0ZW1hIFZhbHRlY2guIFJlbmRlcml6YSB1blxuICogZ3JpZCBkZSB0aWxlcyAxMDDDlzEwMCBjb24gbW90aWZzIChjaGV2cm9ucywgdHJpYW5nbGVzLCBkaWFtb25kcywgYXJyb3dzKSBlblxuICogdW4gU1ZHIGlubGluZS4gRGV0ZXJtaW5pc3RhIHbDrWEgYHNlZWRgIG8gYW5pbWFkbyB2w61hIGByZXNodWZmbGVgLlxuICpcbiAqIENlcm8gZGVwZW5kZW5jaWFzIGV4dGVybmFzIOKAlCB0b2RvIFNWRy5cbiAqXG4gKiBAZXhhbXBsZSBDb21vIGZvbmRvIGRlIGNhcmQgKENTUyBhYnNvbHV0ZSk6XG4gKiBgYGBzY3NzXG4gKiAuY2FyZCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICogLmNhcmQgdmFsLXBhdHRlcm4geyBwb3NpdGlvbjogYWJzb2x1dGU7IGluc2V0OiAwOyB6LWluZGV4OiAwOyBvcGFjaXR5OiAwLjQ7IH1cbiAqIC5jYXJkIC5jb250ZW50IHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyB9XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICogICA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ3B1cnBsZScsIGNvbHM6IDYsIHJvd3M6IDMsIHNlZWQ6IDQyIH1cIiAvPlxuICogICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlR1IGNvbnRlbmlkbyBhcXXDrTwvZGl2PlxuICogPC9kaXY+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBDb21vIGJhY2tncm91bmQgYW5pbWFkbyAoaGVyby9sb2dpbik6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2xhdmVuZGVyJywgY29sczogMTYsIHJvd3M6IDgsIGFuaW1hdGVkOiB0cnVlIH1cIiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYXR0ZXJuJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgIDxkaXYgY2xhc3M9XCJ2YWwtcGF0dGVyblwiIFtpbm5lckhUTUxdPVwic3ZnSHRtbCgpXCI+PC9kaXY+IGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICAgfVxuXG4gICAgICAudmFsLXBhdHRlcm4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAudmFsLXBhdHRlcm4gOndoZXJlKHN2Zykge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQYXR0ZXJuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGNvbHMgPSBzaWduYWwoMTIpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd3MgPSBzaWduYWwoNCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VlZCA9IHNpZ25hbCh0aGlzLnJhbmRvbVNlZWQoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFsZXR0ZVJlZiA9IHNpZ25hbDxzdHJpbmdbXT4oUEFUVEVSTl9QQUxFVFRFUy5wdXJwbGUpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoZXZyb25EZW5zaXR5ID0gc2lnbmFsKDAuNTUpO1xuICBwcml2YXRlIHJlYWRvbmx5IHByZXNlcnZlQXNwZWN0ID0gc2lnbmFsPCdzbGljZScgfCAnbWVldCc+KCdzbGljZScpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFuaW1hdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgLyoqIG1zIGVudHJlIHVwZGF0ZXMgaW5kaXZpZHVhbGVzIGRlIHRpbGVzIChtb2RvIGFuaW1hdGVkKS4gRGVmYXVsdCAxMjAwbXMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzaHVmZmxlSW50ZXJ2YWwgPSBzaWduYWwoMTIwMCk7XG4gIC8qKiBDdcOhbnRvcyB0aWxlcyBjYW1iaWFyIHBvciB0aWNrIChkZWZhdWx0IDEg4oaSIGNhbWJpbyBzdXRpbCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgdGlsZXNQZXJUaWNrID0gc2lnbmFsKDEpO1xuXG4gIHByaXZhdGUgdGltZXI/OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG5cbiAgLyoqIE9iamVjdC1maXJzdCBpbnB1dC4gQ2FtYmlvcyBkaXNwYXJhbiByZS1yZW5kZXIgcG9yIHNpZ25hbHMuICovXG4gIEBJbnB1dCgpIHNldCBwcm9wcyh2YWx1ZTogUGF0dGVybk1ldGFkYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIGlmICh2YWx1ZS5jb2xzICE9PSB1bmRlZmluZWQpIHRoaXMuY29scy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUuY29scykpO1xuICAgIGlmICh2YWx1ZS5yb3dzICE9PSB1bmRlZmluZWQpIHRoaXMucm93cy5zZXQoTWF0aC5tYXgoMSwgdmFsdWUucm93cykpO1xuICAgIGlmICh2YWx1ZS5zZWVkICE9PSB1bmRlZmluZWQpIHRoaXMuc2VlZC5zZXQodmFsdWUuc2VlZCk7XG4gICAgaWYgKHZhbHVlLmNoZXZyb25EZW5zaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2hldnJvbkRlbnNpdHkuc2V0KE1hdGgubWluKDEsIE1hdGgubWF4KDAsIHZhbHVlLmNoZXZyb25EZW5zaXR5KSkpO1xuICAgIH1cbiAgICBpZiAodmFsdWUucHJlc2VydmVBc3BlY3QgIT09IHVuZGVmaW5lZCkgdGhpcy5wcmVzZXJ2ZUFzcGVjdC5zZXQodmFsdWUucHJlc2VydmVBc3BlY3QpO1xuICAgIGlmICh2YWx1ZS5wYWxldHRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucGFsZXR0ZVJlZi5zZXQodGhpcy5yZXNvbHZlUGFsZXR0ZSh2YWx1ZS5wYWxldHRlKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnJlc2h1ZmZsZUludGVydmFsID4gMCkge1xuICAgICAgdGhpcy5yZXNodWZmbGVJbnRlcnZhbC5zZXQodmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwpO1xuICAgIH1cbiAgICBpZiAodmFsdWUudGlsZXNQZXJUaWNrICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudGlsZXNQZXJUaWNrID4gMCkge1xuICAgICAgdGhpcy50aWxlc1BlclRpY2suc2V0KE1hdGguZmxvb3IodmFsdWUudGlsZXNQZXJUaWNrKSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5hbmltYXRlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLmFuaW1hdGVkLnNldCghIXZhbHVlLmFuaW1hdGVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaWxlcyBzaWduYWwg4oCUIG11dGFibGUuIFNlIHJlZ2VuZXJhIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWEgc2VlZC9jb2xzL3Jvd3MvXG4gICAqIHBhbGV0dGUvZGVuc2l0eS4gRW4gbW9kbyBhbmltYXRlZCwgdGlsZXMgaW5kaXZpZHVhbGVzIHNlIHNvYnJlc2NyaWJlbiBzaW5cbiAgICogdG9jYXIgZWwgcmVzdG8gKGVmZWN0byBzdGFnZ2VyZWQpLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWxlcyA9IHNpZ25hbDxQYXR0ZXJuVGlsZVtdPihbXSk7XG5cbiAgLyoqIFNWRyBjb21wbGV0byBjb21vIHN0cmluZyBzYW5pdGl6ZWQgcGFyYSBgW2lubmVySFRNTF1gLiAqL1xuICByZWFkb25seSBzdmdIdG1sID0gY29tcHV0ZWQ8U2FmZUh0bWw+KCgpID0+IHtcbiAgICBjb25zdCBjb2xzID0gdGhpcy5jb2xzKCk7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBpbm5lciA9IHJlbmRlclBhdHRlcm5TdmdJbm5lcih0aGlzLnRpbGVzKCksIGNvbHMsIHBhbGV0dGVbMF0hKTtcbiAgICBjb25zdCBhc3BlY3QgPSB0aGlzLnByZXNlcnZlQXNwZWN0KCkgPT09ICdtZWV0JyA/ICd4TWlkWU1pZCBtZWV0JyA6ICd4TWlkWU1pZCBzbGljZSc7XG4gICAgY29uc3Qgc3ZnID0gYDxzdmcgdmlld0JveD1cIjAgMCAke2NvbHMgKiAxMDB9ICR7cm93cyAqIDEwMH1cIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwiJHthc3BlY3R9XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiR7aW5uZXJ9PC9zdmc+YDtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoc3ZnKTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gUmVnZW5lcmEgZ3JpZCBjb21wbGV0YSBjdWFuZG8gY2FtYmlhbiBwcm9wcyBlc3RydWN0dXJhbGVzIChjb2xzL3Jvd3MvXG4gICAgLy8gcGFsZXR0ZS9kZW5zaXR5L3NlZWQpLiBFbCBzZWVkIHNvbG8gY2FtYmlhIGV4cGzDrWNpdGFtZW50ZSB2aWEgcHJvcHMgb1xuICAgIC8vIG1vdW50IGluaWNpYWwg4oCUIE5PIHNlIG11dGEgZW4gbW9kbyBhbmltYXRlZC5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29scyA9IHRoaXMuY29scygpO1xuICAgICAgY29uc3Qgcm93cyA9IHRoaXMucm93cygpO1xuICAgICAgY29uc3Qgc2VlZCA9IHRoaXMuc2VlZCgpO1xuICAgICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgICAgY29uc3QgZGVuc2l0eSA9IHRoaXMuY2hldnJvbkRlbnNpdHkoKTtcbiAgICAgIHRoaXMudGlsZXMuc2V0KGdlbmVyYXRlUGF0dGVyblRpbGVzKHsgY29scywgcm93cywgc2VlZCwgcGFsZXR0ZSwgY2hldnJvbkRlbnNpdHk6IGRlbnNpdHkgfSkpO1xuICAgIH0pO1xuXG4gICAgLy8gTW9kbyBhbmltYXRlZDogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgIG1zLCBzb2JyZXNjcmliZSBgdGlsZXNQZXJUaWNrYFxuICAgIC8vIHRpbGVzIHJhbmRvbSDigJQgZWZlY3RvIHN0YWdnZXJlZCAobm8gdG9kYSBsYSBncmlkIGRlIHVuYSkuIFNpIGVsIHVzZXJcbiAgICAvLyBkZXNhY3RpdmEgYW5pbWF0ZWQsIGVsIHRpbWVyIHNlIGxpbXBpYSBhdXRvbcOhdGljYW1lbnRlLlxuICAgIGVmZmVjdChvbkNsZWFudXAgPT4ge1xuICAgICAgY29uc3QgaXNBbmltYXRlZCA9IHRoaXMuYW5pbWF0ZWQoKTtcbiAgICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5yZXNodWZmbGVJbnRlcnZhbCgpO1xuICAgICAgY29uc3QgcGVyVGljayA9IHRoaXMudGlsZXNQZXJUaWNrKCk7XG4gICAgICBpZiAodGhpcy50aW1lcikgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoIWlzQW5pbWF0ZWQpIHJldHVybjtcbiAgICAgIHRoaXMudGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB0aGlzLm11dGF0ZVJhbmRvbVRpbGVzKHBlclRpY2spLCBpbnRlcnZhbCk7XG4gICAgICBvbkNsZWFudXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lcik7XG4gICAgICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVlbXBsYXphIGBjb3VudGAgdGlsZXMgcmFuZG9tIGRlbCBncmlkIGFjdHVhbCBjb24gdGlsZXMgbnVldm9zIGdlbmVyYWRvcy5cbiAgICogVXNhZG8gcG9yIGVsIG1vZG8gYW5pbWF0ZWQgcGFyYSBzdGFnZ2VyZWQgcmVzaHVmZmxlLlxuICAgKi9cbiAgcHJpdmF0ZSBtdXRhdGVSYW5kb21UaWxlcyhjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMudGlsZXMoKTtcbiAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBuZXh0ID0gWy4uLmN1cnJlbnRdO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY291bnQ7IG4rKykge1xuICAgICAgY29uc3QgaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmV4dC5sZW5ndGgpO1xuICAgICAgbmV4dFtpZHhdID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHkpO1xuICAgIH1cbiAgICB0aGlzLnRpbGVzLnNldChuZXh0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUGFsZXR0ZShwOiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHApKSB7XG4gICAgICAvLyBBY2VwdGEgYXJyYXlzIGRlIGN1YWxxdWllciBsb25naXR1ZCDiiaUyOyB0aWxlIGNvbnRyYXN0IGxvZ2ljIHVzYSDDrW5kaWNlcy5cbiAgICAgIHJldHVybiBwLmxlbmd0aCA+PSAyID8gcCA6IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICAgIH1cbiAgICByZXR1cm4gUEFUVEVSTl9QQUxFVFRFU1twXSA/PyBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZG9tU2VlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxXzAwMF8wMDApO1xuICB9XG59XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi9wYXR0ZXJuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBR2hCLHFCQUFxQixHQUN0QixNQUFNLFVBQVUsQ0FBQzs7QUFHbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQThCSCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixrRUFBa0U7SUFDbEUsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLElB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bW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIElucHV0LCBPbkRlc3Ryb3ksIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBnZW5lcmF0ZVBhdHRlcm5UaWxlcyxcbiAgZ2VuZXJhdGVSYW5kb21UaWxlLFxuICBQQVRURVJOX1BBTEVUVEVTLFxuICBQYXR0ZXJuUGFsZXR0ZUtleSxcbiAgUGF0dGVyblRpbGUsXG4gIHJlbmRlclBhdHRlcm5TdmdJbm5lcixcbn0gZnJvbSAnLi9tb3RpZnMnO1xuaW1wb3J0IHsgUGF0dGVybk1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogYHZhbC1wYXR0ZXJuYFxuICpcbiAqIENvbXBvbmVudGUgZGUgZm9uZG8gZ2VvbcOpdHJpY28gaW5zcGlyYWRvIGVuIGVsIHNpc3RlbWEgVmFsdGVjaC4gUmVuZGVyaXphIHVuXG4gKiBncmlkIGRlIHRpbGVzIDEwMMOXMTAwIGNvbiBtb3RpZnMgKGNoZXZyb25zLCB0cmlhbmdsZXMsIGRpYW1vbmRzLCBhcnJvd3MpIGVuXG4gKiB1biBTVkcgaW5saW5lLiBEZXRlcm1pbmlzdGEgdsOtYSBgc2VlZGAgbyBhbmltYWRvIHbDrWEgYHJlc2h1ZmZsZWAuXG4gKlxuICogQ2VybyBkZXBlbmRlbmNpYXMgZXh0ZXJuYXMg4oCUIHRvZG8gU1ZHLlxuICpcbiAqIEBleGFtcGxlIENvbW8gZm9uZG8gZGUgY2FyZCAoQ1NTIGFic29sdXRlKTpcbiAqIGBgYHNjc3NcbiAqIC5jYXJkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBvdmVyZmxvdzogaGlkZGVuOyB9XG4gKiAuY2FyZCB2YWwtcGF0dGVybiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6IDA7IHotaW5kZXg6IDA7IG9wYWNpdHk6IDAuNDsgfVxuICogLmNhcmQgLmNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IH1cbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gKiAgIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogNiwgcm93czogMywgc2VlZDogNDIgfVwiIC8+XG4gKiAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+VHUgY29udGVuaWRvIGFxdcOtPC9kaXY+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbW8gYmFja2dyb3VuZCBhbmltYWRvIChoZXJvL2xvZ2luKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAnbGF2ZW5kZXInLCBjb2xzOiAxNiwgcm93czogOCwgYW5pbWF0ZWQ6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhdHRlcm4nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGAgPGRpdiBjbGFzcz1cInZhbC1wYXR0ZXJuXCIgW2lubmVySFRNTF09XCJzdmdIdG1sKClcIj48L2Rpdj4gYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC52YWwtcGF0dGVybiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnMgZWFzZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC52YWwtcGF0dGVybiA6d2hlcmUoc3ZnKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBhdHRlcm5Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29scyA9IHNpZ25hbCgxMik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93cyA9IHNpZ25hbCg0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWVkID0gc2lnbmFsKHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYWxldHRlUmVmID0gc2lnbmFsPHN0cmluZ1tdPihQQVRURVJOX1BBTEVUVEVTLnB1cnBsZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hldnJvbkRlbnNpdHkgPSBzaWduYWwoMC41NSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlc2VydmVBc3BlY3QgPSBzaWduYWw8J3NsaWNlJyB8ICdtZWV0Jz4oJ3NsaWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYW5pbWF0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICAvKiogbXMgZW50cmUgcmVzaHVmZmxlcyAobW9kbyBhbmltYXRlZCkuIERlZmF1bHQgODAwMG1zIOKAlCBcImRlIHZleiBlbiBjdWFuZG9cIi4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNodWZmbGVJbnRlcnZhbCA9IHNpZ25hbCg4MDAwKTtcbiAgLyoqIFRpbGVzIGEgY2FtYmlhciBwb3IgdGljay4gMCDihpIgcmVzZWVkIGdyaWQgY29tcGxldG8gKGRlZmF1bHQpLiA+MCDihpIgc3RhZ2dlcmVkLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzUGVyVGljayA9IHNpZ25hbCgwKTtcblxuICBwcml2YXRlIHRpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuXG4gIC8qKiBPYmplY3QtZmlyc3QgaW5wdXQuIENhbWJpb3MgZGlzcGFyYW4gcmUtcmVuZGVyIHBvciBzaWduYWxzLiAqL1xuICBASW5wdXQoKSBzZXQgcHJvcHModmFsdWU6IFBhdHRlcm5NZXRhZGF0YSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICBpZiAodmFsdWUuY29scyAhPT0gdW5kZWZpbmVkKSB0aGlzLmNvbHMuc2V0KE1hdGgubWF4KDEsIHZhbHVlLmNvbHMpKTtcbiAgICBpZiAodmFsdWUucm93cyAhPT0gdW5kZWZpbmVkKSB0aGlzLnJvd3Muc2V0KE1hdGgubWF4KDEsIHZhbHVlLnJvd3MpKTtcbiAgICBpZiAodmFsdWUuc2VlZCAhPT0gdW5kZWZpbmVkKSB0aGlzLnNlZWQuc2V0KHZhbHVlLnNlZWQpO1xuICAgIGlmICh2YWx1ZS5jaGV2cm9uRGVuc2l0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNoZXZyb25EZW5zaXR5LnNldChNYXRoLm1pbigxLCBNYXRoLm1heCgwLCB2YWx1ZS5jaGV2cm9uRGVuc2l0eSkpKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnByZXNlcnZlQXNwZWN0ICE9PSB1bmRlZmluZWQpIHRoaXMucHJlc2VydmVBc3BlY3Quc2V0KHZhbHVlLnByZXNlcnZlQXNwZWN0KTtcbiAgICBpZiAodmFsdWUucGFsZXR0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnBhbGV0dGVSZWYuc2V0KHRoaXMucmVzb2x2ZVBhbGV0dGUodmFsdWUucGFsZXR0ZSkpO1xuICAgIH1cbiAgICBpZiAodmFsdWUucmVzaHVmZmxlSW50ZXJ2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZS5yZXNodWZmbGVJbnRlcnZhbCA+IDApIHtcbiAgICAgIHRoaXMucmVzaHVmZmxlSW50ZXJ2YWwuc2V0KHZhbHVlLnJlc2h1ZmZsZUludGVydmFsKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnRpbGVzUGVyVGljayAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnRpbGVzUGVyVGljayA+PSAwKSB7XG4gICAgICB0aGlzLnRpbGVzUGVyVGljay5zZXQoTWF0aC5mbG9vcih2YWx1ZS50aWxlc1BlclRpY2spKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLmFuaW1hdGVkICE9PSB1bmRlZmluZWQpIHRoaXMuYW5pbWF0ZWQuc2V0KCEhdmFsdWUuYW5pbWF0ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRpbGVzIHNpZ25hbCDigJQgbXV0YWJsZS4gU2UgcmVnZW5lcmEgY29tcGxldGEgY3VhbmRvIGNhbWJpYSBzZWVkL2NvbHMvcm93cy9cbiAgICogcGFsZXR0ZS9kZW5zaXR5LiBFbiBtb2RvIGFuaW1hdGVkLCB0aWxlcyBpbmRpdmlkdWFsZXMgc2Ugc29icmVzY3JpYmVuIHNpblxuICAgKiB0b2NhciBlbCByZXN0byAoZWZlY3RvIHN0YWdnZXJlZCkuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpbGVzID0gc2lnbmFsPFBhdHRlcm5UaWxlW10+KFtdKTtcblxuICAvKiogU1ZHIGNvbXBsZXRvIGNvbW8gc3RyaW5nIHNhbml0aXplZCBwYXJhIGBbaW5uZXJIVE1MXWAuICovXG4gIHJlYWRvbmx5IHN2Z0h0bWwgPSBjb21wdXRlZDxTYWZlSHRtbD4oKCkgPT4ge1xuICAgIGNvbnN0IGNvbHMgPSB0aGlzLmNvbHMoKTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgY29uc3QgcGFsZXR0ZSA9IHRoaXMucGFsZXR0ZVJlZigpO1xuICAgIGNvbnN0IGlubmVyID0gcmVuZGVyUGF0dGVyblN2Z0lubmVyKHRoaXMudGlsZXMoKSwgY29scywgcGFsZXR0ZVswXSEpO1xuICAgIGNvbnN0IGFzcGVjdCA9IHRoaXMucHJlc2VydmVBc3BlY3QoKSA9PT0gJ21lZXQnID8gJ3hNaWRZTWlkIG1lZXQnIDogJ3hNaWRZTWlkIHNsaWNlJztcbiAgICBjb25zdCBzdmcgPSBgPHN2ZyB2aWV3Qm94PVwiMCAwICR7Y29scyAqIDEwMH0gJHtyb3dzICogMTAwfVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCIke2FzcGVjdH1cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+JHtpbm5lcn08L3N2Zz5gO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChzdmcpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBSZWdlbmVyYSBncmlkIGNvbXBsZXRhIGN1YW5kbyBjYW1iaWFuIHByb3BzIGVzdHJ1Y3R1cmFsZXMgKGNvbHMvcm93cy9cbiAgICAvLyBwYWxldHRlL2RlbnNpdHkvc2VlZCkuIEVsIHNlZWQgc29sbyBjYW1iaWEgZXhwbMOtY2l0YW1lbnRlIHZpYSBwcm9wcyBvXG4gICAgLy8gbW91bnQgaW5pY2lhbCDigJQgTk8gc2UgbXV0YSBlbiBtb2RvIGFuaW1hdGVkLlxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjb2xzID0gdGhpcy5jb2xzKCk7XG4gICAgICBjb25zdCByb3dzID0gdGhpcy5yb3dzKCk7XG4gICAgICBjb25zdCBzZWVkID0gdGhpcy5zZWVkKCk7XG4gICAgICBjb25zdCBwYWxldHRlID0gdGhpcy5wYWxldHRlUmVmKCk7XG4gICAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgICAgdGhpcy50aWxlcy5zZXQoZ2VuZXJhdGVQYXR0ZXJuVGlsZXMoeyBjb2xzLCByb3dzLCBzZWVkLCBwYWxldHRlLCBjaGV2cm9uRGVuc2l0eTogZGVuc2l0eSB9KSk7XG4gICAgfSk7XG5cbiAgICAvLyBNb2RvIGFuaW1hdGVkOiBjYWRhIGByZXNodWZmbGVJbnRlcnZhbGAgbXMgcmVnZW5lcmEgZWwgZ3JpZCBjb21wbGV0b1xuICAgIC8vIGNvbiB1biBzZWVkIG51ZXZvLiBWaXN1YWxtZW50ZTogZWwgcGF0csOzbiBjYW1iaWEgZGUgdmV6IGVuIGN1YW5kby5cbiAgICAvLyBTaSBgdGlsZXNQZXJUaWNrID4gMGAgeSA8IHRvdGFsIHRpbGVzLCBoYWNlIHN0YWdnZXJlZCAocmVlbXBsYXphIHNvbG9cbiAgICAvLyBOIHRpbGVzIGVuIHZleiBkZSB0b2RhIGxhIGdyaWQpLiBEZWZhdWx0IHRpbGVzUGVyVGljaz0wIOKGkiByZXNlZWQgdG90YWwuXG4gICAgZWZmZWN0KG9uQ2xlYW51cCA9PiB7XG4gICAgICBjb25zdCBpc0FuaW1hdGVkID0gdGhpcy5hbmltYXRlZCgpO1xuICAgICAgY29uc3QgaW50ZXJ2YWwgPSB0aGlzLnJlc2h1ZmZsZUludGVydmFsKCk7XG4gICAgICBjb25zdCBwZXJUaWNrID0gdGhpcy50aWxlc1BlclRpY2soKTtcbiAgICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgIGlmICghaXNBbmltYXRlZCkgcmV0dXJuO1xuICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKHBlclRpY2sgPiAwKSB7XG4gICAgICAgICAgdGhpcy5tdXRhdGVSYW5kb21UaWxlcyhwZXJUaWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlZWQuc2V0KHRoaXMucmFuZG9tU2VlZCgpKTtcbiAgICAgICAgfVxuICAgICAgfSwgaW50ZXJ2YWwpO1xuICAgICAgb25DbGVhbnVwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICAgICAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZW1wbGF6YSBgY291bnRgIHRpbGVzIHJhbmRvbSBkZWwgZ3JpZCBhY3R1YWwgY29uIHRpbGVzIG51ZXZvcyBnZW5lcmFkb3MuXG4gICAqIFVzYWRvIHBhcmEgc3RhZ2dlcmVkIHJlc2h1ZmZsZSAob3B0LWluIHZpYSBgdGlsZXNQZXJUaWNrID4gMGApLlxuICAgKi9cbiAgcHJpdmF0ZSBtdXRhdGVSYW5kb21UaWxlcyhjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMudGlsZXMoKTtcbiAgICBpZiAoY3VycmVudC5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBuZXh0ID0gWy4uLmN1cnJlbnRdO1xuICAgIGNvbnN0IHBhbGV0dGUgPSB0aGlzLnBhbGV0dGVSZWYoKTtcbiAgICBjb25zdCBkZW5zaXR5ID0gdGhpcy5jaGV2cm9uRGVuc2l0eSgpO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgY291bnQ7IG4rKykge1xuICAgICAgY29uc3QgaWR4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbmV4dC5sZW5ndGgpO1xuICAgICAgbmV4dFtpZHhdID0gZ2VuZXJhdGVSYW5kb21UaWxlKHBhbGV0dGUsIGRlbnNpdHkpO1xuICAgIH1cbiAgICB0aGlzLnRpbGVzLnNldChuZXh0KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRpbWVyKSBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUGFsZXR0ZShwOiBQYXR0ZXJuUGFsZXR0ZUtleSB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHApKSB7XG4gICAgICAvLyBBY2VwdGEgYXJyYXlzIGRlIGN1YWxxdWllciBsb25naXR1ZCDiiaUyOyB0aWxlIGNvbnRyYXN0IGxvZ2ljIHVzYSDDrW5kaWNlcy5cbiAgICAgIHJldHVybiBwLmxlbmd0aCA+PSAyID8gcCA6IFBBVFRFUk5fUEFMRVRURVMucHVycGxlO1xuICAgIH1cbiAgICByZXR1cm4gUEFUVEVSTl9QQUxFVFRFU1twXSA/PyBQQVRURVJOX1BBTEVUVEVTLnB1cnBsZTtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZG9tU2VlZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxXzAwMF8wMDApO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXkgfSBmcm9tICcuL21vdGlmcyc7XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgKHNlZWQgZmlqbywgcmVwcm9kdWNpYmxlKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogMTIsIHJvd3M6IDQsIHNlZWQ6IDQyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgc3RhZ2dlcmVkICgxIHRpbGUgY2FkYSAxLjJzLCBzdXRpbCk6XG4gKiBgYGBodG1sXG4gKiA8dmFsLXBhdHRlcm4gW3Byb3BzXT1cInsgcGFsZXR0ZTogJ2luaycsIGNvbHM6IDE2LCByb3dzOiA4LCBhbmltYXRlZDogdHJ1ZSB9XCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEFuaW1hdGVkIG3DoXMgYWN0aXZvICgyIHRpbGVzIGNhZGEgODAwbXMpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IGFuaW1hdGVkOiB0cnVlLCByZXNodWZmbGVJbnRlcnZhbDogODAwLCB0aWxlc1BlclRpY2s6IDIgfVwiIC8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTWV0YWRhdGEge1xuICAvKipcbiAgICogUGFsZXR0ZSBidWlsdC1pbiAoYCdwdXJwbGUnIHwgJ2luaycgfCAnbGF2ZW5kZXInYCkgbyBhcnJheSBjdXN0b20gZGUgOFxuICAgKiBjb2xvcmVzIGRhcmsg4oaSIGxpZ2h0LiBEZWZhdWx0OiBgJ3B1cnBsZSdgLlxuICAgKi9cbiAgcGFsZXR0ZT86IFBhdHRlcm5QYWxldHRlS2V5IHwgc3RyaW5nW107XG5cbiAgLyoqIENvbHVtbmFzIGRlbCBncmlkLiBEZWZhdWx0OiAxMi4gKi9cbiAgY29scz86IG51bWJlcjtcblxuICAvKiogRmlsYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDQuICovXG4gIHJvd3M/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlZWQgcGFyYSBNdWxiZXJyeTMyIOKAlCBkZXRlcm1pbmEgZWwgcGF0csOzbi4gU2kgbm8gc2UgcGFzYSwgZ2VuZXJhIHVubyByYW5kb21cbiAgICogYWwgbW91bnQgeSBxdWVkYSBmaWpvIChhIG1lbm9zIHF1ZSBgYW5pbWF0ZWQ6IHRydWVgKS5cbiAgICovXG4gIHNlZWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlbnNpZGFkIGRlIGNoZXZyb25zICgwLi4xKS4gRWwgcmVzdG8gc2UgcmVwYXJ0ZSBlbnRyZSBzb2xpZC9zaGFwZS90cmkuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gaGFjZSAqKnN0YWdnZXJlZCByZXNodWZmbGUqKjogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgXG4gICAqIG1zIHNlIHJlZW1wbGF6YW4gYHRpbGVzUGVyVGlja2AgdGlsZXMgcmFuZG9tIOKAlCBOTyBsYSBncmlkIGVudGVyYS5cbiAgICogRGVmYXVsdDogYGZhbHNlYC5cbiAgICovXG4gIGFuaW1hdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbXMgZW50cmUgdXBkYXRlcyBpbmRpdmlkdWFsZXMgZGUgdGlsZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgMTIwMGAgKH4xIHRpbGUgY2FkYSAxLjJzIGNvbiBgdGlsZXNQZXJUaWNrOiAxYCkuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuIERlZmF1bHQ6IGAxYCAoY2FtYmlvIHN1dGlsKS5cbiAgICogU3ViaXIgYSAyLTQgcGFyYSBlZmVjdG8gbcOhcyB2aXZvLlxuICAgKi9cbiAgdGlsZXNQZXJUaWNrPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBgc2xpY2VgIChkZWZhdWx0KSDigJQgZWwgcGF0csOzbiBjdWJyZSB0b2RvIGVsIGNvbnRlbmVkb3IgbWFudGVuaWVuZG8gYXNwZWN0LFxuICAgKiBjcm9wZWFuZG8gc2kgbmVjZXNhcmlvLiBgbWVldGAg4oCUIGZpdCBjb21wbGV0byBzaW4gY3JvcCwgZGVqYSBlc3BhY2lvLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcGF0dGVybi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF0dGVyblBhbGV0dGVLZXkgfSBmcm9tICcuL21vdGlmcyc7XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGVsIGNvbXBvbmVudGUgYHZhbC1wYXR0ZXJuYC5cbiAqXG4gKiBAZXhhbXBsZSBTdGF0aWMgKHNlZWQgZmlqbywgcmVwcm9kdWNpYmxlKTpcbiAqIGBgYGh0bWxcbiAqIDx2YWwtcGF0dGVybiBbcHJvcHNdPVwieyBwYWxldHRlOiAncHVycGxlJywgY29sczogMTIsIHJvd3M6IDQsIHNlZWQ6IDQyIH1cIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQW5pbWF0ZWQgd2hvbGUtZ3JpZCByZXNodWZmbGUgKGNhZGEgOHMg4oCUIGRlZmF1bHQpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IHBhbGV0dGU6ICdpbmsnLCBjb2xzOiAxNiwgcm93czogOCwgYW5pbWF0ZWQ6IHRydWUgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBbmltYXRlZCBzdGFnZ2VyZWQgKDIgdGlsZXMgY2FkYSA4MDBtcyDigJQgc3V0aWwpOlxuICogYGBgaHRtbFxuICogPHZhbC1wYXR0ZXJuIFtwcm9wc109XCJ7IGFuaW1hdGVkOiB0cnVlLCByZXNodWZmbGVJbnRlcnZhbDogODAwLCB0aWxlc1BlclRpY2s6IDIgfVwiIC8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXR0ZXJuTWV0YWRhdGEge1xuICAvKipcbiAgICogUGFsZXR0ZSBidWlsdC1pbiAoYCdwdXJwbGUnIHwgJ2luaycgfCAnbGF2ZW5kZXInYCkgbyBhcnJheSBjdXN0b20gZGUgOFxuICAgKiBjb2xvcmVzIGRhcmsg4oaSIGxpZ2h0LiBEZWZhdWx0OiBgJ3B1cnBsZSdgLlxuICAgKi9cbiAgcGFsZXR0ZT86IFBhdHRlcm5QYWxldHRlS2V5IHwgc3RyaW5nW107XG5cbiAgLyoqIENvbHVtbmFzIGRlbCBncmlkLiBEZWZhdWx0OiAxMi4gKi9cbiAgY29scz86IG51bWJlcjtcblxuICAvKiogRmlsYXMgZGVsIGdyaWQuIERlZmF1bHQ6IDQuICovXG4gIHJvd3M/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlZWQgcGFyYSBNdWxiZXJyeTMyIOKAlCBkZXRlcm1pbmEgZWwgcGF0csOzbi4gU2kgbm8gc2UgcGFzYSwgZ2VuZXJhIHVubyByYW5kb21cbiAgICogYWwgbW91bnQgeSBxdWVkYSBmaWpvIChhIG1lbm9zIHF1ZSBgYW5pbWF0ZWQ6IHRydWVgKS5cbiAgICovXG4gIHNlZWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlbnNpZGFkIGRlIGNoZXZyb25zICgwLi4xKS4gRWwgcmVzdG8gc2UgcmVwYXJ0ZSBlbnRyZSBzb2xpZC9zaGFwZS90cmkuXG4gICAqIERlZmF1bHQ6IGAwLjU1YC5cbiAgICovXG4gIGNoZXZyb25EZW5zaXR5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTaSBgdHJ1ZWAsIGVsIHBhdHLDs24gaGFjZSAqKnN0YWdnZXJlZCByZXNodWZmbGUqKjogY2FkYSBgcmVzaHVmZmxlSW50ZXJ2YWxgXG4gICAqIG1zIHNlIHJlZW1wbGF6YW4gYHRpbGVzUGVyVGlja2AgdGlsZXMgcmFuZG9tIOKAlCBOTyBsYSBncmlkIGVudGVyYS5cbiAgICogRGVmYXVsdDogYGZhbHNlYC5cbiAgICovXG4gIGFuaW1hdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogbXMgZW50cmUgdXBkYXRlcyBpbmRpdmlkdWFsZXMgZGUgdGlsZXMgKG1vZG8gYW5pbWF0ZWQpLlxuICAgKiBEZWZhdWx0OiBgMTIwMGAgKH4xIHRpbGUgY2FkYSAxLjJzIGNvbiBgdGlsZXNQZXJUaWNrOiAxYCkuXG4gICAqL1xuICByZXNodWZmbGVJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogQ3XDoW50b3MgdGlsZXMgY2FtYmlhciBwb3IgdGljayAobW9kbyBhbmltYXRlZCkuIERlZmF1bHQ6IGAxYCAoY2FtYmlvIHN1dGlsKS5cbiAgICogU3ViaXIgYSAyLTQgcGFyYSBlZmVjdG8gbcOhcyB2aXZvLlxuICAgKi9cbiAgdGlsZXNQZXJUaWNrPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBgc2xpY2VgIChkZWZhdWx0KSDigJQgZWwgcGF0csOzbiBjdWJyZSB0b2RvIGVsIGNvbnRlbmVkb3IgbWFudGVuaWVuZG8gYXNwZWN0LFxuICAgKiBjcm9wZWFuZG8gc2kgbmVjZXNhcmlvLiBgbWVldGAg4oCUIGZpdCBjb21wbGV0byBzaW4gY3JvcCwgZGVqYSBlc3BhY2lvLlxuICAgKi9cbiAgcHJlc2VydmVBc3BlY3Q/OiAnc2xpY2UnIHwgJ21lZXQnO1xufVxuIl19
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '2.0.775';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC43NzUnO1xuIl19
5
+ export const VERSION = '2.0.776';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzIuMC43NzYnO1xuIl19
@@ -52,7 +52,7 @@ import 'prismjs/components/prism-json';
52
52
  * Current version of valtech-components.
53
53
  * This is automatically updated during the publish process.
54
54
  */
55
- const VERSION = '2.0.775';
55
+ const VERSION = '2.0.776';
56
56
 
57
57
  /**
58
58
  * Servicio para gestionar presets de componentes.
@@ -6019,7 +6019,7 @@ class PatternComponent {
6019
6019
  if (value.reshuffleInterval !== undefined && value.reshuffleInterval > 0) {
6020
6020
  this.reshuffleInterval.set(value.reshuffleInterval);
6021
6021
  }
6022
- if (value.tilesPerTick !== undefined && value.tilesPerTick > 0) {
6022
+ if (value.tilesPerTick !== undefined && value.tilesPerTick >= 0) {
6023
6023
  this.tilesPerTick.set(Math.floor(value.tilesPerTick));
6024
6024
  }
6025
6025
  if (value.animated !== undefined)
@@ -6034,10 +6034,10 @@ class PatternComponent {
6034
6034
  this.chevronDensity = signal(0.55);
6035
6035
  this.preserveAspect = signal('slice');
6036
6036
  this.animated = signal(false);
6037
- /** ms entre updates individuales de tiles (modo animated). Default 1200ms. */
6038
- this.reshuffleInterval = signal(1200);
6039
- /** Cuántos tiles cambiar por tick (default 1cambio sutil). */
6040
- this.tilesPerTick = signal(1);
6037
+ /** ms entre reshuffles (modo animated). Default 8000ms — "de vez en cuando". */
6038
+ this.reshuffleInterval = signal(8000);
6039
+ /** Tiles a cambiar por tick. 0 → reseed grid completo (default). >0staggered. */
6040
+ this.tilesPerTick = signal(0);
6041
6041
  /**
6042
6042
  * Tiles signal — mutable. Se regenera completa cuando cambia seed/cols/rows/
6043
6043
  * palette/density. En modo animated, tiles individuales se sobrescriben sin
@@ -6065,9 +6065,10 @@ class PatternComponent {
6065
6065
  const density = this.chevronDensity();
6066
6066
  this.tiles.set(generatePatternTiles({ cols, rows, seed, palette, chevronDensity: density }));
6067
6067
  });
6068
- // Modo animated: cada `reshuffleInterval` ms, sobrescribe `tilesPerTick`
6069
- // tiles random efecto staggered (no toda la grid de una). Si el user
6070
- // desactiva animated, el timer se limpia automáticamente.
6068
+ // Modo animated: cada `reshuffleInterval` ms regenera el grid completo
6069
+ // con un seed nuevo. Visualmente: el patrón cambia de vez en cuando.
6070
+ // Si `tilesPerTick > 0` y < total tiles, hace staggered (reemplaza solo
6071
+ // N tiles en vez de toda la grid). Default tilesPerTick=0 → reseed total.
6071
6072
  effect(onCleanup => {
6072
6073
  const isAnimated = this.animated();
6073
6074
  const interval = this.reshuffleInterval();
@@ -6077,7 +6078,14 @@ class PatternComponent {
6077
6078
  this.timer = undefined;
6078
6079
  if (!isAnimated)
6079
6080
  return;
6080
- this.timer = setInterval(() => this.mutateRandomTiles(perTick), interval);
6081
+ this.timer = setInterval(() => {
6082
+ if (perTick > 0) {
6083
+ this.mutateRandomTiles(perTick);
6084
+ }
6085
+ else {
6086
+ this.seed.set(this.randomSeed());
6087
+ }
6088
+ }, interval);
6081
6089
  onCleanup(() => {
6082
6090
  if (this.timer) {
6083
6091
  clearInterval(this.timer);
@@ -6088,7 +6096,7 @@ class PatternComponent {
6088
6096
  }
6089
6097
  /**
6090
6098
  * Reemplaza `count` tiles random del grid actual con tiles nuevos generados.
6091
- * Usado por el modo animated para staggered reshuffle.
6099
+ * Usado para staggered reshuffle (opt-in via `tilesPerTick > 0`).
6092
6100
  */
6093
6101
  mutateRandomTiles(count) {
6094
6102
  const current = this.tiles();