@univerjs/ui 0.25.0 → 0.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -5453,7 +5453,7 @@ const IUIController = (0, _univerjs_core.createIdentifier)("univer.ui.ui-control
5453
5453
  //#endregion
5454
5454
  //#region package.json
5455
5455
  var name = "@univerjs/ui";
5456
- var version = "0.25.0";
5456
+ var version = "0.25.1";
5457
5457
 
5458
5458
  //#endregion
5459
5459
  //#region src/views/components/ribbon/MobileRibbon.tsx
package/lib/es/index.js CHANGED
@@ -5423,7 +5423,7 @@ const IUIController = createIdentifier("univer.ui.ui-controller");
5423
5423
  //#endregion
5424
5424
  //#region package.json
5425
5425
  var name = "@univerjs/ui";
5426
- var version = "0.25.0";
5426
+ var version = "0.25.1";
5427
5427
 
5428
5428
  //#endregion
5429
5429
  //#region src/views/components/ribbon/MobileRibbon.tsx
package/lib/index.js CHANGED
@@ -5423,7 +5423,7 @@ const IUIController = createIdentifier("univer.ui.ui-controller");
5423
5423
  //#endregion
5424
5424
  //#region package.json
5425
5425
  var name = "@univerjs/ui";
5426
- var version = "0.25.0";
5426
+ var version = "0.25.1";
5427
5427
 
5428
5428
  //#endregion
5429
5429
  //#region src/views/components/ribbon/MobileRibbon.tsx
package/lib/umd/index.js CHANGED
@@ -55,7 +55,7 @@ hover:univer-bg-gray-100 whitespace-nowrap univer-w-max
55
55
  univer-text-primary-600
56
56
  `}),(0,a.jsx)(`span`,{className:(0,o.clsx)(Po,l&&i&&`
57
57
  univer-pl-4
58
- `),children:(0,a.jsx)(K,{value$:e.value$,value:e.value,label:e.label,icon:e.icon,onChange:t=>{var n;B==null||B({...e,value:t,id:c.id,label:s,commandId:(n=e.commandId)==null?ae:n})}})})]});return l?(0,a.jsx)(`button`,{type:`button`,className:d,disabled:e.disabled,onClick:()=>{var t;B==null||B({...e,id:c.id,label:s,commandId:(t=e.commandId)==null?ae:t})},children:f},r):(0,a.jsx)(`div`,{className:d,"aria-disabled":e.disabled,children:f},r)})}),ie&&(0,a.jsx)(zo,{menuSchemas:ne,menuSessionVersion:u,submenuPortalContainer:d,activeItemIds:f,hiddenItemIds:p,onOptionSelect:B,maxMenuHeight:g})]})}),d):null)]})}function Vo(e){let[t,i]=(0,r.useState)({});return(0,r.useEffect)(()=>{let t=e.map(e=>{var t;return(t=e.children)!=null&&t.length?(0,n.combineLatest)(e.children.map(e=>{var t,r;return(t=(r=e.item)==null?void 0:r.hidden$)==null?(0,n.of)(!1):t})).subscribe(t=>{let n=t.every(e=>e===!0);i(t=>({...t,[e.key]:n}))}):null});return()=>{t.forEach(e=>e==null?void 0:e.unsubscribe()),i({})}},[e]),t}function Ho(e){let{hostId:t,visible:n,anchorRect:s,menuType:c,anchorVertical:l=`bottom`,menuOffset:u=0,onRequestClose:d,onOptionSelect:f}=e,p=(0,r.useRef)(null),m=(0,i.useDependency)(wo),h=(0,r.useRef)(d),g=(0,r.useRef)(0),_=(0,r.useRef)(n),v=(0,r.useRef)(c);(0,r.useEffect)(()=>{h.current=d},[d]),n&&(!_.current||c!==v.current)&&(g.current+=1),_.current=n,v.current=c,(0,r.useEffect)(()=>{let e=m.registerMenu(t,()=>{h.current()});return()=>{e.dispose(),m.deactivateMenu(t)}},[m,t]),(0,r.useLayoutEffect)(()=>{if(n){m.activateMenu(t);return}m.deactivateMenu(t)},[m,t,n]),(0,r.useEffect)(()=>{if(!n)return;let e=e=>e instanceof Element&&e.closest(`[data-u-context-menu-submenu]`),t=t=>{e(t.target)||p.current&&!p.current.contains(t.target)&&h.current()},r=e=>{e.key===`Escape`&&h.current()},i=t=>{var n;if(e(t.target)){t.stopPropagation();return}if((n=p.current)!=null&&n.contains(t.target)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation()};return document.addEventListener(`pointerdown`,t),document.addEventListener(`keydown`,r),document.addEventListener(`wheel`,i,{capture:!0,passive:!1}),()=>{document.removeEventListener(`pointerdown`,t),document.removeEventListener(`keydown`,r),document.removeEventListener(`wheel`,i,!0)}},[n]);let y=(0,r.useMemo)(()=>{if(!s)return[0,0];let e=l===`top`?s.top:s.bottom,t=l===`top`?e-u:e+u;return[s.left,t]},[s,l,u]);return(0,a.jsx)(o.Popup,{visible:n&&!!s,offset:y,overflowVisible:!0,placementY:l===`top`?`above`:`below`,children:(0,a.jsx)(`section`,{ref:p,children:c&&(0,a.jsx)(Ro,{menuType:c,menuSessionVersion:g.current,onOptionSelect:f})})})}function Uo(){let[e,n]=(0,r.useState)(!1),[o,s]=(0,r.useState)(``),[c,l]=(0,r.useState)(null),u=(0,r.useRef)(e),d=(0,i.useDependency)(So),f=(0,i.useDependency)(t.ICommandService),p=(0,i.useInjector)();u.current=e,(0,r.useEffect)(()=>{let e=d.registerContextMenuHandler({handleContextMenu:m,hideContextMenu(){h()},get visible(){return u.current}});return()=>{e.dispose()}},[d]);function m(e,t){n(!1),requestAnimationFrame(()=>{s(t),l({left:e.clientX,top:e.clientY,bottom:e.clientY}),n(!0)})}function h(){n(!1)}return(0,a.jsx)(Ho,{hostId:`desktop-context-menu`,visible:e,anchorRect:c,menuType:o,onRequestClose:h,onOptionSelect:e=>{let{label:t,commandId:n,value:r}=e,i=typeof e.params==`function`?e.params():e.params,a=i===void 0?{value:r}:i;f&&f.executeCommand(n==null?t:n,a),p.get(Y).focus(),h()}})}function Wo(){let e=(0,i.useDependency)(T),t=(0,i.useObservable)(e.sidebarOptions$),n=(0,r.useRef)(null),s=(0,r.useRef)(null),c=(0,r.useRef)(null),[l,u]=(0,r.useState)(!1),d=(0,r.useRef)(null),f=(0,r.useMemo)(()=>{if(!t)return null;let e={...t};for(let n of[`children`,`header`,`footer`]){let r=n;if(t[r]){let{key:n,...i}=t[r];i&&(e[r]=(0,a.jsx)(K,{...i},n))}}return e},[t]);(0,r.useEffect)(()=>{f!=null&&f.visible&&c.current&&c.current.focus()},[f==null?void 0:f.visible]),(0,r.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e.visible&&(t.stopPropagation(),e.close())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]);let p=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),u(!0),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[]);(0,r.useEffect)(()=>{if(!l){document.body.style.cursor=``,document.body.style.userSelect=``;return}let t=e=>{if(!s.current)return;let t=s.current.getBoundingClientRect().right-e.clientX,n=Math.max(280,Math.min(t,800));d.current=n,s.current.style.width=`${n}px`},n=()=>{u(!1),d.current!=null&&(e.setWidth(d.current),d.current=null)};return document.addEventListener(`mousemove`,t),document.addEventListener(`mouseup`,n),()=>{document.removeEventListener(`mousemove`,t),document.removeEventListener(`mouseup`,n)}},[l,e]),(0,r.useEffect)(()=>(n.current&&e.setContainer(n.current),()=>{e.setContainer(void 0)}),[e]),(0,r.useEffect)(()=>{let t=t=>{e.scrollEvent$.next(t)},r=n.current;return r&&r.addEventListener(`scroll`,t),()=>{r==null||r.removeEventListener(`scroll`,t)}},[e]);let m=(0,r.useMemo)(()=>{if(l&&d.current!=null)return`${d.current}px`;if(!(f!=null&&f.visible))return 0;let t=e.width;return t?`${t}px`:typeof f.width==`number`?`${f.width}px`:f.width},[l,f,e]);function h(){e.close(t==null?void 0:t.id)}return(0,a.jsxs)(`section`,{ref:s,"data-u-comp":`sidebar`,role:`complementary`,"aria-expanded":!!(f!=null&&f.visible),"aria-label":`Sidebar panel`,className:(0,o.clsx)(`univer-relative univer-h-full univer-flex-shrink-0 univer-bg-white univer-text-gray-900 dark:!univer-bg-gray-900 dark:!univer-text-white`,{"univer-w-96 univer-translate-x-0":f==null?void 0:f.visible,"univer-w-0 univer-translate-x-full":!(f!=null&&f.visible)}),style:{width:l?void 0:m},children:[(f==null?void 0:f.visible)&&(0,a.jsx)(`div`,{className:`hover:univer-bg-primary-500/30 active:univer-bg-primary-500/50 univer-absolute univer-left-0 univer-top-0 univer-z-20 univer-h-full univer-w-1 univer-cursor-col-resize univer-transition-colors`,onMouseDown:p,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,tabIndex:0,onKeyDown:t=>{if(!s.current)return;let n=s.current.getBoundingClientRect().width,r=n;t.key===`ArrowLeft`?(t.preventDefault(),r=Math.max(280,n-20)):t.key===`ArrowRight`&&(t.preventDefault(),r=Math.min(800,n+20)),r!==n&&(s.current.style.width=`${r}px`,e.setWidth(r))}}),(0,a.jsxs)(`section`,{ref:n,className:(0,o.clsx)(`univer-box-border univer-grid univer-h-0 univer-min-h-full univer-grid-rows-[auto_1fr_auto] univer-overflow-y-auto`,o.borderLeftBottomClassName,o.scrollbarClassName),children:[(0,a.jsxs)(`header`,{className:`univer-sticky univer-top-0 univer-z-10 univer-box-border univer-flex univer-cursor-default univer-items-center univer-justify-between univer-bg-white univer-p-4 univer-pb-2 univer-text-base univer-font-medium univer-text-gray-800 dark:!univer-bg-gray-900 dark:!univer-text-white`,children:[f==null?void 0:f.header,(0,a.jsx)(`button`,{ref:c,type:`button`,className:`focus:univer-ring-primary-500/50 univer-cursor-pointer univer-appearance-none univer-rounded-sm univer-border-none univer-bg-transparent univer-p-0 univer-text-gray-500 focus:univer-outline-none focus:univer-ring-2 dark:!univer-text-gray-300`,onClick:h,"aria-label":`Close sidebar`,children:(0,a.jsx)(xe,{})})]}),(0,a.jsx)(`section`,{className:`univer-box-border univer-cursor-default univer-px-4`,style:f==null?void 0:f.bodyStyle,children:f==null?void 0:f.children}),(f==null?void 0:f.footer)&&(0,a.jsx)(`footer`,{className:`univer-sticky univer-bottom-0 univer-box-border univer-bg-white univer-p-4 dark:!univer-bg-gray-900`,children:f.footer})]})]})}let Go=(0,t.createIdentifier)(`univer.zen-zone-service`);function Ko(){let e=(0,i.useDependency)(Go),[t,n]=(0,r.useState)(!1),[s,c]=(0,r.useState)(),l=(0,i.useObservable)(e.temporaryHidden$),u=(0,i.useDependency)(G);(0,r.useEffect)(()=>{let t=[e.visible$.subscribe(e=>{n(e)}),e.componentKey$.subscribe(e=>{c(e)})];return()=>{t.forEach(e=>{e.unsubscribe()})}},[]);let d=(0,r.useMemo)(()=>{let e=u.get(s==null?``:s);if(e)return e},[s]);return(0,a.jsx)(`section`,{className:(0,o.clsx)(`univer-absolute univer-z-[-1] univer-flex`,{"univer-animate-in univer-fade-in univer-inset-0 univer-z-[100] univer-bg-gray-100":t,"univer-hidden":l}),children:(0,a.jsx)(`div`,{className:`univer-relative univer-flex-1`,children:d&&(0,a.jsx)(d,{})})})}function qo(e){let t=ki(Mi);return(0,a.jsx)(Jo,{...e,...t})}function Jo(e){var n;let{header:s=!0,toolbar:c=!0,footer:l=!0,headerMenu:u=!0,contextMenu:d=!0,ribbonType:f=`classic`,mountContainer:p,onRendered:m}=e,h=(0,i.useDependency)(t.LocaleService),g=(0,i.useDependency)(t.ThemeService),_=(0,i.useDependency)(xo),v=(0,r.useRef)(null),y=(0,i.useDependency)(t.IConfigService).getConfig(Mi),b=$(`custom-header`),x=$(`footer`),S=$(`header`),C=$(`header-menu`),w=$(`content`),T=$(`left-sidebar`),E=$(`global`),D=$(`toolbar`),O=(n=y==null?void 0:y.popupRootId)==null?`univer-popup-portal`:n;(0,r.useLayoutEffect)(()=>{let e=g.currentTheme$.subscribe(e=>{_.injectThemeToHead(e)});return()=>{e.unsubscribe()}},[]);let[k,A]=(0,r.useState)(!1);(0,r.useLayoutEffect)(()=>{let e=g.darkMode$.subscribe(e=>{A(e),e?document.documentElement.classList.add(`univer-dark`):document.documentElement.classList.remove(`univer-dark`)});return()=>{e.unsubscribe()}},[]),(0,r.useEffect)(()=>{v.current&&(m==null||m(v.current))},[m]);let[j,M]=(0,r.useState)(h.getLocales()),[N,P]=(0,r.useState)(h.getDirection()),F=(0,r.useMemo)(()=>document.createElement(`div`),[]);return(0,r.useEffect)(()=>{document.body.appendChild(F);let e=[h.localeChanged$.subscribe(()=>{M(h.getLocales())}),h.direction$.subscribe(()=>{P(h.getDirection())})];return()=>{e.forEach(e=>e.unsubscribe()),document.body.removeChild(F)}},[h,p,F]),(0,r.useEffect)(()=>{F.dir=N},[N,F]),(0,a.jsxs)(o.ConfigProvider,{locale:j==null?void 0:j.design,direction:N,mountContainer:F,children:[(0,a.jsxs)(`div`,{"data-u-comp":`workbench-layout`,className:(0,o.clsx)(`univer-flex univer-h-full univer-min-h-0 univer-flex-col univer-bg-white dark:!univer-bg-gray-800`,{"univer-dark":k}),tabIndex:-1,onBlur:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),dir:N,children:[(0,a.jsx)(`div`,{className:`univer-relative univer-flex univer-min-h-0 univer-flex-col univer-bg-white dark:!univer-bg-gray-800`,children:(0,a.jsx)(Q,{components:b},`custom-header`)}),s&&c&&(0,a.jsx)(`header`,{"data-u-comp":`headerbar`,className:`univer-relative univer-z-10 univer-w-full univer-overflow-hidden`,children:(0,a.jsx)(Q,{components:D,sharedProps:{ribbonType:f,headerMenuComponents:C,headerMenu:u}},`toolbar`)}),(0,a.jsxs)(`section`,{className:`univer-relative univer-flex univer-min-h-0 univer-flex-1 univer-flex-col`,children:[(0,a.jsxs)(`div`,{className:`univer-grid univer-h-full univer-grid-cols-[auto_1fr_auto] univer-grid-rows-[100%] univer-overflow-hidden`,children:[(0,a.jsx)(`aside`,{"data-u-comp":`left-sidebar`,className:`univer-h-full`,children:(0,a.jsx)(Q,{components:T},`left-sidebar`)}),(0,a.jsxs)(`section`,{className:(0,o.clsx)(`univer-relative univer-grid univer-flex-1 univer-grid-rows-[auto_1fr] univer-overflow-hidden univer-bg-white dark:!univer-bg-gray-800`,o.borderBottomClassName),children:[(0,a.jsx)(`header`,{children:s&&(0,a.jsx)(Q,{components:S},`header`)}),(0,a.jsx)(`section`,{className:`univer-relative univer-overflow-hidden dark:!univer-bg-gray-900`,ref:v,"data-range-selector":!0,onContextMenu:e=>e.preventDefault(),children:(0,a.jsx)(Q,{components:w},`content`)})]}),(0,a.jsx)(`aside`,{"data-u-comp":`right-sidebar`,className:`univer-z-[100] univer-h-full`,children:(0,a.jsx)(Wo,{})})]}),l&&(0,a.jsx)(`footer`,{children:(0,a.jsx)(Q,{components:x,sharedProps:{contextMenu:d}},`footer`)}),(0,a.jsx)(Ko,{})]})]}),(0,a.jsxs)(`div`,{dir:N,children:[(0,a.jsx)(Q,{components:E},`global`),d&&(0,a.jsx)(Uo,{}),(0,a.jsx)(Yo,{}),(0,a.jsx)(`div`,{id:O})]})]})}function Yo(){let{mountContainer:e}=(0,r.useContext)(o.ConfigContext);return(0,l.createPortal)((0,a.jsx)(Q,{components:$(`floating`)},`floating`),e)}var Xo=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._injector=e,this._instanceService=t,this._layoutService=n,this._lifecycleService=r,this._renderManagerService=i,S(this,`_steadyTimeout`,void 0),S(this,`_renderTimeout`,void 0),S(this,`_currentRenderId`,null)}dispose(){super.dispose(),clearTimeout(this._steadyTimeout),clearTimeout(this._renderTimeout),delete this._instanceService,delete this._layoutService,delete this._lifecycleService,delete this._renderManagerService}_bootstrapWorkbench(){this.disposeWithMe(this.bootstrap(async(e,n)=>{this._layoutService&&(this.disposeWithMe(this._layoutService.registerRootContainerElement(n)),this.disposeWithMe(this._layoutService.registerContentElement(e)));try{await this._lifecycleService.onStage(t.LifecycleStages.Ready),this._renderTimeout=window.setTimeout(()=>{let n=this._renderManagerService.getRenderAll();for(let[t]of n)if(this._changeRenderUnit(t,e))break;this.disposeWithMe(this._instanceService.focused$.subscribe(t=>{t&&this._changeRenderUnit(t,e)})),this.disposeWithMe(this._renderManagerService.created$.subscribe(t=>{var n;t.unitId===((n=this._instanceService.getFocusedUnit())==null?void 0:n.getUnitId())&&this._changeRenderUnit(t.unitId,e)})),this.disposeWithMe(this._renderManagerService.disposed$.subscribe(e=>{this._currentRenderId===e&&(this._currentRenderId=null)})),this._lifecycleService.stage=t.LifecycleStages.Rendered,this._steadyTimeout=window.setTimeout(()=>{this._lifecycleService.stage=t.LifecycleStages.Steady},3e3)},300)}catch(e){if(clearTimeout(this._steadyTimeout),clearTimeout(this._renderTimeout),e instanceof t.LifecycleUnreachableError)return;throw e}}))}_changeRenderUnit(e,n){if(this._currentRenderId===e)return!1;let r=this._renderManagerService.getRenderById(e);if(!r||!r.unitId||(0,t.isInternalEditorID)(r.unitId))return!1;let i=this._currentRenderId?this._renderManagerService.getRenderById(this._currentRenderId):null;return i==null||i.deactivate(),i==null||i.engine.unmount(),r.engine.mount(n),r.activate(),this._currentRenderId=e,!0}};let Zo=class extends Xo{constructor(e,t,n,r,i,a,o,s,c){super(t,a,i,n,r),this._config=e,this._componentManager=c,o.mergeMenu(Ka),this._initBuiltinComponents(s),this._registerComponents(),this._bootstrapWorkbench()}_registerComponents(){[[wi,Ci],[Ei,Ti],[Hi,Li],[Ui,Vi],[qi,Wi],[ji,o.ColorPicker]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}dispose(){super.dispose(),this._componentManager.dispose()}bootstrap(e){return Qo(this._injector,this._config,e)}_initBuiltinComponents(e){this.disposeWithMe(e.registerComponent(`floating`,()=>(0,i.connectInjector)(io,this._injector))),this.disposeWithMe(e.registerComponent(`content`,()=>(0,i.connectInjector)(Za,this._injector))),this.disposeWithMe(e.registerComponent(`toolbar`,()=>(0,i.connectInjector)(bo,this._injector)))}};Zo=J([q(1,(0,t.Inject)(t.Injector)),q(2,(0,t.Inject)(t.LifecycleService)),q(3,s.IRenderManagerService),q(4,Y),q(5,t.IUniverInstanceService),q(6,X),q(7,Z),q(8,(0,t.Inject)(G))],Zo);function Qo(e,n,r){let s,c=n.container;s=typeof c==`string`?document.getElementById(c)||$o(c):c instanceof HTMLElement?c:$o(`univer`);let l=(0,i.connectInjector)(qo,e),u=e=>r(e,s);function d(){(0,o.render)((0,a.jsx)(l,{...n,mountContainer:s,onRendered:u}),s)}return d(),(0,t.toDisposable)(()=>{(0,o.unmount)(s)})}function $o(e){let t=document.createElement(`div`);return t.id=e,t}let es=(0,t.createIdentifier)(`univer.ui.ui-controller`);var ts=`@univerjs/ui`,ns=`0.25.0`;let rs=`
58
+ `),children:(0,a.jsx)(K,{value$:e.value$,value:e.value,label:e.label,icon:e.icon,onChange:t=>{var n;B==null||B({...e,value:t,id:c.id,label:s,commandId:(n=e.commandId)==null?ae:n})}})})]});return l?(0,a.jsx)(`button`,{type:`button`,className:d,disabled:e.disabled,onClick:()=>{var t;B==null||B({...e,id:c.id,label:s,commandId:(t=e.commandId)==null?ae:t})},children:f},r):(0,a.jsx)(`div`,{className:d,"aria-disabled":e.disabled,children:f},r)})}),ie&&(0,a.jsx)(zo,{menuSchemas:ne,menuSessionVersion:u,submenuPortalContainer:d,activeItemIds:f,hiddenItemIds:p,onOptionSelect:B,maxMenuHeight:g})]})}),d):null)]})}function Vo(e){let[t,i]=(0,r.useState)({});return(0,r.useEffect)(()=>{let t=e.map(e=>{var t;return(t=e.children)!=null&&t.length?(0,n.combineLatest)(e.children.map(e=>{var t,r;return(t=(r=e.item)==null?void 0:r.hidden$)==null?(0,n.of)(!1):t})).subscribe(t=>{let n=t.every(e=>e===!0);i(t=>({...t,[e.key]:n}))}):null});return()=>{t.forEach(e=>e==null?void 0:e.unsubscribe()),i({})}},[e]),t}function Ho(e){let{hostId:t,visible:n,anchorRect:s,menuType:c,anchorVertical:l=`bottom`,menuOffset:u=0,onRequestClose:d,onOptionSelect:f}=e,p=(0,r.useRef)(null),m=(0,i.useDependency)(wo),h=(0,r.useRef)(d),g=(0,r.useRef)(0),_=(0,r.useRef)(n),v=(0,r.useRef)(c);(0,r.useEffect)(()=>{h.current=d},[d]),n&&(!_.current||c!==v.current)&&(g.current+=1),_.current=n,v.current=c,(0,r.useEffect)(()=>{let e=m.registerMenu(t,()=>{h.current()});return()=>{e.dispose(),m.deactivateMenu(t)}},[m,t]),(0,r.useLayoutEffect)(()=>{if(n){m.activateMenu(t);return}m.deactivateMenu(t)},[m,t,n]),(0,r.useEffect)(()=>{if(!n)return;let e=e=>e instanceof Element&&e.closest(`[data-u-context-menu-submenu]`),t=t=>{e(t.target)||p.current&&!p.current.contains(t.target)&&h.current()},r=e=>{e.key===`Escape`&&h.current()},i=t=>{var n;if(e(t.target)){t.stopPropagation();return}if((n=p.current)!=null&&n.contains(t.target)){t.stopPropagation();return}t.preventDefault(),t.stopPropagation()};return document.addEventListener(`pointerdown`,t),document.addEventListener(`keydown`,r),document.addEventListener(`wheel`,i,{capture:!0,passive:!1}),()=>{document.removeEventListener(`pointerdown`,t),document.removeEventListener(`keydown`,r),document.removeEventListener(`wheel`,i,!0)}},[n]);let y=(0,r.useMemo)(()=>{if(!s)return[0,0];let e=l===`top`?s.top:s.bottom,t=l===`top`?e-u:e+u;return[s.left,t]},[s,l,u]);return(0,a.jsx)(o.Popup,{visible:n&&!!s,offset:y,overflowVisible:!0,placementY:l===`top`?`above`:`below`,children:(0,a.jsx)(`section`,{ref:p,children:c&&(0,a.jsx)(Ro,{menuType:c,menuSessionVersion:g.current,onOptionSelect:f})})})}function Uo(){let[e,n]=(0,r.useState)(!1),[o,s]=(0,r.useState)(``),[c,l]=(0,r.useState)(null),u=(0,r.useRef)(e),d=(0,i.useDependency)(So),f=(0,i.useDependency)(t.ICommandService),p=(0,i.useInjector)();u.current=e,(0,r.useEffect)(()=>{let e=d.registerContextMenuHandler({handleContextMenu:m,hideContextMenu(){h()},get visible(){return u.current}});return()=>{e.dispose()}},[d]);function m(e,t){n(!1),requestAnimationFrame(()=>{s(t),l({left:e.clientX,top:e.clientY,bottom:e.clientY}),n(!0)})}function h(){n(!1)}return(0,a.jsx)(Ho,{hostId:`desktop-context-menu`,visible:e,anchorRect:c,menuType:o,onRequestClose:h,onOptionSelect:e=>{let{label:t,commandId:n,value:r}=e,i=typeof e.params==`function`?e.params():e.params,a=i===void 0?{value:r}:i;f&&f.executeCommand(n==null?t:n,a),p.get(Y).focus(),h()}})}function Wo(){let e=(0,i.useDependency)(T),t=(0,i.useObservable)(e.sidebarOptions$),n=(0,r.useRef)(null),s=(0,r.useRef)(null),c=(0,r.useRef)(null),[l,u]=(0,r.useState)(!1),d=(0,r.useRef)(null),f=(0,r.useMemo)(()=>{if(!t)return null;let e={...t};for(let n of[`children`,`header`,`footer`]){let r=n;if(t[r]){let{key:n,...i}=t[r];i&&(e[r]=(0,a.jsx)(K,{...i},n))}}return e},[t]);(0,r.useEffect)(()=>{f!=null&&f.visible&&c.current&&c.current.focus()},[f==null?void 0:f.visible]),(0,r.useEffect)(()=>{let t=t=>{t.key===`Escape`&&e.visible&&(t.stopPropagation(),e.close())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e]);let p=(0,r.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),u(!0),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},[]);(0,r.useEffect)(()=>{if(!l){document.body.style.cursor=``,document.body.style.userSelect=``;return}let t=e=>{if(!s.current)return;let t=s.current.getBoundingClientRect().right-e.clientX,n=Math.max(280,Math.min(t,800));d.current=n,s.current.style.width=`${n}px`},n=()=>{u(!1),d.current!=null&&(e.setWidth(d.current),d.current=null)};return document.addEventListener(`mousemove`,t),document.addEventListener(`mouseup`,n),()=>{document.removeEventListener(`mousemove`,t),document.removeEventListener(`mouseup`,n)}},[l,e]),(0,r.useEffect)(()=>(n.current&&e.setContainer(n.current),()=>{e.setContainer(void 0)}),[e]),(0,r.useEffect)(()=>{let t=t=>{e.scrollEvent$.next(t)},r=n.current;return r&&r.addEventListener(`scroll`,t),()=>{r==null||r.removeEventListener(`scroll`,t)}},[e]);let m=(0,r.useMemo)(()=>{if(l&&d.current!=null)return`${d.current}px`;if(!(f!=null&&f.visible))return 0;let t=e.width;return t?`${t}px`:typeof f.width==`number`?`${f.width}px`:f.width},[l,f,e]);function h(){e.close(t==null?void 0:t.id)}return(0,a.jsxs)(`section`,{ref:s,"data-u-comp":`sidebar`,role:`complementary`,"aria-expanded":!!(f!=null&&f.visible),"aria-label":`Sidebar panel`,className:(0,o.clsx)(`univer-relative univer-h-full univer-flex-shrink-0 univer-bg-white univer-text-gray-900 dark:!univer-bg-gray-900 dark:!univer-text-white`,{"univer-w-96 univer-translate-x-0":f==null?void 0:f.visible,"univer-w-0 univer-translate-x-full":!(f!=null&&f.visible)}),style:{width:l?void 0:m},children:[(f==null?void 0:f.visible)&&(0,a.jsx)(`div`,{className:`hover:univer-bg-primary-500/30 active:univer-bg-primary-500/50 univer-absolute univer-left-0 univer-top-0 univer-z-20 univer-h-full univer-w-1 univer-cursor-col-resize univer-transition-colors`,onMouseDown:p,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize sidebar`,tabIndex:0,onKeyDown:t=>{if(!s.current)return;let n=s.current.getBoundingClientRect().width,r=n;t.key===`ArrowLeft`?(t.preventDefault(),r=Math.max(280,n-20)):t.key===`ArrowRight`&&(t.preventDefault(),r=Math.min(800,n+20)),r!==n&&(s.current.style.width=`${r}px`,e.setWidth(r))}}),(0,a.jsxs)(`section`,{ref:n,className:(0,o.clsx)(`univer-box-border univer-grid univer-h-0 univer-min-h-full univer-grid-rows-[auto_1fr_auto] univer-overflow-y-auto`,o.borderLeftBottomClassName,o.scrollbarClassName),children:[(0,a.jsxs)(`header`,{className:`univer-sticky univer-top-0 univer-z-10 univer-box-border univer-flex univer-cursor-default univer-items-center univer-justify-between univer-bg-white univer-p-4 univer-pb-2 univer-text-base univer-font-medium univer-text-gray-800 dark:!univer-bg-gray-900 dark:!univer-text-white`,children:[f==null?void 0:f.header,(0,a.jsx)(`button`,{ref:c,type:`button`,className:`focus:univer-ring-primary-500/50 univer-cursor-pointer univer-appearance-none univer-rounded-sm univer-border-none univer-bg-transparent univer-p-0 univer-text-gray-500 focus:univer-outline-none focus:univer-ring-2 dark:!univer-text-gray-300`,onClick:h,"aria-label":`Close sidebar`,children:(0,a.jsx)(xe,{})})]}),(0,a.jsx)(`section`,{className:`univer-box-border univer-cursor-default univer-px-4`,style:f==null?void 0:f.bodyStyle,children:f==null?void 0:f.children}),(f==null?void 0:f.footer)&&(0,a.jsx)(`footer`,{className:`univer-sticky univer-bottom-0 univer-box-border univer-bg-white univer-p-4 dark:!univer-bg-gray-900`,children:f.footer})]})]})}let Go=(0,t.createIdentifier)(`univer.zen-zone-service`);function Ko(){let e=(0,i.useDependency)(Go),[t,n]=(0,r.useState)(!1),[s,c]=(0,r.useState)(),l=(0,i.useObservable)(e.temporaryHidden$),u=(0,i.useDependency)(G);(0,r.useEffect)(()=>{let t=[e.visible$.subscribe(e=>{n(e)}),e.componentKey$.subscribe(e=>{c(e)})];return()=>{t.forEach(e=>{e.unsubscribe()})}},[]);let d=(0,r.useMemo)(()=>{let e=u.get(s==null?``:s);if(e)return e},[s]);return(0,a.jsx)(`section`,{className:(0,o.clsx)(`univer-absolute univer-z-[-1] univer-flex`,{"univer-animate-in univer-fade-in univer-inset-0 univer-z-[100] univer-bg-gray-100":t,"univer-hidden":l}),children:(0,a.jsx)(`div`,{className:`univer-relative univer-flex-1`,children:d&&(0,a.jsx)(d,{})})})}function qo(e){let t=ki(Mi);return(0,a.jsx)(Jo,{...e,...t})}function Jo(e){var n;let{header:s=!0,toolbar:c=!0,footer:l=!0,headerMenu:u=!0,contextMenu:d=!0,ribbonType:f=`classic`,mountContainer:p,onRendered:m}=e,h=(0,i.useDependency)(t.LocaleService),g=(0,i.useDependency)(t.ThemeService),_=(0,i.useDependency)(xo),v=(0,r.useRef)(null),y=(0,i.useDependency)(t.IConfigService).getConfig(Mi),b=$(`custom-header`),x=$(`footer`),S=$(`header`),C=$(`header-menu`),w=$(`content`),T=$(`left-sidebar`),E=$(`global`),D=$(`toolbar`),O=(n=y==null?void 0:y.popupRootId)==null?`univer-popup-portal`:n;(0,r.useLayoutEffect)(()=>{let e=g.currentTheme$.subscribe(e=>{_.injectThemeToHead(e)});return()=>{e.unsubscribe()}},[]);let[k,A]=(0,r.useState)(!1);(0,r.useLayoutEffect)(()=>{let e=g.darkMode$.subscribe(e=>{A(e),e?document.documentElement.classList.add(`univer-dark`):document.documentElement.classList.remove(`univer-dark`)});return()=>{e.unsubscribe()}},[]),(0,r.useEffect)(()=>{v.current&&(m==null||m(v.current))},[m]);let[j,M]=(0,r.useState)(h.getLocales()),[N,P]=(0,r.useState)(h.getDirection()),F=(0,r.useMemo)(()=>document.createElement(`div`),[]);return(0,r.useEffect)(()=>{document.body.appendChild(F);let e=[h.localeChanged$.subscribe(()=>{M(h.getLocales())}),h.direction$.subscribe(()=>{P(h.getDirection())})];return()=>{e.forEach(e=>e.unsubscribe()),document.body.removeChild(F)}},[h,p,F]),(0,r.useEffect)(()=>{F.dir=N},[N,F]),(0,a.jsxs)(o.ConfigProvider,{locale:j==null?void 0:j.design,direction:N,mountContainer:F,children:[(0,a.jsxs)(`div`,{"data-u-comp":`workbench-layout`,className:(0,o.clsx)(`univer-flex univer-h-full univer-min-h-0 univer-flex-col univer-bg-white dark:!univer-bg-gray-800`,{"univer-dark":k}),tabIndex:-1,onBlur:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),dir:N,children:[(0,a.jsx)(`div`,{className:`univer-relative univer-flex univer-min-h-0 univer-flex-col univer-bg-white dark:!univer-bg-gray-800`,children:(0,a.jsx)(Q,{components:b},`custom-header`)}),s&&c&&(0,a.jsx)(`header`,{"data-u-comp":`headerbar`,className:`univer-relative univer-z-10 univer-w-full univer-overflow-hidden`,children:(0,a.jsx)(Q,{components:D,sharedProps:{ribbonType:f,headerMenuComponents:C,headerMenu:u}},`toolbar`)}),(0,a.jsxs)(`section`,{className:`univer-relative univer-flex univer-min-h-0 univer-flex-1 univer-flex-col`,children:[(0,a.jsxs)(`div`,{className:`univer-grid univer-h-full univer-grid-cols-[auto_1fr_auto] univer-grid-rows-[100%] univer-overflow-hidden`,children:[(0,a.jsx)(`aside`,{"data-u-comp":`left-sidebar`,className:`univer-h-full`,children:(0,a.jsx)(Q,{components:T},`left-sidebar`)}),(0,a.jsxs)(`section`,{className:(0,o.clsx)(`univer-relative univer-grid univer-flex-1 univer-grid-rows-[auto_1fr] univer-overflow-hidden univer-bg-white dark:!univer-bg-gray-800`,o.borderBottomClassName),children:[(0,a.jsx)(`header`,{children:s&&(0,a.jsx)(Q,{components:S},`header`)}),(0,a.jsx)(`section`,{className:`univer-relative univer-overflow-hidden dark:!univer-bg-gray-900`,ref:v,"data-range-selector":!0,onContextMenu:e=>e.preventDefault(),children:(0,a.jsx)(Q,{components:w},`content`)})]}),(0,a.jsx)(`aside`,{"data-u-comp":`right-sidebar`,className:`univer-z-[100] univer-h-full`,children:(0,a.jsx)(Wo,{})})]}),l&&(0,a.jsx)(`footer`,{children:(0,a.jsx)(Q,{components:x,sharedProps:{contextMenu:d}},`footer`)}),(0,a.jsx)(Ko,{})]})]}),(0,a.jsxs)(`div`,{dir:N,children:[(0,a.jsx)(Q,{components:E},`global`),d&&(0,a.jsx)(Uo,{}),(0,a.jsx)(Yo,{}),(0,a.jsx)(`div`,{id:O})]})]})}function Yo(){let{mountContainer:e}=(0,r.useContext)(o.ConfigContext);return(0,l.createPortal)((0,a.jsx)(Q,{components:$(`floating`)},`floating`),e)}var Xo=class extends t.Disposable{constructor(e,t,n,r,i){super(),this._injector=e,this._instanceService=t,this._layoutService=n,this._lifecycleService=r,this._renderManagerService=i,S(this,`_steadyTimeout`,void 0),S(this,`_renderTimeout`,void 0),S(this,`_currentRenderId`,null)}dispose(){super.dispose(),clearTimeout(this._steadyTimeout),clearTimeout(this._renderTimeout),delete this._instanceService,delete this._layoutService,delete this._lifecycleService,delete this._renderManagerService}_bootstrapWorkbench(){this.disposeWithMe(this.bootstrap(async(e,n)=>{this._layoutService&&(this.disposeWithMe(this._layoutService.registerRootContainerElement(n)),this.disposeWithMe(this._layoutService.registerContentElement(e)));try{await this._lifecycleService.onStage(t.LifecycleStages.Ready),this._renderTimeout=window.setTimeout(()=>{let n=this._renderManagerService.getRenderAll();for(let[t]of n)if(this._changeRenderUnit(t,e))break;this.disposeWithMe(this._instanceService.focused$.subscribe(t=>{t&&this._changeRenderUnit(t,e)})),this.disposeWithMe(this._renderManagerService.created$.subscribe(t=>{var n;t.unitId===((n=this._instanceService.getFocusedUnit())==null?void 0:n.getUnitId())&&this._changeRenderUnit(t.unitId,e)})),this.disposeWithMe(this._renderManagerService.disposed$.subscribe(e=>{this._currentRenderId===e&&(this._currentRenderId=null)})),this._lifecycleService.stage=t.LifecycleStages.Rendered,this._steadyTimeout=window.setTimeout(()=>{this._lifecycleService.stage=t.LifecycleStages.Steady},3e3)},300)}catch(e){if(clearTimeout(this._steadyTimeout),clearTimeout(this._renderTimeout),e instanceof t.LifecycleUnreachableError)return;throw e}}))}_changeRenderUnit(e,n){if(this._currentRenderId===e)return!1;let r=this._renderManagerService.getRenderById(e);if(!r||!r.unitId||(0,t.isInternalEditorID)(r.unitId))return!1;let i=this._currentRenderId?this._renderManagerService.getRenderById(this._currentRenderId):null;return i==null||i.deactivate(),i==null||i.engine.unmount(),r.engine.mount(n),r.activate(),this._currentRenderId=e,!0}};let Zo=class extends Xo{constructor(e,t,n,r,i,a,o,s,c){super(t,a,i,n,r),this._config=e,this._componentManager=c,o.mergeMenu(Ka),this._initBuiltinComponents(s),this._registerComponents(),this._bootstrapWorkbench()}_registerComponents(){[[wi,Ci],[Ei,Ti],[Hi,Li],[Ui,Vi],[qi,Wi],[ji,o.ColorPicker]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}dispose(){super.dispose(),this._componentManager.dispose()}bootstrap(e){return Qo(this._injector,this._config,e)}_initBuiltinComponents(e){this.disposeWithMe(e.registerComponent(`floating`,()=>(0,i.connectInjector)(io,this._injector))),this.disposeWithMe(e.registerComponent(`content`,()=>(0,i.connectInjector)(Za,this._injector))),this.disposeWithMe(e.registerComponent(`toolbar`,()=>(0,i.connectInjector)(bo,this._injector)))}};Zo=J([q(1,(0,t.Inject)(t.Injector)),q(2,(0,t.Inject)(t.LifecycleService)),q(3,s.IRenderManagerService),q(4,Y),q(5,t.IUniverInstanceService),q(6,X),q(7,Z),q(8,(0,t.Inject)(G))],Zo);function Qo(e,n,r){let s,c=n.container;s=typeof c==`string`?document.getElementById(c)||$o(c):c instanceof HTMLElement?c:$o(`univer`);let l=(0,i.connectInjector)(qo,e),u=e=>r(e,s);function d(){(0,o.render)((0,a.jsx)(l,{...n,mountContainer:s,onRendered:u}),s)}return d(),(0,t.toDisposable)(()=>{(0,o.unmount)(s)})}function $o(e){let t=document.createElement(`div`);return t.id=e,t}let es=(0,t.createIdentifier)(`univer.ui.ui-controller`);var ts=`@univerjs/ui`,ns=`0.25.1`;let rs=`
59
59
  univer-m-0 univer-flex univer-appearance-none univer-items-center univer-justify-center
60
60
  univer-border-0 univer-bg-transparent univer-p-0 univer-leading-none univer-outline-none
61
61
  `;function is(e){var n;let{headerMenuComponents:s,headerMenu:c=!0}=e,l=(0,i.useDependency)(t.LocaleService),u=(0,i.useDependency)(ao),d=(0,i.useObservable)(u.ribbon$,[]),f=(0,i.useObservable)(u.activatedTab$,`ribbon.start`),p=(0,r.useMemo)(()=>{let e=d.findIndex(e=>e.key===f);return e===-1?0:e},[f,d]),m=d[p],h=(n=m==null?void 0:m.children)==null?[]:n,g=!!(c&&s&&s.size>0),_=(0,r.useRef)(null),[v,y]=(0,r.useState)(!1),[b,x]=(0,r.useState)(!1);if((0,r.useEffect)(()=>{!m&&d.length>0&&u.setActivatedTab(d[0].key)},[m,d,u]),(0,r.useEffect)(()=>{let e=_.current;if(!e)return;let t=()=>{let{scrollLeft:t,clientWidth:n,scrollWidth:r}=e;y(t>4),x(t+n<r-4)};t();let n=new ResizeObserver(t);return n.observe(e),e.addEventListener(`scroll`,t,{passive:!0}),()=>{n.disconnect(),e.removeEventListener(`scroll`,t)}},[m]),d.length===0&&!g)return null;function S(e){let t=d[e];t&&u.setActivatedTab(t.key)}function C(e){let t=_.current;t&&t.scrollBy({left:e===`left`?-168:168,behavior:`smooth`})}return(0,a.jsxs)(`div`,{"data-u-comp":`mobile-ribbon`,className:(0,o.clsx)(`univer-flex univer-flex-col univer-gap-1.5 univer-bg-gray-50 univer-px-3 univer-py-1.5 univer-text-sm dark:!univer-bg-gray-900`,o.borderBottomClassName),children:[(0,a.jsxs)(`div`,{className:`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/ui",
3
- "version": "0.25.0",
3
+ "version": "0.25.1",
4
4
  "private": false,
5
5
  "description": "Shared application UI framework, workbench services, menus, dialogs, and Facade UI APIs for Univer.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -72,9 +72,9 @@
72
72
  "@univerjs/icons": "1.4.0",
73
73
  "@wendellhu/redi": "1.1.1",
74
74
  "localforage": "^1.10.0",
75
- "@univerjs/design": "0.25.0",
76
- "@univerjs/engine-render": "0.25.0",
77
- "@univerjs/core": "0.25.0"
75
+ "@univerjs/engine-render": "0.25.1",
76
+ "@univerjs/design": "0.25.1",
77
+ "@univerjs/core": "0.25.1"
78
78
  },
79
79
  "devDependencies": {
80
80
  "@testing-library/react": "^16.3.2",
@@ -86,8 +86,8 @@
86
86
  "tailwindcss-animate": "^1.0.7",
87
87
  "typescript": "^6.0.3",
88
88
  "vitest": "^4.1.7",
89
- "@univerjs-infra/shared": "0.25.0",
90
- "@univerjs/themes": "0.25.0"
89
+ "@univerjs-infra/shared": "0.25.1",
90
+ "@univerjs/themes": "0.25.1"
91
91
  },
92
92
  "scripts": {
93
93
  "test": "vitest run",