@pitcher/js-api 1.28.0 → 1.30.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/js-api.esm.js +477 -44
- package/js-api.esm.js.map +1 -1
- package/js-api.umd.min.js +32 -11
- package/js-api.umd.min.js.map +1 -1
- package/lib/ai-tasks/__tests__/weekly-focus.spec.d.ts +1 -0
- package/lib/ai-tasks/weekly-focus.d.ts +241 -0
- package/lib/apps/browser/appTypes.d.ts +28 -0
- package/lib/apps/browser/stores/api.d.ts +6 -1
- package/lib/apps/browser/stores/app.d.ts +5 -0
- package/lib/apps/browser/stores/app.selectionPruneScope.test.d.ts +1 -0
- package/lib/apps/browser/stores/upload.d.ts +26 -1
- package/lib/apps/browser/stores/upload.types.d.ts +9 -0
- package/lib/apps/browser/util/lifecycle.d.ts +57 -0
- package/lib/apps/browser/util/lifecycle.test.d.ts +1 -0
- package/lib/apps/canvas-builder/components/ui/DynamicContent/useDynamicContent.d.ts +2 -0
- package/lib/apps/canvas-builder/components/ui/Multimedia/Multimedia.ldAsset.spec.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvas.d.ts +203 -1
- package/lib/apps/canvas-builder/composables/useCanvas.saveEcho.spec.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvasBlocks.d.ts +36 -0
- package/lib/apps/canvas-builder/composables/useCanvasExit.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvasHistory.d.ts +36 -0
- package/lib/apps/canvas-builder/composables/useCanvasTheme.d.ts +20 -18
- package/lib/apps/canvas-builder/composables/useContentSelector.d.ts +8 -1
- package/lib/apps/canvas-builder/composables/useInstalledEmbeddables.d.ts +1 -1
- package/lib/apps/canvas-builder/composables/useNavigatorDrawer.d.ts +2 -0
- package/lib/apps/canvas-builder/composables/usePopupApps.d.ts +2 -0
- package/lib/apps/canvas-builder/types/canvas.d.ts +53 -3
- package/lib/apps/canvas-builder/util/canvas.util.d.ts +8 -0
- package/lib/apps/canvas-builder/util/completionWizard.util.d.ts +107 -0
- package/lib/apps/canvas-builder/util/completionWizard.util.test.d.ts +1 -0
- package/lib/apps/canvas-builder/util/fullscreenMode.util.d.ts +7 -0
- package/lib/apps/canvas-builder/util/fullscreenMode.util.test.d.ts +1 -0
- package/lib/apps/canvas-builder/util/lazySections.util.d.ts +35 -0
- package/lib/apps/canvas-builder/util/lazySections.util.test.d.ts +1 -0
- package/lib/apps/collection-player/composables/collection-navigation.util.d.ts +27 -0
- package/lib/apps/collection-player/composables/collection-navigation.util.spec.d.ts +1 -0
- package/lib/apps/collection-player/stores/app.store.d.ts +3 -0
- package/lib/apps/content-selector/components/Assets.uploaderRefresh.spec.d.ts +1 -0
- package/lib/apps/content-selector/stores/app.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.annotations.use.d.ts +5 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.formFields.use.d.ts +8 -0
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.link.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.overlayItems.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.use.d.ts +4 -9
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.util.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewerFullscreen.pdf.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/__tests__/CFileViewer.pdf.annotations.text.test.d.ts +1 -0
- package/lib/components/savedCanvases/CSavedCanvasesManagement.use.d.ts +1 -0
- package/lib/composables/useCourseOnlyApps.d.ts +1 -1
- package/lib/composables/usePdfInterpolation.d.ts +2 -2
- package/lib/composables/useWindowEvents.d.ts +1 -1
- package/lib/constants/cdp.const.d.ts +1 -0
- package/lib/constants/translationLanguages.const.d.ts +72 -0
- package/lib/main.lib.d.ts +2 -0
- package/lib/sdk/api/HighLevelApi.d.ts +26 -9
- package/lib/sdk/api/modules/admin/types.admin.d.ts +1 -0
- package/lib/sdk/api/modules/ai.d.ts +43 -1
- package/lib/sdk/api/modules/ai.spec.d.ts +1 -0
- package/lib/sdk/api/modules/canvas.d.ts +8 -0
- package/lib/sdk/api/modules/index.d.ts +2 -1
- package/lib/sdk/api/modules/stt.d.ts +65 -0
- package/lib/sdk/api/modules/stt.spec.d.ts +1 -0
- package/lib/sdk/api/modules/tts.d.ts +41 -0
- package/lib/sdk/api/modules/tts.spec.d.ts +1 -0
- package/lib/sdk/api/modules/ui/types.ui.d.ts +7 -0
- package/lib/sdk/interfaces.d.ts +26 -1
- package/lib/sdk/main.d.ts +35 -6
- package/lib/sdk/payload.types.d.ts +284 -0
- package/lib/types/ai-tasks.const.d.ts +39 -1
- package/lib/types/call.d.ts +14 -0
- package/lib/types/canvases.d.ts +0 -3
- package/lib/types/launchDarkly.types.d.ts +1 -3
- package/lib/types/organizationSettings.types.d.ts +10 -0
- package/lib/types/sfdc.d.ts +15 -0
- package/lib/util/soql.util.d.ts +36 -0
- package/lib/util/user.d.ts +18 -0
- package/lib/util/user.test.d.ts +1 -0
- package/package.json +1 -1
- package/types/openapi/index.d.ts +0 -1
- package/types/openapi/models/DeletedEnvironment.d.ts +0 -1
- package/types/openapi/models/Environment.d.ts +0 -1
- package/types/openapi/models/EnvironmentRequest.d.ts +0 -1
- package/types/openapi/models/File.d.ts +2 -0
- package/types/openapi/models/FileRetrieve.d.ts +2 -0
- package/types/openapi/models/PatchedEnvironmentRequest.d.ts +0 -1
- package/types/openapi/models/PatchedUserRequest.d.ts +1 -2
- package/types/openapi/models/User.d.ts +1 -2
- package/types/openapi/models/UserRequest.d.ts +1 -2
- package/lib/sdk/api/modules/languages.d.ts +0 -8
- package/types/openapi/models/LanguageEnum.d.ts +0 -12
|
@@ -114,6 +114,8 @@ export default function useCanvasHistory(): {
|
|
|
114
114
|
from?: "custom" | "pexels" | "unsplash" | "ai" | undefined;
|
|
115
115
|
poster_url?: string | undefined;
|
|
116
116
|
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
117
|
+
poster_file_id?: string | undefined;
|
|
118
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
117
119
|
} | {
|
|
118
120
|
asset_type: "pitcher_asset";
|
|
119
121
|
file: {
|
|
@@ -125,6 +127,21 @@ export default function useCanvasHistory(): {
|
|
|
125
127
|
horizontal_alignment?: import('../types/canvas').MultimediaHorizontalAlignmentOptions | undefined;
|
|
126
128
|
poster_url?: string | undefined;
|
|
127
129
|
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
130
|
+
poster_file_id?: string | undefined;
|
|
131
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
132
|
+
} | {
|
|
133
|
+
asset_type: "ld_asset";
|
|
134
|
+
file: {
|
|
135
|
+
id: import('../../../main.lib').File["id"];
|
|
136
|
+
name: import('../../../main.lib').File["name"];
|
|
137
|
+
content_url?: import('../../../main.lib').File["content_url"] | undefined;
|
|
138
|
+
};
|
|
139
|
+
type: "image" | "video";
|
|
140
|
+
horizontal_alignment?: import('../types/canvas').MultimediaHorizontalAlignmentOptions | undefined;
|
|
141
|
+
poster_url?: string | undefined;
|
|
142
|
+
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
143
|
+
poster_file_id?: string | undefined;
|
|
144
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
128
145
|
} | {
|
|
129
146
|
type: "app";
|
|
130
147
|
app_name: string;
|
|
@@ -285,6 +302,7 @@ export default function useCanvasHistory(): {
|
|
|
285
302
|
readonly original_url?: string | null | undefined;
|
|
286
303
|
readonly thumbnail_url?: string | null | undefined;
|
|
287
304
|
download_type?: import('../../../main.lib').DownloadTypeEnum | undefined;
|
|
305
|
+
readonly downloaded_at?: string | null | undefined;
|
|
288
306
|
readonly zip_size?: number | null | undefined;
|
|
289
307
|
readonly zip_url?: string | null | undefined;
|
|
290
308
|
access_type?: import('../../../main.lib').AccessTypeEnum | undefined;
|
|
@@ -588,6 +606,8 @@ export default function useCanvasHistory(): {
|
|
|
588
606
|
from?: "custom" | "pexels" | "unsplash" | "ai" | undefined;
|
|
589
607
|
poster_url?: string | undefined;
|
|
590
608
|
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
609
|
+
poster_file_id?: string | undefined;
|
|
610
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
591
611
|
} | {
|
|
592
612
|
asset_type: "pitcher_asset";
|
|
593
613
|
file: {
|
|
@@ -599,6 +619,21 @@ export default function useCanvasHistory(): {
|
|
|
599
619
|
horizontal_alignment?: import('../types/canvas').MultimediaHorizontalAlignmentOptions | undefined;
|
|
600
620
|
poster_url?: string | undefined;
|
|
601
621
|
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
622
|
+
poster_file_id?: string | undefined;
|
|
623
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
624
|
+
} | {
|
|
625
|
+
asset_type: "ld_asset";
|
|
626
|
+
file: {
|
|
627
|
+
id: import('../../../main.lib').File["id"];
|
|
628
|
+
name: import('../../../main.lib').File["name"];
|
|
629
|
+
content_url?: import('../../../main.lib').File["content_url"] | undefined;
|
|
630
|
+
};
|
|
631
|
+
type: "image" | "video";
|
|
632
|
+
horizontal_alignment?: import('../types/canvas').MultimediaHorizontalAlignmentOptions | undefined;
|
|
633
|
+
poster_url?: string | undefined;
|
|
634
|
+
poster_background_size?: import('../../../types/background').BackgroundSize | undefined;
|
|
635
|
+
poster_file_id?: string | undefined;
|
|
636
|
+
poster_asset_type?: "pitcher_asset" | "ld_asset" | undefined;
|
|
602
637
|
} | {
|
|
603
638
|
type: "app";
|
|
604
639
|
app_name: string;
|
|
@@ -759,6 +794,7 @@ export default function useCanvasHistory(): {
|
|
|
759
794
|
readonly original_url?: string | null | undefined;
|
|
760
795
|
readonly thumbnail_url?: string | null | undefined;
|
|
761
796
|
download_type?: import('../../../main.lib').DownloadTypeEnum | undefined;
|
|
797
|
+
readonly downloaded_at?: string | null | undefined;
|
|
762
798
|
readonly zip_size?: number | null | undefined;
|
|
763
799
|
readonly zip_url?: string | null | undefined;
|
|
764
800
|
access_type?: import('../../../main.lib').AccessTypeEnum | undefined;
|
|
@@ -92,7 +92,7 @@ export default function useCanvasTheme(): {
|
|
|
92
92
|
readonly deactivated_at: string | null;
|
|
93
93
|
readonly activated_at: string | null;
|
|
94
94
|
readonly is_active: boolean;
|
|
95
|
-
language?:
|
|
95
|
+
language?: string | undefined;
|
|
96
96
|
readonly connected_services: {
|
|
97
97
|
connection_id: string;
|
|
98
98
|
type: string;
|
|
@@ -121,7 +121,7 @@ export default function useCanvasTheme(): {
|
|
|
121
121
|
readonly deactivated_at: string | null;
|
|
122
122
|
readonly activated_at: string | null;
|
|
123
123
|
readonly is_active: boolean;
|
|
124
|
-
language?:
|
|
124
|
+
language?: string | undefined;
|
|
125
125
|
readonly connected_services: {
|
|
126
126
|
connection_id: string;
|
|
127
127
|
type: string;
|
|
@@ -150,7 +150,7 @@ export default function useCanvasTheme(): {
|
|
|
150
150
|
readonly deactivated_at: string | null;
|
|
151
151
|
readonly activated_at: string | null;
|
|
152
152
|
readonly is_active: boolean;
|
|
153
|
-
language?:
|
|
153
|
+
language?: string | undefined;
|
|
154
154
|
readonly connected_services: {
|
|
155
155
|
connection_id: string;
|
|
156
156
|
type: string;
|
|
@@ -209,7 +209,7 @@ export default function useCanvasTheme(): {
|
|
|
209
209
|
readonly deactivated_at: string | null;
|
|
210
210
|
readonly activated_at: string | null;
|
|
211
211
|
readonly is_active: boolean;
|
|
212
|
-
language?:
|
|
212
|
+
language?: string | undefined;
|
|
213
213
|
readonly connected_services: {
|
|
214
214
|
connection_id: string;
|
|
215
215
|
type: string;
|
|
@@ -238,7 +238,7 @@ export default function useCanvasTheme(): {
|
|
|
238
238
|
readonly deactivated_at: string | null;
|
|
239
239
|
readonly activated_at: string | null;
|
|
240
240
|
readonly is_active: boolean;
|
|
241
|
-
language?:
|
|
241
|
+
language?: string | undefined;
|
|
242
242
|
readonly connected_services: {
|
|
243
243
|
connection_id: string;
|
|
244
244
|
type: string;
|
|
@@ -267,7 +267,7 @@ export default function useCanvasTheme(): {
|
|
|
267
267
|
readonly deactivated_at: string | null;
|
|
268
268
|
readonly activated_at: string | null;
|
|
269
269
|
readonly is_active: boolean;
|
|
270
|
-
language?:
|
|
270
|
+
language?: string | undefined;
|
|
271
271
|
readonly connected_services: {
|
|
272
272
|
connection_id: string;
|
|
273
273
|
type: string;
|
|
@@ -325,6 +325,7 @@ export default function useCanvasTheme(): {
|
|
|
325
325
|
readonly original_url: string | null;
|
|
326
326
|
readonly thumbnail_url: string | null;
|
|
327
327
|
download_type?: import('../../../../types/openapi').DownloadTypeEnum | undefined;
|
|
328
|
+
readonly downloaded_at?: string | null | undefined;
|
|
328
329
|
readonly zip_size: number | null;
|
|
329
330
|
readonly zip_url: string | null;
|
|
330
331
|
access_type?: import('../../../../types/openapi').AccessTypeEnum | undefined;
|
|
@@ -383,6 +384,7 @@ export default function useCanvasTheme(): {
|
|
|
383
384
|
readonly original_url: string | null;
|
|
384
385
|
readonly thumbnail_url: string | null;
|
|
385
386
|
download_type?: import('../../../../types/openapi').DownloadTypeEnum | undefined;
|
|
387
|
+
readonly downloaded_at?: string | null | undefined;
|
|
386
388
|
readonly zip_size: number | null;
|
|
387
389
|
readonly zip_url: string | null;
|
|
388
390
|
access_type?: import('../../../../types/openapi').AccessTypeEnum | undefined;
|
|
@@ -489,7 +491,7 @@ export default function useCanvasTheme(): {
|
|
|
489
491
|
readonly deactivated_at: string | null;
|
|
490
492
|
readonly activated_at: string | null;
|
|
491
493
|
readonly is_active: boolean;
|
|
492
|
-
language?:
|
|
494
|
+
language?: string | undefined;
|
|
493
495
|
readonly connected_services: {
|
|
494
496
|
connection_id: string;
|
|
495
497
|
type: string;
|
|
@@ -518,7 +520,7 @@ export default function useCanvasTheme(): {
|
|
|
518
520
|
readonly deactivated_at: string | null;
|
|
519
521
|
readonly activated_at: string | null;
|
|
520
522
|
readonly is_active: boolean;
|
|
521
|
-
language?:
|
|
523
|
+
language?: string | undefined;
|
|
522
524
|
readonly connected_services: {
|
|
523
525
|
connection_id: string;
|
|
524
526
|
type: string;
|
|
@@ -547,7 +549,7 @@ export default function useCanvasTheme(): {
|
|
|
547
549
|
readonly deactivated_at: string | null;
|
|
548
550
|
readonly activated_at: string | null;
|
|
549
551
|
readonly is_active: boolean;
|
|
550
|
-
language?:
|
|
552
|
+
language?: string | undefined;
|
|
551
553
|
readonly connected_services: {
|
|
552
554
|
connection_id: string;
|
|
553
555
|
type: string;
|
|
@@ -606,7 +608,7 @@ export default function useCanvasTheme(): {
|
|
|
606
608
|
readonly deactivated_at: string | null;
|
|
607
609
|
readonly activated_at: string | null;
|
|
608
610
|
readonly is_active: boolean;
|
|
609
|
-
language?:
|
|
611
|
+
language?: string | undefined;
|
|
610
612
|
readonly connected_services: {
|
|
611
613
|
connection_id: string;
|
|
612
614
|
type: string;
|
|
@@ -635,7 +637,7 @@ export default function useCanvasTheme(): {
|
|
|
635
637
|
readonly deactivated_at: string | null;
|
|
636
638
|
readonly activated_at: string | null;
|
|
637
639
|
readonly is_active: boolean;
|
|
638
|
-
language?:
|
|
640
|
+
language?: string | undefined;
|
|
639
641
|
readonly connected_services: {
|
|
640
642
|
connection_id: string;
|
|
641
643
|
type: string;
|
|
@@ -664,7 +666,7 @@ export default function useCanvasTheme(): {
|
|
|
664
666
|
readonly deactivated_at: string | null;
|
|
665
667
|
readonly activated_at: string | null;
|
|
666
668
|
readonly is_active: boolean;
|
|
667
|
-
language?:
|
|
669
|
+
language?: string | undefined;
|
|
668
670
|
readonly connected_services: {
|
|
669
671
|
connection_id: string;
|
|
670
672
|
type: string;
|
|
@@ -731,7 +733,7 @@ export default function useCanvasTheme(): {
|
|
|
731
733
|
readonly deactivated_at: string | null;
|
|
732
734
|
readonly activated_at: string | null;
|
|
733
735
|
readonly is_active: boolean;
|
|
734
|
-
language?:
|
|
736
|
+
language?: string | undefined;
|
|
735
737
|
readonly connected_services: {
|
|
736
738
|
connection_id: string;
|
|
737
739
|
type: string;
|
|
@@ -760,7 +762,7 @@ export default function useCanvasTheme(): {
|
|
|
760
762
|
readonly deactivated_at: string | null;
|
|
761
763
|
readonly activated_at: string | null;
|
|
762
764
|
readonly is_active: boolean;
|
|
763
|
-
language?:
|
|
765
|
+
language?: string | undefined;
|
|
764
766
|
readonly connected_services: {
|
|
765
767
|
connection_id: string;
|
|
766
768
|
type: string;
|
|
@@ -789,7 +791,7 @@ export default function useCanvasTheme(): {
|
|
|
789
791
|
readonly deactivated_at: string | null;
|
|
790
792
|
readonly activated_at: string | null;
|
|
791
793
|
readonly is_active: boolean;
|
|
792
|
-
language?:
|
|
794
|
+
language?: string | undefined;
|
|
793
795
|
readonly connected_services: {
|
|
794
796
|
connection_id: string;
|
|
795
797
|
type: string;
|
|
@@ -848,7 +850,7 @@ export default function useCanvasTheme(): {
|
|
|
848
850
|
readonly deactivated_at: string | null;
|
|
849
851
|
readonly activated_at: string | null;
|
|
850
852
|
readonly is_active: boolean;
|
|
851
|
-
language?:
|
|
853
|
+
language?: string | undefined;
|
|
852
854
|
readonly connected_services: {
|
|
853
855
|
connection_id: string;
|
|
854
856
|
type: string;
|
|
@@ -877,7 +879,7 @@ export default function useCanvasTheme(): {
|
|
|
877
879
|
readonly deactivated_at: string | null;
|
|
878
880
|
readonly activated_at: string | null;
|
|
879
881
|
readonly is_active: boolean;
|
|
880
|
-
language?:
|
|
882
|
+
language?: string | undefined;
|
|
881
883
|
readonly connected_services: {
|
|
882
884
|
connection_id: string;
|
|
883
885
|
type: string;
|
|
@@ -906,7 +908,7 @@ export default function useCanvasTheme(): {
|
|
|
906
908
|
readonly deactivated_at: string | null;
|
|
907
909
|
readonly activated_at: string | null;
|
|
908
910
|
readonly is_active: boolean;
|
|
909
|
-
language?:
|
|
911
|
+
language?: string | undefined;
|
|
910
912
|
readonly connected_services: {
|
|
911
913
|
connection_id: string;
|
|
912
914
|
type: string;
|
|
@@ -34,8 +34,15 @@ declare function prepareLinkFolderNodeData({ selectedItems, node, }: {
|
|
|
34
34
|
selectedItems: SelectedFolder[];
|
|
35
35
|
node?: ComponentNode<LinkProps>;
|
|
36
36
|
}): LinkProps;
|
|
37
|
-
declare function prepareMultimediaNodeData({ selectedItems, }: {
|
|
37
|
+
declare function prepareMultimediaNodeData({ selectedItems, assetType, }: {
|
|
38
38
|
selectedItems: (SelectedExternalLink | SelectedAsset)[];
|
|
39
|
+
/**
|
|
40
|
+
* Which asset backend the picked file lives in — from `CanvasBuilderProps.assetType`. Defaults to
|
|
41
|
+
* `'pitcher_asset'` so every existing host is byte-identical; only the L&D course host passes
|
|
42
|
+
* `'ld_asset'` (T1.7b / PIT-7742), which is what makes Multimedia re-resolve the file's short-lived
|
|
43
|
+
* presigned URL at render instead of trusting the stored one.
|
|
44
|
+
*/
|
|
45
|
+
assetType?: 'pitcher_asset' | 'ld_asset';
|
|
39
46
|
}): {
|
|
40
47
|
data: MultimediaProps;
|
|
41
48
|
theme_meta?: Partial<ComponentNode['theme_meta']>;
|
|
@@ -5,7 +5,7 @@ export declare function useInstalledEmbeddables(): {
|
|
|
5
5
|
installedEmbeddablesById: import('vue').Ref<Record<string, AppFile> | null, Record<string, AppFile> | null>;
|
|
6
6
|
refetchedFor: Record<string, boolean>;
|
|
7
7
|
shouldUseDeviceUrl: ComputedRef<boolean | undefined>;
|
|
8
|
-
shortcuts: ComputedRef<Record<"
|
|
8
|
+
shortcuts: ComputedRef<Record<"fullscreen" | "edit" | "presentation", (EmbeddedAppShortcut & {
|
|
9
9
|
appName: string;
|
|
10
10
|
displayName: string;
|
|
11
11
|
})[]>>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
declare function toggleNavigatorDrawer(): void;
|
|
2
|
+
declare function defaultOpenNavigatorDrawer(): void;
|
|
2
3
|
export default function (): {
|
|
3
4
|
toggleNavigatorDrawer: typeof toggleNavigatorDrawer;
|
|
5
|
+
defaultOpenNavigatorDrawer: typeof defaultOpenNavigatorDrawer;
|
|
4
6
|
isNavigatorDrawerOpen: import('vue').Ref<boolean, boolean>;
|
|
5
7
|
};
|
|
6
8
|
export {};
|
|
@@ -17,6 +17,7 @@ export declare function usePopupApps(): {
|
|
|
17
17
|
readonly original_url: string | null;
|
|
18
18
|
readonly thumbnail_url: string | null;
|
|
19
19
|
download_type?: import('../../../main.lib').DownloadTypeEnum | undefined;
|
|
20
|
+
readonly downloaded_at?: string | null | undefined;
|
|
20
21
|
readonly zip_size: number | null;
|
|
21
22
|
readonly zip_url: string | null;
|
|
22
23
|
access_type?: import('../../../main.lib').AccessTypeEnum | undefined;
|
|
@@ -480,6 +481,7 @@ export declare function usePopupApps(): {
|
|
|
480
481
|
readonly original_url: string | null;
|
|
481
482
|
readonly thumbnail_url: string | null;
|
|
482
483
|
download_type?: import('../../../main.lib').DownloadTypeEnum | undefined;
|
|
484
|
+
readonly downloaded_at?: string | null | undefined;
|
|
483
485
|
readonly zip_size: number | null;
|
|
484
486
|
readonly zip_url: string | null;
|
|
485
487
|
access_type?: import('../../../main.lib').AccessTypeEnum | undefined;
|
|
@@ -172,12 +172,33 @@ export interface CanvasFile {
|
|
|
172
172
|
declare const MULTIMEDIA_IMG_TYPE: {
|
|
173
173
|
readonly external: "external";
|
|
174
174
|
readonly pitcher_asset: "pitcher_asset";
|
|
175
|
+
readonly ld_asset: "ld_asset";
|
|
175
176
|
};
|
|
176
177
|
export declare enum MultimediaHorizontalAlignmentOptions {
|
|
177
178
|
LEFT = "left",
|
|
178
179
|
CENTER = "center",
|
|
179
180
|
RIGHT = "right"
|
|
180
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Where a Multimedia `poster_url` came from — shared by every asset variant, because a poster's origin is
|
|
184
|
+
* independent of the media's (an `external` video can carry an L&D-hosted poster).
|
|
185
|
+
*
|
|
186
|
+
* `poster_url` alone is unrefreshable: a short-lived source (an L&D presigned URL, 900s) rots and the
|
|
187
|
+
* canvas has no record of what it was, so nothing can re-resolve it — unlike `file.content_url`, which
|
|
188
|
+
* `Multimedia.vue` refreshes at render off `file.id`. Recording the id plus its backend is what keeps a
|
|
189
|
+
* poster recoverable.
|
|
190
|
+
*
|
|
191
|
+
* Both are absent for an external-link/Pexels poster (long-lived URL, no Pitcher id to resolve).
|
|
192
|
+
*
|
|
193
|
+
* `poster_asset_type` lives on the NODE rather than being read from host state at render, because the
|
|
194
|
+
* render path must work in COURSE (rep playback) — the mode where a poster is *guaranteed* to be past its
|
|
195
|
+
* TTL — and COURSE cannot supply `CanvasBuilderProps.assetType` at all (it's `?: never` there).
|
|
196
|
+
* (T1.7b / PIT-7742, R4-F1.)
|
|
197
|
+
*/
|
|
198
|
+
type MultimediaPosterProvenance = {
|
|
199
|
+
poster_file_id?: string;
|
|
200
|
+
poster_asset_type?: 'pitcher_asset' | 'ld_asset';
|
|
201
|
+
};
|
|
181
202
|
export type ExternalMultimediaAssetType = {
|
|
182
203
|
asset_type: typeof MULTIMEDIA_IMG_TYPE.external;
|
|
183
204
|
external_url: string;
|
|
@@ -186,7 +207,7 @@ export type ExternalMultimediaAssetType = {
|
|
|
186
207
|
from?: 'custom' | 'pexels' | 'unsplash' | 'ai';
|
|
187
208
|
poster_url?: string;
|
|
188
209
|
poster_background_size?: BackgroundSize;
|
|
189
|
-
};
|
|
210
|
+
} & MultimediaPosterProvenance;
|
|
190
211
|
export type PitcherMultimediaAssetType = {
|
|
191
212
|
asset_type: typeof MULTIMEDIA_IMG_TYPE.pitcher_asset;
|
|
192
213
|
file: {
|
|
@@ -198,8 +219,20 @@ export type PitcherMultimediaAssetType = {
|
|
|
198
219
|
horizontal_alignment?: MultimediaHorizontalAlignmentOptions;
|
|
199
220
|
poster_url?: string;
|
|
200
221
|
poster_background_size?: BackgroundSize;
|
|
201
|
-
};
|
|
202
|
-
export
|
|
222
|
+
} & MultimediaPosterProvenance;
|
|
223
|
+
export interface LdMultimediaAssetType extends MultimediaPosterProvenance {
|
|
224
|
+
asset_type: typeof MULTIMEDIA_IMG_TYPE.ld_asset;
|
|
225
|
+
file: {
|
|
226
|
+
id: File['id'];
|
|
227
|
+
name: File['name'];
|
|
228
|
+
content_url?: File['content_url'];
|
|
229
|
+
};
|
|
230
|
+
type: 'image' | 'video';
|
|
231
|
+
horizontal_alignment?: MultimediaHorizontalAlignmentOptions;
|
|
232
|
+
poster_url?: string;
|
|
233
|
+
poster_background_size?: BackgroundSize;
|
|
234
|
+
}
|
|
235
|
+
export type MultimediaProps = ExternalMultimediaAssetType | PitcherMultimediaAssetType | LdMultimediaAssetType;
|
|
203
236
|
export type ContentGridCommonFileProps = {
|
|
204
237
|
id: FileRetrieve['id'];
|
|
205
238
|
snapshot_id?: FileRetrieve['id'];
|
|
@@ -599,6 +632,7 @@ export type SharingBuilderProps = NoCRMBuilderProps & {
|
|
|
599
632
|
};
|
|
600
633
|
activeCanvas: CanvasRetrieve;
|
|
601
634
|
onExit: () => void;
|
|
635
|
+
onEndCall?: () => void | Promise<void>;
|
|
602
636
|
onSave?: never;
|
|
603
637
|
onEnter?: () => void;
|
|
604
638
|
onPageEnter?: (data: ComponentNode[], pageIndex: number) => void;
|
|
@@ -626,6 +660,7 @@ export type SharingBuilderProps = NoCRMBuilderProps & {
|
|
|
626
660
|
listRecommendedFiles?: never;
|
|
627
661
|
listCanvases?: never;
|
|
628
662
|
fetchFolder?: never;
|
|
663
|
+
assetType?: never;
|
|
629
664
|
fetchFile: (fileId: FileRetrieve['id']) => Promise<FileRetrieve>;
|
|
630
665
|
fetchInstanceMetadataTemplate?: never;
|
|
631
666
|
fetchCanvas?: (canvasId: CanvasRetrieve['id'], params?: Record<string, any>) => Promise<CanvasRetrieve>;
|
|
@@ -677,6 +712,7 @@ type AdminImpactCommonBuilderProps = {
|
|
|
677
712
|
};
|
|
678
713
|
activeCanvas: CanvasRetrieve;
|
|
679
714
|
onExit: () => void;
|
|
715
|
+
onEndCall?: () => void | Promise<void>;
|
|
680
716
|
onEnter?: () => void;
|
|
681
717
|
onComponentEnter?: (data: ComponentNode | CanvasRetrieve, params: ComponentTrackingParams) => void;
|
|
682
718
|
onComponentExit?: (data: ComponentNode | CanvasRetrieve, params: ComponentTrackingParams) => void;
|
|
@@ -735,6 +771,18 @@ type AdminImpactCommonBuilderProps = {
|
|
|
735
771
|
isAnyTypeOfAdmin: boolean;
|
|
736
772
|
canvasMetadata: CanvasMetadataRetrieve | null;
|
|
737
773
|
hideEdit?: boolean;
|
|
774
|
+
/**
|
|
775
|
+
* Which asset backend the Assets tab's files come from, stamped onto a Multimedia node on selection
|
|
776
|
+
* (`prepareMultimediaNodeData`). Defaults to `'pitcher_asset'`, so every existing sales/DSR/admin
|
|
777
|
+
* mount is unchanged — only the L&D course host (course-canvas-host) opts into `'ld_asset'`.
|
|
778
|
+
*
|
|
779
|
+
* Lives on the Admin/Impact/Home common props because those are the only modes that can open the
|
|
780
|
+
* content selector; SHARING/COURSE type-block it with `?: never`.
|
|
781
|
+
*
|
|
782
|
+
* It does NOT affect rendering — Multimedia keys its render-time URL re-resolution off the node's
|
|
783
|
+
* own `asset_type`, so an `ld_asset` node renders correctly wherever it is mounted. (T1.7b/PIT-7742)
|
|
784
|
+
*/
|
|
785
|
+
assetType?: 'pitcher_asset' | 'ld_asset';
|
|
738
786
|
};
|
|
739
787
|
type AdminBuilderProps = AdminImpactCommonBuilderProps & (CRMBuilderProps | NoCRMBuilderProps) & {
|
|
740
788
|
isRedirectEvent?: never;
|
|
@@ -784,6 +832,7 @@ export type CourseBuilderProps = NoCRMBuilderProps & {
|
|
|
784
832
|
};
|
|
785
833
|
activeCanvas: CanvasRetrieve;
|
|
786
834
|
onExit: () => void;
|
|
835
|
+
onEndCall?: () => void | Promise<void>;
|
|
787
836
|
onSave?: (canvasId: CanvasRetrieve['id'], canvas: PatchedCanvasUpdateRequest & {
|
|
788
837
|
fields?: string;
|
|
789
838
|
include_expired_files?: boolean;
|
|
@@ -814,6 +863,7 @@ export type CourseBuilderProps = NoCRMBuilderProps & {
|
|
|
814
863
|
listRecommendedFiles?: never;
|
|
815
864
|
listCanvases?: never;
|
|
816
865
|
fetchFolder?: never;
|
|
866
|
+
assetType?: never;
|
|
817
867
|
fetchFile: (fileId: FileRetrieve['id']) => Promise<FileRetrieve>;
|
|
818
868
|
fetchInstanceMetadataTemplate?: never;
|
|
819
869
|
fetchCanvas?: (canvasId: CanvasRetrieve['id'], params?: Record<string, any>) => Promise<CanvasRetrieve>;
|
|
@@ -65,5 +65,13 @@ export declare function updateFirstCollectionPlayerWithShareboxItems(canvasConte
|
|
|
65
65
|
export declare function handleThemeAssetComparison(key: string | symbol | number, objValue: any, othValue: any, object: any, other: any, fileProps: string[], isEqual: (obj1: any, obj2: any) => boolean, componentsWithThemeMeta?: Set<string>): boolean | undefined;
|
|
66
66
|
export declare function applyCanvasThemeAssetsToNode(node: ComponentNode): ComponentNode;
|
|
67
67
|
export declare function processCanvasForSectionThemeOverride(canvas: CanvasRetrieve, maintainSectionTheme: boolean): CanvasRetrieve;
|
|
68
|
+
/**
|
|
69
|
+
* Append `?instance_id=` to a core-API path when the id is known (PIT-7587).
|
|
70
|
+
* The canvas metadata PATCH is gated on the instance-scoped `canvas.update`
|
|
71
|
+
* permission, and the proxy doesn't forward `x-instance-id` on these calls, so
|
|
72
|
+
* instance context must travel as a query param (mirrors next-core's
|
|
73
|
+
* header-then-query fallback in `with-permission.ts`).
|
|
74
|
+
*/
|
|
75
|
+
export declare function withInstanceId(path: string, instanceId?: string | null): string;
|
|
68
76
|
export declare function isEmbeddableWithZeroHeight(component: ComponentNode): boolean;
|
|
69
77
|
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { CanvasActions } from '../../../types/canvasActions';
|
|
2
|
+
import { AppFile } from '../../../types/app';
|
|
3
|
+
/** Installable-app name of the React pitchdeck wizard (PIT-7510). */
|
|
4
|
+
export declare const REACT_COMPLETION_WIZARD_APP_NAME = "pitchdeck-wizard-ng";
|
|
5
|
+
export interface ResolveCompletionWizardVariantParams {
|
|
6
|
+
/** `canvas.enable_react_completion_wizard` org/instance setting — opt-in, default off. */
|
|
7
|
+
isReactWizardSettingEnabled: boolean;
|
|
8
|
+
/** The React wizard app resolved to a loadable URL (installed or local dev override). */
|
|
9
|
+
isReactWizardAvailable: boolean;
|
|
10
|
+
/** The deck's admin config uses features the React wizard cannot honor yet (see below). */
|
|
11
|
+
hasUnsupportedConfig?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* PIT-7510: which completion-wizard implementation to render where the wizard opens today.
|
|
15
|
+
* The setting is the only switch (no LaunchDarkly flag); an enabled setting without an
|
|
16
|
+
* installed app — or a deck whose admin config the React wizard cannot honor — falls back
|
|
17
|
+
* to the Vue wizard so no flow is ever lost.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveCompletionWizardVariant(p: ResolveCompletionWizardVariantParams): 'vue' | 'react';
|
|
20
|
+
/**
|
|
21
|
+
* Admin group_selector config features the React wizard does not implement yet:
|
|
22
|
+
* repetition rules (slide repeats + salesforce-populator data binding) and visibility
|
|
23
|
+
* rules. Decks using them keep the vanilla wizard regardless of the setting.
|
|
24
|
+
*/
|
|
25
|
+
export declare function hasUnsupportedGroupSelectorConfig(context: Record<string, unknown> | null | undefined): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the React wizard app's iframe URL: local dev override first (same mechanism as
|
|
28
|
+
* every installable app), else the installed app's `content_url`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveReactCompletionWizardSrc(apps: AppFile[]): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* PIT-7030: what cancelling the completion wizard means depends on how it was entered.
|
|
33
|
+
*
|
|
34
|
+
* Create flow (never-completed deck): cancel abandons the deck — the host emits
|
|
35
|
+
* `cancelCanvasCompletionWizard`, which slotty treats as "leave the canvas" (and deletes the
|
|
36
|
+
* deck when it came from the create-canvas modal).
|
|
37
|
+
*
|
|
38
|
+
* Edit flow (`completion_wizard.edited` — set by `retriggerWizard()`, i.e. the "Edit Wizard"
|
|
39
|
+
* button or the Edit-action auto-open): the wizard was opened over a deck that was already
|
|
40
|
+
* completed, and entering it persisted `completed: false`. Cancel must restore
|
|
41
|
+
* `completed: true` and reload into the canvas editor — exactly what the Vue wizard's
|
|
42
|
+
* `confirmCancel()` → `completeWizard()` does. Emitting the cancel event here instead exits
|
|
43
|
+
* the canvas entirely and leaves the deck stuck "In-progress" (the QA regression on the
|
|
44
|
+
* React wizard).
|
|
45
|
+
*/
|
|
46
|
+
interface WizardCancelCanvasContext {
|
|
47
|
+
pitcher?: {
|
|
48
|
+
/** `edited` is written only by `retriggerWizard()` — the same signal the Vue wizard's `isEditWizard` reads. */
|
|
49
|
+
completion_wizard?: {
|
|
50
|
+
edited?: boolean;
|
|
51
|
+
completed?: boolean;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare function shouldCompleteWizardOnCancel(canvasContext: WizardCancelCanvasContext | null | undefined): boolean;
|
|
56
|
+
export declare function wasCompletionWizardAutoOpened(canvasId: string): boolean;
|
|
57
|
+
export declare function markCompletionWizardAutoOpened(canvasId: string | undefined): void;
|
|
58
|
+
/**
|
|
59
|
+
* Read AND clear the auto-opened marker (PIT-7510 QA Q12). The marker exists to survive the
|
|
60
|
+
* `window.location.reload()` that follows completing/cancelling the wizard — one page load.
|
|
61
|
+
* Left in place it suppressed every LATER Edit action for the rest of the browser session,
|
|
62
|
+
* so the wizard never auto-opened again. Consuming it on read keeps the reload covered
|
|
63
|
+
* (the fresh mount still sees it once) while the next explicit Edit navigation starts
|
|
64
|
+
* clean. Callers cache the consumed value per mount so re-running watcher ticks within the
|
|
65
|
+
* same mount stay suppressed.
|
|
66
|
+
*/
|
|
67
|
+
export declare function consumeCompletionWizardAutoOpened(canvasId: string): boolean;
|
|
68
|
+
export interface ShouldAutoOpenCompletionWizardParams {
|
|
69
|
+
/** `canvas.enable_edit_opens_completion_wizard` org/instance setting — opt-in, default off. */
|
|
70
|
+
isSettingEnabled: boolean;
|
|
71
|
+
/** Impact only — the wizard is a rep-facing flow and `retriggerWizard()` bails elsewhere anyway. */
|
|
72
|
+
isImpact: boolean;
|
|
73
|
+
/** Canvases only, never templates / sections / blocks. */
|
|
74
|
+
isCanvas: boolean;
|
|
75
|
+
/** Canvas preview is read-only playback; never auto-open there. */
|
|
76
|
+
isCanvasPreviewMode: boolean;
|
|
77
|
+
/** The mode the builder was opened in (`metadata.startInMode`). */
|
|
78
|
+
startInMode?: CanvasActions;
|
|
79
|
+
/** Editing is unavailable: RBAC, `disable_canvas_edit_for_reps`, or a frozen canvas. */
|
|
80
|
+
hideEdit: boolean;
|
|
81
|
+
/** `canRetriggerWizard()` — the canvas has wizard steps AND the wizard is already completed. */
|
|
82
|
+
canRetriggerWizard: boolean;
|
|
83
|
+
/** Active canvas id — required so the caller can persist the per-canvas dedup marker. */
|
|
84
|
+
canvasId?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Whether this canvas was already auto-opened in the CURRENT page load (PIT-7510 Q12). The
|
|
87
|
+
* caller reads this via `consumeCompletionWizardAutoOpened` — a read-and-clear `sessionStorage`
|
|
88
|
+
* marker (keyed by canvas id) rather than mount-local state, because the wizard completion path
|
|
89
|
+
* (`completeWizard()`) runs `window.location.reload()`, which remounts the whole builder. A
|
|
90
|
+
* mount-local flag would reset on that reload and the `{ immediate: true }` watcher would
|
|
91
|
+
* auto-reopen the wizard, producing the open→cancel→reload→reopen flash loop (PIT-7030). The
|
|
92
|
+
* marker is consumed per mount, so a LATER Edit open of the same deck auto-opens again.
|
|
93
|
+
*/
|
|
94
|
+
alreadyAutoOpened: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* PIT-7030: decide whether opening a canvas via the Edit action should reopen the completion
|
|
98
|
+
* wizard instead of landing in the canvas editor.
|
|
99
|
+
*
|
|
100
|
+
* Pure so the guard chain is unit-testable — the caller performs the (async, persisting)
|
|
101
|
+
* `retriggerWizard()` side effect.
|
|
102
|
+
*
|
|
103
|
+
* A never-completed deck already shows the wizard through `isCompletionWizardShowing`, so this
|
|
104
|
+
* only covers the completed case, which is what `canRetriggerWizard` encodes.
|
|
105
|
+
*/
|
|
106
|
+
export declare function shouldAutoOpenCompletionWizard(p: ShouldAutoOpenCompletionWizardParams): boolean;
|
|
107
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FullscreenMode } from '../../../types/organizationSettings.types';
|
|
2
|
+
/**
|
|
3
|
+
* The presentation fullscreen mode to use: the rep's explicit in-presentation
|
|
4
|
+
* choice wins; otherwise the org/instance default; otherwise 'fullscreen'
|
|
5
|
+
* (preserving PIT-7029's auto-enter-native behaviour).
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolvePresentationFullscreenMode(repChosen: FullscreenMode | null, defaultSetting: FullscreenMode | undefined): FullscreenMode;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CanvasSection } from '../../../../types/openapi';
|
|
2
|
+
/**
|
|
3
|
+
* Helpers for opt-in lazy section loading (`?lazy_sections=true`, PIT-7073).
|
|
4
|
+
*
|
|
5
|
+
* A lazy shell response carries ordered `section_ids` plus lightweight section
|
|
6
|
+
* STUBS — `{ id, name, thumbnail_url, metadata, is_draft, content: { data: [] } }`
|
|
7
|
+
* — so list views (ToC, section rail) render immediately while the real bodies
|
|
8
|
+
* stream in via the batch endpoint.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* A stub carries an empty placeholder `content`; a hydrated body has components.
|
|
12
|
+
* This is how we tell "not fetched yet" from "fetched".
|
|
13
|
+
*/
|
|
14
|
+
export declare const isHydratedSection: (section?: CanvasSection | null) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Merge an incoming shell's sections over what we already hold, keeping any body
|
|
17
|
+
* we've already hydrated.
|
|
18
|
+
*
|
|
19
|
+
* A shell gets RE-APPLIED constantly: every embedded-app canvas update (each
|
|
20
|
+
* Shopping Cart change in the PRH apps) round-trips the canvas through the host,
|
|
21
|
+
* which hands back the lazy shell. Applying it verbatim would wipe the hydrated
|
|
22
|
+
* bodies, so the deck blanks and visibly BLINKS while it re-fetches them.
|
|
23
|
+
*
|
|
24
|
+
* Section bodies are separate canvases, so a deck-level update never invalidates
|
|
25
|
+
* them — carrying them forward is safe. An incoming section that IS hydrated
|
|
26
|
+
* always wins, so a genuine section refresh still lands.
|
|
27
|
+
*/
|
|
28
|
+
export declare const preserveHydratedSections: (previous: CanvasSection[] | undefined, incoming: CanvasSection[]) => CanvasSection[];
|
|
29
|
+
/**
|
|
30
|
+
* The subset of `section_ids` that still needs fetching.
|
|
31
|
+
*
|
|
32
|
+
* Without this a re-applied shell would re-download every body on each
|
|
33
|
+
* interaction — on a 1k-section deck that's a full request storm per cart click.
|
|
34
|
+
*/
|
|
35
|
+
export declare const pendingSectionIds: (sectionIds: string[], sections: CanvasSection[] | undefined) => string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface SlideLike {
|
|
2
|
+
id: string;
|
|
3
|
+
}
|
|
4
|
+
interface GroupLike<S extends SlideLike> {
|
|
5
|
+
id: string;
|
|
6
|
+
slides: S[];
|
|
7
|
+
}
|
|
8
|
+
export interface FlatSlidePosition {
|
|
9
|
+
/** 1-based position of the active slide across the whole collection, or 0 when not found. */
|
|
10
|
+
number: number;
|
|
11
|
+
/** Total number of slides across every group in the collection. */
|
|
12
|
+
total: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Position of the active slide within the flattened collection (all groups' slides
|
|
16
|
+
* in order) — powers the content-viewer-style "N / M" page counter.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getFlatSlidePosition: <S extends SlideLike>(groups: GroupLike<S>[], activeGroupId: string | undefined, activeSlideId: string | undefined) => FlatSlidePosition;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a 1-based flat page number back to its group and slide, crossing group
|
|
21
|
+
* boundaries — the inverse of {@link getFlatSlidePosition}.
|
|
22
|
+
*/
|
|
23
|
+
export declare const getSlideAtFlatPage: <G extends GroupLike<SlideLike>>(groups: G[], page: number) => {
|
|
24
|
+
group: G;
|
|
25
|
+
slide: G["slides"][number];
|
|
26
|
+
} | null;
|
|
27
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|