@pitcher/js-api 1.29.0 → 1.31.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.
Files changed (158) hide show
  1. package/js-api.esm.js +488 -56
  2. package/js-api.esm.js.map +1 -1
  3. package/js-api.umd.min.js +32 -11
  4. package/js-api.umd.min.js.map +1 -1
  5. package/lib/ai-tasks/__tests__/weekly-focus.spec.d.ts +1 -0
  6. package/lib/ai-tasks/weekly-focus.d.ts +241 -0
  7. package/lib/apps/browser/appTypes.d.ts +28 -0
  8. package/lib/apps/browser/components/ContextMenu/TranslateFileButton.test.d.ts +1 -0
  9. package/lib/apps/browser/stores/api.d.ts +6 -1
  10. package/lib/apps/browser/stores/api.filesFoldersDeleter.test.d.ts +1 -0
  11. package/lib/apps/browser/stores/app.d.ts +5 -0
  12. package/lib/apps/browser/stores/app.selectionPruneScope.test.d.ts +1 -0
  13. package/lib/apps/browser/stores/upload.d.ts +26 -1
  14. package/lib/apps/browser/stores/upload.types.d.ts +9 -0
  15. package/lib/apps/browser/util/lifecycle.d.ts +57 -0
  16. package/lib/apps/browser/util/lifecycle.test.d.ts +1 -0
  17. package/lib/apps/canvas-builder/components/container/PopupApps/PopupAppModal.spec.d.ts +1 -0
  18. package/lib/apps/canvas-builder/components/container/PresentationTools/PresentationToolsButtons.spec.d.ts +1 -0
  19. package/lib/apps/canvas-builder/components/ui/BottomSheetModal/BottomSheetModal.integration.spec.d.ts +1 -0
  20. package/lib/apps/canvas-builder/components/ui/BottomSheetModal/BottomSheetModal.spec.d.ts +1 -0
  21. package/lib/apps/canvas-builder/components/ui/DynamicContent/section-component-bindings.util.d.ts +32 -0
  22. package/lib/apps/canvas-builder/components/ui/DynamicContent/useDynamicContent.d.ts +6 -0
  23. package/lib/apps/canvas-builder/components/ui/Link/Link.util.d.ts +8 -1
  24. package/lib/apps/canvas-builder/components/ui/Link/Link.util.test.d.ts +1 -0
  25. package/lib/apps/canvas-builder/components/ui/Multimedia/Multimedia.ldAsset.spec.d.ts +1 -0
  26. package/lib/apps/canvas-builder/components/ui/SectionList/SectionItemModal.spec.d.ts +1 -0
  27. package/lib/apps/canvas-builder/composables/useCanvas.d.ts +286 -10
  28. package/lib/apps/canvas-builder/composables/useCanvas.saveEcho.spec.d.ts +1 -0
  29. package/lib/apps/canvas-builder/composables/useCanvasBlocks.d.ts +40 -2
  30. package/lib/apps/canvas-builder/composables/useCanvasExit.d.ts +1 -0
  31. package/lib/apps/canvas-builder/composables/useCanvasHistory.d.ts +38 -2
  32. package/lib/apps/canvas-builder/composables/useCanvasTheme.d.ts +4 -2
  33. package/lib/apps/canvas-builder/composables/useContentSelector.d.ts +8 -1
  34. package/lib/apps/canvas-builder/composables/useInstalledEmbeddables.d.ts +1 -1
  35. package/lib/apps/canvas-builder/composables/useNavigatorDrawer.d.ts +27 -0
  36. package/lib/apps/canvas-builder/composables/useNavigatorDrawer.spec.d.ts +1 -0
  37. package/lib/apps/canvas-builder/composables/usePopupApps.d.ts +43 -4
  38. package/lib/apps/canvas-builder/composables/usePopupApps.spec.d.ts +1 -0
  39. package/lib/apps/canvas-builder/composables/usePresentationTools.d.ts +112 -0
  40. package/lib/apps/canvas-builder/composables/usePresentationTools.spec.d.ts +1 -0
  41. package/lib/apps/canvas-builder/types/canvas.d.ts +66 -3
  42. package/lib/apps/canvas-builder/util/canvas.util.d.ts +12 -0
  43. package/lib/apps/canvas-builder/util/completionWizard.util.d.ts +347 -0
  44. package/lib/apps/canvas-builder/util/completionWizard.util.test.d.ts +1 -0
  45. package/lib/apps/canvas-builder/util/fullscreenMode.util.d.ts +7 -0
  46. package/lib/apps/canvas-builder/util/fullscreenMode.util.test.d.ts +1 -0
  47. package/lib/apps/canvas-builder/util/iframe.util.d.ts +24 -2
  48. package/lib/apps/canvas-builder/util/iframe.util.test.d.ts +1 -0
  49. package/lib/apps/canvas-builder/util/lazySections.util.d.ts +35 -0
  50. package/lib/apps/canvas-builder/util/lazySections.util.test.d.ts +1 -0
  51. package/lib/apps/canvas-selector/stores/app.d.ts +14 -0
  52. package/lib/apps/collection-player/components/AppHeader.spec.d.ts +1 -0
  53. package/lib/apps/collection-player/composables/collection-navigation.util.d.ts +27 -0
  54. package/lib/apps/collection-player/composables/collection-navigation.util.spec.d.ts +1 -0
  55. package/lib/apps/collection-player/composables/speaker-notes.use.d.ts +14 -0
  56. package/lib/apps/collection-player/composables/speaker-notes.use.spec.d.ts +1 -0
  57. package/lib/apps/collection-player/stores/app.store.d.ts +8 -1
  58. package/lib/apps/collection-player/stores/showNotesToggle.spec.d.ts +1 -0
  59. package/lib/apps/content-selector/appTypes.d.ts +16 -0
  60. package/lib/apps/content-selector/components/Assets.uploaderRefresh.spec.d.ts +1 -0
  61. package/lib/apps/content-selector/components/Content/AllContent/List/expandFileGuard.spec.d.ts +1 -0
  62. package/lib/apps/content-selector/stores/app.d.ts +1 -1
  63. package/lib/apps/notes/NotesApp.accountNotes.spec.d.ts +1 -0
  64. package/lib/apps/notes/NotesApp.speakerNotes.spec.d.ts +1 -0
  65. package/lib/apps/notes/composables/useAccountNotes.d.ts +14 -0
  66. package/lib/apps/notes/composables/useAccountNotes.spec.d.ts +1 -0
  67. package/lib/apps/notes/composables/useAccountOnlyNotesGate.d.ts +21 -0
  68. package/lib/apps/notes/composables/useAccountOnlyNotesGate.spec.d.ts +1 -0
  69. package/lib/apps/notes/composables/useActiveSlideNotes.d.ts +42 -0
  70. package/lib/apps/notes/composables/useActiveSlideNotes.spec.d.ts +1 -0
  71. package/lib/components/CFileAccessManagement/collaborationApi.d.ts +2 -0
  72. package/lib/components/CFilePanel/Details.spec.d.ts +1 -0
  73. package/lib/components/CFilePanel/KeyMessages.spec.d.ts +1 -0
  74. package/lib/components/CFilePanel/Summary.spec.d.ts +1 -0
  75. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.annotations.use.d.ts +5 -1
  76. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.formFields.use.d.ts +8 -0
  77. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.link.use.d.ts +1 -1
  78. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.overlayItems.use.d.ts +1 -1
  79. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.use.d.ts +4 -9
  80. package/lib/components/CFileViewer/pdf/CFileViewer.pdf.util.d.ts +53 -1
  81. package/lib/components/CFileViewer/pdf/CFileViewerFullscreen.pdf.use.d.ts +1 -1
  82. package/lib/components/CFileViewer/pdf/__tests__/CFileViewer.pdf.annotations.text.test.d.ts +1 -0
  83. package/lib/components/CGlobalLoader/CGlobalLoaderMark.spec.d.ts +1 -0
  84. package/lib/components/CGlobalLoader/globalLoader.paths.d.ts +2 -0
  85. package/lib/components/CGlobalSearch/globalSearchTarget.util.d.ts +31 -0
  86. package/lib/components/CGlobalSearch/globalSearchTarget.util.test.d.ts +1 -0
  87. package/lib/components/CRichTextEditor/extensions/paragraphExtended.d.ts +7 -1
  88. package/lib/components/CRichTextEditor/extensions/paragraphExtended.test.d.ts +1 -0
  89. package/lib/components/canvases/CanvasesManagementBulk.use.d.ts +12 -2
  90. package/lib/components/masterCanvases/CMasterCanvasesManagement.use.d.ts +86 -0
  91. package/lib/components/masterCanvases/CMasterCanvasesManagement.use.spec.d.ts +1 -0
  92. package/lib/components/masterCanvases/CMasterCanvasesPendingShareCell.spec.d.ts +1 -0
  93. package/lib/components/masterCanvases/CMasterCanvasesSharedWithCell.use.d.ts +39 -0
  94. package/lib/components/masterCanvases/CMasterCanvasesSharedWithCell.use.spec.d.ts +1 -0
  95. package/lib/components/masterCanvases/createFromMaster.use.d.ts +255 -0
  96. package/lib/components/masterCanvases/createFromMaster.use.spec.d.ts +1 -0
  97. package/lib/components/masterCanvases/masterCanvasDocuments.use.d.ts +56 -0
  98. package/lib/components/masterCanvases/masterCanvasDocuments.use.spec.d.ts +1 -0
  99. package/lib/components/masterCanvases/masterCanvasShares.use.d.ts +103 -0
  100. package/lib/components/masterCanvases/masterCanvasShares.use.spec.d.ts +1 -0
  101. package/lib/components/masterCanvases/masterFromCanvas.use.d.ts +122 -0
  102. package/lib/components/masterCanvases/masterFromCanvas.use.spec.d.ts +1 -0
  103. package/lib/components/masterCanvases/masterFromTemplate.use.d.ts +50 -0
  104. package/lib/components/masterCanvases/masterFromTemplate.use.spec.d.ts +1 -0
  105. package/lib/components/savedCanvases/CSavedCanvasesManagement.use.d.ts +204 -0
  106. package/lib/components/savedCanvases/savedCanvasDocuments.use.d.ts +111 -0
  107. package/lib/components/savedCanvases/savedCanvasDocuments.use.spec.d.ts +1 -0
  108. package/lib/components/savedCanvases/smartFolders/SmartFolders.use.d.ts +4 -0
  109. package/lib/composables/useCourseOnlyApps.d.ts +1 -1
  110. package/lib/composables/usePdfInterpolation.d.ts +2 -2
  111. package/lib/composables/useWindowEvents.d.ts +1 -1
  112. package/lib/constants/cdp.const.d.ts +2 -0
  113. package/lib/constants/translationLanguages.const.d.ts +150 -0
  114. package/lib/constants/translationLanguages.const.spec.d.ts +1 -0
  115. package/lib/main.lib.d.ts +7 -0
  116. package/lib/sdk/api/HighLevelApi.d.ts +19 -6
  117. package/lib/sdk/api/modules/ai.d.ts +43 -1
  118. package/lib/sdk/api/modules/ai.spec.d.ts +1 -0
  119. package/lib/sdk/api/modules/appsDb.d.ts +4 -4
  120. package/lib/sdk/api/modules/canvas.d.ts +20 -0
  121. package/lib/sdk/api/modules/ui/types.ui.d.ts +25 -0
  122. package/lib/sdk/interfaces.d.ts +31 -1
  123. package/lib/sdk/main.d.ts +46 -0
  124. package/lib/sdk/payload.types.d.ts +149 -0
  125. package/lib/sdk/platform.d.ts +27 -0
  126. package/lib/sdk/platform.spec.d.ts +1 -0
  127. package/lib/sdk/singleton-scope.spec.d.ts +1 -0
  128. package/lib/sdk/utils/httpFetch.spec.d.ts +1 -0
  129. package/lib/theme/canvasUiUnoPreset.test.d.ts +1 -0
  130. package/lib/types/ai-tasks.const.d.ts +39 -1
  131. package/lib/types/app.d.ts +55 -1
  132. package/lib/types/call.d.ts +14 -0
  133. package/lib/types/canvases.d.ts +15 -0
  134. package/lib/types/launchDarkly.types.d.ts +8 -3
  135. package/lib/types/organizationSettings.types.d.ts +39 -0
  136. package/lib/util/aiSummary.d.ts +30 -0
  137. package/lib/util/aiSummary.spec.d.ts +1 -0
  138. package/lib/util/network.d.ts +35 -0
  139. package/lib/util/user.d.ts +18 -0
  140. package/lib/util/user.test.d.ts +1 -0
  141. package/package.json +1 -1
  142. package/types/openapi/models/Canvas.d.ts +1 -0
  143. package/types/openapi/models/CanvasCreate.d.ts +1 -0
  144. package/types/openapi/models/CanvasCreateRequest.d.ts +1 -0
  145. package/types/openapi/models/CanvasRecommendedFile.d.ts +1 -1
  146. package/types/openapi/models/CanvasRetrieve.d.ts +1 -0
  147. package/types/openapi/models/CanvasUpdate.d.ts +1 -0
  148. package/types/openapi/models/CanvasUpdateRequest.d.ts +1 -0
  149. package/types/openapi/models/DeletedCanvas.d.ts +1 -0
  150. package/types/openapi/models/DeletedEnvironment.d.ts +0 -1
  151. package/types/openapi/models/Environment.d.ts +0 -1
  152. package/types/openapi/models/EnvironmentRequest.d.ts +0 -1
  153. package/types/openapi/models/File.d.ts +3 -1
  154. package/types/openapi/models/FileRetrieve.d.ts +2 -0
  155. package/types/openapi/models/PatchedCanvasUpdateRequest.d.ts +1 -0
  156. package/types/openapi/models/PatchedEnvironmentRequest.d.ts +0 -1
  157. package/types/openapi/models/SharedLink.d.ts +6 -0
  158. package/types/openapi/models/SharedLinkCreateRequest.d.ts +5 -0
