@bendyline/squisq-editor-react 2.13.21 → 2.13.23

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,7 +1,7 @@
1
1
  import {
2
2
  encodeMonoPcm16Wav,
3
3
  startDictationSession
4
- } from "../chunk-7ADGH53Y.js";
4
+ } from "../chunk-RVHUTOHG.js";
5
5
  import {
6
6
  SPEECH_INPUT_SAMPLE_RATE,
7
7
  isSpeechInputProviderFactory,
@@ -8545,13 +8545,25 @@
8545
8545
  overflow: hidden;
8546
8546
  visibility: hidden;
8547
8547
  }
8548
- @container squisq-toolbar (max-width: 900px) {
8549
- .squisq-toolbar-view-tab:has(.squisq-toolbar-view-tab-label--short) .squisq-toolbar-view-tab-label--long {
8548
+ .squisq-toolbar-view-tab-icon {
8549
+ display: none;
8550
+ align-items: center;
8551
+ height: 1lh;
8552
+ transform: translateY(1px);
8553
+ }
8554
+ @container squisq-toolbar (max-width: 520px) {
8555
+ .squisq-toolbar-view-tab:has(.squisq-toolbar-view-tab-label--short, .squisq-toolbar-view-tab-icon) .squisq-toolbar-view-tab-label--long {
8550
8556
  display: none;
8551
8557
  }
8552
8558
  .squisq-toolbar-view-tab-label--short {
8553
8559
  display: inline-block;
8554
8560
  }
8561
+ .squisq-toolbar-view-tab-icon {
8562
+ display: inline-flex;
8563
+ }
8564
+ .squisq-toolbar-view-tab {
8565
+ padding-inline: 10px;
8566
+ }
8555
8567
  }
8556
8568
  .squisq-toolbar-view-tab:hover {
8557
8569
  color: var(--squisq-text-strong);
@@ -9117,6 +9129,10 @@
9117
9129
  outline: 2px solid rgba(99, 102, 241, 0.25);
9118
9130
  outline-offset: -1px;
9119
9131
  }
9132
+ .squisq-template-picker-trigger:disabled {
9133
+ opacity: 0.6;
9134
+ pointer-events: none;
9135
+ }
9120
9136
  .squisq-template-picker-trigger-label {
9121
9137
  color: var(--squisq-text-muted);
9122
9138
  }
@@ -9148,6 +9164,10 @@
9148
9164
  overflow: hidden;
9149
9165
  text-overflow: ellipsis;
9150
9166
  }
9167
+ .squisq-slide-block-type .squisq-template-picker-trigger-value {
9168
+ width: 88px;
9169
+ text-align: left;
9170
+ }
9151
9171
  .squisq-template-picker-trigger-caret {
9152
9172
  color: var(--squisq-text-faint);
9153
9173
  flex-shrink: 0;
@@ -12841,7 +12861,7 @@ button.squisq-view-menu-radio-row:focus-visible {
12841
12861
  position: absolute;
12842
12862
  top: 0;
12843
12863
  right: 0;
12844
- width: 12px;
12864
+ width: var(--squisq-raw-editor-breathing, 12px);
12845
12865
  height: 100%;
12846
12866
  background: var(--squisq-surface);
12847
12867
  pointer-events: none;
@@ -12851,7 +12871,7 @@ button.squisq-view-menu-radio-row:focus-visible {
12851
12871
  content: "";
12852
12872
  position: absolute;
12853
12873
  top: 0;
12854
- right: 12px;
12874
+ right: var(--squisq-raw-editor-breathing, 12px);
12855
12875
  width: 1px;
12856
12876
  height: 100%;
12857
12877
  background: var(--squisq-desk-border);
@@ -12861,6 +12881,9 @@ button.squisq-view-menu-radio-row:focus-visible {
12861
12881
  .squisq-editor-shell[data-theme=dark] .squisq-raw-editor-container .monaco-editor .margin::before {
12862
12882
  background: var(--squisq-surface-sunken);
12863
12883
  }
12884
+ .squisq-raw-editor-container .monaco-editor .margin-view-overlays .line-numbers {
12885
+ translate: var(--squisq-raw-editor-number-inset, 0px) 0;
12886
+ }
12864
12887
  .squisq-editor-with-gutter > .squisq-outline,
12865
12888
  .squisq-editor-with-gutter > .squisq-inline-preview-gutter {
12866
12889
  flex: 0 0 auto;
@@ -15138,6 +15161,45 @@ button.squisq-view-menu-radio-row:focus-visible {
15138
15161
  color: var(--squisq-text-soft);
15139
15162
  }
15140
15163
 
15164
+ /* src/styles/touch-dialogs.css */
15165
+ @media (pointer: coarse) {
15166
+ .squisq-link-dialog-overlay,
15167
+ .squisq-doc-settings-overlay {
15168
+ align-items: flex-start;
15169
+ padding-top: max(calc(env(safe-area-inset-top, 0px) + 16px), min(12vh, 96px));
15170
+ padding-bottom: calc(max(env(safe-area-inset-bottom, 0px), var(--squisq-keyboard-inset, 0px)) + 16px);
15171
+ }
15172
+ .squisq-link-dialog,
15173
+ .squisq-doc-settings-dialog {
15174
+ max-height: 100%;
15175
+ }
15176
+ .squisq-link-dialog-body {
15177
+ min-height: 0;
15178
+ overflow-y: auto;
15179
+ }
15180
+ .squisq-link-dialog-input,
15181
+ .squisq-doc-settings-input {
15182
+ font-size: 16px;
15183
+ }
15184
+ }
15185
+
15186
+ /* src/styles/narrow-screens.css */
15187
+ @container squisq-toolbar (max-width: 760px) {
15188
+ .squisq-version-history-popover--with-diff {
15189
+ flex-direction: column-reverse;
15190
+ min-width: 0;
15191
+ }
15192
+ .squisq-version-history-popover--with-diff .squisq-version-history-list-pane {
15193
+ width: auto;
15194
+ max-height: 30vh;
15195
+ border-left: 0;
15196
+ border-bottom: 1px solid var(--squisq-border);
15197
+ }
15198
+ .squisq-version-history-popover--with-diff .squisq-version-history-diff-body {
15199
+ height: 40vh;
15200
+ }
15201
+ }
15202
+
15141
15203
  /* src/styles/navigation-sheet.css */
15142
15204
  .squisq-navigation-sheet {
15143
15205
  --squisq-navigation-sheet-progress: 0;
@@ -17003,13 +17065,26 @@ button.squisq-view-menu-radio-row:focus-visible {
17003
17065
  background: var(--squisq-editor-control-bg-hover);
17004
17066
  }
17005
17067
  .squisq-media-edit-modal__surface--tabbed {
17068
+ width: min(720px, 100%);
17006
17069
  height: min(640px, 100%);
17007
17070
  }
17071
+ .squisq-media-edit-modal__surface--large {
17072
+ width: 100%;
17073
+ height: 100%;
17074
+ }
17008
17075
  .squisq-media-edit-modal__body {
17076
+ display: flex;
17009
17077
  flex: 1;
17078
+ flex-direction: column;
17079
+ min-height: 0;
17010
17080
  overflow: auto;
17011
17081
  padding: 12px 16px 16px;
17012
17082
  }
17083
+ .squisq-media-edit-panel--fill:not([hidden]) {
17084
+ display: flex;
17085
+ flex: 1 0 auto;
17086
+ flex-direction: column;
17087
+ }
17013
17088
  .squisq-media-edit-tabs {
17014
17089
  display: flex;
17015
17090
  gap: 4px;
@@ -17318,6 +17393,10 @@ button.squisq-view-menu-radio-row:focus-visible {
17318
17393
  border-radius: 4px;
17319
17394
  touch-action: none;
17320
17395
  }
17396
+ .squisq-media-edit-modal__surface--large .squisq-media-edit-crop {
17397
+ max-width: min(100%, calc((100vh - 300px) * var(--squisq-media-edit-frame-ratio, 1.7778)));
17398
+ margin-inline: auto;
17399
+ }
17321
17400
  .squisq-media-edit-crop video {
17322
17401
  display: block;
17323
17402
  width: 100%;
@@ -17363,6 +17442,318 @@ button.squisq-view-menu-radio-row:focus-visible {
17363
17442
  right: -7px;
17364
17443
  cursor: nwse-resize;
17365
17444
  }
17445
+ .squisq-media-edit-cuts {
17446
+ display: flex;
17447
+ flex: 1 0 auto;
17448
+ flex-direction: column;
17449
+ }
17450
+ .squisq-media-edit-cuts__monitor {
17451
+ position: relative;
17452
+ flex: 1 1 180px;
17453
+ min-height: 180px;
17454
+ margin-bottom: 8px;
17455
+ overflow: hidden;
17456
+ background: var(--squisq-surface-sunken);
17457
+ border-radius: 4px;
17458
+ }
17459
+ .squisq-media-edit-cuts__monitor video {
17460
+ position: absolute;
17461
+ inset: 0;
17462
+ display: block;
17463
+ width: 100%;
17464
+ height: 100%;
17465
+ object-fit: contain;
17466
+ }
17467
+ .squisq-media-edit-cuts__transport,
17468
+ .squisq-media-edit-cuts__actions {
17469
+ display: flex;
17470
+ flex-wrap: wrap;
17471
+ align-items: center;
17472
+ gap: 6px;
17473
+ }
17474
+ .squisq-media-edit-cuts__transport {
17475
+ margin-bottom: 8px;
17476
+ }
17477
+ .squisq-media-edit-cuts__actions {
17478
+ margin-top: 8px;
17479
+ }
17480
+ .squisq-media-edit-cuts__notes {
17481
+ display: flex;
17482
+ flex-wrap: wrap;
17483
+ justify-content: space-between;
17484
+ column-gap: 16px;
17485
+ }
17486
+ .squisq-media-edit-modal__surface--large .squisq-media-edit-cuts__lower {
17487
+ display: grid;
17488
+ grid-template-columns: minmax(0, 1fr) 380px;
17489
+ column-gap: 20px;
17490
+ align-items: start;
17491
+ }
17492
+ .squisq-media-edit-modal__surface--large .squisq-media-edit-cuts__pauses {
17493
+ margin-top: 6px;
17494
+ padding-top: 0;
17495
+ border-top: 0;
17496
+ }
17497
+ .squisq-media-edit-cuts__transport .squisq-media-edit-chips {
17498
+ margin: 0;
17499
+ }
17500
+ .squisq-media-edit-cuts__play {
17501
+ display: inline-flex;
17502
+ align-items: center;
17503
+ justify-content: center;
17504
+ gap: 6px;
17505
+ min-width: 78px;
17506
+ }
17507
+ .squisq-media-edit-cuts__time {
17508
+ min-width: 9.5em;
17509
+ color: var(--squisq-text-muted);
17510
+ font-variant-numeric: tabular-nums;
17511
+ white-space: nowrap;
17512
+ }
17513
+ .squisq-media-edit-cuts__zoom {
17514
+ display: flex;
17515
+ gap: 4px;
17516
+ margin-left: auto;
17517
+ }
17518
+ .squisq-media-edit-cuts__selection {
17519
+ flex: 1;
17520
+ min-width: 0;
17521
+ overflow: hidden;
17522
+ color: var(--squisq-text-muted);
17523
+ font-size: 12px;
17524
+ font-variant-numeric: tabular-nums;
17525
+ text-overflow: ellipsis;
17526
+ white-space: nowrap;
17527
+ }
17528
+ .squisq-media-edit-cuts__pauses {
17529
+ margin-top: 12px;
17530
+ padding-top: 8px;
17531
+ border-top: 1px solid var(--squisq-border-subtle);
17532
+ }
17533
+ .squisq-media-edit-timeline {
17534
+ position: relative;
17535
+ overflow-x: auto;
17536
+ overflow-y: hidden;
17537
+ scrollbar-width: thin;
17538
+ background: var(--squisq-surface-sunken);
17539
+ border: 1px solid var(--squisq-editor-control-border);
17540
+ border-radius: 4px;
17541
+ }
17542
+ .squisq-media-edit-timeline:focus-visible {
17543
+ outline: 2px solid var(--squisq-focus-ring);
17544
+ outline-offset: 1px;
17545
+ }
17546
+ .squisq-media-edit-timeline--empty {
17547
+ display: flex;
17548
+ align-items: center;
17549
+ justify-content: center;
17550
+ height: 122px;
17551
+ padding: 0 16px;
17552
+ overflow: hidden;
17553
+ color: var(--squisq-text-muted);
17554
+ font-variant-numeric: tabular-nums;
17555
+ }
17556
+ .squisq-media-edit-timeline__track {
17557
+ position: relative;
17558
+ box-sizing: border-box;
17559
+ min-width: 100%;
17560
+ height: 120px;
17561
+ padding-top: 18px;
17562
+ cursor: text;
17563
+ touch-action: none;
17564
+ user-select: none;
17565
+ }
17566
+ .squisq-media-edit-timeline__ruler {
17567
+ position: absolute;
17568
+ inset: 0 0 auto;
17569
+ height: 18px;
17570
+ border-bottom: 1px solid var(--squisq-border-subtle);
17571
+ pointer-events: none;
17572
+ }
17573
+ .squisq-media-edit-timeline__tick {
17574
+ position: absolute;
17575
+ top: 0;
17576
+ height: 18px;
17577
+ padding-left: 4px;
17578
+ border-left: 1px solid var(--squisq-editor-control-border);
17579
+ color: var(--squisq-text-muted);
17580
+ font-size: 10px;
17581
+ font-variant-numeric: tabular-nums;
17582
+ line-height: 18px;
17583
+ white-space: nowrap;
17584
+ }
17585
+ .squisq-media-edit-timeline__wave {
17586
+ position: sticky;
17587
+ left: 0;
17588
+ display: block;
17589
+ height: 102px;
17590
+ color: var(--squisq-accent);
17591
+ pointer-events: none;
17592
+ }
17593
+ .squisq-media-edit-timeline__cut {
17594
+ position: absolute;
17595
+ top: 18px;
17596
+ bottom: 0;
17597
+ box-sizing: border-box;
17598
+ min-width: 2px;
17599
+ border-inline: 1px solid var(--squisq-danger);
17600
+ }
17601
+ .squisq-media-edit-timeline__cut::before,
17602
+ .squisq-media-edit-timeline__cut::after {
17603
+ content: "";
17604
+ position: absolute;
17605
+ inset: 0;
17606
+ pointer-events: none;
17607
+ }
17608
+ .squisq-media-edit-timeline__cut::before {
17609
+ background: var(--squisq-surface-sunken);
17610
+ opacity: 0.84;
17611
+ }
17612
+ .squisq-media-edit-timeline__cut::after {
17613
+ background:
17614
+ repeating-linear-gradient(
17615
+ 135deg,
17616
+ transparent 0 6px,
17617
+ color-mix(in srgb, var(--squisq-danger) 38%, transparent) 6px 7px);
17618
+ }
17619
+ .squisq-media-edit-timeline__handle {
17620
+ position: absolute;
17621
+ top: 0;
17622
+ bottom: 0;
17623
+ z-index: 1;
17624
+ width: 11px;
17625
+ cursor: ew-resize;
17626
+ touch-action: none;
17627
+ }
17628
+ .squisq-media-edit-timeline__handle--start {
17629
+ left: -6px;
17630
+ }
17631
+ .squisq-media-edit-timeline__handle--end {
17632
+ right: -6px;
17633
+ }
17634
+ .squisq-media-edit-timeline__handle::after {
17635
+ content: "";
17636
+ position: absolute;
17637
+ top: 50%;
17638
+ left: 2px;
17639
+ box-sizing: border-box;
17640
+ width: 7px;
17641
+ height: 30px;
17642
+ border: 1px solid var(--squisq-surface-sunken);
17643
+ border-radius: 4px;
17644
+ background: var(--squisq-danger);
17645
+ transform: translateY(-50%);
17646
+ }
17647
+ .squisq-media-edit-timeline__handle:focus-visible {
17648
+ outline: 2px solid var(--squisq-focus-ring);
17649
+ outline-offset: -2px;
17650
+ }
17651
+ .squisq-media-edit-timeline__cut[data-narrow=true] .squisq-media-edit-timeline__handle {
17652
+ opacity: 0;
17653
+ pointer-events: none;
17654
+ }
17655
+ .squisq-media-edit-timeline__cut[data-narrow=true] .squisq-media-edit-timeline__handle:focus-visible {
17656
+ opacity: 1;
17657
+ }
17658
+ .squisq-media-edit-modal button.squisq-media-edit-timeline__restore {
17659
+ position: absolute;
17660
+ top: 4px;
17661
+ left: 50%;
17662
+ z-index: 2;
17663
+ width: 18px;
17664
+ min-height: 0;
17665
+ height: 18px;
17666
+ padding: 0;
17667
+ border-radius: 50%;
17668
+ font-size: 13px;
17669
+ line-height: 1;
17670
+ opacity: 0;
17671
+ transform: translateX(-50%);
17672
+ }
17673
+ .squisq-media-edit-timeline__cut:hover .squisq-media-edit-timeline__restore,
17674
+ .squisq-media-edit-modal button.squisq-media-edit-timeline__restore:focus-visible {
17675
+ opacity: 1;
17676
+ }
17677
+ .squisq-media-edit-timeline__cut[data-narrow=true] .squisq-media-edit-timeline__restore {
17678
+ display: none;
17679
+ }
17680
+ .squisq-media-edit-timeline__selection {
17681
+ position: absolute;
17682
+ top: 18px;
17683
+ bottom: 0;
17684
+ box-sizing: content-box;
17685
+ margin-left: -1px;
17686
+ border-inline: 1px solid var(--squisq-accent);
17687
+ background: color-mix(in srgb, var(--squisq-accent) 26%, transparent);
17688
+ pointer-events: none;
17689
+ }
17690
+ .squisq-media-edit-timeline__playhead {
17691
+ position: absolute;
17692
+ top: 0;
17693
+ bottom: 0;
17694
+ z-index: 3;
17695
+ width: 0;
17696
+ margin-left: -1px;
17697
+ border-left: 2px solid var(--squisq-text);
17698
+ pointer-events: none;
17699
+ }
17700
+ .squisq-media-edit-timeline__playhead::before {
17701
+ content: "";
17702
+ position: absolute;
17703
+ top: 0;
17704
+ left: -6px;
17705
+ border: 5px solid transparent;
17706
+ border-top: 7px solid var(--squisq-text);
17707
+ border-bottom: 0;
17708
+ }
17709
+ .squisq-media-edit-cutlist {
17710
+ flex: none;
17711
+ box-sizing: border-box;
17712
+ height: 100px;
17713
+ margin: 6px 0 0;
17714
+ padding: 0;
17715
+ overflow-y: auto;
17716
+ border: 1px solid var(--squisq-border-subtle);
17717
+ border-radius: 4px;
17718
+ list-style: none;
17719
+ }
17720
+ .squisq-media-edit-cutlist--empty {
17721
+ display: flex;
17722
+ align-items: center;
17723
+ justify-content: center;
17724
+ color: var(--squisq-text-muted);
17725
+ font-size: 12px;
17726
+ }
17727
+ .squisq-media-edit-cutlist li {
17728
+ display: grid;
17729
+ grid-template-columns: 1fr auto auto auto;
17730
+ align-items: center;
17731
+ column-gap: 8px;
17732
+ padding: 3px 6px 3px 10px;
17733
+ font-variant-numeric: tabular-nums;
17734
+ }
17735
+ .squisq-media-edit-cutlist li + li {
17736
+ border-top: 1px solid var(--squisq-border-subtle);
17737
+ }
17738
+ .squisq-media-edit-cutlist__length {
17739
+ min-width: 4.5em;
17740
+ color: var(--squisq-text-muted);
17741
+ text-align: right;
17742
+ }
17743
+ .squisq-media-edit-modal .squisq-media-edit-cutlist button {
17744
+ display: inline-flex;
17745
+ align-items: center;
17746
+ gap: 6px;
17747
+ min-height: 24px;
17748
+ padding: 2px 8px;
17749
+ }
17750
+
17751
+ /* src/styles/fill-available.css */
17752
+ .squisq-block-fill-available[data-fill-height] {
17753
+ display: flex;
17754
+ flex-direction: column;
17755
+ min-height: var(--squisq-fill-height);
17756
+ }
17366
17757
 
17367
17758
  /* src/styles/diagram.css */
17368
17759
  .squisq-diagram-widget-host {
@@ -18537,24 +18928,14 @@ button.squisq-view-menu-radio-row:focus-visible {
18537
18928
  border-radius: 0;
18538
18929
  border-top: 1px solid var(--squisq-border-subtle);
18539
18930
  }
18540
- .squisq-block-card-body .squisq-wysiwyg-editor:has(> .squisq-block-fill-available:last-child) {
18541
- display: flex;
18542
- flex-direction: column;
18543
- box-sizing: border-box;
18544
- }
18545
- .squisq-block-card-body .squisq-wysiwyg-editor > .squisq-block-fill-available:last-child {
18546
- display: flex;
18547
- flex: 1 0 auto;
18548
- flex-direction: column;
18549
- }
18550
- .squisq-block-card-body .squisq-wysiwyg-editor > .squisq-data-card-host:last-child > .squisq-data-card,
18551
- .squisq-block-card-body .squisq-wysiwyg-editor > .squisq-data-card-host:last-child > .squisq-data-card > .squisq-data-card-grid {
18931
+ .squisq-data-card-host[data-fill-height] > .squisq-data-card[data-fills],
18932
+ .squisq-data-card-host[data-fill-height] > .squisq-data-card[data-fills] > .squisq-data-card-grid {
18552
18933
  display: flex;
18553
18934
  flex: 1 1 auto;
18554
18935
  flex-direction: column;
18555
18936
  min-height: 0;
18556
18937
  }
18557
- .squisq-block-card-body .squisq-wysiwyg-editor > .squisq-data-card-host:last-child .squisq-grid-scroller {
18938
+ .squisq-data-card-host[data-fill-height] > .squisq-data-card[data-fills] > .squisq-data-card-grid > .squisq-grid-scroller {
18558
18939
  flex: 1 1 420px;
18559
18940
  min-height: 0;
18560
18941
  }
@@ -19574,6 +19955,28 @@ button.squisq-ascii-timeline-track-name:focus-visible {
19574
19955
  margin: 4px 6px;
19575
19956
  background: var(--squisq-border-subtle);
19576
19957
  }
19958
+ .squisq-editor-context-menu-proof {
19959
+ display: flex;
19960
+ align-items: flex-start;
19961
+ gap: 7px;
19962
+ padding: 6px 10px;
19963
+ margin-bottom: 4px;
19964
+ border-bottom: 1px solid var(--squisq-border-subtle);
19965
+ color: var(--squisq-text-muted);
19966
+ font-size: 12px;
19967
+ }
19968
+ .squisq-editor-context-menu-proof .squisq-proof-dot {
19969
+ flex: 0 0 auto;
19970
+ margin-top: 3px;
19971
+ }
19972
+ .squisq-editor-context-menu-proof-empty {
19973
+ padding: 2px 10px 6px;
19974
+ color: var(--squisq-text-faint);
19975
+ font-style: italic;
19976
+ }
19977
+ .squisq-editor-context-menu-item--suggestion {
19978
+ font-weight: 600;
19979
+ }
19577
19980
  .squisq-editor-context-menu-error {
19578
19981
  max-width: 300px;
19579
19982
  padding: 6px 10px;
@@ -19797,7 +20200,8 @@ button.squisq-ascii-timeline-track-name:focus-visible {
19797
20200
  font-style: italic;
19798
20201
  }
19799
20202
  .squisq-proof-tooltip {
19800
- max-width: 320px;
20203
+ width: max-content;
20204
+ max-width: min(320px, calc(100vw - 16px));
19801
20205
  background: var(--squisq-surface-overlay);
19802
20206
  border: 1px solid var(--squisq-border);
19803
20207
  border-radius: 8px;
@@ -19887,6 +20291,55 @@ button.squisq-ascii-timeline-track-name:focus-visible {
19887
20291
  color: var(--squisq-text-strong);
19888
20292
  outline: none;
19889
20293
  }
20294
+ .squisq-proof-tooltip-link {
20295
+ display: flex;
20296
+ align-items: center;
20297
+ gap: 6px;
20298
+ margin-top: 5px;
20299
+ padding-top: 5px;
20300
+ border-top: 1px solid var(--squisq-border-subtle);
20301
+ }
20302
+ .squisq-proof-tooltip-link .squisq-proof-tooltip-action {
20303
+ flex: 0 0 auto;
20304
+ color: var(--squisq-accent-strong);
20305
+ font-weight: 600;
20306
+ }
20307
+ .squisq-proof-tooltip-link-href {
20308
+ min-width: 0;
20309
+ overflow: hidden;
20310
+ text-overflow: ellipsis;
20311
+ white-space: nowrap;
20312
+ color: var(--squisq-text-faint);
20313
+ font-size: 11px;
20314
+ }
20315
+ .squisq-proof-tooltip[data-trigger=tap] {
20316
+ max-width: min(340px, calc(100vw - 16px));
20317
+ padding: 10px 12px;
20318
+ font-size: 14px;
20319
+ }
20320
+ .squisq-proof-tooltip[data-trigger=tap] .squisq-proof-tooltip-suggestions {
20321
+ gap: 8px;
20322
+ margin-top: 8px;
20323
+ }
20324
+ .squisq-proof-tooltip[data-trigger=tap] .squisq-proof-tooltip-chip {
20325
+ min-height: 40px;
20326
+ padding: 8px 14px;
20327
+ font-size: 15px;
20328
+ }
20329
+ .squisq-proof-tooltip[data-trigger=tap] .squisq-proof-tooltip-more,
20330
+ .squisq-proof-tooltip[data-trigger=tap] .squisq-proof-tooltip-action {
20331
+ min-height: 40px;
20332
+ padding: 8px 10px;
20333
+ font-size: 13px;
20334
+ }
20335
+ .squisq-proof-tooltip[data-trigger=tap] .squisq-proof-tooltip-link-href {
20336
+ font-size: 12px;
20337
+ }
20338
+ @media (pointer: coarse) {
20339
+ .squisq-proof-menu-item {
20340
+ padding: 10px 12px;
20341
+ }
20342
+ }
19890
20343
  .squisq-proof-status {
19891
20344
  cursor: pointer;
19892
20345
  user-select: none;
@@ -19988,9 +20441,13 @@ button.squisq-ascii-timeline-track-name:focus-visible {
19988
20441
  background: var(--squisq-surface-hover);
19989
20442
  color: var(--squisq-text);
19990
20443
  }
19991
- .squisq-proof-tooltip[data-theme=dark] .squisq-proof-tooltip-actions {
20444
+ .squisq-proof-tooltip[data-theme=dark] .squisq-proof-tooltip-actions,
20445
+ .squisq-proof-tooltip[data-theme=dark] .squisq-proof-tooltip-link {
19992
20446
  border-top-color: var(--squisq-border-subtle);
19993
20447
  }
20448
+ .squisq-proof-tooltip[data-theme=dark] .squisq-proof-tooltip-link .squisq-proof-tooltip-action {
20449
+ color: var(--squisq-accent-strong);
20450
+ }
19994
20451
  .squisq-review-panel {
19995
20452
  width: 260px;
19996
20453
  flex: 0 0 260px;
@@ -20758,6 +21215,18 @@ button.squisq-ascii-timeline-track-name:focus-visible {
20758
21215
  overflow: hidden;
20759
21216
  background: var(--squisq-surface);
20760
21217
  }
21218
+ .squisq-block-fill-available[data-fill-height] > .squisq-scene-shell {
21219
+ display: flex;
21220
+ flex: 1 1 auto;
21221
+ flex-direction: column;
21222
+ min-height: 0;
21223
+ }
21224
+ .squisq-block-fill-available[data-fill-height] > .squisq-scene-shell > .squisq-scene-inline,
21225
+ .squisq-block-fill-available[data-fill-height] > .squisq-scene-shell > .squisq-diagram-inline:not([data-height-pinned]) {
21226
+ flex: 1 1 420px;
21227
+ height: auto;
21228
+ min-height: 0;
21229
+ }
20761
21230
  .squisq-scene-inline-placeholder {
20762
21231
  height: 420px;
20763
21232
  border: 1px dashed var(--squisq-border);
@@ -2,8 +2,8 @@ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { Doc, Theme, MediaProvider } from '@bendyline/squisq/schemas';
4
4
  import { ContentContainer } from '@bendyline/squisq/storage';
5
- import { o as TeleprompterRecordingDeps, g as NarrationStageHandle, T as TeleprompterController, c as FloatingWindowHandle } from '../useNarrationStage-DlighI1z.js';
6
- export { C as CanvasSink, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, h as NarrationTake, P as PrompterTransport, J as TELEPROMPTER_PREF_LIMITS, n as TeleprompterPrefs, q as UseNarrationStageOptions, s as createFloatingWindowManager, t as detectFloatTiers, K as normalizeTeleprompterPrefs, z as useFloatingWindow, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from '../useNarrationStage-DlighI1z.js';
5
+ import { o as TeleprompterRecordingDeps, g as NarrationStageHandle, T as TeleprompterController, c as FloatingWindowHandle } from '../useNarrationStage-BsSUp9Zr.js';
6
+ export { C as CanvasSink, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, h as NarrationTake, P as PrompterTransport, J as TELEPROMPTER_PREF_LIMITS, n as TeleprompterPrefs, q as UseNarrationStageOptions, s as createFloatingWindowManager, t as detectFloatTiers, K as normalizeTeleprompterPrefs, z as useFloatingWindow, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from '../useNarrationStage-BsSUp9Zr.js';
7
7
  import { NarrationTimingJsonV3, NarrationScript, NarrationAlignment, NarrationTimingGenerator } from '@bendyline/squisq/narration';
8
8
  import '../screenRegion-Ci_RsCzG.js';
9
9
 
@@ -312,6 +312,6 @@ declare function stepScroll(currentPx: number, targetPx: number, dtMs: number, m
312
312
  declare function prompterVarsFromTheme(theme: Theme): Record<string, string>;
313
313
  /** Inject {@link TELEPROMPTER_CSS} into a document once (main doc or a float window). */
314
314
  declare function ensureTeleprompterStyles(doc: Document): void;
315
- declare const TELEPROMPTER_CSS = "\n.squisq-teleprompter-root {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n background: var(--squisq-bg, #f5f5f5);\n outline: none;\n}\n.squisq-teleprompter-stage {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n}\n\n.squisq-teleprompter-surface {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n background: var(--squisq-prompter-bg, #101014);\n color: var(--squisq-prompter-text, #f5f5f2);\n font-family: var(--squisq-prompter-font, system-ui, sans-serif);\n user-select: none;\n}\n.squisq-teleprompter-flip {\n position: absolute;\n inset: 0;\n}\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-flip {\n transform: scaleX(-1);\n}\n.squisq-teleprompter-scroll {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n will-change: transform;\n padding: 40vh 8% 60vh;\n box-sizing: border-box;\n}\n.squisq-teleprompter-line-guide {\n position: absolute;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 2;\n}\n.squisq-teleprompter-line-guide::before,\n.squisq-teleprompter-line-guide::after {\n content: '';\n position: absolute;\n top: 50%;\n border: 9px solid transparent;\n transform: translateY(-50%);\n}\n.squisq-teleprompter-line-guide::before {\n left: 6px;\n border-left-color: var(--squisq-prompter-accent, #e8b64c);\n}\n.squisq-teleprompter-line-guide::after {\n right: 6px;\n border-right-color: var(--squisq-prompter-accent, #e8b64c);\n}\n.squisq-teleprompter-guide-band {\n position: absolute;\n left: 0;\n right: 0;\n background: color-mix(in srgb, var(--squisq-prompter-accent, #e8b64c) 9%, transparent);\n pointer-events: none;\n z-index: 1;\n}\n\n.squisq-teleprompter-block-marker {\n display: block;\n margin: 1.1em 0 0.35em;\n font-size: 0.38em;\n font-weight: 600;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--squisq-prompter-muted, #9a9aa0);\n border-top: 1px solid color-mix(in srgb, var(--squisq-prompter-muted, #9a9aa0) 35%, transparent);\n padding-top: 0.6em;\n}\n.squisq-teleprompter-para {\n margin: 0 0 0.55em;\n line-height: 1.4;\n font-weight: 500;\n}\n.squisq-teleprompter-word {\n opacity: 0.45;\n transition: color 0.1s linear, opacity 0.1s linear;\n}\n.squisq-teleprompter-word--read {\n opacity: 0.9;\n}\n.squisq-teleprompter-word--active {\n opacity: 1;\n font-weight: 800;\n color: var(--squisq-prompter-accent, #e8b64c);\n}\n\n.squisq-teleprompter-countdown {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 3;\n background: color-mix(in srgb, var(--squisq-prompter-bg, #101014) 72%, transparent);\n}\n.squisq-teleprompter-countdown-digit {\n font-size: 18vmin;\n font-weight: 800;\n color: var(--squisq-prompter-accent, #e8b64c);\n animation: squisq-prompter-pulse 1s ease-in-out infinite;\n}\n.squisq-teleprompter-recdot {\n position: absolute;\n top: 14px;\n right: 16px;\n z-index: 4;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #e5484d;\n box-shadow: 0 0 0 3px color-mix(in srgb, #e5484d 30%, transparent);\n animation: squisq-prompter-pulse 1.4s ease-in-out infinite;\n}\n/* Counter-flip overlays so they stay readable in mirror mode. */\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-countdown,\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-recdot {\n transform: scaleX(-1);\n}\n\n.squisq-teleprompter-selfview {\n position: absolute;\n right: 14px;\n bottom: 14px;\n width: 160px;\n border-radius: 8px;\n border: 2px solid color-mix(in srgb, #e5484d 60%, transparent);\n z-index: 5;\n background: #000;\n}\n\n.squisq-teleprompter-review {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n padding: 8px 12px;\n border-top: 1px solid var(--squisq-border, #e5e7eb);\n background: var(--squisq-surface, var(--squisq-bg, #fff));\n color: var(--squisq-text, #111827);\n font-size: 12.5px;\n}\n.squisq-teleprompter-review audio {\n height: 28px;\n max-width: 260px;\n}\n.squisq-teleprompter-review button {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n padding: 4px 10px;\n cursor: pointer;\n}\n\n.squisq-teleprompter-float-note {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n color: var(--squisq-text-muted, #4b5563);\n font-size: 14px;\n}\n\n.squisq-teleprompter-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n padding: 8px 12px;\n border-top: 1px solid var(--squisq-border, #e5e7eb);\n background: var(--squisq-surface, var(--squisq-bg, #fff));\n color: var(--squisq-text, #111827);\n font-size: 12.5px;\n}\n.squisq-teleprompter-controls .squisq-teleprompter-group {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n white-space: nowrap;\n}\n.squisq-teleprompter-controls button {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n padding: 4px 10px;\n cursor: pointer;\n}\n.squisq-teleprompter-controls button:hover {\n background: var(--squisq-surface-hover, #f3f4f6);\n}\n.squisq-teleprompter-controls button[aria-pressed='true'] {\n background: var(--squisq-text, #111827);\n color: var(--squisq-bg, #fff);\n border-color: var(--squisq-text, #111827);\n}\n.squisq-teleprompter-controls select,\n.squisq-teleprompter-controls input[type='range'] {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n max-width: 170px;\n}\n.squisq-teleprompter-controls input[type='range'] {\n border: none;\n background: transparent;\n width: 110px;\n}\n.squisq-teleprompter-meter {\n position: relative;\n width: 64px;\n height: 8px;\n border-radius: 4px;\n overflow: hidden;\n background: var(--squisq-border, #e5e7eb);\n}\n.squisq-teleprompter-meter-fill {\n position: absolute;\n inset: 0 auto 0 0;\n background: #9ca3af;\n transition: width 0.08s linear;\n}\n.squisq-teleprompter-meter--voice .squisq-teleprompter-meter-fill {\n background: #30a46c;\n}\n\n@keyframes squisq-prompter-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n@media (prefers-reduced-motion: reduce) {\n .squisq-teleprompter-countdown-digit,\n .squisq-teleprompter-recdot {\n animation: none;\n }\n .squisq-teleprompter-word {\n transition: none;\n }\n}\n";
315
+ declare const TELEPROMPTER_CSS = "\n.squisq-teleprompter-root {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n background: var(--squisq-bg, #f5f5f5);\n outline: none;\n}\n.squisq-teleprompter-stage {\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n}\n\n.squisq-teleprompter-surface {\n position: relative;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n background: var(--squisq-prompter-bg, #101014);\n color: var(--squisq-prompter-text, #f5f5f2);\n font-family: var(--squisq-prompter-font, system-ui, sans-serif);\n user-select: none;\n}\n.squisq-teleprompter-flip {\n position: absolute;\n inset: 0;\n}\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-flip {\n transform: scaleX(-1);\n}\n.squisq-teleprompter-scroll {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n will-change: transform;\n padding: 40vh 8% 60vh;\n box-sizing: border-box;\n}\n.squisq-teleprompter-line-guide {\n position: absolute;\n left: 0;\n right: 0;\n pointer-events: none;\n z-index: 2;\n}\n.squisq-teleprompter-line-guide::before,\n.squisq-teleprompter-line-guide::after {\n content: '';\n position: absolute;\n top: 50%;\n border: 9px solid transparent;\n transform: translateY(-50%);\n}\n.squisq-teleprompter-line-guide::before {\n left: 6px;\n border-left-color: var(--squisq-prompter-accent, #e8b64c);\n}\n.squisq-teleprompter-line-guide::after {\n right: 6px;\n border-right-color: var(--squisq-prompter-accent, #e8b64c);\n}\n.squisq-teleprompter-guide-band {\n position: absolute;\n left: 0;\n right: 0;\n background: color-mix(in srgb, var(--squisq-prompter-accent, #e8b64c) 9%, transparent);\n pointer-events: none;\n z-index: 1;\n}\n\n.squisq-teleprompter-block-marker {\n display: block;\n margin: 1.1em 0 0.35em;\n font-size: 0.38em;\n font-weight: 600;\n letter-spacing: 0.14em;\n text-transform: uppercase;\n color: var(--squisq-prompter-muted, #9a9aa0);\n border-top: 1px solid color-mix(in srgb, var(--squisq-prompter-muted, #9a9aa0) 35%, transparent);\n padding-top: 0.6em;\n}\n.squisq-teleprompter-para {\n margin: 0 0 0.55em;\n line-height: 1.4;\n font-weight: 500;\n}\n.squisq-teleprompter-word {\n opacity: 0.45;\n transition: color 0.1s linear, opacity 0.1s linear;\n}\n.squisq-teleprompter-word--read {\n opacity: 0.9;\n}\n.squisq-teleprompter-word--active {\n opacity: 1;\n font-weight: 800;\n color: var(--squisq-prompter-accent, #e8b64c);\n}\n\n.squisq-teleprompter-countdown {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 3;\n background: color-mix(in srgb, var(--squisq-prompter-bg, #101014) 72%, transparent);\n}\n.squisq-teleprompter-countdown-digit {\n font-size: 18vmin;\n font-weight: 800;\n color: var(--squisq-prompter-accent, #e8b64c);\n animation: squisq-prompter-pulse 1s ease-in-out infinite;\n}\n.squisq-teleprompter-recdot {\n position: absolute;\n top: 14px;\n right: 16px;\n z-index: 4;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #e5484d;\n box-shadow: 0 0 0 3px color-mix(in srgb, #e5484d 30%, transparent);\n animation: squisq-prompter-pulse 1.4s ease-in-out infinite;\n}\n/* Counter-flip overlays so they stay readable in mirror mode. */\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-countdown,\n.squisq-teleprompter-surface--mirrored .squisq-teleprompter-recdot {\n transform: scaleX(-1);\n}\n\n.squisq-teleprompter-selfview {\n position: absolute;\n right: 14px;\n bottom: 14px;\n width: 160px;\n border-radius: 8px;\n border: 2px solid color-mix(in srgb, #e5484d 60%, transparent);\n z-index: 5;\n background: #000;\n}\n\n.squisq-teleprompter-review {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n padding: 8px 12px;\n border-top: 1px solid var(--squisq-border, #e5e7eb);\n background: var(--squisq-surface, var(--squisq-bg, #fff));\n color: var(--squisq-text, #111827);\n font-size: 12.5px;\n}\n.squisq-teleprompter-review audio {\n height: 28px;\n max-width: 260px;\n}\n.squisq-teleprompter-review button {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n padding: 4px 10px;\n cursor: pointer;\n}\n\n.squisq-teleprompter-float-note {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n color: var(--squisq-text-muted, #4b5563);\n font-size: 14px;\n}\n\n.squisq-teleprompter-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 10px;\n padding: 8px 12px;\n border-top: 1px solid var(--squisq-border, #e5e7eb);\n background: var(--squisq-surface, var(--squisq-bg, #fff));\n color: var(--squisq-text, #111827);\n font-size: 12.5px;\n}\n.squisq-teleprompter-controls .squisq-teleprompter-group {\n display: inline-flex;\n align-items: center;\n /* Voice pace (button, sensitivity, microphone, meter) is wider than a\n phone; wrap within the group rather than run off the bar. */\n flex-wrap: wrap;\n max-width: 100%;\n gap: 6px;\n white-space: nowrap;\n}\n.squisq-teleprompter-controls button {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n padding: 4px 10px;\n cursor: pointer;\n}\n.squisq-teleprompter-controls button:hover {\n background: var(--squisq-surface-hover, #f3f4f6);\n}\n.squisq-teleprompter-controls button[aria-pressed='true'] {\n background: var(--squisq-text, #111827);\n color: var(--squisq-bg, #fff);\n border-color: var(--squisq-text, #111827);\n}\n.squisq-teleprompter-controls select,\n.squisq-teleprompter-controls input[type='range'] {\n font: inherit;\n color: inherit;\n background: var(--squisq-input-bg, #fff);\n border: 1px solid var(--squisq-border, #d1d5db);\n border-radius: 6px;\n max-width: 170px;\n}\n.squisq-teleprompter-controls input[type='range'] {\n border: none;\n background: transparent;\n width: 110px;\n}\n.squisq-teleprompter-meter {\n position: relative;\n width: 64px;\n height: 8px;\n border-radius: 4px;\n overflow: hidden;\n background: var(--squisq-border, #e5e7eb);\n}\n.squisq-teleprompter-meter-fill {\n position: absolute;\n inset: 0 auto 0 0;\n background: #9ca3af;\n transition: width 0.08s linear;\n}\n.squisq-teleprompter-meter--voice .squisq-teleprompter-meter-fill {\n background: #30a46c;\n}\n\n@keyframes squisq-prompter-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.45; }\n}\n@media (prefers-reduced-motion: reduce) {\n .squisq-teleprompter-countdown-digit,\n .squisq-teleprompter-recdot {\n animation: none;\n }\n .squisq-teleprompter-word {\n transition: none;\n }\n}\n";
316
316
 
317
317
  export { EYE_LINE_FRACTION, type ExecuteNarrationSaveDeps, FloatingWindowHandle, type NarrationSavePlan, type NarrationSavePlanArgs, type NarrationSaveProgress, type NarrationSaveResult, NarrationStage, NarrationStageHandle, type NarrationStageProps, PCM_WORKLET_NAME, PCM_WORKLET_SOURCE, TELEPROMPTER_CSS, TeleprompterController, TeleprompterControls, type TeleprompterControlsProps, TeleprompterRecordingDeps, TeleprompterSurface, type TeleprompterSurfaceProps, TeleprompterView, type TeleprompterViewProps, type TokenLineMap, buildNarrationSavePlan, cameraVideoLine, ensureTeleprompterStyles, executeNarrationSave, insertNarrationPreamble, measureTokenLines, narrationAnnotationLine, prompterVarsFromTheme, registerPcmWorklet, stepScroll, targetOffsetFor };