chart-preview 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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # chart-preview
2
2
 
3
+ ## 1.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fe294b3: Add manual resize functionality to ChartPreview and trigger resize in ChartPreviewPlayer on fullscreen change
8
+
3
9
  ## 1.2.0
4
10
 
5
11
  ### Minor Changes
package/dist/index.d.ts CHANGED
@@ -180,6 +180,11 @@ declare class ChartPreview {
180
180
  get chartCurrentTimeMs(): number;
181
181
  /** Total duration in milliseconds */
182
182
  get chartEndTimeMs(): number;
183
+ /**
184
+ * Manually triggers a resize of the camera and renderer.
185
+ * Call this when the container size changes (e.g., entering/exiting fullscreen).
186
+ */
187
+ resize(): void;
183
188
  /**
184
189
  * Cleans up all resources. Call this when discarding the preview.
185
190
  * The preview should not be used after calling dispose().
package/dist/index.js CHANGED
@@ -409,6 +409,17 @@ var _ChartPreview = class {
409
409
  get chartEndTimeMs() {
410
410
  return this.audioManager.chartEndTimeMs;
411
411
  }
412
+ /**
413
+ * Manually triggers a resize of the camera and renderer.
414
+ * Call this when the container size changes (e.g., entering/exiting fullscreen).
415
+ */
416
+ resize() {
417
+ this.camera.triggerResize();
418
+ this.renderer.triggerResize();
419
+ if (this.paused) {
420
+ this.animateFrame(false);
421
+ }
422
+ }
412
423
  /**
413
424
  * Cleans up all resources. Call this when discarding the preview.
414
425
  * The preview should not be used after calling dispose().
@@ -496,6 +507,10 @@ var ChartCamera = class extends THREE.PerspectiveCamera {
496
507
  this.aspect = width / height;
497
508
  this.updateProjectionMatrix();
498
509
  }
510
+ /** Manually trigger a resize update */
511
+ triggerResize() {
512
+ this.onResize();
513
+ }
499
514
  dispose() {
500
515
  window.removeEventListener("resize", this.resizeListener);
501
516
  this.clear();
@@ -518,6 +533,10 @@ var ChartRenderer = class extends THREE.WebGLRenderer {
518
533
  const height = this.divContainer.offsetHeight ?? window.innerHeight;
519
534
  this.setSize(width, height);
520
535
  }
536
+ /** Manually trigger a resize update */
537
+ triggerResize() {
538
+ this.onResize();
539
+ }
521
540
  dispose() {
522
541
  window.removeEventListener("resize", this.resizeListener);
523
542
  super.dispose();
@@ -1760,6 +1779,13 @@ var ChartPreviewPlayer = class extends HTMLElement {
1760
1779
  this.container.classList.toggle("fullscreen", this._isFullscreen);
1761
1780
  this.fullscreenBtn.innerHTML = this._isFullscreen ? ICONS.fullscreenExit : ICONS.fullscreen;
1762
1781
  this.fullscreenBtn.title = this._isFullscreen ? "Exit fullscreen" : "Enter fullscreen";
1782
+ if (this.chartPreview) {
1783
+ requestAnimationFrame(() => {
1784
+ requestAnimationFrame(() => {
1785
+ this.chartPreview?.resize();
1786
+ });
1787
+ });
1788
+ }
1763
1789
  };
1764
1790
  this.shadow = this.attachShadow({ mode: "open" });
1765
1791
  this.render();
package/dist/index.mjs CHANGED
@@ -369,6 +369,17 @@ var _ChartPreview = class {
369
369
  get chartEndTimeMs() {
370
370
  return this.audioManager.chartEndTimeMs;
371
371
  }
372
+ /**
373
+ * Manually triggers a resize of the camera and renderer.
374
+ * Call this when the container size changes (e.g., entering/exiting fullscreen).
375
+ */
376
+ resize() {
377
+ this.camera.triggerResize();
378
+ this.renderer.triggerResize();
379
+ if (this.paused) {
380
+ this.animateFrame(false);
381
+ }
382
+ }
372
383
  /**
373
384
  * Cleans up all resources. Call this when discarding the preview.
374
385
  * The preview should not be used after calling dispose().
@@ -456,6 +467,10 @@ var ChartCamera = class extends THREE.PerspectiveCamera {
456
467
  this.aspect = width / height;
457
468
  this.updateProjectionMatrix();
458
469
  }
470
+ /** Manually trigger a resize update */
471
+ triggerResize() {
472
+ this.onResize();
473
+ }
459
474
  dispose() {
460
475
  window.removeEventListener("resize", this.resizeListener);
461
476
  this.clear();
@@ -478,6 +493,10 @@ var ChartRenderer = class extends THREE.WebGLRenderer {
478
493
  const height = this.divContainer.offsetHeight ?? window.innerHeight;
479
494
  this.setSize(width, height);
480
495
  }
496
+ /** Manually trigger a resize update */
497
+ triggerResize() {
498
+ this.onResize();
499
+ }
481
500
  dispose() {
482
501
  window.removeEventListener("resize", this.resizeListener);
483
502
  super.dispose();
@@ -1724,6 +1743,13 @@ var ChartPreviewPlayer = class extends HTMLElement {
1724
1743
  this.container.classList.toggle("fullscreen", this._isFullscreen);
1725
1744
  this.fullscreenBtn.innerHTML = this._isFullscreen ? ICONS.fullscreenExit : ICONS.fullscreen;
1726
1745
  this.fullscreenBtn.title = this._isFullscreen ? "Exit fullscreen" : "Enter fullscreen";
1746
+ if (this.chartPreview) {
1747
+ requestAnimationFrame(() => {
1748
+ requestAnimationFrame(() => {
1749
+ this.chartPreview?.resize();
1750
+ });
1751
+ });
1752
+ }
1727
1753
  };
1728
1754
  this.shadow = this.attachShadow({ mode: "open" });
1729
1755
  this.render();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chart-preview",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "author": "Geo",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -509,6 +509,19 @@ export class ChartPreview {
509
509
  return this.audioManager.chartEndTimeMs;
510
510
  }
511
511
 
512
+ /**
513
+ * Manually triggers a resize of the camera and renderer.
514
+ * Call this when the container size changes (e.g., entering/exiting fullscreen).
515
+ */
516
+ resize() {
517
+ this.camera.triggerResize();
518
+ this.renderer.triggerResize();
519
+ // Re-render a frame to immediately show the updated size
520
+ if (this.paused) {
521
+ this.animateFrame(false);
522
+ }
523
+ }
524
+
512
525
  /**
513
526
  * Cleans up all resources. Call this when discarding the preview.
514
527
  * The preview should not be used after calling dispose().
@@ -618,6 +631,11 @@ class ChartCamera extends THREE.PerspectiveCamera {
618
631
  this.updateProjectionMatrix();
619
632
  }
620
633
 
634
+ /** Manually trigger a resize update */
635
+ triggerResize() {
636
+ this.onResize();
637
+ }
638
+
621
639
  dispose() {
622
640
  window.removeEventListener("resize", this.resizeListener);
623
641
  this.clear();
@@ -642,6 +660,11 @@ class ChartRenderer extends THREE.WebGLRenderer {
642
660
  this.setSize(width, height);
643
661
  }
644
662
 
663
+ /** Manually trigger a resize update */
664
+ triggerResize() {
665
+ this.onResize();
666
+ }
667
+
645
668
  override dispose() {
646
669
  window.removeEventListener("resize", this.resizeListener);
647
670
  super.dispose();
@@ -549,6 +549,18 @@ export class ChartPreviewPlayer extends HTMLElement {
549
549
  this.fullscreenBtn.title = this._isFullscreen
550
550
  ? "Exit fullscreen"
551
551
  : "Enter fullscreen";
552
+
553
+ // Trigger resize on the chart preview after a short delay
554
+ // to ensure the container dimensions have updated
555
+ if (this.chartPreview) {
556
+ // Use requestAnimationFrame to ensure DOM has updated
557
+ requestAnimationFrame(() => {
558
+ // Double RAF to ensure layout has been recalculated
559
+ requestAnimationFrame(() => {
560
+ this.chartPreview?.resize();
561
+ });
562
+ });
563
+ }
552
564
  };
553
565
 
554
566
  private onSeekStart() {