@@ -12,6 +12,7 @@ export default function useApp(): {
12
12
  is_template?: boolean | undefined;
13
13
  is_section?: boolean | undefined;
14
14
  is_block?: boolean | undefined;
15
+ is_master?: boolean | undefined;
15
16
  is_editable?: boolean | undefined;
16
17
  is_default?: boolean | undefined;
17
18
  metadata?: any;
@@ -60,6 +61,7 @@ export default function useApp(): {
60
61
  is_template?: boolean | undefined;
61
62
  is_section?: boolean | undefined;
62
63
  is_block?: boolean | undefined;
64
+ is_master?: boolean | undefined;
63
65
  is_editable?: boolean | undefined;
64
66
  is_default?: boolean | undefined;
65
67
  metadata?: any;
@@ -108,6 +110,7 @@ export default function useApp(): {
108
110
  is_template?: boolean | undefined;
109
111
  is_section?: boolean | undefined;
110
112
  is_block?: boolean | undefined;
113
+ is_master?: boolean | undefined;
111
114
  is_editable?: boolean | undefined;
112
115
  is_default?: boolean | undefined;
113
116
  metadata?: any;
@@ -156,6 +159,7 @@ export default function useApp(): {
156
159
  is_template?: boolean | undefined;
157
160
  is_section?: boolean | undefined;
158
161
  is_block?: boolean | undefined;
162
+ is_master?: boolean | undefined;
159
163
  is_editable?: boolean | undefined;
160
164
  is_default?: boolean | undefined;
161
165
  metadata?: any;
@@ -210,6 +214,7 @@ export default function useApp(): {
210
214
  is_template?: boolean | undefined;
211
215
  is_section?: boolean | undefined;
212
216
  is_block?: boolean | undefined;
217
+ is_master?: boolean | undefined;
213
218
  is_editable?: boolean | undefined;
214
219
  is_default?: boolean | undefined;
215
220
  metadata?: any;
@@ -258,6 +263,7 @@ export default function useApp(): {
258
263
  is_template?: boolean | undefined;
259
264
  is_section?: boolean | undefined;
260
265
  is_block?: boolean | undefined;
266
+ is_master?: boolean | undefined;
261
267
  is_editable?: boolean | undefined;
262
268
  is_default?: boolean | undefined;
263
269
  metadata?: any;
@@ -306,6 +312,7 @@ export default function useApp(): {
306
312
  is_template?: boolean | undefined;
307
313
  is_section?: boolean | undefined;
308
314
  is_block?: boolean | undefined;
315
+ is_master?: boolean | undefined;
309
316
  is_editable?: boolean | undefined;
310
317
  is_default?: boolean | undefined;
311
318
  metadata?: any;
@@ -354,6 +361,7 @@ export default function useApp(): {
354
361
  is_template?: boolean | undefined;
355
362
  is_section?: boolean | undefined;
356
363
  is_block?: boolean | undefined;
364
+ is_master?: boolean | undefined;
357
365
  is_editable?: boolean | undefined;
358
366
  is_default?: boolean | undefined;
359
367
  metadata?: any;
@@ -403,6 +411,7 @@ export default function useApp(): {
403
411
  is_template?: boolean | undefined;
404
412
  is_section?: boolean | undefined;
405
413
  is_block?: boolean | undefined;
414
+ is_master?: boolean | undefined;
406
415
  is_editable?: boolean | undefined;
407
416
  is_default?: boolean | undefined;
408
417
  metadata?: any;
@@ -450,6 +459,7 @@ export default function useApp(): {
450
459
  is_template?: boolean | undefined;
451
460
  is_section?: boolean | undefined;
452
461
  is_block?: boolean | undefined;
462
+ is_master?: boolean | undefined;
453
463
  is_editable?: boolean | undefined;
454
464
  is_default?: boolean | undefined;
455
465
  metadata?: any;
@@ -498,6 +508,7 @@ export default function useApp(): {
498
508
  is_template?: boolean | undefined;
499
509
  is_section?: boolean | undefined;
500
510
  is_block?: boolean | undefined;
511
+ is_master?: boolean | undefined;
501
512
  is_editable?: boolean | undefined;
502
513
  is_default?: boolean | undefined;
503
514
  metadata?: any;
@@ -546,6 +557,7 @@ export default function useApp(): {
546
557
  is_template?: boolean | undefined;
547
558
  is_section?: boolean | undefined;
548
559
  is_block?: boolean | undefined;
560
+ is_master?: boolean | undefined;
549
561
  is_editable?: boolean | undefined;
550
562
  is_default?: boolean | undefined;
551
563
  metadata?: any;
@@ -594,6 +606,7 @@ export default function useApp(): {
594
606
  is_template?: boolean | undefined;
595
607
  is_section?: boolean | undefined;
596
608
  is_block?: boolean | undefined;
609
+ is_master?: boolean | undefined;
597
610
  is_editable?: boolean | undefined;
598
611
  is_default?: boolean | undefined;
599
612
  metadata?: any;
@@ -642,6 +655,7 @@ export default function useApp(): {
642
655
  is_template?: boolean | undefined;
643
656
  is_section?: boolean | undefined;
644
657
  is_block?: boolean | undefined;
658
+ is_master?: boolean | undefined;
645
659
  is_editable?: boolean | undefined;
646
660
  is_default?: boolean | undefined;
647
661
  metadata?: any;
@@ -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,14 @@
1
+ import { Ref } from 'vue';
2
+ import { CollectionSlide } from '../types/collection-player.type';
3
+ /**
4
+ * Publish the on-screen slide's pptx speaker notes so the Notes App can render them
5
+ * (PIT-8016). Only `type: 'slide'` entries map onto a pptx page — whole-file entries
6
+ * (video, image, web) have no slide index, so they clear the key instead.
7
+ */
8
+ declare const _default: ({ isSwiperVisible, activeSlide, enabled, }: {
9
+ isSwiperVisible: Ref<boolean>;
10
+ activeSlide: Ref<CollectionSlide | null>;
11
+ /** Host opt-in — see `publishSpeakerNotes` on the player's props. */
12
+ enabled: () => boolean;
13
+ }) => void;
14
+ export default _default;
@@ -10,6 +10,7 @@ import { ActionCallback, default as useKeyboardBindings } from '../composables/k
10
10
  import { default as useSlideDirection } from '../composables/slide-direction.use';
11
11
  import { useCacheNavigation } from '../composables/navigation-cache.use';
12
12
  import { useAnnotationLayer } from '../composables/annotation-layer.use';
13
+ import { FlatSlidePosition } from '../composables/collection-navigation.util';
13
14
  export type RenderPageAsImage = (payload: {
14
15
  fileId: File['id'];
15
16
  documentId?: File['id'];
@@ -44,6 +45,7 @@ type StorePayload = {
44
45
  emit: EmitFn<Emit>;
45
46
  options?: Options;
46
47
  nodeId?: string;
48
+ showNotesToggle?: ComputedRef<boolean>;
47
49
  };
48
50
  type StoreData = {
49
51
  isLoading: Ref<boolean>;
@@ -61,7 +63,9 @@ type StoreData = {
61
63
  hasManyGroups: ComputedRef<boolean>;
62
64
  activeSlide: Ref<CollectionSlide | null>;
63
65
  activeGroup: Ref<CollectionGroup | null>;
66
+ slidePosition: ComputedRef<FlatSlidePosition>;
64
67
  setActiveSlide: (group?: CollectionGroup, slide?: CollectionSlide) => void;
68
+ setActiveFlatPage: (page: number) => void;
65
69
  onSlideChange: (customEvent: CustomEvent<[swiper: Swiper]>) => void;
66
70
  activatePreviousGroup: () => void;
67
71
  activateNextGroup: () => void;
@@ -78,11 +82,14 @@ type StoreData = {
78
82
  cacheNavigation: ReturnType<typeof useCacheNavigation>;
79
83
  nodeId?: string;
80
84
  handleKeyAction: ActionCallback;
85
+ /** Show the Notes App toggle in the header — rep surfaces only. Reactive: the host derives
86
+ * it from a LaunchDarkly flag, which can flip while the player is open. */
87
+ showNotesToggle: ComputedRef<boolean>;
81
88
  annotationLayer: ReturnType<typeof useAnnotationLayer>;
82
89
  updateSlideInSwiper: (index: number) => void;
83
90
  ensureActiveSlideInView: () => void;
84
91
  rootElement: Ref<HTMLElement | null>;
85
92
  };
86
- export declare function provideAppStore({ data, isEditMode, rootElement, api, emit, options, isLoading, nodeId, inModal, }: StorePayload): StoreData;
93
+ export declare function provideAppStore({ data, isEditMode, rootElement, api, emit, options, isLoading, nodeId, inModal, showNotesToggle, }: StorePayload): StoreData;
87
94
  export declare function useAppStore(): StoreData;
88
95
  export {};
@@ -26,6 +26,22 @@ export type AppProps = {
26
26
  minSelections?: Range<0, 999>;
27
27
  disableNoSharable?: boolean;
28
28
  disableNoPptxData?: boolean;
29
+ /**
30
+ * The mounting host's file source cannot decompose a file into pages, so the per-item
31
+ * "Expand file" action is withheld. Default `false` — sales mounts pass nothing and keep it.
32
+ *
33
+ * Expanding renders one tile per entry in the fetched file's `content_thumbnails`
34
+ * (FoldersFilesList.vue / FoldersFilesGrid.vue); with none, the view falls through to its
35
+ * "thumbnails are missing — re-upload the PDF" empty state. That state is correct advice for a
36
+ * sales `pitcher_files` PDF whose thumbnail generation failed, and WRONG for a source that never
37
+ * generates page thumbnails at all: re-uploading changes nothing. Set this where the second is
38
+ * true, so the action is absent rather than a button that always dead-ends.
39
+ *
40
+ * Set by the L&D course host (PIT-7083 QA-4): ld-app populates `contentThumbnails` only on its two
41
+ * video paths, as a single cover image — the PDF path ingests straight into PSPDFKit and appends
42
+ * none (ldIngestService.ts), so an L&D PDF's `content_thumbnails` is permanently `[]`.
43
+ */
44
+ disableFileExpansion?: boolean;
29
45
  onlyAllowContentPdfPages?: boolean;
30
46
  allowFolderSelection?: boolean;
31
47
  };
@@ -2,7 +2,7 @@ import { Ref, ComputedRef, UnwrapNestedRefs } from 'vue';
2
2
  import { FolderRetrieve, FolderFile, FileRetrieve, File, FolderFolder, FileContentTypeEnum } from '../../../../types/openapi';
3
3
  import { ApiStore } from './api';
4
4
  export type AppName = 'admin' | 'impact';
5
- export type SelectorType = 'content' | 'assets' | 'external_links' | 'ai_images' | 'pexels_images' | 'theme' | `multimedia-selector-${string}`;
5
+ export type SelectorType = 'content' | 'assets' | 'external_links' | 'pexels_images' | 'theme' | `multimedia-selector-${string}`;
6
6
  export type SortOption = 'nameAsc' | 'nameDesc' | 'modifiedAsc' | 'modifiedDesc';
7
7
  export type SelectedPage = {
8
8
  id: string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { MaybeRefOrGetter, ComputedRef, WritableComputedRef } from 'vue';
2
+ export declare const NOTES_APP_CONTENT_KEY = "notes_app_content";
3
+ /**
4
+ * PIT-8143: under `enable_account_only_meeting_notes`, meeting notes are scoped
5
+ * to the meeting bar's selected account. Each account gets its own localStorage
6
+ * bucket; the legacy key doubles as the "mode off / no account" bucket, so
7
+ * pre-existing free-floating notes keep working unchanged.
8
+ */
9
+ export declare function accountNotesBucketKey(baseKey: string, accountId: string | null): string;
10
+ export declare function useAccountNotes(baseKey?: string, enabled?: MaybeRefOrGetter<boolean>): {
11
+ content: WritableComputedRef<string>;
12
+ accountId: ComputedRef<string | null>;
13
+ storageKey: ComputedRef<string>;
14
+ };
@@ -0,0 +1,21 @@
1
+ import { ComputedRef, MaybeRefOrGetter } from 'vue';
2
+ import { InstanceSettings } from '../../../types/instanceSettings.types';
3
+ type PitcherSettings = InstanceSettings;
4
+ /**
5
+ * PIT-8144: under `enable_account_only_meeting_notes`, the notes app is HIDDEN everywhere while no
6
+ * account is selected — not rendered as a disabled tab. Every entry point (slotty TopBar,
7
+ * canvas-builder ControlBar/BottomBar, the collection player header, Impact's file viewer) and both
8
+ * widget mounts share this gate, so they can never drift apart.
9
+ *
10
+ * The signal is `call.selectedAccount.Id` and deliberately nothing broader — it is the exact key
11
+ * `useAccountNotes` buckets keystrokes by, so visibility and bucketing always agree. A pitchdeck
12
+ * that carries its own account satisfies it through deck-context adoption
13
+ * (`resolveDeckContextAdoption` in slotty), which writes that account into the call store.
14
+ *
15
+ * `settings` is for hosts that PROVIDE `pitcherSettings` themselves (slotty App.vue, Impact
16
+ * authenticated.vue) — a component cannot inject its own provide. Children omit it and inject.
17
+ */
18
+ export declare function useAccountOnlyNotesGate(settings?: MaybeRefOrGetter<PitcherSettings | undefined>): {
19
+ isNotesAppHidden: ComputedRef<boolean>;
20
+ };
21
+ export {};
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Speaker notes for the slide currently on screen in a FILE viewer — the standard
3
+ * PSPDFKit viewer or the Collection Player — as opposed to the canvas-builder's
4
+ * `active-section-metadata`, which only ever describes a converted section.
5
+ *
6
+ * localStorage rather than a shared ref because NotesApp runs in three contexts that
7
+ * share an origin but not a JS realm: the Impact widget, the slotty widget, and the
8
+ * `?fullscreen_notes=true` popup window.
9
+ */
10
+ export declare const ACTIVE_SLIDE_NOTES_KEY = "active-slide-notes";
11
+ export interface ActiveSlideNotes {
12
+ file_id: string;
13
+ /** 0-based position in `metadata.pptx_data.slides` — equal to the PSPDFKit page index. */
14
+ slide_index: number;
15
+ title: string;
16
+ note: string;
17
+ }
18
+ /**
19
+ * The narrow slice of a file both producers can supply (`PitcherFile`, `CollectionFileEntity`).
20
+ *
21
+ * `metadata` stays an open record because it genuinely is one — it maps a Django JSONField, and
22
+ * `FileMetadata` declares `[key: string]: any` for that reason. Declaring the `pptx_data` shape
23
+ * here instead would make this a weak type that neither caller's metadata satisfies. The shape is
24
+ * enforced at runtime by `readSlides` below, which is where an untyped blob has to be checked anyway.
25
+ */
26
+ interface SlideNotesSource {
27
+ id: string;
28
+ metadata?: Record<string, unknown> | null;
29
+ }
30
+ /** Read side — consumed by NotesApp. */
31
+ export declare function useActiveSlideNotes(): import('@vueuse/shared').RemovableRef<ActiveSlideNotes | null>;
32
+ /**
33
+ * Resolve `file.metadata.pptx_data.slides[pageIndex]` and publish just the two fields the
34
+ * Speaker Notes tab renders. The slide's `content` is deliberately left out: `pptx_data` runs
35
+ * to tens of KB and this is rewritten on every page turn.
36
+ *
37
+ * Clears the key when the file has no extracted pptx data or the page is out of range, so a
38
+ * non-PPTX file never inherits the previous file's note.
39
+ */
40
+ export declare function setActiveSlideNotes(file: SlideNotesSource | null | undefined, pageIndex: number): void;
41
+ export declare function clearActiveSlideNotes(): void;
42
+ export {};
@@ -0,0 +1,2 @@
1
+ import { createHighLevelApi } from '../../sdk/api/HighLevelApi';
2
+ export declare function useCollaborationApi(): ReturnType<typeof createHighLevelApi>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,11 @@
1
1
  import { Ref, ComputedRef } from 'vue';
2
- import { Instance, AnnotationsUnion } from 'pspdfkit';
2
+ import { Instance, AnnotationsUnion } from '@nutrient-sdk/viewer';
3
3
  import { CLIENT_TYPE } from '../../../constants/cdp.const';
4
4
  import { File } from '../../../../types/openapi';
5
+ export declare function stripSdkWrapper(text: string): string;
6
+ export declare function stripCorruption(text: string): string;
7
+ export declare function normalizeText(text: string): string;
8
+ export declare function needsCorruptionRepair(text: string): boolean;
5
9
  interface UseAnnotationsReturnType {
6
10
  annotations: Ref<AnnotationsUnion[]>;
7
11
  areAnnotationsModified: Ref<boolean>;
@@ -0,0 +1,8 @@
1
+ import { Ref, ComputedRef } from 'vue';
2
+ import { Instance } from '@nutrient-sdk/viewer';
3
+ interface UseFormFieldsReturnType {
4
+ areFormFieldValuesModified: ComputedRef<boolean>;
5
+ resetFormFieldChanges: () => void;
6
+ }
7
+ export declare function useFormFields(instance: Ref<Instance | undefined>): UseFormFieldsReturnType;
8
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { Ref, ComputedRef } from 'vue';
2
- import { Instance, AnnotationsUnion, List } from 'pspdfkit';
2
+ import { Instance, AnnotationsUnion, List } from '@nutrient-sdk/viewer';
3
3
  import { SaveLinkAnnotationPayload } from './CFileViewer.pdf.link.types';
4
4
  interface UseLinkAnnotationPayload {
5
5
  instance: Ref<Instance | undefined>;
@@ -1,5 +1,5 @@
1
1
  import { Ref } from 'vue';
2
- import { Instance } from 'pspdfkit';
2
+ import { Instance } from '@nutrient-sdk/viewer';
3
3
  import { FileRetrieve } from '../../../../types/openapi';
4
4
  interface UseOverlayItemsReturnType {
5
5
  setOverlayItemsForEmbeddedVideos: (currentPageIndex: number) => Promise<void>;
@@ -1,6 +1,6 @@
1
1
  import { Ref, ComputedRef } from 'vue';
2
2
  import { I18n } from 'vue-i18n';
3
- import { Instance, AnnotationsUnion } from 'pspdfkit';
3
+ import { Instance, AnnotationsUnion } from '@nutrient-sdk/viewer';
4
4
  import { AnnotationType } from '../CFileViewer.types';
5
5
  import { PitcherFile } from '../../../types/file.types';
6
6
  import { MiniPage, File, FileRetrieve } from '../../../../types/openapi';
@@ -27,6 +27,7 @@ interface FileViewerPdfReturnType {
27
27
  updateFileViewerSettings: (settings: Partial<typeof fileViewerSettings.value>) => void;
28
28
  cleanupPspdfKit: () => void;
29
29
  resetAnnotationChanges: () => void;
30
+ resetFormFieldChanges: () => void;
30
31
  isSearchOpen: Ref<boolean>;
31
32
  isThumbnailsOpen: Ref<boolean>;
32
33
  isTextAnnotationOpen: Ref<boolean>;
@@ -34,6 +35,7 @@ interface FileViewerPdfReturnType {
34
35
  currentPageIndex: Ref<number>;
35
36
  isAnnotationOpen: Ref<boolean>;
36
37
  areAnnotationsModified: Ref<boolean>;
38
+ areFormFieldValuesModified: ComputedRef<boolean>;
37
39
  selectedAnnotationType: Ref<Exclude<AnnotationType, 'text'>>;
38
40
  isSwitchingInteractionMode: Ref<boolean>;
39
41
  fileViewerSettings: typeof fileViewerSettings;
@@ -45,7 +47,7 @@ interface FileViewerPdfReturnType {
45
47
  onSaveLinkAnnotation: (data: SaveLinkAnnotationPayload) => void;
46
48
  hasHotspotsOnCurrentPage: Ref<boolean>;
47
49
  }
48
- declare const _default: ({ pdfViewerEl, bottomBarRef, i18n, appLocale, actions, assetsPrefix, clientType, context, pitcherSettings, launchDarkly, emit, fileId, fetchFileById, fetchDocumentInfo, }: {
50
+ declare const _default: ({ pdfViewerEl, bottomBarRef, i18n, appLocale, actions, assetsPrefix, clientType, context, pitcherSettings, launchDarkly, emit, fileId, fetchFileById, }: {
49
51
  pdfViewerEl: Ref<HTMLElement | null>;
50
52
  bottomBarRef: Ref<InstanceType<typeof CFileViewerBottomPdf> | null>;
51
53
  i18n: I18n;
@@ -59,12 +61,5 @@ declare const _default: ({ pdfViewerEl, bottomBarRef, i18n, appLocale, actions,
59
61
  fileId: ComputedRef<File["id"] | undefined>;
60
62
  emit: (name: string, ...args: any[]) => void;
61
63
  fetchFileById?: (id: FileRetrieve["id"]) => Promise<FileRetrieve>;
62
- fetchDocumentInfo?: (id: File["id"]) => Promise<{
63
- pageCount: number;
64
- pages?: Array<{
65
- width: number;
66
- height: number;
67
- }>;
68
- }>;
69
64
  }) => FileViewerPdfReturnType;
70
65
  export default _default;
@@ -1,4 +1,4 @@
1
- import { default as PSPDFKitType } from 'pspdfkit';
1
+ import { default as PSPDFKitType } from '@nutrient-sdk/viewer';
2
2
  /**
3
3
  * Tear down a PSPDFKit instance for a container without ever throwing.
4
4
  *
@@ -15,3 +15,55 @@ import { default as PSPDFKitType } from 'pspdfkit';
15
15
  * actually disposes the stuck dialog.
16
16
  */
17
17
  export declare function safePspdfkitUnload(pspdfkit: Pick<typeof PSPDFKitType, 'unload'> | undefined, container: HTMLElement | null): void;
18
+ /** What a keypress in the PDF viewer should do, or `null` for "ignore it". */
19
+ export type FileViewerKeyAction = 'next' | 'previous' | 'first' | 'last' | null;
20
+ /**
21
+ * Is the user typing into something? PDF AcroForm fields and rich-text
22
+ * annotations are editable in this viewer (PIT-7330), and there the arrow keys
23
+ * move the caret. Changing page out from under someone mid-edit would be a worse
24
+ * bug than the one this guard ships alongside.
25
+ *
26
+ * Deliberately duck-typed instead of `instanceof HTMLInputElement` (which is how
27
+ * NavigatorPresentation.vue does it). That works there because it listens on
28
+ * `window`, in the same realm. Our listener is attached to
29
+ * `instance.contentDocument`, so a target can belong to a DIFFERENT document
30
+ * realm, where `instanceof` against this realm's constructors is always false —
31
+ * it would silently disable the guard rather than fail loudly.
32
+ */
33
+ export declare function isTextEntryTarget(target: unknown): boolean;
34
+ /**
35
+ * Is an overlay open that owns the paging keys itself?
36
+ *
37
+ * Naive's dropdown binds `keydown` on `document` via vooks' `useKeyboard` — the exact
38
+ * target this composable now uses — while `keyboard && show` are true. So an open
39
+ * annotation menu would navigate the menu AND page the file behind it, with our
40
+ * `preventDefault()` on top. `.n-dropdown` only exists in the DOM while open.
41
+ *
42
+ * Drawers (file info, page metadata) scroll their own content, so `PageUp`/`PageDown`/
43
+ * `Home`/`End` belong to the panel whenever the press came from inside one.
44
+ */
45
+ export declare function isPagingOverlayActive(target: unknown): boolean;
46
+ /**
47
+ * Does `instance.contentDocument` need its own key listener?
48
+ *
49
+ * The SDK types it `Document | ShadowRoot`: normally it is the viewer's SHADOW ROOT,
50
+ * and `keydown` is a composed event, so presses inside it also reach the host
51
+ * `document` — one listener there is enough, and adding a second on the shadow root
52
+ * would fire the handler twice for the same press (advancing two pages).
53
+ *
54
+ * Under the SDK's iframe fallback it is a separate `Document` instead, whose events
55
+ * never reach the host at all, so that case does need its own listener.
56
+ *
57
+ * Checked by `nodeType` rather than `instanceof Document`: an iframe's document
58
+ * belongs to another realm, where `instanceof` against our constructors is false —
59
+ * the exact trap `isTextEntryTarget` documents.
60
+ */
61
+ export declare function needsOwnKeyListener(contentDocument: unknown): boolean;
62
+ /**
63
+ * Map a keydown to a page-navigation action, or `null` when it should be left alone.
64
+ *
65
+ * Split out so it can be unit-tested — the handler that consumes it lives inside a
66
+ * composable that needs a live PSPDFKit instance. It reads the event and (via
67
+ * `isPagingOverlayActive`) the document, but touches no viewer state.
68
+ */
69
+ export declare function resolveFileViewerKeyAction(event: KeyboardEvent): FileViewerKeyAction;
@@ -1,6 +1,6 @@
1
1
  import { Ref } from 'vue';
2
2
  import { MaybeRef } from '@vueuse/core';
3
- import { Instance } from 'pspdfkit';
3
+ import { Instance } from '@nutrient-sdk/viewer';
4
4
  import { default as CFileViewerBottomPdf } from './CFileViewerBottom.pdf.vue';
5
5
  declare const _default: ({ pdfViewerEl, bottomBarRef, instance, isThumbnailsOpen, isSearchOpen, }: {
6
6
  pdfViewerEl: MaybeRef<HTMLElement | null>;
@@ -0,0 +1,2 @@
1
+ export declare const GLOBAL_LOADER_PATH_1: readonly ["M45,0.1080000028014183 C45,22.57200050354004 45,45 45,45 C45,45 22.42799949645996,45 -0.1080000028014183,45", "M45,0.3959999978542328 C45,22.76300048828125 45,45 45,45 C45,45 22.235000610351562,45 -0.3959999978542328,45", "M45,0.8640000224113464 C45,23.07200050354004 45,45 45,45 C45,45 21.920000076293945,45 -0.8640000224113464,45", "M45,1.5839999914169312 C45,23.54400062561035 45,45 45,45 C45,45 21.430999755859375,45 -1.5839999914169312,45", "M45,2.5920000076293945 C45,24.195999145507812 45,45 45,45 C45,45 20.738000869750977,45 -2.5920000076293945,45", "M45,3.888000011444092 C45,25.020000457763672 45,45 45,45 C45,45 19.829999923706055,45 -3.888000011444092,45", "M45,5.6519999504089355 C45,26.118000030517578 45,45 45,45 C45,45 18.56399917602539,45 -5.6519999504089355,45", "M45,7.631999969482422 C45,27.31999969482422 45,45 45,45 C45,45 17.100000381469727,45 -7.631999969482422,45", "M45,10.116000175476074 C45,28.783000946044922 45,45 45,45 C45,45 15.190999984741211,45 -10.116000175476074,45", "M45,13.211999893188477 C45,30.540000915527344 45,45 45,45 C45,45 12.6899995803833,45 -13.211999893188477,45", "M45,17.20800018310547 C45,32.707000732421875 45,45 45,45 C45,45 9.230999946594238,45 -17.20800018310547,45", "M45,21.816999435424805 C45,35.07500076293945 45,45 45,45 C45,45 4.848999977111816,45 -21.816999435424805,45", "M45,27.792999267578125 C45,37.94900131225586 45,45 45,45 C45,45 -1.6679999828338623,45 -27.792999267578125,45", "M45,34.95600128173828 C45,41.11399841308594 45,45 45,45 C45,45 -11.482000350952148,45 -34.95600128173828,45", "M45,43.99399948120117 C45,44.650001525878906 45,45 45,45 C45,45 -34.12799835205078,45 -43.99399948120117,45", "M34.130001068115234,45 C10.1850004196167,45 -45,45 -45,45 C-45,45 -45,40.763999938964844 -45,34.130001068115234", "M18.4689998626709,45 C-8.07800006866455,45 -45,45 -45,45 C-45,45 -45,33.36899948120117 -45,18.4689998626709", "M0.25200000405311584,45 C-22.332000732421875,45 -45,45 -45,45 C-45,45 -45,22.667999267578125 -45,0.25200000405311584", "M-19.799999237060547,45 C-34.055999755859375,45 -45,45 -45,45 C-45,45 -45,6.824999809265137 -45,-19.799999237060547", "M-35.89400100708008,45 C-41.50600051879883,45 -45,45 -45,45 C-45,45 -45,-13.026000022888184 -45,-35.89400100708008", "M-45,41.32899856567383 C-45,24.437000274658203 -45,-45 -45,-45 C-45,-45 -43.667999267578125,-45 -41.32899856567383,-45", "M-45,31.35700035095215 C-45,6.190000057220459 -45,-45 -45,-45 C-45,-45 -39.56100082397461,-45 -31.35700035095215,-45", "M-45,24.37299919128418 C-45,-2.197000026702881 -45,-45 -45,-45 C-45,-45 -36.33000183105469,-45 -24.37299919128418,-45", "M-45,18.361000061035156 C-45,-8.178000450134277 -45,-45 -45,-45 C-45,-45 -33.3120002746582,-45 -18.361000061035156,-45", "M-45,13.680000305175781 C-45,-12.298999786376953 -45,-45 -45,-45 C-45,-45 -30.799999237060547,-45 -13.680000305175781,-45", "M-45,10.116000175476074 C-45,-15.190999984741211 -45,-45 -45,-45 C-45,-45 -28.783000946044922,-45 -10.116000175476074,-45", "M-45,7.343999862670898 C-45,-17.31599998474121 -45,-45 -45,-45 C-45,-45 -27.14699935913086,-45 -7.343999862670898,-45", "M-45,5.1479997634887695 C-45,-18.93000030517578 -45,-45 -45,-45 C-45,-45 -25.80699920654297,-45 -5.1479997634887695,-45", "M-45,3.312000036239624 C-45,-20.236000061035156 -45,-45 -45,-45 C-45,-45 -24.6560001373291,-45 -3.312000036239624,-45", "M-45,2.052000045776367 C-45,-21.111000061035156 -45,-45 -45,-45 C-45,-45 -23.847999572753906,-45 -2.052000045776367,-45", "M-45,1.0800000429153442 C-45,-21.77400016784668 -45,-45 -45,-45 C-45,-45 -23.214000701904297,-45 -1.0800000429153442,-45", "M-45,0.46799999475479126 C-45,-22.187000274658203 -45,-45 -45,-45 C-45,-45 -22.81100082397461,-45 -0.46799999475479126,-45", "M-45,0.1080000028014183 C-45,-22.42799949645996 -45,-45 -45,-45 C-45,-45 -22.57200050354004,-45 -0.1080000028014183,-45", "M-45,0 C-45,-22.5 -45,-45 -45,-45 C-45,-45 -22.5,-45 0,-45", "M-45,0 C-45,-22.5 -45,-45 -45,-45 C-45,-45 -22.5,-45 0,-45", "M45,0 C45,22.5 45,45 45,45 C45,45 22.5,45 0,45"];
2
+ export declare const GLOBAL_LOADER_PATH_2: readonly ["M45,0.07199999690055847 C45,22.54800033569336 45,45 45,45 C45,45 22.45199966430664,45 -0.07199999690055847,45", "M45,0.36000001430511475 C45,22.73900032043457 45,45 45,45 C45,45 22.259000778198242,45 -0.36000001430511475,45", "M45,0.8640000224113464 C45,23.07200050354004 45,45 45,45 C45,45 21.920000076293945,45 -0.8640000224113464,45", "M45,1.5479999780654907 C45,23.520000457763672 45,45 45,45 C45,45 21.45599937438965,45 -1.5479999780654907,45", "M45,2.555999994277954 C45,24.17300033569336 45,45 45,45 C45,45 20.76300048828125,45 -2.555999994277954,45", "M45,3.8519999980926514 C45,24.996999740600586 45,45 45,45 C45,45 19.856000900268555,45 -3.8519999980926514,45", "M45,5.507999897003174 C45,26.030000686645508 45,45 45,45 C45,45 18.66900062561035,45 -5.507999897003174,45", "M45,7.631999969482422 C45,27.31999969482422 45,45 45,45 C45,45 17.100000381469727,45 -7.631999969482422,45", "M45,10.079999923706055 C45,28.761999130249023 45,45 45,45 C45,45 15.218999862670898,45 -10.079999923706055,45", "M45,13.28499984741211 C45,30.579999923706055 45,45 45,45 C45,45 12.630000114440918,45 -13.28499984741211,45", "M45,17.100000381469727 C45,32.650001525878906 45,45 45,45 C45,45 9.32800006866455,45 -17.100000381469727,45", "M45,21.7450008392334 C45,35.03900146484375 45,45 45,45 C45,45 4.921999931335449,45 -21.7450008392334,45", "M45,27.253000259399414 C45,37.698001861572266 45,45 45,45 C45,45 -1.0299999713897705,45 -27.253000259399414,45", "M45,34.777000427246094 C45,41.03799819946289 45,45 45,45 C45,45 -11.196999549865723,45 -34.777000427246094,45", "M45,43.308998107910156 C45,44.40399932861328 45,45 45,45 C45,45 -30.948999404907227,45 -43.308998107910156,45", "M35.02899932861328,45 C11.598999977111816,45 -45,45 -45,45 C-45,45 -45,41.14400100708008 -45,35.02899932861328", "M20.089000701904297,45 C-6.547999858856201,45 -45,45 -45,45 C-45,45 -45,34.202999114990234 -45,20.089000701904297", "M0.46799999475479126,45 C-22.187000274658203,45 -45,45 -45,45 C-45,45 -45,22.81100082397461 -45,0.46799999475479126", "M-19.04400062561035,45 C-33.66699981689453,45 -45,45 -45,45 C-45,45 -45,7.540999889373779 -45,-19.04400062561035", "M-35.388999938964844,45 C-41.29499816894531,45 -45,45 -45,45 C-45,45 -45,-12.1850004196167 -45,-35.388999938964844", "M-45,41.4739990234375 C-45,24.836999893188477 -45,-45 -45,-45 C-45,-45 -43.722999572753906,-45 -41.4739990234375,-45", "M-45,31.716999053955078 C-45,6.679999828338623 -45,-45 -45,-45 C-45,-45 -39.71900177001953,-45 -31.716999053955078,-45", "M-45,24.44499969482422 C-45,-2.119999885559082 -45,-45 -45,-45 C-45,-45 -36.3650016784668,-45 -24.44499969482422,-45", "M-45,18.4689998626709 C-45,-8.07800006866455 -45,-45 -45,-45 C-45,-45 -33.36899948120117,-45 -18.4689998626709,-45", "M-45,13.968000411987305 C-45,-12.055999755859375 -45,-45 -45,-45 C-45,-45 -30.958999633789062,-45 -13.968000411987305,-45", "M-45,10.331999778747559 C-45,-15.020999908447266 -45,-45 -45,-45 C-45,-45 -28.906999588012695,-45 -10.331999778747559,-45", "M-45,7.380000114440918 C-45,-17.288999557495117 -45,-45 -45,-45 C-45,-45 -27.16900062561035,-45 -7.380000114440918,-45", "M-45,5.21999979019165 C-45,-18.878000259399414 -45,-45 -45,-45 C-45,-45 -25.851999282836914,-45 -5.21999979019165,-45", "M-45,3.4200000762939453 C-45,-20.15999984741211 -45,-45 -45,-45 C-45,-45 -24.724000930786133,-45 -3.4200000762939453,-45", "M-45,2.052000045776367 C-45,-21.111000061035156 -45,-45 -45,-45 C-45,-45 -23.847999572753906,-45 -2.052000045776367,-45", "M-45,1.1160000562667847 C-45,-21.75 -45,-45 -45,-45 C-45,-45 -23.238000869750977,-45 -1.1160000562667847,-45", "M-45,0.46799999475479126 C-45,-22.187000274658203 -45,-45 -45,-45 C-45,-45 -22.81100082397461,-45 -0.46799999475479126,-45", "M-45,0.1080000028014183 C-45,-22.42799949645996 -45,-45 -45,-45 C-45,-45 -22.57200050354004,-45 -0.1080000028014183,-45", "M-45,0 C-45,-22.5 -45,-45 -45,-45 C-45,-45 -22.5,-45 0,-45", "M-45,0 C-45,-22.5 -45,-45 -45,-45 C-45,-45 -22.5,-45 0,-45", "M45,0 C45,22.5 45,45 45,45 C45,45 22.5,45 0,45"];
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Decides whether a bare keystroke arriving at the `document` should be treated as a global
3
+ * shortcut (`/` opens omni-search) or as literal text the user is typing into a field.
4
+ *
5
+ * The subtlety this file exists for: the Meeting Bar V3 widget renders inside
6
+ * `attachShadow({ mode: 'open' })` (see `slotty-ui-ng/.../MeetingBarV3Embed.vue`), and a composed
7
+ * event crossing a shadow boundary has its `target` **retargeted to the host element**. A
8
+ * document-level listener therefore sees the host `<div>`, never the `<input>` the rep is typing
9
+ * in — so a naive `event.target.tagName` check waves the keystroke through and `/` tears the
10
+ * account-selector flyout down mid-search (PIT-8130).
11
+ */
12
+ /**
13
+ * The element actually receiving `event` — piercing any open shadow roots between it and the
14
+ * `document` listener that observed the event.
15
+ *
16
+ * `composedPath()` is the flattened path the event really travelled, so its first entry is the
17
+ * innermost node regardless of how many shadow boundaries sit above it, where `event.target` has
18
+ * already been retargeted to the outermost host. Real keyboard events are always `composed`; the
19
+ * `event.target` fallback covers a synthetic one that isn't (and a closed shadow root, where
20
+ * neither can see past the host).
21
+ *
22
+ * MUST be called synchronously from the event listener: `composedPath()` returns `[]` once
23
+ * dispatch has finished, which silently degrades this back to the retargeted `event.target` and
24
+ * reintroduces PIT-8130. Never defer it behind a `setTimeout`/`nextTick`.
25
+ */
26
+ export declare const resolveKeystrokeTarget: (event: KeyboardEvent) => Element | null;
27
+ /**
28
+ * `true` when `event` is a bare keystroke that no editable field is claiming, i.e. it is safe to
29
+ * consume as a global shortcut.
30
+ */
31
+ export declare const isTargetAllowed: (event: KeyboardEvent) => boolean;
@@ -11,10 +11,16 @@ export declare const styling: {
11
11
  fontSize: number;
12
12
  };
13
13
  };
14
+ /**
15
+ * `data-size` is read straight off authored HTML, so it can carry any string. Canvas content
16
+ * built by scripts/templates has been seen with heading values on a `<p>` (`data-size="h1"`),
17
+ * which is not a paragraph size and has no `styling` entry.
18
+ */
19
+ export declare const isParagraphSize: (value: unknown) => value is Paragraphs;
14
20
  declare module '@tiptap/core' {
15
21
  interface Commands<ReturnType> {
16
22
  paragraphExtended: {
17
- setParagraphExtended: (size: string) => ReturnType;
23
+ setParagraphExtended: (size: Paragraphs) => ReturnType;
18
24
  };
19
25
  }
20
26
  }
@@ -9,6 +9,16 @@ interface BaseBulkProps {
9
9
  confirmText?: string;
10
10
  cancelText?: string;
11
11
  }
12
+ /**
13
+ * What the dialogs NAME the selected rows as — a superset of `CanvasType` (PIT-8360 QA).
14
+ *
15
+ * `'master-canvas'` is deliberately not a `CanvasType`: that type is the API's `canvas_type`, sent
16
+ * as-is to the instance-tags endpoint by `bulkAddTagsDialog`, and there is no such server-side
17
+ * type. It exists only to pick the noun these dialogs put in front of the user, so it is confined
18
+ * to the two dialogs the masters tab actually opens (delete and manage attributes) — the tag
19
+ * dialogs, which are hidden on that tab, keep the narrower `CanvasType`.
20
+ */
21
+ export type BulkEntityType = CanvasType | 'master-canvas';
12
22
  interface BulkUpdateFileAttributeProps extends BaseBulkProps {
13
23
  fileNames: string[];
14
24
  metadataFetcher?: (params?: GetInstanceMetadataTemplatesPayload) => Promise<PaginatedMetadataTemplateList>;
@@ -22,7 +32,7 @@ interface BulkUpdateMetadataDialogProps extends BaseBulkProps {
22
32
  noMetadataErrorText?: string;
23
33
  subtitle?: string;
24
34
  isBulkUpdating: Ref<boolean>;
25
- canvasType: CanvasType;
35
+ canvasType: BulkEntityType;
26
36
  updater?: (params: PatchedCanvasUpdateRequest & {
27
37
  id: CanvasRetrieve['id'];
28
38
  fields?: string;
@@ -31,7 +41,7 @@ interface BulkUpdateMetadataDialogProps extends BaseBulkProps {
31
41
  interface BulkDeleteDialogProps extends BaseBulkProps {
32
42
  filteredData: ComputedRef<CanvasRetrieve[]>;
33
43
  isBulkDeleting: Ref<boolean>;
34
- canvasType: CanvasType;
44
+ canvasType: BulkEntityType;
35
45
  isReadonly?: (canvas: CanvasRetrieve) => boolean;
36
46
  content?: string;
37
47
  }