@univerjs-pro/embed-ui 1.0.0-beta.0 → 1.0.0-beta.2

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 (126) hide show
  1. package/lib/cjs/index.js +1 -1
  2. package/lib/cjs/locale/ar-SA.js +1 -1
  3. package/lib/cjs/locale/ca-ES.js +1 -1
  4. package/lib/cjs/locale/de-DE.js +1 -1
  5. package/lib/cjs/locale/en-US.js +1 -1
  6. package/lib/cjs/locale/es-ES.js +1 -1
  7. package/lib/cjs/locale/fa-IR.js +1 -1
  8. package/lib/cjs/locale/fr-FR.js +1 -1
  9. package/lib/cjs/locale/id-ID.js +1 -1
  10. package/lib/cjs/locale/it-IT.js +1 -1
  11. package/lib/cjs/locale/ja-JP.js +1 -1
  12. package/lib/cjs/locale/ko-KR.js +1 -1
  13. package/lib/cjs/locale/pl-PL.js +1 -1
  14. package/lib/cjs/locale/pt-BR.js +1 -1
  15. package/lib/cjs/locale/ru-RU.js +1 -1
  16. package/lib/cjs/locale/sk-SK.js +1 -1
  17. package/lib/cjs/locale/vi-VN.js +1 -1
  18. package/lib/cjs/locale/zh-CN.js +1 -1
  19. package/lib/cjs/locale/zh-HK.js +1 -1
  20. package/lib/cjs/locale/zh-TW.js +1 -1
  21. package/lib/es/index.js +1 -1
  22. package/lib/es/locale/ar-SA.js +1 -1
  23. package/lib/es/locale/ca-ES.js +1 -1
  24. package/lib/es/locale/de-DE.js +1 -1
  25. package/lib/es/locale/en-US.js +1 -1
  26. package/lib/es/locale/es-ES.js +1 -1
  27. package/lib/es/locale/fa-IR.js +1 -1
  28. package/lib/es/locale/fr-FR.js +1 -1
  29. package/lib/es/locale/id-ID.js +1 -1
  30. package/lib/es/locale/it-IT.js +1 -1
  31. package/lib/es/locale/ja-JP.js +1 -1
  32. package/lib/es/locale/ko-KR.js +1 -1
  33. package/lib/es/locale/pl-PL.js +1 -1
  34. package/lib/es/locale/pt-BR.js +1 -1
  35. package/lib/es/locale/ru-RU.js +1 -1
  36. package/lib/es/locale/sk-SK.js +1 -1
  37. package/lib/es/locale/vi-VN.js +1 -1
  38. package/lib/es/locale/zh-CN.js +1 -1
  39. package/lib/es/locale/zh-HK.js +1 -1
  40. package/lib/es/locale/zh-TW.js +1 -1
  41. package/lib/index.css +204 -78
  42. package/lib/index.js +1 -1
  43. package/lib/locale/ar-SA.js +1 -1
  44. package/lib/locale/ca-ES.js +1 -1
  45. package/lib/locale/de-DE.js +1 -1
  46. package/lib/locale/en-US.js +1 -1
  47. package/lib/locale/es-ES.js +1 -1
  48. package/lib/locale/fa-IR.js +1 -1
  49. package/lib/locale/fr-FR.js +1 -1
  50. package/lib/locale/id-ID.js +1 -1
  51. package/lib/locale/it-IT.js +1 -1
  52. package/lib/locale/ja-JP.js +1 -1
  53. package/lib/locale/ko-KR.js +1 -1
  54. package/lib/locale/pl-PL.js +1 -1
  55. package/lib/locale/pt-BR.js +1 -1
  56. package/lib/locale/ru-RU.js +1 -1
  57. package/lib/locale/sk-SK.js +1 -1
  58. package/lib/locale/vi-VN.js +1 -1
  59. package/lib/locale/zh-CN.js +1 -1
  60. package/lib/locale/zh-HK.js +1 -1
  61. package/lib/locale/zh-TW.js +1 -1
  62. package/lib/types/components/EmbedFloatDomRenderer.d.ts +3 -3
  63. package/lib/types/components/EmbedFloatFullscreenButton.d.ts +1 -0
  64. package/lib/types/components/EmbedMenuTooltip.d.ts +11 -0
  65. package/lib/types/components/EmbedPrintImage.d.ts +8 -0
  66. package/lib/types/components/EmbedRuntimeProviders.d.ts +2 -0
  67. package/lib/types/components/embed-float-dom-geometry.d.ts +4 -1
  68. package/lib/types/components/embed-float-dom-interaction.d.ts +11 -2
  69. package/lib/types/controllers/embed-host-popup-lifecycle.controller.d.ts +13 -0
  70. package/lib/types/controllers/embed-host-ribbon-override.controller.d.ts +3 -2
  71. package/lib/types/controllers/embed-owned-dialog-cleanup.controller.d.ts +11 -0
  72. package/lib/types/controllers/embed-print.controller.d.ts +71 -0
  73. package/lib/types/controllers/embed-sheet-editor-shortcut.controller.d.ts +8 -0
  74. package/lib/types/locale/en-US.d.ts +6 -0
  75. package/lib/types/products/bases/EmbedChildView.d.ts +3 -3
  76. package/lib/types/products/bases/embed-content-size.d.ts +1 -0
  77. package/lib/types/products/boards/EmbedChildView.d.ts +2 -1
  78. package/lib/types/products/docs/EmbedDocsCustomBlockRenderer.d.ts +6 -0
  79. package/lib/types/products/docs/docs-custom-block-layout.d.ts +1 -0
  80. package/lib/types/products/docs/embed-docs-custom-block-bleed.render-controller.d.ts +7 -1
  81. package/lib/types/products/sheets/embed-content-size.d.ts +4 -0
  82. package/lib/types/products/slides/EmbedChildView.d.ts +4 -1
  83. package/lib/types/products/slides/embed-floating-menu-stage.d.ts +2 -2
  84. package/lib/types/products/slides/register.d.ts +4 -0
  85. package/lib/types/products/slides/services/embed-slide-presentation-preview.d.ts +14 -2
  86. package/lib/types/services/embed-activation.service.d.ts +5 -1
  87. package/lib/types/services/embed-child-runtime-scope.d.ts +2 -2
  88. package/lib/types/services/embed-child-unit-scoped-injector.d.ts +8 -2
  89. package/lib/types/services/embed-content-size-registry.service.d.ts +9 -1
  90. package/lib/types/services/embed-dom-wheel.d.ts +4 -2
  91. package/lib/types/services/embed-floating-menu-root.d.ts +2 -1
  92. package/lib/types/services/embed-fullscreen.service.d.ts +4 -1
  93. package/lib/types/services/embed-host-menu-override.service.d.ts +1 -0
  94. package/lib/types/services/embed-host-wheel-gesture.service.d.ts +1 -1
  95. package/lib/types/services/embed-host-zoom-wheel.d.ts +7 -0
  96. package/lib/types/services/embed-interaction-boundary.service.d.ts +8 -2
  97. package/lib/types/services/embed-mount.service.d.ts +8 -1
  98. package/lib/types/services/embed-presentation-policy.d.ts +1 -0
  99. package/lib/types/services/embed-print.service.d.ts +55 -0
  100. package/lib/types/services/embed-render-canvas-preview-provider.d.ts +3 -2
  101. package/lib/types/services/embed-render-child-view-contribution.d.ts +7 -3
  102. package/lib/types/services/embed-runtime-host-lease.service.d.ts +2 -2
  103. package/lib/types/services/embed-scene-canvas-capture.service.d.ts +29 -1
  104. package/lib/types/services/embed-ui-runtime-scope-lease.service.d.ts +16 -0
  105. package/lib/types/types/embed-ui.d.ts +29 -5
  106. package/lib/umd/index.js +1 -1
  107. package/lib/umd/locale/ar-SA.js +1 -1
  108. package/lib/umd/locale/ca-ES.js +1 -1
  109. package/lib/umd/locale/de-DE.js +1 -1
  110. package/lib/umd/locale/en-US.js +1 -1
  111. package/lib/umd/locale/es-ES.js +1 -1
  112. package/lib/umd/locale/fa-IR.js +1 -1
  113. package/lib/umd/locale/fr-FR.js +1 -1
  114. package/lib/umd/locale/id-ID.js +1 -1
  115. package/lib/umd/locale/it-IT.js +1 -1
  116. package/lib/umd/locale/ja-JP.js +1 -1
  117. package/lib/umd/locale/ko-KR.js +1 -1
  118. package/lib/umd/locale/pl-PL.js +1 -1
  119. package/lib/umd/locale/pt-BR.js +1 -1
  120. package/lib/umd/locale/ru-RU.js +1 -1
  121. package/lib/umd/locale/sk-SK.js +1 -1
  122. package/lib/umd/locale/vi-VN.js +1 -1
  123. package/lib/umd/locale/zh-CN.js +1 -1
  124. package/lib/umd/locale/zh-HK.js +1 -1
  125. package/lib/umd/locale/zh-TW.js +1 -1
  126. package/package.json +40 -37
