@lofcz/pptist 2.0.24 → 2.0.26

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.
@@ -9,6 +9,8 @@ type __VLS_Props = {
9
9
  lineHeight?: number;
10
10
  letterSpacing?: number;
11
11
  maxLines?: number;
12
+ /** Extra px allowed in the height fit check (underline / descenders). */
13
+ measureHeightSlack?: number;
12
14
  };
13
15
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
16
  lineHeight: number;
@@ -20,6 +22,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
20
22
  textDecoration: string;
21
23
  maxFontSize: number;
22
24
  minFontSize: number;
25
+ measureHeightSlack: number;
23
26
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
27
  declare const _default: typeof __VLS_export;
25
28
  export default _default;
@@ -5,6 +5,8 @@ type __VLS_Props = {
5
5
  min?: number;
6
6
  max?: number;
7
7
  step?: number;
8
+ /** Shrink prefix label to one line via FitText in the prefix slot. */
9
+ fitPrefix?: boolean;
8
10
  };
9
11
  declare var __VLS_1: {}, __VLS_3: {};
10
12
  type __VLS_Slots = {} & {
@@ -32,6 +34,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
32
34
  placeholder: string;
33
35
  disabled: boolean;
34
36
  step: number;
37
+ fitPrefix: boolean;
35
38
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
36
39
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
37
40
  declare const _default: typeof __VLS_export;
@@ -57,6 +57,10 @@ export type NamespaceCanvasTranslation = {
57
57
  * B​o​r​d​e​r​ ​w​i​d​t​h​:
58
58
  */
59
59
  widthLabel: string;
60
+ /**
61
+ * B​o​r​d​e​r​ ​r​a​d​i​u​s​:
62
+ */
63
+ radiusLabel: string;
60
64
  };
61
65
  chart: {
62
66
  /**
@@ -2474,6 +2478,10 @@ export type NamespaceEditorTranslation = {
2474
2478
  * B​o​r​d​e​r​ ​w​i​d​t​h​:
2475
2479
  */
2476
2480
  borderWidth: string;
2481
+ /**
2482
+ * B​o​r​d​e​r​ ​r​a​d​i​u​s​:
2483
+ */
2484
+ borderRadius: string;
2477
2485
  /**
2478
2486
  * S​e​a​r​c​h​ ​f​o​n​t​s
2479
2487
  */
@@ -4660,6 +4668,10 @@ export type TranslationFunctions = {
4660
4668
  * Border width:
4661
4669
  */
4662
4670
  widthLabel: () => LocalizedString;
4671
+ /**
4672
+ * Border radius:
4673
+ */
4674
+ radiusLabel: () => LocalizedString;
4663
4675
  };
4664
4676
  chart: {
4665
4677
  /**
@@ -7084,6 +7096,10 @@ export type TranslationFunctions = {
7084
7096
  * Border width:
7085
7097
  */
7086
7098
  borderWidth: () => LocalizedString;
7099
+ /**
7100
+ * Border radius:
7101
+ */
7102
+ borderRadius: () => LocalizedString;
7087
7103
  /**
7088
7104
  * Search fonts
7089
7105
  */
@@ -96,7 +96,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
96
96
  fontsize: string;
97
97
  fontname: string;
98
98
  link: string;
99
- align: "left" | "center" | "right";
99
+ align: import("../embed").TextAlign;
100
100
  bulletList: boolean;
101
101
  orderedList: boolean;
102
102
  blockquote: boolean;
@@ -115,7 +115,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
115
115
  backcolor?: string | undefined;
116
116
  fontsize?: string | undefined;
117
117
  fontname?: string | undefined;
118
- align?: "left" | "right" | "center" | undefined;
118
+ align?: import("../embed").TextAlign | undefined;
119
119
  } | null;
120
120
  shapeFormatPainter: {
121
121
  keep: boolean;
@@ -132,6 +132,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
132
132
  style?: import("../types/slides").LineStyleType | undefined;
133
133
  width?: number | undefined;
134
134
  color?: string | undefined;
135
+ radius?: number | undefined;
135
136
  } | undefined;
136
137
  opacity?: number | undefined;
137
138
  shadow?: {
@@ -157,10 +158,12 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
157
158
  placeholderFontSize?: number | undefined;
158
159
  placeholderColor?: string | undefined;
159
160
  placeholderAlign?: import("../embed").TextAlign | undefined;
161
+ placeholderLayoutHeight?: number | undefined;
160
162
  outline?: {
161
163
  style?: import("../types/slides").LineStyleType | undefined;
162
164
  width?: number | undefined;
163
165
  color?: string | undefined;
166
+ radius?: number | undefined;
164
167
  } | undefined;
165
168
  fill?: string | undefined;
166
169
  lineHeight?: number | undefined;
@@ -199,6 +202,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
199
202
  style?: import("../types/slides").LineStyleType | undefined;
200
203
  width?: number | undefined;
201
204
  color?: string | undefined;
205
+ radius?: number | undefined;
202
206
  } | undefined;
203
207
  filters?: {
204
208
  blur?: string | undefined;
@@ -258,6 +262,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
258
262
  style?: import("../types/slides").LineStyleType | undefined;
259
263
  width?: number | undefined;
260
264
  color?: string | undefined;
265
+ radius?: number | undefined;
261
266
  } | undefined;
262
267
  opacity?: number | undefined;
263
268
  flipH?: boolean | undefined;
@@ -341,6 +346,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
341
346
  style?: import("../types/slides").LineStyleType | undefined;
342
347
  width?: number | undefined;
343
348
  color?: string | undefined;
349
+ radius?: number | undefined;
344
350
  } | undefined;
345
351
  themeColors: string[];
346
352
  textColor?: string | undefined;
@@ -364,6 +370,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
364
370
  style?: import("../types/slides").LineStyleType | undefined;
365
371
  width?: number | undefined;
366
372
  color?: string | undefined;
373
+ radius?: number | undefined;
367
374
  };
