@univerjs/slides 0.1.5

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.
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare const SLIDES_PLUGIN_NAME = "slides";
@@ -0,0 +1,3 @@
1
+ import { IDocumentData } from '@univerjs/core';
2
+
3
+ export declare const docsDemoData: IDocumentData;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './slides-plugin';
17
+ export * from './views/render';
18
+ export { enUS, zhCN } from './locale';
@@ -0,0 +1,4 @@
1
+ import { default as zhCN } from './zh-CN';
2
+
3
+ declare const locale: typeof zhCN;
4
+ export default locale;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export { default as enUS } from './en-US';
17
+ export { default as zhCN } from './zh-CN';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ declare const locale: {};
17
+ export default locale;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export declare class InfoBarModel {
17
+ private _name;
18
+ constructor(_name: string);
19
+ get name(): string;
20
+ setName(name: string): void;
21
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
@@ -0,0 +1,25 @@
1
+ import { CanvasView } from './views/render';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Engine } from '@univerjs/engine-render';
4
+ import { IUniverInstanceService, LocaleService, Plugin, PluginType } from '@univerjs/core';
5
+
6
+ export interface IUniverSlidesConfig {
7
+ }
8
+ export declare class UniverSlidesPlugin extends Plugin {
9
+ private readonly _currentUniverService;
10
+ private readonly _localeService;
11
+ readonly _injector: Injector;
12
+ static type: PluginType;
13
+ private _config;
14
+ private _canvasEngine;
15
+ private _canvasView;
16
+ constructor(config: Partial<IUniverSlidesConfig> | undefined, _currentUniverService: IUniverInstanceService, _localeService: LocaleService, _injector: Injector);
17
+ initialize(): void;
18
+ getConfig(): IUniverSlidesConfig;
19
+ initCanvasEngine(): void;
20
+ onRendered(): void;
21
+ onDestroy(): void;
22
+ getCanvasEngine(): Engine | null;
23
+ getCanvasView(): CanvasView | null;
24
+ private _initializeDependencies;
25
+ }
@@ -0,0 +1,12 @@
1
+ import { Injector } from '@wendellhu/redi';
2
+ import { Scene } from '@univerjs/engine-render';
3
+ import { IPageElement, PageElementType, Registry } from '@univerjs/core';
4
+
5
+ export declare class ObjectAdaptor {
6
+ zIndex: number;
7
+ viewKey: PageElementType | null;
8
+ check(type: PageElementType): this | undefined;
9
+ convert(pageElement: IPageElement, mainScene: Scene): void;
10
+ create(injector: Injector): void;
11
+ }
12
+ export declare const CanvasObjectProviderRegistry: Registry<any>;
@@ -0,0 +1,26 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Scene, SceneViewer } from '@univerjs/engine-render';
4
+ import { IPageElement, LocaleService, PageElementType } from '@univerjs/core';
5
+
6
+ export declare enum DOCS_VIEW_KEY {
7
+ MAIN = "__DocsRender__",
8
+ SCENE_VIEWER = "__DocsViewer__",
9
+ SCENE = "__DocsScene__",
10
+ VIEWPORT = "__DocsViewPort_"
11
+ }
12
+ export declare class DocsAdaptor extends ObjectAdaptor {
13
+ private readonly _localeService;
14
+ zIndex: number;
15
+ viewKey: PageElementType;
16
+ private _liquid;
17
+ constructor(_localeService: LocaleService);
18
+ check(type: PageElementType): this | undefined;
19
+ convert(pageElement: IPageElement, mainScene: Scene): SceneViewer | undefined;
20
+ private _recalculateSizeBySkeleton;
21
+ private _calculatePagePosition;
22
+ }
23
+ export declare class DocsAdaptorFactory {
24
+ readonly zIndex = 5;
25
+ create(injector: Injector): DocsAdaptor;
26
+ }
@@ -0,0 +1,15 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Picture } from '@univerjs/engine-render';
4
+ import { IPageElement, PageElementType } from '@univerjs/core';
5
+
6
+ export declare class ImageAdaptor extends ObjectAdaptor {
7
+ zIndex: number;
8
+ viewKey: PageElementType;
9
+ check(type: PageElementType): this | undefined;
10
+ convert(pageElement: IPageElement): Picture;
11
+ }
12
+ export declare class ImageAdaptorFactory {
13
+ readonly zIndex = 4;
14
+ create(injector: Injector): ImageAdaptor;
15
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './docs-adaptor';
17
+ export * from './image-adaptor';
18
+ export * from './rich-text-adaptor';
19
+ export * from './shape-adaptor';
20
+ export * from './slide-adaptor';
21
+ export * from './spreadsheet-adaptor';
@@ -0,0 +1,17 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Scene, RichText } from '@univerjs/engine-render';
4
+ import { IPageElement, LocaleService, PageElementType } from '@univerjs/core';
5
+
6
+ export declare class RichTextAdaptor extends ObjectAdaptor {
7
+ private readonly _localeService;
8
+ zIndex: number;
9
+ viewKey: PageElementType;
10
+ constructor(_localeService: LocaleService);
11
+ check(type: PageElementType): this | undefined;
12
+ convert(pageElement: IPageElement, mainScene: Scene): RichText | undefined;
13
+ }
14
+ export declare class RichTextAdaptorFactory {
15
+ readonly zIndex = 0;
16
+ create(injector: Injector): RichTextAdaptor;
17
+ }
@@ -0,0 +1,31 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Rect } from '@univerjs/engine-render';
4
+ import { IPageElement, PageElementType } from '@univerjs/core';
5
+
6
+ export declare class ShapeAdaptor extends ObjectAdaptor {
7
+ zIndex: number;
8
+ viewKey: PageElementType;
9
+ check(type: PageElementType): this | undefined;
10
+ convert(pageElement: IPageElement): Rect<{
11
+ fill: string;
12
+ top: number;
13
+ left: number;
14
+ width: number | undefined;
15
+ height: number | undefined;
16
+ zIndex: number;
17
+ angle: number | undefined;
18
+ scaleX: number | undefined;
19
+ scaleY: number | undefined;
20
+ skewX: number | undefined;
21
+ skewY: number | undefined;
22
+ flipX: boolean | undefined;
23
+ flipY: boolean | undefined;
24
+ isTransformer: true;
25
+ forceRender: true;
26
+ }> | undefined;
27
+ }
28
+ export declare class ShapeAdaptorFactory {
29
+ readonly zIndex = 2;
30
+ create(injector: Injector): ShapeAdaptor;
31
+ }
@@ -0,0 +1,26 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Scene, Slide } from '@univerjs/engine-render';
4
+ import { IPageElement, PageElementType } from '@univerjs/core';
5
+
6
+ export declare enum SLIDE_VIEW_KEY {
7
+ MAIN = "__SLIDERender__",
8
+ SCENE_VIEWER = "__SLIDEViewer__",
9
+ SCENE = "__SLIDEScene__",
10
+ VIEWPORT = "__SLIDEViewPort_"
11
+ }
12
+ export declare class SlideAdaptor extends ObjectAdaptor {
13
+ private _injector;
14
+ zIndex: number;
15
+ viewKey: PageElementType;
16
+ private _ObjectProvider;
17
+ constructor(_injector: Injector);
18
+ check(type: PageElementType): this | undefined;
19
+ convert(pageElement: IPageElement, mainScene: Scene): Slide | undefined;
20
+ private _createScene;
21
+ private _addBackgroundRect;
22
+ }
23
+ export declare class SlideAdaptorFactory {
24
+ readonly zIndex = 6;
25
+ create(injector: Injector): SlideAdaptor;
26
+ }
@@ -0,0 +1,19 @@
1
+ import { ObjectAdaptor } from '../adaptor';
2
+ import { Injector } from '@wendellhu/redi';
3
+ import { Scene, SceneViewer } from '@univerjs/engine-render';
4
+ import { IPageElement, IContextService, LocaleService, PageElementType } from '@univerjs/core';
5
+
6
+ export declare class SpreadsheetAdaptor extends ObjectAdaptor {
7
+ private readonly _localeService;
8
+ private readonly _contextService;
9
+ zIndex: number;
10
+ viewKey: PageElementType;
11
+ constructor(_localeService: LocaleService, _contextService: IContextService);
12
+ check(type: PageElementType): this | undefined;
13
+ convert(pageElement: IPageElement, mainScene: Scene): SceneViewer | undefined;
14
+ private _updateViewport;
15
+ }
16
+ export declare class SpreadsheetAdaptorFactory {
17
+ readonly zIndex = 4;
18
+ create(injector: Injector): SpreadsheetAdaptor;
19
+ }
@@ -0,0 +1,33 @@
1
+ import { Injector } from '@wendellhu/redi';
2
+ import { IRenderManagerService } from '@univerjs/engine-render';
3
+ import { IUniverInstanceService, RxDisposable } from '@univerjs/core';
4
+
5
+ export declare enum SLIDE_KEY {
6
+ COMPONENT = "__slideRender__",
7
+ SCENE = "__mainScene__",
8
+ VIEW = "__mainView__"
9
+ }
10
+ export declare class CanvasView extends RxDisposable {
11
+ private readonly _currentUniverService;
12
+ private readonly _injector;
13
+ private readonly _renderManagerService;
14
+ private _objectProvider;
15
+ private _activePageId;
16
+ constructor(_currentUniverService: IUniverInstanceService, _injector: Injector, _renderManagerService: IRenderManagerService);
17
+ private _initialize;
18
+ activePage(pageId?: string): void;
19
+ private _scrollToCenter;
20
+ private _create;
21
+ private _currentRender;
22
+ private _addNewRender;
23
+ private _refreshThumb;
24
+ private _createSlide;
25
+ private _addBackgroundRect;
26
+ private _getCenterPositionViewPort;
27
+ private _thumbSceneRender;
28
+ private _createSlidePages;
29
+ createThumbs(): void;
30
+ private _createThumb;
31
+ private _createScene;
32
+ private _initializeDependencies;
33
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Copyright 2023-present DreamNum Inc.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ export * from './canvas-view';
@@ -0,0 +1,14 @@
1
+ import { Injector } from '@wendellhu/redi';
2
+ import { BaseObject, Scene } from '@univerjs/engine-render';
3
+ import { IPageElement } from '@univerjs/core';
4
+
5
+ export declare class ObjectProvider {
6
+ private readonly _injector;
7
+ private _adaptors;
8
+ constructor(_injector: Injector);
9
+ convertToRenderObjects(pageElements: {
10
+ [elementId: string]: IPageElement;
11
+ }, mainScene: Scene): BaseObject[];
12
+ private _executor;
13
+ private _adaptorLoader;
14
+ }
@@ -0,0 +1 @@
1
+ (function(S,d){typeof exports=="object"&&typeof module<"u"?d(exports,require("@univerjs/core"),require("@univerjs/engine-render"),require("@wendellhu/redi"),require("rxjs")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/engine-render","@wendellhu/redi","rxjs"],d):(S=typeof globalThis<"u"?globalThis:S||self,d(S.UniverSlides={},S.UniverCore,S.UniverEngineRender,S["@wendellhu/redi"],S.rxjs))})(this,function(S,d,l,E,ce){"use strict";var Ze=Object.defineProperty;var Je=(S,d,l)=>d in S?Ze(S,d,{enumerable:!0,configurable:!0,writable:!0,value:l}):S[d]=l;var f=(S,d,l)=>(Je(S,typeof d!="symbol"?d+"":d,l),l);var se;const ue={},oe={};class F{constructor(){f(this,"zIndex",0);f(this,"viewKey",null)}check(n){if(n===this.viewKey)return this}convert(n,e){}create(n){}}const Y=d.Registry.create();var pe=Object.defineProperty,ge=Object.getOwnPropertyDescriptor,_e=(c,n,e,r)=>{for(var t=r>1?void 0:r?ge(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&pe(n,e,t),t},fe=(c,n)=>(e,r)=>n(e,r,c);let Q=class extends F{constructor(n){super();f(this,"zIndex",5);f(this,"viewKey",d.PageElementType.DOCUMENT);f(this,"_liquid",new l.Liquid);this._localeService=n}check(n){if(n===this.viewKey)return this}convert(n,e){var k,he;const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,title:x,description:M,document:j}=n;if(j==null)return;const O=new d.DocumentDataModel(j),b=new l.DocumentViewModel(O),m=l.DocumentSkeleton.create(b,this._localeService),T=new l.Documents("__DocsRender__",m);m.calculate();const D=new l.SceneViewer("__DocsViewer__"+r,{top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0}),P=new l.Scene("__DocsScene__"+r,D),I=new l.Viewport("__DocsViewPort_"+r,P,{left:0,top:0,bottom:0,right:0,isWheelPreventDefaultX:!0});P.attachControl(),P.on(l.EVENT_TYPE.wheel,(A,H)=>{const C=A;if(C.ctrlKey){const N=Math.abs(C.deltaX);let z=N<40?.2:N<80?.4:.2;z*=C.deltaY>0?-1:1,P.scaleX<1&&(z/=2),P.scaleX+z>4?P.scale(4,4):P.scaleX+z<.1?P.scale(.1,.1):(C.deltaY>0,C.preventDefault())}else I.onMouseWheel(C,H)}),new l.ScrollBar(I,{mainScene:e}),P.addObject(T);const y=m.getActualSize();T.resize(y.actualWidth,y.actualHeight),P.resize(y.actualWidth,y.actualHeight+200);const V=(k=T.getSkeleton())==null?void 0:k.getPageSize();T.onPageRenderObservable.add(A=>{const{page:H,pageLeft:C,pageTop:N,ctx:z}=A,{width:q,height:G,marginBottom:ae,marginLeft:U,marginRight:Z,marginTop:J}=H;z.save(),z.translate(C-.5,N-.5),l.Rect.drawWith(z,{width:(V==null?void 0:V.width)||q,height:(V==null?void 0:V.height)||G,strokeWidth:1,stroke:"rgba(198,198,198, 1)",fill:"rgba(255,255,255, 1)",zIndex:3}),z.restore()});const{left:R,top:$}=T,X=m.getSkeletonData();if(X==null)return;const{pages:L}=X,W=[],K=new Map;this._recalculateSizeBySkeleton(T,P,m);for(let A=0,H=L.length;A<H;A++){const C=L[A],{skeDrawings:N,marginLeft:z,marginTop:q,pageWidth:G,pageHeight:ae}=C;this._liquid.translatePagePadding(C),N.forEach(U=>{const{aLeft:Z,aTop:J,height:ke,width:qe,drawingOrigin:Qe}=U,Ge=new l.Picture(U.objectId,{left:Z+R+this._liquid.x,top:J+$+this._liquid.y,width:qe,height:ke,zIndex:11,isTransformer:!0});K.set(U.objectId,{marginLeft:this._liquid.x,marginTop:this._liquid.y}),W.push(Ge)}),this._liquid.translatePage(C,T.pageLayoutType,T.pageMarginLeft,T.pageMarginTop)}return P.openTransformer(),P.addObjects(W),(he=P.getTransformer())==null||he.onChangingObservable.add(A=>{const{objects:H}=A;H.forEach(C=>{const{oKey:N,left:z,top:q,height:G,width:ae}=C,U=K.get(N),Z=(U==null?void 0:U.marginLeft)||0,J=(U==null?void 0:U.marginTop)||0;m==null||m.getViewModel().getDataModel().updateDrawing(N,{left:z-R-Z,top:q-$-J,height:G,width:ae})}),m==null||m.calculate()}),P.closeTransformer(),this._calculatePagePosition(T,P,I),D}_recalculateSizeBySkeleton(n,e,r){var a;const t=(a=r.getSkeletonData())==null?void 0:a.pages;if(t==null)return;let i=0,s=0;for(let o=0,h=t.length;o<h;o++){const u=t[o],{pageWidth:_,pageHeight:v}=u;n.pageLayoutType===l.PageLayoutType.VERTICAL?(s+=v,s+=n.pageMarginTop,o===h-1&&(s+=n.pageMarginTop),i=Math.max(i,_)):n.pageLayoutType===l.PageLayoutType.HORIZONTAL&&(i+=_,o!==h-1&&(i+=n.pageMarginLeft),s=Math.max(s,v))}n.resize(i,s),e.resize(i,s)}_calculatePagePosition(n,e,r,t=1){const i=e==null?void 0:e.getParent(),{width:s,height:a,pageMarginLeft:o,pageMarginTop:h}=n;if(i==null||s===Number.POSITIVE_INFINITY||a===Number.POSITIVE_INFINITY)return;const{width:u,height:_}=i;let v=0,g=0,w=0,p=0,x=Number.POSITIVE_INFINITY;if(u>(s+o*2)*t?(v=u/2-s*t/2,v/=t,w=(u-o*2)/t,x=0):(v=o,w=s+o*2,x=(w-u/t)/2),_>a?(g=_/2-a/2,p=(_-h*2)/t):(g=h,p=a+h*2),e.resize(w,p+200),n.translate(v,g),x!==Number.POSITIVE_INFINITY&&r!=null){const M=r.getBarScroll(x,0).x;r.scrollTo({x:M})}return this}};Q=_e([fe(0,E.Inject(d.LocaleService))],Q);class ve{constructor(){f(this,"zIndex",5)}create(n){return n.createInstance(Q)}}Y.add(new ve);class we extends F{constructor(){super(...arguments);f(this,"zIndex",1);f(this,"viewKey",d.PageElementType.IMAGE)}check(e){if(e===this.viewKey)return this}convert(e){const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,title:x,description:M,image:j={}}=e,{imageProperties:O,placeholder:b,link:m}=j,T=(O==null?void 0:O.contentUrl)||"";return new l.Picture(r,{url:T,top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0,forceRender:!0})}}class Se{constructor(){f(this,"zIndex",4)}create(n){return n.createInstance(we)}}Y.add(new Se);var Pe=Object.defineProperty,be=Object.getOwnPropertyDescriptor,Te=(c,n,e,r)=>{for(var t=r>1?void 0:r?be(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&Pe(n,e,t),t},me=(c,n)=>(e,r)=>n(e,r,c);let ee=class extends F{constructor(n){super();f(this,"zIndex",2);f(this,"viewKey",d.PageElementType.TEXT);this._localeService=n}check(n){if(n===this.viewKey)return this}convert(n,e){const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,title:x,description:M,richText:j={}}=n,{text:O,ff:b,fs:m,it:T,bl:D,ul:P,st:I,ol:y,bg:V,bd:R,cl:$,rich:X}=j;let L={top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0,forceRender:!0},W=!1;if(O!=null?(L={...L,text:O,ff:b,fs:m,it:T,bl:D,ul:P,st:I,ol:y,bg:V,bd:R,cl:$},W=!0):X!=null&&(L={...L,richText:X},W=!0),W!==!1)return new l.RichText(this._localeService,r,L)}};ee=Te([me(0,E.Inject(d.LocaleService))],ee);class Ie{constructor(){f(this,"zIndex",0)}create(n){return n.createInstance(ee)}}Y.add(new Ie);class Oe extends F{constructor(){super(...arguments);f(this,"zIndex",2);f(this,"viewKey",d.PageElementType.SHAPE)}check(e){if(e===this.viewKey)return this}convert(e){const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,title:x,description:M}=e,{shapeType:j,text:O,shapeProperties:b,placeholder:m,link:T}=e.shape||{},D=b==null?"":d.getColorStyle(b.shapeBackgroundFill)||"rgba(255,255,255,1)",P=b==null?void 0:b.outline,I={};if(P){const{outlineFill:y,weight:V}=P;I.strokeWidth=V,I.stroke=d.getColorStyle(y)||"rgba(0,0,0,1)"}if(j===d.ShapeType.RECTANGLE)return new l.Rect(r,{fill:D,top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0,forceRender:!0,...I});if(j===d.ShapeType.ROUND_RECTANGLE){const y=(b==null?void 0:b.radius)||0;return new l.Rect(r,{fill:D,top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0,forceRender:!0,radius:y,...I})}}}class ye{constructor(){f(this,"zIndex",2)}create(n){return n.createInstance(Oe)}}Y.add(new ye);var je=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,De=(c,n,e,r)=>{for(var t=r>1?void 0:r?Ce(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&je(n,e,t),t},Ee=(c,n)=>(e,r)=>n(e,r,c);let te=class extends F{constructor(n){super();f(this,"zIndex",6);f(this,"viewKey",d.PageElementType.SLIDE);f(this,"_ObjectProvider",null);this._injector=n}check(n){if(n===this.viewKey)return this}convert(n,e){const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,title:x,description:M,slide:j}=n;if(j==null)return;const O=new d.SlideDataModel(j),b=new l.Slide("__SLIDERender__"+r,{top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!1,forceRender:!0});b.enableNav(),b.enableSelectedClipElement();const m=O.getPageOrder(),T=O.getPages();if(!m||!T)return b;this._ObjectProvider=new B(this._injector);for(let D=0,P=m.length;D<P;D++){const I=T[m[D]],{id:y}=I;b.addPage(this._createScene(y,b,I,e,O))}return b.activeFirstPage(),b}_createScene(n,e,r,t,i){var g;const{width:s,height:a}=e,o=new l.Scene(n,e,{width:s,height:a});new l.Viewport(`PageViewer_${n}`,o,{left:0,top:0,bottom:0,right:0}).closeClip();const{pageElements:u,pageBackgroundFill:_}=r,v=(g=this._ObjectProvider)==null?void 0:g.convertToRenderObjects(u,t);return o.openTransformer(),this._addBackgroundRect(o,_,i),o.addObjects(v),o}_addBackgroundRect(n,e,r){const t=r.getPageSize(),{width:i=0,height:s=0}=t,a=new l.Rect("canvas",{left:0,top:0,width:i,height:s,strokeWidth:1,stroke:"rgba(198,198,198, 1)",fill:d.getColorStyle(e)||"rgba(255,255,255, 1)",zIndex:0,evented:!1});n.addObject(a,0)}};te=De([Ee(0,E.Inject(E.Injector))],te);class xe{constructor(){f(this,"zIndex",6)}create(n){return n.createInstance(te)}}Y.add(new xe);var Me=Object.defineProperty,Ve=Object.getOwnPropertyDescriptor,ze=(c,n,e,r)=>{for(var t=r>1?void 0:r?Ve(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&Me(n,e,t),t},le=(c,n)=>(e,r)=>n(e,r,c);let re=class extends F{constructor(n,e){super();f(this,"zIndex",4);f(this,"viewKey",d.PageElementType.SPREADSHEET);this._localeService=n,this._contextService=e}check(n){if(n===this.viewKey)return this}convert(n,e){const{id:r,zIndex:t,left:i=0,top:s=0,width:a,height:o,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,spreadsheet:x}=n;if(x==null)return;const{worksheet:M,styles:j}=x,{cellData:O}=M,b=new d.ObjectMatrix(O),m=new d.Styles(j),T=new l.SpreadsheetSkeleton(new d.Worksheet(M,m),M,b,m,this._localeService,this._contextService),{rowTotalHeight:D,columnTotalWidth:P,rowHeaderWidth:I,columnHeaderHeight:y}=T,V=P+M.rowHeader.width||0,R=D+M.columnHeader.height||0,$=new l.SceneViewer("spreadInSlideSceneViewer"+r,{top:s,left:i,width:a,height:o,zIndex:t,angle:h,scaleX:u,scaleY:_,skewX:v,skewY:g,flipX:w,flipY:p,isTransformer:!0,forceRender:!0}),X=new l.Scene("spreadInSlideScene"+r,$,{width:V,height:R});this._updateViewport(r,I,y,X,e);const L=new l.Spreadsheet("testSheetViewer",T,!1),W=new l.SpreadsheetRowHeader("spreadInSlideRow",T),K=new l.SpreadsheetColumnHeader("spreadInSlideColumn",T),k=new l.Rect("spreadInSlideLeftTop",{zIndex:2,left:-1,top:-1,width:I,height:y,fill:l.getColor([248,249,250]),stroke:l.getColor([217,217,217]),strokeWidth:1});return L.zIndex=10,X.addObjects([L],1),X.addObjects([W,K,k],2),$}_updateViewport(n,e,r,t,i){if(i==null)return;const s=e*t.scaleX,a=r*t.scaleY,o=new l.Viewport("spreadInSlideViewMain"+n,t,{left:s,top:a,bottom:0,right:0,isWheelPreventDefaultX:!0}),h=new l.Viewport("spreadInSlideViewTop"+n,t,{left:s,height:a,top:0,right:0,isWheelPreventDefaultX:!0}),u=new l.Viewport("spreadInSlideViewLeft"+n,t,{left:0,bottom:0,top:a,width:s,isWheelPreventDefaultX:!0});new l.Viewport("spreadInSlideViewLeftTop"+n,t,{left:0,top:0,width:s,height:a,isWheelPreventDefaultX:!0}),o.onScrollAfterObserver.add(_=>{const{scrollX:v,scrollY:g,actualScrollX:w,actualScrollY:p}=_;h.updateScroll({scrollX:v,actualScrollX:w}),u.updateScroll({scrollY:g,actualScrollY:p})}),t.attachControl(),new l.ScrollBar(o,{mainScene:i}),t.on(l.EVENT_TYPE.wheel,(_,v)=>{const g=_;if(g.ctrlKey){const w=Math.abs(g.deltaX);let p=w<40?.05:w<80?.02:.01;p*=g.deltaY>0?-1:1,t.scaleX<1&&(p/=2),t.scaleX+p>4?t.scale(4,4):t.scaleX+p<.1?t.scale(.1,.1):(t.scaleBy(p,p),g.preventDefault())}else o.onMouseWheel(g,v)})}};re=ze([le(0,E.Inject(d.LocaleService)),le(1,d.IContextService)],re);class Le{constructor(){f(this,"zIndex",4)}create(n){return n.createInstance(re)}}Y.add(new Le);var Ue=Object.defineProperty,Xe=Object.getOwnPropertyDescriptor,Ae=(c,n,e,r)=>{for(var t=r>1?void 0:r?Xe(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&Ue(n,e,t),t},Ne=(c,n)=>(e,r)=>n(e,r,c);let B=class{constructor(c){f(this,"_adaptors",[]);this._injector=c,this._adaptorLoader()}convertToRenderObjects(c,n){const e=Object.keys(c),r=[];return e.forEach(t=>{const i=c[t],s=this._executor(i,n);s!=null&&r.push(s)}),r}_executor(c,n){var t;const{id:e,type:r}=c;for(const i of this._adaptors){const s=(t=i.check(r))==null?void 0:t.convert(c,n);if(s!=null)return s}}_adaptorLoader(){Y.getData().sort(d.sortRules).forEach(c=>{this._adaptors.push(c.create(this._injector))})}};B=Ae([Ne(0,E.Inject(E.Injector))],B);var We=Object.defineProperty,Ye=Object.getOwnPropertyDescriptor,$e=(c,n,e,r)=>{for(var t=r>1?void 0:r?Ye(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&We(n,e,t),t},ne=(c,n)=>(e,r)=>n(e,r,c),de=(c=>(c.COMPONENT="__slideRender__",c.SCENE="__mainScene__",c.VIEW="__mainView__",c))(de||{});S.CanvasView=class extends d.RxDisposable{constructor(e,r,t){super();f(this,"_objectProvider",null);f(this,"_activePageId","");f(this,"_refreshThumb",d.debounce(()=>{this.createThumbs()},300));this._currentUniverService=e,this._injector=r,this._renderManagerService=t,this._initializeDependencies(this._injector),this._initialize()}_initialize(){this._renderManagerService.createRender$.pipe(ce.takeUntil(this.dispose$)).subscribe(e=>{this._create(e)}),this._currentUniverService.currentSlide$.pipe(ce.takeUntil(this.dispose$)).subscribe(e=>{this._create(e==null?void 0:e.getUnitId())}),this._currentUniverService.getAllUniverSlidesInstance().forEach(e=>{this._create(e.getUnitId())})}activePage(e){const r=this._currentUniverService.getCurrentUniverSlideInstance();let t;if(e)t=r.getPage(e);else{const o=r.getPages(),h=r.getPageOrder();if(h==null||o==null)return;t=o[h[0]],e=t.id}const i=this._currentRender();if(t==null||i==null||i.mainComponent==null)return;const{id:s}=t,a=i.mainComponent;if(this._activePageId=e,a!=null&&a.hasPage(s)){a.changePage(s);return}this._createScene(s,t)}_scrollToCenter(){var h;const e=(h=this._currentRender())==null?void 0:h.scene,r=e==null?void 0:e.getViewport("__mainView__"),t=this._getCenterPositionViewPort(e);if(!r||!t)return;const{left:i,top:s}=t,{x:a,y:o}=r.getBarScroll(i,s);r.scrollTo({x:a,y:o})}_create(e){e==null||this._currentUniverService.getUniverSlideInstance(e)==null||this._renderManagerService.has(e)||this._addNewRender(e)}_currentRender(){const e=this._currentUniverService.getCurrentUniverSlideInstance();return this._renderManagerService.getRenderById(e.getUnitId())}_addNewRender(e){const r=this._currentUniverService.getUniverSlideInstance(e);if(r==null)return;const t=r.getContainer(),i=r.getParentRenderUnitId();if(t!=null&&i!=null)throw new Error("container or parentRenderUnitId can only exist one");t==null&&i!=null?this._renderManagerService.createRenderWithParent(e,i):this._renderManagerService.createRender(e);const s=this._renderManagerService.getRenderById(e);if(s==null)return;const{scene:a,engine:o}=s;o.onTransformChangeObservable.addOnce(()=>{this._scrollToCenter()}),o.onTransformChangeObservable.add(()=>{setTimeout(()=>{this.createThumbs()},300)}),a.resize(2400,1800);const h=new l.Viewport("__mainView__",a,{left:0,top:0,bottom:0,right:0,isWheelPreventDefaultX:!0});a.attachControl(),a.on(l.EVENT_TYPE.wheel,(_,v)=>{const g=_;if(g.ctrlKey){const w=Math.abs(g.deltaX);let p=w<40?.2:w<80?.4:.2;p*=g.deltaY>0?-1:1,a.scaleX<1&&(p/=2),a.scaleX+p>4?a.scale(4,4):a.scaleX+p<.1?a.scale(.1,.1):(g.deltaY>0,g.preventDefault())}else h.onMouseWheel(g,v)}),a.onFileLoadedObservable.add(()=>{this._refreshThumb()}),l.ScrollBar.attachTo(h),this._renderManagerService.setCurrent(e);const u=this._createSlide(a);s.mainComponent=u,s.components.set("__slideRender__",u),this._createSlidePages(r,u),o.runRenderLoop(()=>{a.render();const _=document.getElementById("app");_&&(_.innerText=`fps:${Math.round(o.getFps()).toString()}`)})}_createSlide(e){const r=this._currentUniverService.getCurrentUniverSlideInstance(),{width:t,height:i}=e,s=r.getPageSize(),{width:a=100,height:o=100}=s,h=new l.Slide("__slideRender__",{left:(t-a)/2,top:(i-o)/2,width:a,height:o,zIndex:10});return h.enableNav(),h.enableSelectedClipElement(),e.addObject(h),h}_addBackgroundRect(e,r){const i=this._currentUniverService.getCurrentUniverSlideInstance().getPageSize(),{width:s=0,height:a=0}=i,o=new l.Rect("canvas",{left:0,top:0,width:s,height:a,strokeWidth:1,stroke:"rgba(198,198,198, 1)",fill:d.getColorStyle(r)||"rgba(255,255,255, 1)",zIndex:0,evented:!1});e.addObject(o,0)}_getCenterPositionViewPort(e){if(!e)return{left:0,top:0};const{width:r,height:t}=e,i=e.getEngine(),s=(i==null?void 0:i.width)||0,a=(i==null?void 0:i.height)||0;return{left:(r-s)/2,top:(t-a)/2}}_thumbSceneRender(e,r){const t=this._renderManagerService.getRenderById(e);if(t==null)return;const{engine:i}=t;if(i==null)return;const{width:s,height:a}=r,{width:o=s,height:h=a}=i,u=i.getCanvas().getContext();r.renderToThumb(u,e,o/s,h/a)}_createSlidePages(e,r){const t=e.getPages(),i=e.getPageOrder();if(!(!t||!i)&&i.length!==0){for(let s=0,a=i.length;s<a;s++){const o=i[s];this._createScene(o,t[o]),this._createThumb(o)}this._activePageId=i[0],r.activeFirstPage()}}createThumbs(){const r=this._currentUniverService.getCurrentUniverSlideInstance().getPageOrder(),t=this._currentRender();if(!(!r||!t)&&r.length!==0)for(let i=0,s=r.length;i<s;i++){const a=r[i];this._thumbSceneRender(a,t.mainComponent)}}_createThumb(e){this._renderManagerService.createRender(e)}_createScene(e,r){const t=this._currentRender();if(!t||!this._objectProvider)return;const{scene:i,mainComponent:s}=t,a=s,{width:o,height:h}=a,u=new l.Scene(e,a,{width:o,height:h});new l.Viewport(`PageViewer_${e}`,u,{left:0,top:0,bottom:0,right:0}).closeClip();const{pageElements:v,pageBackgroundFill:g}=r,w=this._objectProvider.convertToRenderObjects(v,i);if(!w||!a)return;u.openTransformer(),this._addBackgroundRect(u,g),u.addObjects(w);const p=u.getTransformer();return p==null||p.onChangeEndObservable.add(()=>{this._thumbSceneRender(this._activePageId,a)}),p==null||p.onClearControlObservable.add(()=>{this._thumbSceneRender(this._activePageId,a)}),a.addPage(u),u}_initializeDependencies(e){this._objectProvider=e.createInstance(B)}},S.CanvasView=$e([d.OnLifecycle(d.LifecycleStages.Ready,S.CanvasView),ne(0,d.IUniverInstanceService),ne(1,E.Inject(E.Injector)),ne(2,l.IRenderManagerService)],S.CanvasView);var He=Object.defineProperty,Fe=Object.getOwnPropertyDescriptor,Re=(c,n,e,r)=>{for(var t=r>1?void 0:r?Fe(n,e):n,i=c.length-1,s;i>=0;i--)(s=c[i])&&(t=(r?s(n,e,t):s(t))||t);return r&&t&&He(n,e,t),t},ie=(c,n)=>(e,r)=>n(e,r,c);const Be={},Ke="slides";S.UniverSlidesPlugin=(se=class extends d.Plugin{constructor(e={},r,t,i){super(Ke);f(this,"_config");f(this,"_canvasEngine",null);f(this,"_canvasView",null);this._currentUniverService=r,this._localeService=t,this._injector=i,this._config=Object.assign(Be,e),this._initializeDependencies(this._injector)}initialize(){this._localeService.load({zhCN:oe}),this.initCanvasEngine()}getConfig(){return this._config}initCanvasEngine(){this._canvasEngine=this._injector.get(l.IRenderingEngine)}onRendered(){this.initialize()}onDestroy(){super.onDestroy()}getCanvasEngine(){return this._canvasEngine}getCanvasView(){return this._canvasView}_initializeDependencies(e){[[S.CanvasView]].forEach(t=>{e.add(t)})}},f(se,"type",d.PluginType.Slide),se),S.UniverSlidesPlugin=Re([ie(1,d.IUniverInstanceService),ie(2,E.Inject(d.LocaleService)),ie(3,E.Inject(E.Injector))],S.UniverSlidesPlugin),S.SLIDE_KEY=de,S.enUS=ue,S.zhCN=oe,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@univerjs/slides",
3
+ "version": "0.1.5",
4
+ "private": false,
5
+ "description": "",
6
+ "author": "DreamNum <developer@univer.ai>",
7
+ "license": "Apache-2.0",
8
+ "funding": {
9
+ "type": "opencollective",
10
+ "url": "https://opencollective.com/univer"
11
+ },
12
+ "homepage": "https://univer.ai",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/dream-num/univer"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/dream-num/univer/issues"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "import": "./lib/es/index.js",
23
+ "require": "./lib/cjs/index.js",
24
+ "types": "./lib/types/index.d.ts"
25
+ },
26
+ "./*": {
27
+ "import": "./lib/es/*",
28
+ "require": "./lib/cjs/*",
29
+ "types": "./lib/types/index.d.ts"
30
+ },
31
+ "./lib/*": "./lib/*"
32
+ },
33
+ "main": "./lib/cjs/index.js",
34
+ "module": "./lib/es/index.js",
35
+ "types": "./lib/types/index.d.ts",
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "directories": {
40
+ "lib": "lib"
41
+ },
42
+ "files": [
43
+ "lib"
44
+ ],
45
+ "engines": {
46
+ "node": ">=16.0.0",
47
+ "npm": ">=8.0.0"
48
+ },
49
+ "peerDependencies": {
50
+ "@wendellhu/redi": "0.13.0",
51
+ "rxjs": ">=7.0.0",
52
+ "@univerjs/core": "0.1.5",
53
+ "@univerjs/engine-render": "0.1.5"
54
+ },
55
+ "dependencies": {},
56
+ "devDependencies": {
57
+ "@wendellhu/redi": "^0.13.0",
58
+ "rxjs": "^7.8.1",
59
+ "typescript": "^5.4.3",
60
+ "vite": "^5.2.6",
61
+ "vitest": "^1.4.0",
62
+ "@univerjs/core": "0.1.5",
63
+ "@univerjs/engine-render": "0.1.5",
64
+ "@univerjs/shared": "0.1.5"
65
+ },
66
+ "scripts": {
67
+ "test": "vitest run",
68
+ "test:watch": "vitest",
69
+ "coverage": "vitest run --coverage",
70
+ "lint:types": "tsc --noEmit",
71
+ "build": "tsc && vite build"
72
+ }
73
+ }