@@ -3,6 +3,7 @@ import type { IEmbedHostMenuOverride } from '../types/embed-ui';
3
3
  export interface IEmbedHostMenuOverrideActivateOptions {
4
4
  layoutPolicy?: IEmbedLayoutPolicy;
5
5
  allowPlaceholder?: boolean;
6
+ allowHiddenRibbon?: boolean;
6
7
  portalContainer?: HTMLElement | null;
7
8
  }
8
9
  export declare class EmbedHostMenuOverrideService {
@@ -2,7 +2,7 @@ import type { IDisposable } from '@univerjs/core';
2
2
  export declare class EmbedHostWheelGestureService {
3
3
  private readonly _sessions;
4
4
  private readonly _hostGestureEvents;
5
- register(root: HTMLElement): IDisposable;
5
+ register(root: HTMLElement, container: HTMLElement): IDisposable;
6
6
  isHostGesture(event: WheelEvent): boolean;
7
7
  private _observeWheel;
8
8
  }
@@ -0,0 +1,7 @@
1
+ import type { ICommandService, IUniverInstanceService } from '@univerjs/core';
2
+ import type { IEmbedChildContainerContext } from '../types/embed-ui';
3
+ export interface IEmbedHostZoomWheelDependencies {
4
+ commandService: ICommandService;
5
+ univerInstanceService: IUniverInstanceService;
6
+ }
7
+ export declare function routeEmbedHostZoomWheel(event: WheelEvent, context: IEmbedChildContainerContext, dependencies: IEmbedHostZoomWheelDependencies): boolean;
@@ -4,17 +4,21 @@ export declare function getEmbedInteractionBoundaryOwnerId(element: HTMLElement
4
4
  export declare function isEventTargetInSameEmbedInteractionBoundary(scopeElement: HTMLElement | null | undefined, target: EventTarget | null | undefined): boolean;
5
5
  export declare class EmbedInteractionBoundaryService {
6
6
  private readonly _roots;
7
+ private readonly _childUnitIds;
7
8
  private readonly _portalObservers;
9
+ private readonly _closedPortalInputGuards;
8
10
  private readonly _activePortalOwners;
9
11
  private _pendingPortalOwner;
10
- registerRoot(embedId: string, root: HTMLElement): IDisposable;
12
+ registerRoot(embedId: string, root: HTMLElement, childUnitId?: string): IDisposable;
11
13
  private _registerRootPopupDescendantFocusRoles;
12
14
  registerOwnedElement(embedId: string, element: HTMLElement): IDisposable;
13
15
  contains(embedId: string | undefined, target: EventTarget | null | undefined, event?: Event): boolean;
14
16
  hasRecentInteraction(ownerDocument?: Document): boolean;
15
17
  hasRecentInteractionFor(embedId: string | undefined, ownerDocument?: Document): boolean;
16
18
  closeOwnedFloatingSurfaces(embedId: string | undefined, ownerDocument: Document | undefined): void;
17
- activatePortalScope(embedId: string, ownerDocument: Document | undefined): IDisposable;
19
+ activatePortalScope(embedId: string, ownerDocument: Document | undefined, options?: {
20
+ includeAppShellEditorPortal?: boolean;
21
+ }): IDisposable;
18
22
  private _collectOwnedFloatingSurfaceRoots;
19
23
  private _resolveFloatingSurfaceRoot;
20
24
  private _dispatchEscapeToFloatingSurface;
@@ -29,6 +33,8 @@ export declare class EmbedInteractionBoundaryService {
29
33
  private _isUniverPortalCandidate;
30
34
  private _isDetachedOffscreenPortalCandidate;
31
35
  private _markRuntimeFocusRole;
36
+ private _syncClosedPortalInputGuard;
37
+ private _clearClosedPortalInputGuard;
32
38
  private _markInteractionBoundaryOwnerTree;
33
39
  private _isUniverPortalTreeElement;
34
40
  private _getBodyPortalOwner;
@@ -2,6 +2,7 @@ import type { IEmbedDescriptor } from '@univerjs-pro/embed';
2
2
  import type { IEmbedHostMountResult, IEmbedMountSession } from '../types/embed-ui';
3
3
  import { Injector, IUniverInstanceService } from '@univerjs/core';
4
4
  import { EmbedChildViewRegistryService } from './embed-child-view-registry.service';
5
+ import { EmbedFloatingActiveService } from './embed-floating-active.service';
5
6
  import { EmbedHostContainerRegistryService } from './embed-host-container-registry.service';
6
7
  import { EmbedOverlayRootService } from './embed-overlay-root.service';
7
8
  import { EmbedRuntimePolicyService } from './embed-runtime-policy.service';
@@ -19,11 +20,13 @@ export declare class EmbedMountService {
19
20
  private readonly _overlayRootService;
20
21
  private readonly _sceneCanvasCaptureService;
21
22
  private readonly _univerInstanceService;
23
+ private readonly _floatingActiveService;
22
24
  private readonly _runtimePolicyService;
23
25
  private readonly _injector;
24
26
  private readonly _sessions;
25
27
  private readonly _tabFocusLeases;
26
- constructor(_hostContainerRegistry: EmbedHostContainerRegistryService, _childViewRegistry: EmbedChildViewRegistryService, _overlayRootService: EmbedOverlayRootService, _sceneCanvasCaptureService: EmbedSceneCanvasCaptureService, _univerInstanceService: IUniverInstanceService, _runtimePolicyService: EmbedRuntimePolicyService, _injector: Injector);
28
+ private readonly _tabHostRenderLeases;
29
+ constructor(_hostContainerRegistry: EmbedHostContainerRegistryService, _childViewRegistry: EmbedChildViewRegistryService, _overlayRootService: EmbedOverlayRootService, _sceneCanvasCaptureService: EmbedSceneCanvasCaptureService, _univerInstanceService: IUniverInstanceService, _floatingActiveService: EmbedFloatingActiveService, _runtimePolicyService: EmbedRuntimePolicyService, _injector: Injector);
27
30
  mount(descriptor: IEmbedDescriptor): IEmbedMountSession;
28
31
  mountIntoHostElement(descriptor: IEmbedDescriptor, hostElement: HTMLElement, runtimeRoots?: IEmbedHostMountResult['runtimeRoots']): IEmbedMountSession;
29
32
  private _mountResolvedHost;
@@ -33,10 +36,13 @@ export declare class EmbedMountService {
33
36
  getSession(embedId: string): IEmbedMountSession | undefined;
34
37
  listSessions(): IEmbedMountSession[];
35
38
  activateSession(embedId: string): void;
39
+ releaseSessionFocus(embedId: string): boolean;
36
40
  deactivateTabSessions(embedId?: string): IEmbedMountSession[];
37
41
  deactivateFloatingSession(embedId: string): IEmbedMountSession | undefined;
38
42
  setActive(embedId: string, active: boolean): void;
39
43
  private _runChildBeforeDeactivate;
44
+ private _suspendTabPeerHostRender;
45
+ private _releaseTabPeerHostRenderLease;
40
46
  private _resolveLayout;
41
47
  private _createRenderScope;
42
48
  private _registerRuntimeBoundary;
@@ -44,6 +50,7 @@ export declare class EmbedMountService {
44
50
  private _mountFloatingMenu;
45
51
  private _registerChildFocusBridge;
46
52
  private _focusTabPeerSession;
53
+ private _refreshTabPeerRender;
47
54
  private _activateTabPeerFocusLease;
48
55
  private _releaseTabPeerFocusLeasesForHost;
49
56
  private _releaseTabPeerFocusLease;
@@ -0,0 +1 @@
1
+ export declare function findEmbedPresentationElementAtPoint(root: HTMLElement, selector: string, clientX: number, clientY: number): HTMLElement | undefined;
@@ -0,0 +1,55 @@
1
+ import type { IPrintPreparationContext, IPrintPreparationContribution } from '@univerjs-pro/print';
2
+ import { EmbedHostAdapterRegistryService, EmbedHostAnchorModelService, EmbedModelService } from '@univerjs-pro/embed';
3
+ import { Disposable, ICommandService, IImageIoService, IUniverInstanceService, ThemeService } from '@univerjs/core';
4
+ import { EmbedContentSizeRegistryService } from './embed-content-size-registry.service';
5
+ import { EmbedFloatPreviewService } from './embed-float-preview.service';
6
+ import { EmbedHostRestoreService } from './embed-host-restore.service';
7
+ import { EmbedMountService } from './embed-mount.service';
8
+ import { EmbedPassiveViewportRegistryService } from './embed-passive-viewport-registry.service';
9
+ export interface IEmbedPrintResource {
10
+ canvas?: HTMLCanvasElement;
11
+ height: number;
12
+ source?: string;
13
+ verticalBreaks?: readonly number[];
14
+ width: number;
15
+ }
16
+ export declare class EmbedPrintService extends Disposable implements IPrintPreparationContribution {
17
+ private readonly _embedModelService;
18
+ private readonly _anchorModelService;
19
+ private readonly _hostAdapterRegistry;
20
+ private readonly _restoreService;
21
+ private readonly _previewService;
22
+ private readonly _mountService;
23
+ private readonly _contentSizeRegistry;
24
+ private readonly _passiveViewportRegistry;
25
+ private readonly _commandService;
26
+ private readonly _univerInstanceService;
27
+ private readonly _themeService;
28
+ private readonly _imageIoService;
29
+ private readonly _resources;
30
+ constructor(_embedModelService: EmbedModelService, _anchorModelService: EmbedHostAnchorModelService, _hostAdapterRegistry: EmbedHostAdapterRegistryService, _restoreService: EmbedHostRestoreService, _previewService: EmbedFloatPreviewService, _mountService: EmbedMountService, _contentSizeRegistry: EmbedContentSizeRegistryService, _passiveViewportRegistry: EmbedPassiveViewportRegistryService, _commandService: ICommandService, _univerInstanceService: IUniverInstanceService, _themeService: ThemeService, _imageIoService: IImageIoService);
31
+ prepare(context: IPrintPreparationContext): Promise<void>;
32
+ getImage(hostUnitId: string, embedId: string): string | undefined;
33
+ getResource(hostUnitId: string, embedId: string): IEmbedPrintResource | undefined;
34
+ private _activateSheetTabForPrint;
35
+ private _activateSlidePageForPrint;
36
+ private _prepareDescriptor;
37
+ private _captureMountedCanvas;
38
+ private _renderMountedScene;
39
+ private _renderCompleteScene;
40
+ private _resolveCompleteCaptureOptions;
41
+ private _measureContentSize;
42
+ private _resolveViewState;
43
+ private _resolveSize;
44
+ private _resolveTabViewportSize;
45
+ private _toDataUrl;
46
+ private _preloadImage;
47
+ private _clearHost;
48
+ private _getKey;
49
+ dispose(): void;
50
+ }
51
+ export declare function resolveCaptureFrameSlice(scroll: number, viewportSize: number, contentSize: number): {
52
+ size: number;
53
+ sourceOffset: number;
54
+ target: number;
55
+ };
@@ -1,8 +1,9 @@
1
1
  import type { DependencyIdentifier, Injector, UniverInstanceType } from '@univerjs/core';
2
- import type { IRenderManagerService } from '@univerjs/engine-render';
3
- import type { IEmbedFloatPreviewProvider } from '../types/embed-ui';
2
+ import type { IEmbedChildContainerContext, IEmbedFloatPreviewProvider } from '../types/embed-ui';
3
+ import { IRenderManagerService } from '@univerjs/engine-render';
4
4
  export interface ICreateEmbedRenderCanvasPreviewProviderOptions {
5
5
  childType: UniverInstanceType;
6
6
  renderManagerService: DependencyIdentifier<IRenderManagerService>;
7
7
  }
8
8
  export declare function createEmbedRenderCanvasPreviewProvider(injector: Injector, options: ICreateEmbedRenderCanvasPreviewProviderOptions): IEmbedFloatPreviewProvider;
9
+ export declare function waitForEmbedContextCanvasPreviewReady(context: IEmbedChildContainerContext, renderCurrentFrame?: boolean): Promise<void>;
@@ -1,8 +1,9 @@
1
1
  import type { EmbedLayout } from '@univerjs-pro/embed';
2
- import type { DependencyIdentifier, IDisposable, UniverInstanceType } from '@univerjs/core';
2
+ import type { DependencyIdentifier, IDisposable } from '@univerjs/core';
3
3
  import type { IRenderManagerService } from '@univerjs/engine-render';
4
+ import type { Observable } from 'rxjs';
4
5
  import type { IEmbedChildContainerContext, IEmbedChildViewContribution } from '../types/embed-ui';
5
- import { Injector } from '@univerjs/core';
6
+ import { Injector, UniverInstanceType } from '@univerjs/core';
6
7
  export interface IEmbedRenderLike {
7
8
  isMainScene?: boolean;
8
9
  engine: {
@@ -25,7 +26,9 @@ export interface IEmbedRenderLike {
25
26
  makeDirty?: (dirty?: boolean) => void;
26
27
  } | null | void;
27
28
  scene: {
28
- makeDirty: () => void;
29
+ afterRender$?: Observable<unknown>;
30
+ makeDirty: (dirty?: boolean) => void;
31
+ requestRender?: () => Promise<unknown> | unknown;
29
32
  render?: () => void;
30
33
  };
31
34
  with?: <T>(dependency: DependencyIdentifier<T>) => T;
@@ -44,6 +47,7 @@ export declare function createEmbedRenderChildViewContribution(options: ICreateE
44
47
  export declare function mountEmbedRenderChildUnit(context: IEmbedChildContainerContext, renderManagerServiceIdentifier: DependencyIdentifier<IRenderManagerService>, target?: HTMLElement, options?: IMountEmbedRenderChildUnitOptions): IDisposable | undefined;
45
48
  export declare function observeEmbedRenderTargetResize(render: IEmbedRenderLike, target: HTMLElement, options?: {
46
49
  activate?: boolean;
50
+ idleMs?: number;
47
51
  }): IDisposable;
48
52
  export declare function ensureEmbedChildRender(renderManagerService: IRenderManagerService, childUnitId: string, renderParentInjector?: Injector): IEmbedRenderLike | undefined;
49
53
  export declare function createEmbedChildRender(renderManagerService: IRenderManagerService, childUnitId: string, renderParentInjector?: Injector): IEmbedRenderLike | undefined;
@@ -8,8 +8,8 @@ export interface IEmbedRuntimeHostLease extends IDisposable {
8
8
  }
9
9
  /**
10
10
  * Temporarily lends a single Embed runtime to another DOM host without creating
11
- * a duplicate child session. This is a host-lifecycle bridge, not a global
12
- * interaction policy; consumers remain responsible for their local input rules.
11
+ * a duplicate child session. Only Embed-owned runtime slots are relocated: the
12
+ * outer host can belong to React and must remain under its original parent.
13
13
  *
14
14
  * If passive runtime hosting becomes common outside presentation, promote the
15
15
  * capability into EmbedMountService instead of adding more DOM relocation paths.
@@ -1,5 +1,6 @@
1
- import type { IDisposable, UniverInstanceType } from '@univerjs/core';
1
+ import type { IDisposable } from '@univerjs/core';
2
2
  import type { IEmbedChildContainerContext } from '../types/embed-ui';
3
+ import { UniverInstanceType } from '@univerjs/core';
3
4
  export type EmbedSceneCanvasCaptureResult = string | HTMLCanvasElement | ImageBitmap;
4
5
  export interface IEmbedSceneCanvasCaptureProvider {
5
6
  childType: UniverInstanceType;
@@ -22,3 +23,30 @@ export declare class EmbedSceneCanvasCaptureService {
22
23
  captureByChildUnitId(childUnitId: string): Promise<EmbedSceneCanvasCaptureResult | null | undefined>;
23
24
  }
24
25
  export declare function captureEmbedContextSceneCanvas(context: IEmbedChildContainerContext): string | undefined;
26
+ interface IEmbedSceneScrollBar {
27
+ enableHorizontal: boolean;
28
+ enableVertical: boolean;
29
+ }
30
+ interface IEmbedScrollBarRender {
31
+ scene?: IEmbedScrollBarScene;
32
+ }
33
+ interface IEmbedScrollBarScene {
34
+ getViewports?: () => Array<{
35
+ getScrollBar?: () => IEmbedSceneScrollBar | null | undefined | void;
36
+ }>;
37
+ getAllObjects?: () => IEmbedScrollBarSceneObject[];
38
+ makeDirty?: (force?: boolean) => void;
39
+ render?: () => void;
40
+ }
41
+ interface IEmbedScrollBarSceneObject {
42
+ getSubScenes?: () => Map<string, IEmbedScrollBarScene>;
43
+ hide?: () => void;
44
+ oKey?: string;
45
+ show?: () => void;
46
+ visible?: boolean;
47
+ }
48
+ export declare function getEmbedContextSceneCanvas(context: IEmbedChildContainerContext, allowTainted?: boolean): HTMLCanvasElement | undefined;
49
+ export declare function hideEmbedContextScrollbars(context: IEmbedChildContainerContext): () => void;
50
+ export declare function hideEmbedRenderScrollbars(render: IEmbedScrollBarRender | null | undefined, roots?: readonly HTMLElement[]): () => void;
51
+ export declare function waitForEmbedPrintScrollbarsHidden(childType: UniverInstanceType): Promise<void>;
52
+ export {};
@@ -0,0 +1,16 @@
1
+ import type { IDisposable } from '@univerjs/core';
2
+ import type { IUIRuntimeScope } from '@univerjs/ui';
3
+ import { Disposable } from '@univerjs/core';
4
+ import { IUIRuntimeScopeService } from '@univerjs/ui';
5
+ /**
6
+ * Keeps nested Embed render scopes behind one stable UI runtime registration.
7
+ * The global UI service therefore retains its single-owner behavior while
8
+ * fullscreen scopes can temporarily take over and restore their parent scope.
9
+ */
10
+ export declare class EmbedUIRuntimeScopeLeaseService extends Disposable {
11
+ private readonly _runtimeScopeService;
12
+ private readonly _entries;
13
+ constructor(_runtimeScopeService: IUIRuntimeScopeService);
14
+ acquire(scope: IUIRuntimeScope): IDisposable;
15
+ dispose(): void;
16
+ }
@@ -1,6 +1,6 @@
1
1
  import type { EmbedHostEntry, EmbedLayout, EmbedMenuBehavior, IEmbedDescriptor, IEmbedLayoutPolicies } from '@univerjs-pro/embed';
2
- import type { DependencyIdentifier, ICommandService, IDisposable, Injector, IUniverInstanceService, UniverInstanceType } from '@univerjs/core';
3
- import type { IMenuManagerService, IRibbonService } from '@univerjs/ui';
2
+ import type { Dependency, DependencyIdentifier, ICommandService, IDisposable, Injector, IUniverInstanceService, UniverInstanceType } from '@univerjs/core';
3
+ import type { IMenuManagerService, IRibbonService, RibbonType } from '@univerjs/ui';
4
4
  import type { Observable } from 'rxjs';
5
5
  export interface IEmbedContainerContext {
6
6
  descriptor: IEmbedDescriptor;
@@ -92,6 +92,7 @@ export interface IEmbedHostContainerContribution {
92
92
  export interface IEmbedChildViewContribution {
93
93
  childType: UniverInstanceType;
94
94
  supportedLayouts: EmbedLayout[];
95
+ scopedDependencies?: readonly Dependency[];
95
96
  canvasRootClassName?: string;
96
97
  beforeDeactivate?: (context: IEmbedChildContainerContext) => void;
97
98
  mount?: (context: IEmbedChildContainerContext) => IDisposable | void;
@@ -113,12 +114,13 @@ export interface IEmbedProductMenuMountContext {
113
114
  surface?: EmbedProductMenuSurface;
114
115
  childUnitId?: string;
115
116
  embedId?: string;
116
- injector: unknown;
117
+ injector: Injector;
117
118
  menuSchema: unknown;
118
119
  menuTitlePrefix?: string;
119
120
  activeRibbonTab?: string;
120
121
  headerMenu?: boolean;
121
122
  toolbarOnly?: boolean;
123
+ ribbonType?: RibbonType;
122
124
  ribbonHeaderClassName?: string;
123
125
  scopedActionServiceTokens?: readonly DependencyIdentifier<unknown>[];
124
126
  }
@@ -139,12 +141,26 @@ export interface IEmbedProductRibbonOverrideContext {
139
141
  hostUnitId: string;
140
142
  entry: EmbedHostEntry;
141
143
  }
144
+ export interface IEmbedPresentationPolicyContext {
145
+ childContext: IEmbedChildContainerContext;
146
+ entry: EmbedHostEntry;
147
+ runtimeHost: HTMLElement;
148
+ }
149
+ export interface IEmbedPresentationNavigationContext extends IEmbedPresentationPolicyContext {
150
+ clientX: number;
151
+ clientY: number;
152
+ }
153
+ export interface IEmbedPresentationPolicyContribution {
154
+ getChromeCss?: (context: IEmbedPresentationPolicyContext) => string | undefined;
155
+ activateNavigationAtPoint?: (context: IEmbedPresentationNavigationContext) => boolean;
156
+ }
142
157
  export interface IEmbedBlockContribution {
143
158
  childType: UniverInstanceType;
144
159
  productName: string;
145
160
  hostChromeMode?: EmbedHostChromeMode;
146
161
  hostHeaderMode?: 'none' | 'placeholder';
147
162
  layoutPolicy?: IEmbedLayoutPolicies;
163
+ presentationPolicy?: IEmbedPresentationPolicyContribution;
148
164
  createRibbonOverride?: (context: IEmbedProductRibbonOverrideContext) => IEmbedProductRibbonOverride | undefined;
149
165
  }
150
166
  export declare enum EmbedHostChromeMode {
@@ -172,14 +188,18 @@ export interface IEmbedFloatingMenuContribution {
172
188
  export interface IEmbedPassiveViewportWheelContext extends IEmbedChildContainerContext {
173
189
  event: WheelEvent;
174
190
  stage: EmbedFloatingStage;
175
- source?: 'wheel' | 'host-scroll-sync';
191
+ source?: 'wheel' | 'host-scroll-sync' | 'print-capture';
176
192
  viewportScrollX?: number;
177
193
  viewportScrollY?: number;
178
194
  }
179
195
  export interface IEmbedPassiveViewportProvider {
180
196
  childType: UniverInstanceType;
181
197
  supportedLayouts?: EmbedLayout[];
198
+ getHorizontalScroll?: (context: IEmbedChildContainerContext) => number | undefined;
199
+ getVerticalScroll?: (context: IEmbedChildContainerContext) => number | undefined;
200
+ getStickyLeftWidth?: (context: IEmbedChildContainerContext) => number | undefined;
182
201
  getStickyHeaderHeight?: (context: IEmbedChildContainerContext) => number | undefined;
202
+ getStickyFooterHeight?: (context: IEmbedChildContainerContext) => number | undefined;
183
203
  handleWheel: (context: IEmbedPassiveViewportWheelContext) => boolean | void;
184
204
  subscribeVerticalScroll?: (context: IEmbedChildContainerContext, listener: (viewportScrollY: number) => void) => IDisposable | void;
185
205
  }
@@ -192,11 +212,15 @@ export interface IEmbedPassiveWheelHandlerContribution {
192
212
  export interface IEmbedContentSize {
193
213
  height?: number;
194
214
  width?: number;
215
+ verticalBreaks?: readonly number[];
195
216
  }
196
217
  export interface IEmbedContentSizeMeasureContext {
197
218
  childType: UniverInstanceType;
198
219
  childUnit?: unknown;
199
220
  childUnitId: string;
221
+ injector?: Injector;
222
+ limitRowsToViewportWidth?: boolean;
223
+ viewportHeight?: number;
200
224
  viewportWidth?: number;
201
225
  }
202
226
  export interface IEmbedContentSizeProvider {
@@ -233,7 +257,7 @@ export interface IEmbedMountSession {
233
257
  context?: IEmbedChildContainerContext;
234
258
  }
235
259
  export type EmbedFloatPreviewStatus = 'pending' | 'ready' | 'error' | 'stale';
236
- export type EmbedFloatPreviewReason = 'initial' | 'stage-exit' | 'resize' | 'content-change' | 'manual';
260
+ export type EmbedFloatPreviewReason = 'initial' | 'stage-exit' | 'resize' | 'content-change' | 'manual' | 'print';
237
261
  export type EmbedFloatPreviewInvalidationReason = 'model-change' | 'view-state-change' | 'resize' | 'theme-change' | 'locale-change' | 'dispose';
238
262
  export type EmbedFloatPreviewRenderResult = string | HTMLCanvasElement | ImageBitmap;
239
263
  export interface IEmbedFloatPreviewEntry<TViewState = unknown> {