368
375
  theme?: {
369
376
  color: string;
@@ -525,7 +532,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
525
532
  fontsize: string;
526
533
  fontname: string;
527
534
  link: string;
528
- align: "left" | "center" | "right";
535
+ align: import("../embed").TextAlign;
529
536
  bulletList: boolean;
530
537
  orderedList: boolean;
531
538
  blockquote: boolean;
@@ -544,7 +551,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
544
551
  backcolor?: string | undefined;
545
552
  fontsize?: string | undefined;
546
553
  fontname?: string | undefined;
547
- align?: "left" | "right" | "center" | undefined;
554
+ align?: import("../embed").TextAlign | undefined;
548
555
  } | null;
549
556
  shapeFormatPainter: {
550
557
  keep: boolean;
@@ -561,6 +568,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
561
568
  style?: import("../types/slides").LineStyleType | undefined;
562
569
  width?: number | undefined;
563
570
  color?: string | undefined;
571
+ radius?: number | undefined;
564
572
  } | undefined;
565
573
  opacity?: number | undefined;
566
574
  shadow?: {
@@ -586,10 +594,12 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
586
594
  placeholderFontSize?: number | undefined;
587
595
  placeholderColor?: string | undefined;
588
596
  placeholderAlign?: import("../embed").TextAlign | undefined;
597
+ placeholderLayoutHeight?: number | undefined;
589
598
  outline?: {
590
599
  style?: import("../types/slides").LineStyleType | undefined;
591
600
  width?: number | undefined;
592
601
  color?: string | undefined;
602
+ radius?: number | undefined;
593
603
  } | undefined;
594
604
  fill?: string | undefined;
595
605
  lineHeight?: number | undefined;
@@ -628,6 +638,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
628
638
  style?: import("../types/slides").LineStyleType | undefined;
629
639
  width?: number | undefined;
630
640
  color?: string | undefined;
641
+ radius?: number | undefined;
631
642
  } | undefined;
632
643
  filters?: {
633
644
  blur?: string | undefined;
@@ -687,6 +698,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
687
698
  style?: import("../types/slides").LineStyleType | undefined;
688
699
  width?: number | undefined;
689
700
  color?: string | undefined;
701
+ radius?: number | undefined;
690
702
  } | undefined;
691
703
  opacity?: number | undefined;
692
704
  flipH?: boolean | undefined;
@@ -770,6 +782,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
770
782
  style?: import("../types/slides").LineStyleType | undefined;
771
783
  width?: number | undefined;
772
784
  color?: string | undefined;
785
+ radius?: number | undefined;
773
786
  } | undefined;
774
787
  themeColors: string[];
775
788
  textColor?: string | undefined;
@@ -793,6 +806,7 @@ export declare const useMainStore: import("pinia").StoreDefinition<"main", MainS
793
806
  style?: import("../types/slides").LineStyleType | undefined;
794
807
  width?: number | undefined;
795
808
  color?: string | undefined;
809
+ radius?: number | undefined;
796
810
  };
797
811
  theme?: {
798
812
  color: string;
@@ -34,6 +34,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
34
34
  style?: import("../types/slides").LineStyleType | undefined;
35
35
  width?: number | undefined;
36
36
  color?: string | undefined;
37
+ radius?: number | undefined;
37
38
  };
38
39
  shadow: {
39
40
  h: number;
@@ -54,10 +55,12 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
54
55
  placeholderFontSize?: number | undefined;
55
56
  placeholderColor?: string | undefined;
56
57
  placeholderAlign?: import("../types/slides").TextAlign | undefined;
58
+ placeholderLayoutHeight?: number | undefined;
57
59
  outline?: {
58
60
  style?: import("../types/slides").LineStyleType | undefined;
59
61
  width?: number | undefined;
60
62
  color?: string | undefined;
63
+ radius?: number | undefined;
61
64
  } | undefined;
62
65
  fill?: string | undefined;
63
66
  lineHeight?: number | undefined;
@@ -96,6 +99,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
96
99
  style?: import("../types/slides").LineStyleType | undefined;
97
100
  width?: number | undefined;
98
101
  color?: string | undefined;
102
+ radius?: number | undefined;
99
103
  } | undefined;
100
104
  filters?: {
101
105
  blur?: string | undefined;
@@ -155,6 +159,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
155
159
  style?: import("../types/slides").LineStyleType | undefined;
156
160
  width?: number | undefined;
157
161
  color?: string | undefined;
162
+ radius?: number | undefined;
158
163
  } | undefined;
159
164
  opacity?: number | undefined;
160
165
  flipH?: boolean | undefined;
@@ -238,6 +243,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
238
243
  style?: import("../types/slides").LineStyleType | undefined;
239
244
  width?: number | undefined;
240
245
  color?: string | undefined;
246
+ radius?: number | undefined;
241
247
  } | undefined;
242
248
  themeColors: string[];
243
249
  textColor?: string | undefined;
@@ -261,6 +267,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
261
267
  style?: import("../types/slides").LineStyleType | undefined;
262
268
  width?: number | undefined;
263
269
  color?: string | undefined;
270
+ radius?: number | undefined;
264
271
  };
265
272
  theme?: {
266
273
  color: string;
@@ -429,10 +436,12 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
429
436
  placeholderFontSize?: number | undefined;
430
437
  placeholderColor?: string | undefined;
431
438
  placeholderAlign?: import("../types/slides").TextAlign | undefined;
439
+ placeholderLayoutHeight?: number | undefined;
432
440
  outline?: {
433
441
  style?: import("../types/slides").LineStyleType | undefined;
434
442
  width?: number | undefined;
435
443
  color?: string | undefined;
444
+ radius?: number | undefined;
436
445
  } | undefined;
437
446
  fill?: string | undefined;
438
447
  lineHeight?: number | undefined;
@@ -471,6 +480,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
471
480
  style?: import("../types/slides").LineStyleType | undefined;
472
481
  width?: number | undefined;
473
482
  color?: string | undefined;
483
+ radius?: number | undefined;
474
484
  } | undefined;
475
485
  filters?: {
476
486
  blur?: string | undefined;
@@ -530,6 +540,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
530
540
  style?: import("../types/slides").LineStyleType | undefined;
531
541
  width?: number | undefined;
532
542
  color?: string | undefined;
543
+ radius?: number | undefined;
533
544
  } | undefined;
534
545
  opacity?: number | undefined;
535
546
  flipH?: boolean | undefined;
@@ -613,6 +624,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
613
624
  style?: import("../types/slides").LineStyleType | undefined;
614
625
  width?: number | undefined;
615
626
  color?: string | undefined;
627
+ radius?: number | undefined;
616
628
  } | undefined;
617
629
  themeColors: string[];
618
630
  textColor?: string | undefined;
@@ -636,6 +648,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
636
648
  style?: import("../types/slides").LineStyleType | undefined;
637
649
  width?: number | undefined;
638
650
  color?: string | undefined;
651
+ radius?: number | undefined;
639
652
  };
640
653
  theme?: {
641
654
  color: string;
@@ -795,6 +808,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
795
808
  style?: import("../types/slides").LineStyleType | undefined;
796
809
  width?: number | undefined;
797
810
  color?: string | undefined;
811
+ radius?: number | undefined;
798
812
  };
799
813
  shadow: {
800
814
  h: number;
@@ -815,10 +829,12 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
815
829
  placeholderFontSize?: number | undefined;
816
830
  placeholderColor?: string | undefined;
817
831
  placeholderAlign?: import("../types/slides").TextAlign | undefined;
832
+ placeholderLayoutHeight?: number | undefined;
818
833
  outline?: {
819
834
  style?: import("../types/slides").LineStyleType | undefined;
820
835
  width?: number | undefined;
821
836
  color?: string | undefined;
837
+ radius?: number | undefined;
822
838
  } | undefined;
823
839
  fill?: string | undefined;
824
840
  lineHeight?: number | undefined;
@@ -857,6 +873,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
857
873
  style?: import("../types/slides").LineStyleType | undefined;
858
874
  width?: number | undefined;
859
875
  color?: string | undefined;
876
+ radius?: number | undefined;
860
877
  } | undefined;
861
878
  filters?: {
862
879
  blur?: string | undefined;
@@ -916,6 +933,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
916
933
  style?: import("../types/slides").LineStyleType | undefined;
917
934
  width?: number | undefined;
918
935
  color?: string | undefined;
936
+ radius?: number | undefined;
919
937
  } | undefined;
920
938
  opacity?: number | undefined;
921
939
  flipH?: boolean | undefined;
@@ -999,6 +1017,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
999
1017
  style?: import("../types/slides").LineStyleType | undefined;
1000
1018
  width?: number | undefined;
1001
1019
  color?: string | undefined;
1020
+ radius?: number | undefined;
1002
1021
  } | undefined;
1003
1022
  themeColors: string[];
1004
1023
  textColor?: string | undefined;
@@ -1022,6 +1041,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1022
1041
  style?: import("../types/slides").LineStyleType | undefined;
1023
1042
  width?: number | undefined;
1024
1043
  color?: string | undefined;
1044
+ radius?: number | undefined;
1025
1045
  };
1026
1046
  theme?: {
1027
1047
  color: string;
@@ -1198,6 +1218,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1198
1218
  style?: import("../types/slides").LineStyleType | undefined;
1199
1219
  width?: number | undefined;
1200
1220
  color?: string | undefined;
1221
+ radius?: number | undefined;
1201
1222
  };
1202
1223
  shadow: {
1203
1224
  h: number;
@@ -1218,10 +1239,12 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1218
1239
  placeholderFontSize?: number | undefined;
1219
1240
  placeholderColor?: string | undefined;
1220
1241
  placeholderAlign?: import("../types/slides").TextAlign | undefined;
1242
+ placeholderLayoutHeight?: number | undefined;
1221
1243
  outline?: {
1222
1244
  style?: import("../types/slides").LineStyleType | undefined;
1223
1245
  width?: number | undefined;
1224
1246
  color?: string | undefined;
1247
+ radius?: number | undefined;
1225
1248
  } | undefined;
1226
1249
  fill?: string | undefined;
1227
1250
  lineHeight?: number | undefined;
@@ -1260,6 +1283,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1260
1283
  style?: import("../types/slides").LineStyleType | undefined;
1261
1284
  width?: number | undefined;
1262
1285
  color?: string | undefined;
1286
+ radius?: number | undefined;
1263
1287
  } | undefined;
1264
1288
  filters?: {
1265
1289
  blur?: string | undefined;
@@ -1319,6 +1343,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1319
1343
  style?: import("../types/slides").LineStyleType | undefined;
1320
1344
  width?: number | undefined;
1321
1345
  color?: string | undefined;
1346
+ radius?: number | undefined;
1322
1347
  } | undefined;
1323
1348
  opacity?: number | undefined;
1324
1349
  flipH?: boolean | undefined;
@@ -1402,6 +1427,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1402
1427
  style?: import("../types/slides").LineStyleType | undefined;
1403
1428
  width?: number | undefined;
1404
1429
  color?: string | undefined;
1430
+ radius?: number | undefined;
1405
1431
  } | undefined;
1406
1432
  themeColors: string[];
1407
1433
  textColor?: string | undefined;
@@ -1425,6 +1451,7 @@ export declare const useSlidesStore: import("pinia").StoreDefinition<"slides", S
1425
1451
  style?: import("../types/slides").LineStyleType | undefined;
1426
1452
  width?: number | undefined;
1427
1453
  color?: string | undefined;
1454
+ radius?: number | undefined;
1428
1455
  };
1429
1456
  theme?: {
1430
1457
  color: string;
@@ -1,6 +1,6 @@
1
1
  import type { ShapePoolItem } from '../configs/shapes';
2
2
  import type { LinePoolItem } from '../configs/lines';
3
- import type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, Gradient } from './slides';
3
+ import type { ImageClipDataRange, PPTElementOutline, PPTElementShadow, Gradient, TextAlign } from './slides';
4
4
  export declare enum ElementOrderCommands {
5
5
  UP = "up",
6
6
  DOWN = "down",
@@ -99,7 +99,7 @@ export interface TextFormatPainter {
99
99
  backcolor?: string;
100
100
  fontsize?: string;
101
101
  fontname?: string;
102
- align?: 'left' | 'right' | 'center';
102
+ align?: TextAlign;
103
103
  }
104
104
  export interface ShapeFormatPainter {
105
105
  keep: boolean;
@@ -77,11 +77,14 @@ export interface PPTElementShadow {
77
77
  * width?: 边框宽度
78
78
  *
79
79
  * color?: 边框颜色
80
+ *
81
+ * radius?: 圆角半径(px)
80
82
  */
81
83
  export interface PPTElementOutline {
82
84
  style?: LineStyleType;
83
85
  width?: number;
84
86
  color?: string;
87
+ radius?: number;
85
88
  }
86
89
  export type ElementLinkType = 'web' | 'slide';
87
90
  /**
@@ -178,6 +181,8 @@ export interface PPTTextElement extends PPTBaseElement {
178
181
  placeholderFontSize?: number;
179
182
  placeholderColor?: string;
180
183
  placeholderAlign?: TextAlign;
184
+ /** Empty-state layout height; frozen at creation, not updated when content grows. */
185
+ placeholderLayoutHeight?: number;
181
186
  outline?: PPTElementOutline;
182
187
  fill?: string;
183
188
  lineHeight?: number;
@@ -95,6 +95,7 @@ export declare const rotateRectLikeElement: (element: Exclude<PPTElement, PPTLin
95
95
  placeholderFontSize?: number;
96
96
  placeholderColor?: string;
97
97
  placeholderAlign?: import("../types/slides").TextAlign;
98
+ placeholderLayoutHeight?: number;
98
99
  outline?: import("../types/slides").PPTElementOutline;
99
100
  fill?: string;
100
101
  lineHeight?: number;
@@ -0,0 +1,21 @@
1
+ import type { LineStyleType, PPTElementOutline } from '../types/slides';
2
+ /** Clamp corner radius to half the shorter box side. */
3
+ export declare const clampOutlineRadius: (radius: number, width: number, height: number) => number;
4
+ export declare const outlineRadiusCss: (radius: number | undefined, width: number, height: number) => string | undefined;
5
+ /** SVG path for a rectangular outline (optionally rounded). */
6
+ export declare const roundedRectOutlinePath: (width: number, height: number, radius?: number) => string;
7
+ /** pptxgenjs `rectRadius` is 0–1 relative to the shorter side. */
8
+ export declare const outlineRadiusToPptxRectRadius: (radius: number, width: number, height: number) => number;
9
+ interface PptxOutlineSource {
10
+ borderColor?: string;
11
+ borderWidth?: number;
12
+ borderType?: LineStyleType;
13
+ shapType?: string;
14
+ keypoints?: Record<string, number>;
15
+ width: number;
16
+ height: number;
17
+ }
18
+ export declare const importOutlineFromPptx: (el: PptxOutlineSource, ratio: number, options?: {
19
+ includeCornerRadius?: boolean;
20
+ }) => PPTElementOutline;
21
+ export {};
@@ -0,0 +1,32 @@
1
+ import type { PPTTextElement, Slide, TextAlignVertical, TextInset } from '../types/slides';
2
+ export interface PlaceholderBoxMetrics {
3
+ placeholderFontSize?: number;
4
+ lineHeight?: number;
5
+ inset?: TextInset;
6
+ /** Lines of placeholder-sized text the box should fit (default 1). */
7
+ lines?: number;
8
+ paragraphSpace?: number;
9
+ }
10
+ /**
11
+ * Minimum box height from placeholder typography: vertical inset + text lines at
12
+ * placeholderFontSize × lineHeight (+ paragraph gaps between lines).
13
+ */
14
+ export declare const computePlaceholderMinBoxHeight: (metrics?: PlaceholderBoxMetrics) => number;
15
+ /** Fixed empty-state box height set at placeholder creation (never grows with content). */
16
+ export declare const getPlaceholderBaselineHeight: (el: PPTTextElement) => number;
17
+ export declare const isPlaceholderElement: (el: PPTTextElement) => boolean;
18
+ /** Title placeholder on content slides (slide 2+): left-aligned, vertically centered in the layout box. */
19
+ export declare const isContentSlideTitlePlaceholder: (el: PPTTextElement, slideType?: Slide["type"]) => boolean;
20
+ export interface TextBoxLayout {
21
+ fixedHeight: boolean;
22
+ vAlign: TextAlignVertical;
23
+ /** Flex-column vertical centering without locking box height (content slides title). */
24
+ flexCenterInLayoutBox: boolean;
25
+ }
26
+ export declare const resolveTextBoxLayout: (el: PPTTextElement, slideType?: Slide["type"]) => TextBoxLayout;
27
+ /**
28
+ * Placeholder shrink guard:
29
+ * - With content: allow shrinking to fit text; only block absurdly small heights.
30
+ * - Empty: keep the baseline layout height (do not inherit peak multiline height).
31
+ */
32
+ export declare const shouldBlockPlaceholderHeightShrink: (el: PPTTextElement, measuredHeight: number, contentEmpty: boolean) => boolean;
@@ -1,5 +1,17 @@
1
1
  export declare function setPptistPortalTarget(target: HTMLElement | null): void;
2
2
  export declare function clearPptistPortalTarget(target: HTMLElement): void;
3
3
  export declare function getPptistPortalTarget(): HTMLElement;
4
+ /**
5
+ * Resolve the portal target for a *specific* embed instance.
6
+ *
7
+ * The module-level `portalTarget` only tracks the last-mounted embed, so when
8
+ * several embeds coexist (e.g. multiple decks force-mounted side by side in a
9
+ * host app) it points at the wrong one — overlays then render into a sibling
10
+ * embed's portal, which the host may have hidden (`display:none`), so they
11
+ * never appear. Resolving from the interacted element keeps each overlay in
12
+ * its own embed. Falls back to the global target for the standalone app, where
13
+ * there is no `.pptist-embed-root` wrapper.
14
+ */
15
+ export declare function resolvePptistPortalTarget(el?: Element | null): HTMLElement;
4
16
  export declare function queryPptist<T extends Element = Element>(selector: string): T | null;
5
17
  export declare function queryPptistAll<T extends Element = Element>(selector: string): NodeListOf<T>;
@@ -0,0 +1,9 @@
1
+ import type { EditorView } from 'prosemirror-view';
2
+ export interface PlaceholderStyleOptions {
3
+ fontSize: string;
4
+ align: string;
5
+ color: string;
6
+ fontName?: string;
7
+ }
8
+ /** Apply placeholder typography to the whole doc without selecting all (keeps caret). */
9
+ export declare const applyPlaceholderStyles: (view: EditorView, options: PlaceholderStyleOptions) => void;
@@ -1,6 +1,7 @@
1
1
  import type { Node, NodeType, Mark, MarkType, Schema } from 'prosemirror-model';
2
2
  import type { EditorState, Selection } from 'prosemirror-state';
3
3
  import type { EditorView } from 'prosemirror-view';
4
+ import type { TextAlign } from '../../types/slides';
4
5
  export declare const isList: (node: Node, schema: Schema) => boolean;
5
6
  export declare const autoSelectAll: (view: EditorView) => void;
6
7
  export declare const addMark: (editorView: EditorView, mark: Mark, selection?: {
@@ -37,13 +38,12 @@ export declare const getAttrValue: (marks: readonly Mark[], markType: string, at
37
38
  export declare const isActiveMark: (marks: readonly Mark[], markType: string) => boolean;
38
39
  export declare const markActive: (state: EditorState, type: MarkType) => boolean | Mark | undefined;
39
40
  export declare const getAttrValueInSelection: (view: EditorView, attr: string) => string;
40
- type Align = 'left' | 'right' | 'center';
41
41
  interface DefaultAttrs {
42
42
  color: string;
43
43
  backcolor: string;
44
44
  fontsize: string;
45
45
  fontname: string;
46
- align: Align;
46
+ align: TextAlign;
47
47
  }
48
48
  export declare const getTextAttrs: (view: EditorView, attrs?: Partial<DefaultAttrs>) => {
49
49
  bold: boolean;
@@ -58,7 +58,7 @@ export declare const getTextAttrs: (view: EditorView, attrs?: Partial<DefaultAtt
58
58
  fontsize: string;
59
59
  fontname: string;
60
60
  link: string;
61
- align: Align;
61
+ align: TextAlign;
62
62
  bulletList: boolean;
63
63
  orderedList: boolean;
64
64
  blockquote: boolean;
@@ -1,8 +1,9 @@
1
- import { type PPTElement } from '../../types/slides';
1
+ import { type PPTElement, type Slide } from '../../types/slides';
2
2
  type __VLS_Props = {
3
3
  elementInfo: PPTElement;
4
4
  elementIndex: number;
5
5
  animationIndex: number;
6
+ slideType?: Slide['type'];
6
7
  turnSlideToId: (id: string) => void;
7
8
  manualExitFullscreen: () => void;
8
9
  };
@@ -1,7 +1,8 @@
1
- import { type PPTElement } from '../../../types/slides';
1
+ import { type PPTElement, type Slide } from '../../../types/slides';
2
2
  type __VLS_Props = {
3
3
  elementInfo: PPTElement;
4
4
  elementIndex: number;
5
+ slideType?: Slide['type'];
5
6
  };
6
7
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
8
  declare const _default: typeof __VLS_export;
@@ -1,13 +1,18 @@
1
+ import { type PlaceholderStyleOptions } from '../../../utils/prosemirror/commands/applyPlaceholderStyles';
2
+ import type { TextAlign } from '../../../types/slides';
1
3
  type __VLS_Props = {
2
4
  elementId: string;
3
5
  defaultColor: string;
4
6
  defaultFontName: string;
7
+ defaultFontSize?: string;
8
+ defaultAlign?: TextAlign;
5
9
  value: string;
6
10
  editable?: boolean;
7
11
  autoFocus?: boolean;
8
12
  };
9
13
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {
10
14
  focus: () => void;
15
+ seedPlaceholderStyles: (options: PlaceholderStyleOptions) => void;
11
16
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
12
17
  blur: () => any;
13
18
  focus: () => any;
@@ -1,7 +1,8 @@
1
- import type { PPTTextElement } from '../../../../types/slides';
1
+ import type { PPTTextElement, Slide } from '../../../../types/slides';
2
2
  type __VLS_Props = {
3
3
  elementInfo: PPTTextElement;
4
4
  target?: string;
5
+ slideType?: Slide['type'];
5
6
  };
6
7
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
7
8
  declare const _default: typeof __VLS_export;
@@ -4,6 +4,9 @@ declare const _default: (outline: Ref<PPTElementOutline | undefined>) => {
4
4
  outlineWidth: import("vue").ComputedRef<number>;
5
5
  outlineStyle: import("vue").ComputedRef<import("../../../../types/slides").LineStyleType>;
6
6
  outlineColor: import("vue").ComputedRef<string>;
7
+ outlineRadius: import("vue").ComputedRef<number>;
7
8
  strokeDashArray: import("vue").ComputedRef<string>;
8
9
  };
9
10
  export default _default;
11
+ export declare const useOutlinePath: (outline: Ref<PPTElementOutline | undefined>, width: Ref<number>, height: Ref<number>) => import("vue").ComputedRef<string>;
12
+ export declare const useOutlineRadiusCss: (outline: Ref<PPTElementOutline | undefined>, width: Ref<number>, height: Ref<number>) => import("vue").ComputedRef<string | undefined>;