@univerjs/docs-hyper-link-ui 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/index.js +1 -24
- package/lib/es/index.js +1 -24
- package/lib/index.js +1 -24
- package/lib/umd/index.js +1 -24
- package/package.json +11 -11
package/lib/cjs/index.js
CHANGED
|
@@ -1,24 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/docs-hyper-link`),n=require(`@univerjs/engine-render`),r=require(`@univerjs/docs`),i=require(`@univerjs/docs-ui`),a=require(`rxjs`),o=require(`@univerjs/design`),s=require(`@univerjs/ui`),c=require(`react`),l=require(`react/jsx-runtime`),u=require(`@univerjs/icons`);var d=`@univerjs/docs-hyper-link-ui`,f=`0.18.0`;const p=`docs-hyper-link-ui.config`;Symbol(p);const m={},h={type:e.CommandType.COMMAND,id:`docs.command.add-hyper-link`,async handler(t,n){if(!n)return!1;let{payload:i,unitId:a,selections:o}=n,s=t.get(e.ICommandService),c=(0,r.addCustomRangeBySelectionFactory)(t,{rangeId:(0,e.generateRandomId)(),rangeType:e.CustomRangeType.HYPERLINK,properties:{url:i},unitId:a,selections:o});return c?s.syncExecuteCommand(c.id,c.params):!1}},g={id:`docs.command.update-hyper-link`,type:e.CommandType.COMMAND,handler(t,n){var i;if(!n)return!1;let{unitId:a,payload:o,segmentId:s,linkId:c}=n,l=t.get(e.ICommandService),u=t.get(e.IUniverInstanceService),d=t.get(r.DocSelectionManagerService).getActiveTextRange(),f=u.getUnit(a,e.UniverInstanceType.UNIVER_DOC);if(!d||!f)return!1;let p=(i=(0,e.getBodySlice)(f.getSelfOrHeaderFooterModel(s).getBody(),d.startOffset,d.endOffset).textRuns)==null?void 0:i[0];p&&(p.ed=n.label.length+1);let m=(0,r.replaceSelectionFactory)(t,{unitId:a,body:{dataStream:`${n.label}`,customRanges:[{rangeId:c,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:n.label.length+1,properties:{url:o}}],textRuns:p?[p]:void 0},selection:{startOffset:d.startOffset,endOffset:d.endOffset,collapsed:!1,segmentId:s}});return m?l.syncExecuteCommand(m.id,m.params):!1}};function _(e){return/^[a-zA-Z]+:\/\//.test(e)}function v(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function y(e){return _(e)?e:v(e)?`mailto://${e}`:`https://${e}`}const b=()=>{let t=(0,s.useDependency)(N),n=(0,s.useDependency)(e.LocaleService),i=(0,s.useObservable)(t.editingLink$),a=(0,s.useDependency)(e.ICommandService),u=(0,s.useDependency)(e.IUniverInstanceService),d=(0,s.useDependency)(r.DocSelectionManagerService),[f,p]=(0,c.useState)(``),[m,_]=(0,c.useState)(``),[v,b]=(0,c.useState)(!1),x=e.Tools.isLegalUrl(f),S=i?u.getUnit(i.unitId,e.UniverInstanceType.UNIVER_DOC):u.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC);(0,c.useEffect)(()=>{var t,n,r;let a=d.getActiveTextRange();if(!a)return;if(i){var o,s;let t=S==null||(o=S.getSelfOrHeaderFooterModel(i.segmentId))==null?void 0:o.getBody(),n=t==null||(s=t.customRanges)==null?void 0:s.find(e=>(i==null?void 0:i.linkId)===e.rangeId&&e.startIndex===i.startIndex&&e.endIndex===i.endIndex);if(S&&n){var c,l;p((c=(l=n.properties)==null?void 0:l.url)==null?``:c),_(e.BuildTextUtils.transform.getPlainText((0,e.getBodySlice)(t,n.startIndex,n.endIndex+1).dataStream))}return}let u=S==null||(t=S.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),f=u?a:null,m=f&&((n=e.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(f,(r=u==null?void 0:u.customRanges)==null?[]:r))==null?void 0:n[0]);if(S&&m){var h,g;p((h=m==null||(g=m.properties)==null?void 0:g.url)==null?``:h)}},[S,i,d,u]);let C=()=>{t.hideEditPopup()},w=()=>{if(b(!0),!x||!S)return;let e=y(f);if(!i)a.executeCommand(h.id,{unitId:S.getUnitId(),payload:e});else{if(!m)return;a.executeCommand(g.id,{unitId:S.getUnitId(),payload:e,linkId:i.linkId,label:m,segmentId:i.segmentId})}t.hideEditPopup()};if(S)return(0,l.jsxs)(`div`,{className:(0,o.clsx)(`
|
|
2
|
-
univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow
|
|
3
|
-
dark:!univer-bg-gray-900
|
|
4
|
-
`,o.borderClassName),children:[(0,l.jsxs)(`div`,{children:[i?(0,l.jsx)(o.FormLayout,{label:n.t(`docLink.edit.label`),error:v&&!m?n.t(`docLink.edit.labelError`):``,children:(0,l.jsx)(o.Input,{value:m,onChange:_,autoFocus:!0,onKeyDown:e=>{e.keyCode===s.KeyCode.ENTER&&w()}})}):null,(0,l.jsx)(o.FormLayout,{label:n.t(`docLink.edit.address`),error:v&&!x?n.t(`docLink.edit.addressError`):``,children:(0,l.jsx)(o.Input,{value:f,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===s.KeyCode.ENTER&&w()}})})]}),(0,l.jsxs)(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[(0,l.jsx)(o.Button,{onClick:C,children:n.t(`docLink.edit.cancel`)}),(0,l.jsx)(o.Button,{variant:`primary`,disabled:!f,onClick:w,children:n.t(`docLink.edit.confirm`)})]})]})};b.componentKey=`docs-hyper-link-edit`;const x={type:e.CommandType.COMMAND,id:`docs.command.delete-hyper-link`,async handler(t,n){if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=t.get(e.ICommandService),c=(0,r.deleteCustomRangeFactory)(t,{unitId:i,rangeId:a,segmentId:o});return c?await s.syncExecuteCommand(c.id,c.params):!1}},S=t=>{let n=t.get(r.DocSelectionManagerService),i=t.get(e.IUniverInstanceService),a=n.getTextRanges();if(!(a!=null&&a.length))return!0;let o=a[0];return!!(!i.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC)||!o||o.collapsed)},C={type:e.CommandType.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(t,n){var r;let i=n==null?void 0:n.link,a=t.get(e.IUniverInstanceService);if(S(t)&&!i)return!1;let o=t.get(N),s=(i==null?void 0:i.unitId)||((r=a.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());return s?(o.showEditPopup(s,i),!0):!1}},w={type:e.CommandType.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(N);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},T={type:e.CommandType.OPERATION,id:`doc.operation.click-hyper-link`,handler(t,n){var r;if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=t.get(e.IUniverInstanceService).getUnit(i,e.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),l=c==null||(r=c.customRanges)==null||(r=r.find(t=>t.rangeId===a&&t.rangeType===e.CustomRangeType.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return l&&window.open(l,`_blank`,`noopener noreferrer`),!0}},E=()=>{var t,n;let r=(0,s.useDependency)(N),i=(0,s.useDependency)(e.ICommandService),a=(0,s.useDependency)(s.IMessageService),c=(0,s.useDependency)(e.LocaleService),d=(0,s.useObservable)(r.showingLink$),f=(0,s.useDependency)(e.IUniverInstanceService);if(!d)return null;let{unitId:p,linkId:m,segmentId:h,startIndex:g,endIndex:_}=d,v=f.getUnit(p,e.UniverInstanceType.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(h).getBody(),b=y==null||(t=y.customRanges)==null?void 0:t.find(t=>t.rangeId===m&&t.rangeType===e.CustomRangeType.HYPERLINK&&t.startIndex===g&&t.endIndex===_);if(!b)return null;let S=(n=b.properties)==null?void 0:n.url;return(0,l.jsxs)(`div`,{className:(0,o.clsx)(`
|
|
5
|
-
univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between
|
|
6
|
-
univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow
|
|
7
|
-
dark:!univer-bg-gray-900
|
|
8
|
-
`,o.borderClassName),onClick:()=>{r.hideInfoPopup()},children:[(0,l.jsxs)(`div`,{className:`
|
|
9
|
-
univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate
|
|
10
|
-
univer-text-sm univer-leading-5 univer-text-primary-500
|
|
11
|
-
`,onClick:()=>window.open(S,void 0,`noopener noreferrer`),children:[(0,l.jsx)(`div`,{className:`
|
|
12
|
-
univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center
|
|
13
|
-
univer-justify-center univer-text-base univer-text-gray-900
|
|
14
|
-
dark:!univer-text-white
|
|
15
|
-
`,children:(0,l.jsx)(u.LinkIcon,{})}),(0,l.jsx)(o.Tooltip,{showIfEllipsis:!0,title:S,children:(0,l.jsx)(`span`,{className:`univer-flex-1 univer-truncate`,children:S})})]}),(0,l.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[(0,l.jsx)(`div`,{className:`
|
|
16
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
17
|
-
univer-justify-center univer-rounded univer-text-base
|
|
18
|
-
`,onClick:()=>{navigator.clipboard.writeText(S),a.show({content:c.t(`docLink.info.coped`),type:o.MessageType.Info})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.copy`),children:(0,l.jsx)(u.CopyIcon,{})})}),(0,l.jsx)(`div`,{className:`
|
|
19
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
20
|
-
univer-justify-center univer-rounded univer-text-base
|
|
21
|
-
`,onClick:()=>{i.executeCommand(C.id,{link:d})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.edit`),children:(0,l.jsx)(u.WriteIcon,{})})}),(0,l.jsx)(`div`,{className:`
|
|
22
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
23
|
-
univer-justify-center univer-rounded univer-text-base
|
|
24
|
-
`,onClick:()=>{i.executeCommand(x.id,{unitId:p,linkId:b.rangeId,segmentId:h})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.cancel`),children:(0,l.jsx)(u.UnlinkIcon,{})})})]})]})};E.componentKey=`univer.doc.link-info-popup`;function D(e){"@babel/helpers - typeof";return D=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},D(e)}function O(e,t){if(D(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(D(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function k(e){var t=O(e,`string`);return D(t)==`symbol`?t:t+``}function A(e,t,n){return(t=k(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e,t){return function(n,r){t(n,r,e)}}function M(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let N=class extends e.Disposable{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,A(this,`_editingLink$`,new a.BehaviorSubject(null)),A(this,`_showingLink$`,new a.BehaviorSubject(null)),A(this,`editingLink$`,this._editingLink$.asObservable()),A(this,`showingLink$`,this._showingLink$.asObservable()),A(this,`_editPopup`,null),A(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:b.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(t){var n,r,i,a,o,s;let{linkId:c,unitId:l,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}=t;if(!(((n=this.showing)==null?void 0:n.linkId)===c&&((r=this.showing)==null?void 0:r.unitId)===l&&((i=this.showing)==null?void 0:i.segmentId)===u&&((a=this.showing)==null?void 0:a.segmentPage)===d&&((o=this.showing)==null?void 0:o.startIndex)===f&&((s=this.showing)==null?void 0:s.endIndex)===p)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(l,e.UniverInstanceType.UNIVER_DOC)))return this._showingLink$.next({unitId:l,linkId:c,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:f,endOffset:p+1,segmentId:u,segmentPage:d},{componentKey:E.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},l),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};N=M([j(0,(0,e.Inject)(i.DocCanvasPopManagerService)),j(1,(0,e.Inject)(r.DocSelectionManagerService)),j(2,e.IUniverInstanceService)],N);let P=class extends e.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===r.SetTextSelectionsOperation.id){let{unitId:r,ranges:a,segmentId:o}=t.params,s=this._univerInstanceService.getUnit(r,e.UniverInstanceType.UNIVER_DOC),c=a[0];if(c&&s){var n;let{startOffset:e,endOffset:t,collapsed:a,segmentPage:l}=c,u=(n=s.getSelfOrHeaderFooterModel(o))==null||(n=n.getBody())==null?void 0:n.customRanges;if(a){var i;let n=(i=u==null?void 0:u.findIndex(n=>n.startIndex<e&&n.endIndex>t-1))==null?-1:i;if(n>-1){let e=u[n];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:o,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(n=>n.startIndex<=e&&n.endIndex>=t-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};P=M([j(0,e.ICommandService),j(1,e.IUniverInstanceService),j(2,(0,e.Inject)(N))],P);let F=class extends e.Disposable{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(t,n,r,i,a,o){super(),this._context=t,this._docEventManagerService=n,this._commandService=r,this._hyperLinkPopupService=i,this._docSkeletonManagerService=a,this._docSelectionManagerService=o,!(this._context.unitId===e.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(w.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(t=>{var n;let r=t.find(t=>t.range.rangeType===e.CustomRangeType.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((n=r==null?void 0:r.segmentId)==null?``:n)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(w.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(T.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};F=M([j(1,(0,e.Inject)(i.DocEventManagerService)),j(2,e.ICommandService),j(3,(0,e.Inject)(N)),j(4,(0,e.Inject)(r.DocSkeletonManagerService)),j(5,(0,e.Inject)(r.DocSelectionManagerService))],F);let I=class extends e.Disposable{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(r.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe((0,a.distinctUntilChanged)((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),(0,a.pairwise)()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};I=M([j(1,(0,e.Inject)(r.DocInterceptorService)),j(2,(0,e.Inject)(N)),j(3,(0,e.Inject)(i.DocRenderController))],I);const L=`doc-hyper-link-icon`;function R(t){return{id:C.id,type:s.MenuItemType.BUTTON,icon:L,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:(0,s.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_DOC),disabled$:new a.Observable(function(e){let n=t.get(r.DocSelectionManagerService).textSelection$.pipe((0,a.debounceTime)(16)).subscribe(()=>{e.next(S(t))});return()=>{n.unsubscribe()}})}}const z={id:C.id,binding:s.MetaKeys.CTRL_COMMAND|s.KeyCode.K,description:`docLink.menu.tooltip`,preconditions:i.whenDocAndEditorFocused},B={[s.RibbonInsertGroup.MEDIA]:{[C.id]:{order:1,menuItemFactory:R}},[s.ContextMenuPosition.MAIN_AREA]:{[s.ContextMenuGroup.DATA]:{[C.id]:{order:0,menuItemFactory:R}}}};let V=class extends e.Disposable{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[E.componentKey,E],[L,u.LinkIcon]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[h,g,x,C,w,T].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[z].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(B)}};V=M([j(0,(0,e.Inject)(s.ComponentManager)),j(1,e.ICommandService),j(2,s.IMenuManagerService),j(3,s.IShortcutService)],V);let H=class extends e.Plugin{constructor(t=m,n,r,i){super(),this._config=t,this._injector=n,this._renderManagerSrv=r,this._configService=i;let{menu:a,...o}=(0,e.merge)({},m,this._config);a&&this._configService.setConfig(`menu`,a,{merge:!0}),this._configService.setConfig(p,o)}onStarting(){[[N],[V],[P]].forEach(e=>{this._injector.add(e)}),this._injector.get(V)}onReady(){this._injector.get(P)}onRendered(){this._initRenderModule()}_initRenderModule(){[[I],[F]].forEach(t=>{this._renderManagerSrv.registerRenderModule(e.UniverInstanceType.UNIVER_DOC,t)})}};A(H,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),A(H,`packageName`,d),A(H,`version`,f),A(H,`type`,e.UniverInstanceType.UNIVER_DOC),H=M([(0,e.DependentOn)(t.UniverDocsHyperLinkPlugin),j(1,(0,e.Inject)(e.Injector)),j(2,n.IRenderManagerService),j(3,e.IConfigService)],H),Object.defineProperty(exports,`UniverDocsHyperLinkUIPlugin`,{enumerable:!0,get:function(){return H}});
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/docs-hyper-link`),n=require(`@univerjs/engine-render`),r=require(`@univerjs/docs`),i=require(`@univerjs/docs-ui`),a=require(`rxjs`),o=require(`@univerjs/design`),s=require(`@univerjs/ui`),c=require(`react`),l=require(`react/jsx-runtime`),u=require(`@univerjs/icons`);var d=`@univerjs/docs-hyper-link-ui`,f=`0.19.0`;const p=`docs-hyper-link-ui.config`;Symbol(p);const m={},h={type:e.CommandType.COMMAND,id:`docs.command.add-hyper-link`,async handler(t,n){if(!n)return!1;let{payload:i,unitId:a,selections:o}=n,s=t.get(e.ICommandService),c=(0,r.addCustomRangeBySelectionFactory)(t,{rangeId:(0,e.generateRandomId)(),rangeType:e.CustomRangeType.HYPERLINK,properties:{url:i},unitId:a,selections:o});return c?s.syncExecuteCommand(c.id,c.params):!1}},g={id:`docs.command.update-hyper-link`,type:e.CommandType.COMMAND,handler(t,n){var i;if(!n)return!1;let{unitId:a,payload:o,segmentId:s,linkId:c}=n,l=t.get(e.ICommandService),u=t.get(e.IUniverInstanceService),d=t.get(r.DocSelectionManagerService).getActiveTextRange(),f=u.getUnit(a,e.UniverInstanceType.UNIVER_DOC);if(!d||!f)return!1;let p=(i=(0,e.getBodySlice)(f.getSelfOrHeaderFooterModel(s).getBody(),d.startOffset,d.endOffset).textRuns)==null?void 0:i[0];p&&(p.ed=n.label.length+1);let m=(0,r.replaceSelectionFactory)(t,{unitId:a,body:{dataStream:`${n.label}`,customRanges:[{rangeId:c,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:n.label.length+1,properties:{url:o}}],textRuns:p?[p]:void 0},selection:{startOffset:d.startOffset,endOffset:d.endOffset,collapsed:!1,segmentId:s}});return m?l.syncExecuteCommand(m.id,m.params):!1}};function _(e){return/^[a-zA-Z]+:\/\//.test(e)}function v(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function y(e){return _(e)?e:v(e)?`mailto://${e}`:`https://${e}`}const b=()=>{let t=(0,s.useDependency)(N),n=(0,s.useDependency)(e.LocaleService),i=(0,s.useObservable)(t.editingLink$),a=(0,s.useDependency)(e.ICommandService),u=(0,s.useDependency)(e.IUniverInstanceService),d=(0,s.useDependency)(r.DocSelectionManagerService),[f,p]=(0,c.useState)(``),[m,_]=(0,c.useState)(``),[v,b]=(0,c.useState)(!1),x=e.Tools.isLegalUrl(f),S=i?u.getUnit(i.unitId,e.UniverInstanceType.UNIVER_DOC):u.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC);(0,c.useEffect)(()=>{var t,n,r;let a=d.getActiveTextRange();if(!a)return;if(i){var o,s;let t=S==null||(o=S.getSelfOrHeaderFooterModel(i.segmentId))==null?void 0:o.getBody(),n=t==null||(s=t.customRanges)==null?void 0:s.find(e=>(i==null?void 0:i.linkId)===e.rangeId&&e.startIndex===i.startIndex&&e.endIndex===i.endIndex);if(S&&n){var c,l;p((c=(l=n.properties)==null?void 0:l.url)==null?``:c),_(e.BuildTextUtils.transform.getPlainText((0,e.getBodySlice)(t,n.startIndex,n.endIndex+1).dataStream))}return}let u=S==null||(t=S.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),f=u?a:null,m=f&&((n=e.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(f,(r=u==null?void 0:u.customRanges)==null?[]:r))==null?void 0:n[0]);if(S&&m){var h,g;p((h=m==null||(g=m.properties)==null?void 0:g.url)==null?``:h)}},[S,i,d,u]);let C=()=>{t.hideEditPopup()},w=()=>{if(b(!0),!x||!S)return;let e=y(f);if(!i)a.executeCommand(h.id,{unitId:S.getUnitId(),payload:e});else{if(!m)return;a.executeCommand(g.id,{unitId:S.getUnitId(),payload:e,linkId:i.linkId,label:m,segmentId:i.segmentId})}t.hideEditPopup()};if(S)return(0,l.jsxs)(`div`,{className:(0,o.clsx)(`univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900`,o.borderClassName),children:[(0,l.jsxs)(`div`,{children:[i?(0,l.jsx)(o.FormLayout,{label:n.t(`docLink.edit.label`),error:v&&!m?n.t(`docLink.edit.labelError`):``,children:(0,l.jsx)(o.Input,{value:m,onChange:_,autoFocus:!0,onKeyDown:e=>{e.keyCode===s.KeyCode.ENTER&&w()}})}):null,(0,l.jsx)(o.FormLayout,{label:n.t(`docLink.edit.address`),error:v&&!x?n.t(`docLink.edit.addressError`):``,children:(0,l.jsx)(o.Input,{value:f,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===s.KeyCode.ENTER&&w()}})})]}),(0,l.jsxs)(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[(0,l.jsx)(o.Button,{onClick:C,children:n.t(`docLink.edit.cancel`)}),(0,l.jsx)(o.Button,{variant:`primary`,disabled:!f,onClick:w,children:n.t(`docLink.edit.confirm`)})]})]})};b.componentKey=`docs-hyper-link-edit`;const x={type:e.CommandType.COMMAND,id:`docs.command.delete-hyper-link`,async handler(t,n){if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=t.get(e.ICommandService),c=(0,r.deleteCustomRangeFactory)(t,{unitId:i,rangeId:a,segmentId:o});return c?await s.syncExecuteCommand(c.id,c.params):!1}},S=t=>{let n=t.get(r.DocSelectionManagerService),i=t.get(e.IUniverInstanceService),a=n.getTextRanges();if(!(a!=null&&a.length))return!0;let o=a[0];return!!(!i.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC)||!o||o.collapsed)},C={type:e.CommandType.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(t,n){var r;let i=n==null?void 0:n.link,a=t.get(e.IUniverInstanceService);if(S(t)&&!i)return!1;let o=t.get(N),s=(i==null?void 0:i.unitId)||((r=a.getCurrentUnitForType(e.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());return s?(o.showEditPopup(s,i),!0):!1}},w={type:e.CommandType.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(N);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},T={type:e.CommandType.OPERATION,id:`doc.operation.click-hyper-link`,handler(t,n){var r;if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=t.get(e.IUniverInstanceService).getUnit(i,e.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),l=c==null||(r=c.customRanges)==null||(r=r.find(t=>t.rangeId===a&&t.rangeType===e.CustomRangeType.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return l&&window.open(l,`_blank`,`noopener noreferrer`),!0}},E=()=>{var t,n;let r=(0,s.useDependency)(N),i=(0,s.useDependency)(e.ICommandService),a=(0,s.useDependency)(s.IMessageService),c=(0,s.useDependency)(e.LocaleService),d=(0,s.useObservable)(r.showingLink$),f=(0,s.useDependency)(e.IUniverInstanceService);if(!d)return null;let{unitId:p,linkId:m,segmentId:h,startIndex:g,endIndex:_}=d,v=f.getUnit(p,e.UniverInstanceType.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(h).getBody(),b=y==null||(t=y.customRanges)==null?void 0:t.find(t=>t.rangeId===m&&t.rangeType===e.CustomRangeType.HYPERLINK&&t.startIndex===g&&t.endIndex===_);if(!b)return null;let S=(n=b.properties)==null?void 0:n.url;return(0,l.jsxs)(`div`,{className:(0,o.clsx)(`univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow dark:!univer-bg-gray-900`,o.borderClassName),onClick:()=>{r.hideInfoPopup()},children:[(0,l.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate univer-text-sm univer-leading-5 univer-text-primary-500`,onClick:()=>window.open(S,void 0,`noopener noreferrer`),children:[(0,l.jsx)(`div`,{className:`univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center univer-justify-center univer-text-base univer-text-gray-900 dark:!univer-text-white`,children:(0,l.jsx)(u.LinkIcon,{})}),(0,l.jsx)(o.Tooltip,{showIfEllipsis:!0,title:S,children:(0,l.jsx)(`span`,{className:`univer-flex-1 univer-truncate`,children:S})})]}),(0,l.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[(0,l.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{navigator.clipboard.writeText(S),a.show({content:c.t(`docLink.info.coped`),type:o.MessageType.Info})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.copy`),children:(0,l.jsx)(u.CopyIcon,{})})}),(0,l.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(C.id,{link:d})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.edit`),children:(0,l.jsx)(u.WriteIcon,{})})}),(0,l.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(x.id,{unitId:p,linkId:b.rangeId,segmentId:h})},children:(0,l.jsx)(o.Tooltip,{placement:`bottom`,title:c.t(`docLink.info.cancel`),children:(0,l.jsx)(u.UnlinkIcon,{})})})]})]})};E.componentKey=`univer.doc.link-info-popup`;function D(e){"@babel/helpers - typeof";return D=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},D(e)}function O(e,t){if(D(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(D(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function k(e){var t=O(e,`string`);return D(t)==`symbol`?t:t+``}function A(e,t,n){return(t=k(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e,t){return function(n,r){t(n,r,e)}}function M(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let N=class extends e.Disposable{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,A(this,`_editingLink$`,new a.BehaviorSubject(null)),A(this,`_showingLink$`,new a.BehaviorSubject(null)),A(this,`editingLink$`,this._editingLink$.asObservable()),A(this,`showingLink$`,this._showingLink$.asObservable()),A(this,`_editPopup`,null),A(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:b.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(t){var n,r,i,a,o,s;let{linkId:c,unitId:l,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}=t;if(!(((n=this.showing)==null?void 0:n.linkId)===c&&((r=this.showing)==null?void 0:r.unitId)===l&&((i=this.showing)==null?void 0:i.segmentId)===u&&((a=this.showing)==null?void 0:a.segmentPage)===d&&((o=this.showing)==null?void 0:o.startIndex)===f&&((s=this.showing)==null?void 0:s.endIndex)===p)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(l,e.UniverInstanceType.UNIVER_DOC)))return this._showingLink$.next({unitId:l,linkId:c,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:f,endOffset:p+1,segmentId:u,segmentPage:d},{componentKey:E.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},l),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};N=M([j(0,(0,e.Inject)(i.DocCanvasPopManagerService)),j(1,(0,e.Inject)(r.DocSelectionManagerService)),j(2,e.IUniverInstanceService)],N);let P=class extends e.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===r.SetTextSelectionsOperation.id){let{unitId:r,ranges:a,segmentId:o}=t.params,s=this._univerInstanceService.getUnit(r,e.UniverInstanceType.UNIVER_DOC),c=a[0];if(c&&s){var n;let{startOffset:e,endOffset:t,collapsed:a,segmentPage:l}=c,u=(n=s.getSelfOrHeaderFooterModel(o))==null||(n=n.getBody())==null?void 0:n.customRanges;if(a){var i;let n=(i=u==null?void 0:u.findIndex(n=>n.startIndex<e&&n.endIndex>t-1))==null?-1:i;if(n>-1){let e=u[n];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:o,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(n=>n.startIndex<=e&&n.endIndex>=t-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};P=M([j(0,e.ICommandService),j(1,e.IUniverInstanceService),j(2,(0,e.Inject)(N))],P);let F=class extends e.Disposable{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(t,n,r,i,a,o){super(),this._context=t,this._docEventManagerService=n,this._commandService=r,this._hyperLinkPopupService=i,this._docSkeletonManagerService=a,this._docSelectionManagerService=o,!(this._context.unitId===e.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(w.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(t=>{var n;let r=t.find(t=>t.range.rangeType===e.CustomRangeType.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((n=r==null?void 0:r.segmentId)==null?``:n)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(w.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(T.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};F=M([j(1,(0,e.Inject)(i.DocEventManagerService)),j(2,e.ICommandService),j(3,(0,e.Inject)(N)),j(4,(0,e.Inject)(r.DocSkeletonManagerService)),j(5,(0,e.Inject)(r.DocSelectionManagerService))],F);let I=class extends e.Disposable{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(r.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe((0,a.distinctUntilChanged)((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),(0,a.pairwise)()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};I=M([j(1,(0,e.Inject)(r.DocInterceptorService)),j(2,(0,e.Inject)(N)),j(3,(0,e.Inject)(i.DocRenderController))],I);const L=`doc-hyper-link-icon`;function R(t){return{id:C.id,type:s.MenuItemType.BUTTON,icon:L,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:(0,s.getMenuHiddenObservable)(t,e.UniverInstanceType.UNIVER_DOC),disabled$:new a.Observable(function(e){let n=t.get(r.DocSelectionManagerService).textSelection$.pipe((0,a.debounceTime)(16)).subscribe(()=>{e.next(S(t))});return()=>{n.unsubscribe()}})}}const z={id:C.id,binding:s.MetaKeys.CTRL_COMMAND|s.KeyCode.K,description:`docLink.menu.tooltip`,preconditions:i.whenDocAndEditorFocused},B={[s.RibbonInsertGroup.MEDIA]:{[C.id]:{order:1,menuItemFactory:R}},[s.ContextMenuPosition.MAIN_AREA]:{[s.ContextMenuGroup.DATA]:{[C.id]:{order:0,menuItemFactory:R}}}};let V=class extends e.Disposable{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[E.componentKey,E],[L,u.LinkIcon]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[h,g,x,C,w,T].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[z].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(B)}};V=M([j(0,(0,e.Inject)(s.ComponentManager)),j(1,e.ICommandService),j(2,s.IMenuManagerService),j(3,s.IShortcutService)],V);let H=class extends e.Plugin{constructor(t=m,n,r,i){super(),this._config=t,this._injector=n,this._renderManagerSrv=r,this._configService=i;let{menu:a,...o}=(0,e.merge)({},m,this._config);a&&this._configService.setConfig(`menu`,a,{merge:!0}),this._configService.setConfig(p,o)}onStarting(){[[N],[V],[P]].forEach(e=>{this._injector.add(e)}),this._injector.get(V)}onReady(){this._injector.get(P)}onRendered(){this._initRenderModule()}_initRenderModule(){[[I],[F]].forEach(t=>{this._renderManagerSrv.registerRenderModule(e.UniverInstanceType.UNIVER_DOC,t)})}};A(H,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),A(H,`packageName`,d),A(H,`version`,f),A(H,`type`,e.UniverInstanceType.UNIVER_DOC),H=M([(0,e.DependentOn)(t.UniverDocsHyperLinkPlugin),j(1,(0,e.Inject)(e.Injector)),j(2,n.IRenderManagerService),j(3,e.IConfigService)],H),Object.defineProperty(exports,`UniverDocsHyperLinkUIPlugin`,{enumerable:!0,get:function(){return H}});
|
package/lib/es/index.js
CHANGED
|
@@ -1,24 +1 @@
|
|
|
1
|
-
import{BuildTextUtils as e,CommandType as t,CustomRangeType as n,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as r,DOCS_ZEN_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,ICommandService as s,IConfigService as c,IUniverInstanceService as l,Inject as u,Injector as d,LocaleService as f,Plugin as p,Tools as m,UniverInstanceType as h,generateRandomId as g,getBodySlice as _,merge as v}from"@univerjs/core";import{UniverDocsHyperLinkPlugin as y}from"@univerjs/docs-hyper-link";import{IRenderManagerService as b}from"@univerjs/engine-render";import{DOC_INTERCEPTOR_POINT as x,DocInterceptorService as S,DocSelectionManagerService as C,DocSkeletonManagerService as ee,SetTextSelectionsOperation as te,addCustomRangeBySelectionFactory as ne,deleteCustomRangeFactory as re,replaceSelectionFactory as ie}from"@univerjs/docs";import{DocCanvasPopManagerService as ae,DocEventManagerService as oe,DocRenderController as se,whenDocAndEditorFocused as ce}from"@univerjs/docs-ui";import{BehaviorSubject as le,Observable as ue,debounceTime as de,distinctUntilChanged as fe,pairwise as pe}from"rxjs";import{Button as me,FormLayout as he,Input as w,MessageType as ge,Tooltip as T,borderClassName as E,clsx as D}from"@univerjs/design";import{ComponentManager as _e,ContextMenuGroup as ve,ContextMenuPosition as ye,IMenuManagerService as be,IMessageService as xe,IShortcutService as Se,KeyCode as O,MenuItemType as Ce,MetaKeys as we,RibbonInsertGroup as Te,getMenuHiddenObservable as Ee,useDependency as k,useObservable as A}from"@univerjs/ui";import{useEffect as De,useState as j}from"react";import{jsx as M,jsxs as N}from"react/jsx-runtime";import{CopyIcon as Oe,LinkIcon as P,UnlinkIcon as ke,WriteIcon as Ae}from"@univerjs/icons";var je=`@univerjs/docs-hyper-link-ui`,Me=`0.18.0`;const F=`docs-hyper-link-ui.config`;Symbol(F);const I={},L={type:t.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,t){if(!t)return!1;let{payload:r,unitId:i,selections:a}=t,o=e.get(s),c=ne(e,{rangeId:g(),rangeType:n.HYPERLINK,properties:{url:r},unitId:i,selections:a});return c?o.syncExecuteCommand(c.id,c.params):!1}},R={id:`docs.command.update-hyper-link`,type:t.COMMAND,handler(e,t){var r;if(!t)return!1;let{unitId:i,payload:a,segmentId:o,linkId:c}=t,u=e.get(s),d=e.get(l),f=e.get(C).getActiveTextRange(),p=d.getUnit(i,h.UNIVER_DOC);if(!f||!p)return!1;let m=(r=_(p.getSelfOrHeaderFooterModel(o).getBody(),f.startOffset,f.endOffset).textRuns)==null?void 0:r[0];m&&(m.ed=t.label.length+1);let g=ie(e,{unitId:i,body:{dataStream:`${t.label}`,customRanges:[{rangeId:c,rangeType:n.HYPERLINK,startIndex:0,endIndex:t.label.length+1,properties:{url:a}}],textRuns:m?[m]:void 0},selection:{startOffset:f.startOffset,endOffset:f.endOffset,collapsed:!1,segmentId:o}});return g?u.syncExecuteCommand(g.id,g.params):!1}};function Ne(e){return/^[a-zA-Z]+:\/\//.test(e)}function Pe(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function Fe(e){return Ne(e)?e:Pe(e)?`mailto://${e}`:`https://${e}`}const z=()=>{let t=k(J),n=k(f),r=A(t.editingLink$),i=k(s),a=k(l),o=k(C),[c,u]=j(``),[d,p]=j(``),[g,v]=j(!1),y=m.isLegalUrl(c),b=r?a.getUnit(r.unitId,h.UNIVER_DOC):a.getCurrentUnitForType(h.UNIVER_DOC);De(()=>{var t,n,i;let a=o.getActiveTextRange();if(!a)return;if(r){var s,c;let t=b==null||(s=b.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:s.getBody(),n=t==null||(c=t.customRanges)==null?void 0:c.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(b&&n){var l,d;u((l=(d=n.properties)==null?void 0:d.url)==null?``:l),p(e.transform.getPlainText(_(t,n.startIndex,n.endIndex+1).dataStream))}return}let f=b==null||(t=b.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),m=f?a:null,h=m&&((n=e.customRange.getCustomRangesInterestsWithSelection(m,(i=f==null?void 0:f.customRanges)==null?[]:i))==null?void 0:n[0]);if(b&&h){var g,v;u((g=h==null||(v=h.properties)==null?void 0:v.url)==null?``:g)}},[b,r,o,a]);let x=()=>{t.hideEditPopup()},S=()=>{if(v(!0),!y||!b)return;let e=Fe(c);if(!r)i.executeCommand(L.id,{unitId:b.getUnitId(),payload:e});else{if(!d)return;i.executeCommand(R.id,{unitId:b.getUnitId(),payload:e,linkId:r.linkId,label:d,segmentId:r.segmentId})}t.hideEditPopup()};if(b)return N(`div`,{className:D(`
|
|
2
|
-
univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow
|
|
3
|
-
dark:!univer-bg-gray-900
|
|
4
|
-
`,E),children:[N(`div`,{children:[r?M(he,{label:n.t(`docLink.edit.label`),error:g&&!d?n.t(`docLink.edit.labelError`):``,children:M(w,{value:d,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})}):null,M(he,{label:n.t(`docLink.edit.address`),error:g&&!y?n.t(`docLink.edit.addressError`):``,children:M(w,{value:c,onChange:u,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})})]}),N(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[M(me,{onClick:x,children:n.t(`docLink.edit.cancel`)}),M(me,{variant:`primary`,disabled:!c,onClick:S,children:n.t(`docLink.edit.confirm`)})]})]})};z.componentKey=`docs-hyper-link-edit`;const B={type:t.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,t){if(!t)return!1;let{unitId:n,linkId:r,segmentId:i}=t,a=e.get(s),o=re(e,{unitId:n,rangeId:r,segmentId:i});return o?await a.syncExecuteCommand(o.id,o.params):!1}},Ie=e=>{let t=e.get(C),n=e.get(l),r=t.getTextRanges();if(!(r!=null&&r.length))return!0;let i=r[0];return!!(!n.getCurrentUnitForType(h.UNIVER_DOC)||!i||i.collapsed)},V={type:t.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,t){var n;let r=t==null?void 0:t.link,i=e.get(l);if(Ie(e)&&!r)return!1;let a=e.get(J),o=(r==null?void 0:r.unitId)||((n=i.getCurrentUnitForType(h.UNIVER_DOC))==null?void 0:n.getUnitId());return o?(a.showEditPopup(o,r),!0):!1}},H={type:t.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(J);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},Le={type:t.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,t){var r;if(!t)return!1;let{unitId:i,linkId:a,segmentId:o}=t,s=e.get(l).getUnit(i,h.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),u=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===n.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return u&&window.open(u,`_blank`,`noopener noreferrer`),!0}},U=()=>{var e,t;let r=k(J),i=k(s),a=k(xe),o=k(f),c=A(r.showingLink$),u=k(l);if(!c)return null;let{unitId:d,linkId:p,segmentId:m,startIndex:g,endIndex:_}=c,v=u.getUnit(d,h.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(m).getBody(),b=y==null||(e=y.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===n.HYPERLINK&&e.startIndex===g&&e.endIndex===_);if(!b)return null;let x=(t=b.properties)==null?void 0:t.url;return N(`div`,{className:D(`
|
|
5
|
-
univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between
|
|
6
|
-
univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow
|
|
7
|
-
dark:!univer-bg-gray-900
|
|
8
|
-
`,E),onClick:()=>{r.hideInfoPopup()},children:[N(`div`,{className:`
|
|
9
|
-
univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate
|
|
10
|
-
univer-text-sm univer-leading-5 univer-text-primary-500
|
|
11
|
-
`,onClick:()=>window.open(x,void 0,`noopener noreferrer`),children:[M(`div`,{className:`
|
|
12
|
-
univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center
|
|
13
|
-
univer-justify-center univer-text-base univer-text-gray-900
|
|
14
|
-
dark:!univer-text-white
|
|
15
|
-
`,children:M(P,{})}),M(T,{showIfEllipsis:!0,title:x,children:M(`span`,{className:`univer-flex-1 univer-truncate`,children:x})})]}),N(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[M(`div`,{className:`
|
|
16
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
17
|
-
univer-justify-center univer-rounded univer-text-base
|
|
18
|
-
`,onClick:()=>{navigator.clipboard.writeText(x),a.show({content:o.t(`docLink.info.coped`),type:ge.Info})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:M(Oe,{})})}),M(`div`,{className:`
|
|
19
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
20
|
-
univer-justify-center univer-rounded univer-text-base
|
|
21
|
-
`,onClick:()=>{i.executeCommand(V.id,{link:c})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:M(Ae,{})})}),M(`div`,{className:`
|
|
22
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
23
|
-
univer-justify-center univer-rounded univer-text-base
|
|
24
|
-
`,onClick:()=>{i.executeCommand(B.id,{unitId:d,linkId:b.rangeId,segmentId:m})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:M(ke,{})})})]})]})};U.componentKey=`univer.doc.link-info-popup`;function W(e){"@babel/helpers - typeof";return W=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},W(e)}function Re(e,t){if(W(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(W(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ze(e){var t=Re(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=ze(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function K(e,t){return function(n,r){t(n,r,e)}}function q(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let J=class extends o{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,G(this,`_editingLink$`,new le(null)),G(this,`_showingLink$`,new le(null)),G(this,`editingLink$`,this._editingLink$.asObservable()),G(this,`showingLink$`,this._showingLink$.asObservable()),G(this,`_editPopup`,null),G(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:z.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var t,n,r,i,a,o;let{linkId:s,unitId:c,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}=e;if(!(((t=this.showing)==null?void 0:t.linkId)===s&&((n=this.showing)==null?void 0:n.unitId)===c&&((r=this.showing)==null?void 0:r.segmentId)===l&&((i=this.showing)==null?void 0:i.segmentPage)===u&&((a=this.showing)==null?void 0:a.startIndex)===d&&((o=this.showing)==null?void 0:o.endIndex)===f)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(c,h.UNIVER_DOC)))return this._showingLink$.next({unitId:c,linkId:s,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:d,endOffset:f+1,segmentId:l,segmentPage:u},{componentKey:U.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},c),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};J=q([K(0,u(ae)),K(1,u(C)),K(2,l)],J);let Y=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===te.id){let{unitId:r,ranges:i,segmentId:a}=e.params,o=this._univerInstanceService.getUnit(r,h.UNIVER_DOC),s=i[0];if(s&&o){var t;let{startOffset:e,endOffset:i,collapsed:c,segmentPage:l}=s,u=(t=o.getSelfOrHeaderFooterModel(a))==null||(t=t.getBody())==null?void 0:t.customRanges;if(c){var n;let t=(n=u==null?void 0:u.findIndex(t=>t.startIndex<e&&t.endIndex>i-1))==null?-1:n;if(t>-1){let e=u[t];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:a,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(t=>t.startIndex<=e&&t.endIndex>=i-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};Y=q([K(0,s),K(1,l),K(2,u(J))],Y);let X=class extends o{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,t,n,a,o,s){super(),this._context=e,this._docEventManagerService=t,this._commandService=n,this._hyperLinkPopupService=a,this._docSkeletonManagerService=o,this._docSelectionManagerService=s,!(this._context.unitId===i||this._context.unitId===r)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(H.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var t;let r=e.find(e=>e.range.rangeType===n.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((t=r==null?void 0:r.segmentId)==null?``:t)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(H.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(Le.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};X=q([K(1,u(oe)),K(2,s),K(3,u(J)),K(4,u(ee)),K(5,u(C))],X);let Z=class extends o{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(x.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(fe((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),pe()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Z=q([K(1,u(S)),K(2,u(J)),K(3,u(se))],Z);const Be=`doc-hyper-link-icon`;function Ve(e){return{id:V.id,type:Ce.BUTTON,icon:Be,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:Ee(e,h.UNIVER_DOC),disabled$:new ue(function(t){let n=e.get(C).textSelection$.pipe(de(16)).subscribe(()=>{t.next(Ie(e))});return()=>{n.unsubscribe()}})}}const He={id:V.id,binding:we.CTRL_COMMAND|O.K,description:`docLink.menu.tooltip`,preconditions:ce},Ue={[Te.MEDIA]:{[V.id]:{order:1,menuItemFactory:Ve}},[ye.MAIN_AREA]:{[ve.DATA]:{[V.id]:{order:0,menuItemFactory:Ve}}}};let Q=class extends o{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[z.componentKey,z],[U.componentKey,U],[Be,P]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[L,R,B,V,H,Le].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[He].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(Ue)}};Q=q([K(0,u(_e)),K(1,s),K(2,be),K(3,Se)],Q);let $=class extends p{constructor(e=I,t,n,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=n,this._configService=r;let{menu:i,...a}=v({},I,this._config);i&&this._configService.setConfig(`menu`,i,{merge:!0}),this._configService.setConfig(F,a)}onStarting(){[[J],[Q],[Y]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(Y)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Z],[X]].forEach(e=>{this._renderManagerSrv.registerRenderModule(h.UNIVER_DOC,e)})}};G($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),G($,`packageName`,je),G($,`version`,Me),G($,`type`,h.UNIVER_DOC),$=q([a(y),K(1,u(d)),K(2,b),K(3,c)],$);export{$ as UniverDocsHyperLinkUIPlugin};
|
|
1
|
+
import{BuildTextUtils as e,CommandType as t,CustomRangeType as n,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as r,DOCS_ZEN_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,ICommandService as s,IConfigService as c,IUniverInstanceService as l,Inject as u,Injector as d,LocaleService as f,Plugin as p,Tools as m,UniverInstanceType as h,generateRandomId as g,getBodySlice as _,merge as v}from"@univerjs/core";import{UniverDocsHyperLinkPlugin as y}from"@univerjs/docs-hyper-link";import{IRenderManagerService as b}from"@univerjs/engine-render";import{DOC_INTERCEPTOR_POINT as x,DocInterceptorService as S,DocSelectionManagerService as C,DocSkeletonManagerService as ee,SetTextSelectionsOperation as te,addCustomRangeBySelectionFactory as ne,deleteCustomRangeFactory as re,replaceSelectionFactory as ie}from"@univerjs/docs";import{DocCanvasPopManagerService as ae,DocEventManagerService as oe,DocRenderController as se,whenDocAndEditorFocused as ce}from"@univerjs/docs-ui";import{BehaviorSubject as le,Observable as ue,debounceTime as de,distinctUntilChanged as fe,pairwise as pe}from"rxjs";import{Button as me,FormLayout as he,Input as w,MessageType as ge,Tooltip as T,borderClassName as E,clsx as D}from"@univerjs/design";import{ComponentManager as _e,ContextMenuGroup as ve,ContextMenuPosition as ye,IMenuManagerService as be,IMessageService as xe,IShortcutService as Se,KeyCode as O,MenuItemType as Ce,MetaKeys as we,RibbonInsertGroup as Te,getMenuHiddenObservable as Ee,useDependency as k,useObservable as A}from"@univerjs/ui";import{useEffect as De,useState as j}from"react";import{jsx as M,jsxs as N}from"react/jsx-runtime";import{CopyIcon as Oe,LinkIcon as P,UnlinkIcon as ke,WriteIcon as Ae}from"@univerjs/icons";var je=`@univerjs/docs-hyper-link-ui`,Me=`0.19.0`;const F=`docs-hyper-link-ui.config`;Symbol(F);const I={},L={type:t.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,t){if(!t)return!1;let{payload:r,unitId:i,selections:a}=t,o=e.get(s),c=ne(e,{rangeId:g(),rangeType:n.HYPERLINK,properties:{url:r},unitId:i,selections:a});return c?o.syncExecuteCommand(c.id,c.params):!1}},R={id:`docs.command.update-hyper-link`,type:t.COMMAND,handler(e,t){var r;if(!t)return!1;let{unitId:i,payload:a,segmentId:o,linkId:c}=t,u=e.get(s),d=e.get(l),f=e.get(C).getActiveTextRange(),p=d.getUnit(i,h.UNIVER_DOC);if(!f||!p)return!1;let m=(r=_(p.getSelfOrHeaderFooterModel(o).getBody(),f.startOffset,f.endOffset).textRuns)==null?void 0:r[0];m&&(m.ed=t.label.length+1);let g=ie(e,{unitId:i,body:{dataStream:`${t.label}`,customRanges:[{rangeId:c,rangeType:n.HYPERLINK,startIndex:0,endIndex:t.label.length+1,properties:{url:a}}],textRuns:m?[m]:void 0},selection:{startOffset:f.startOffset,endOffset:f.endOffset,collapsed:!1,segmentId:o}});return g?u.syncExecuteCommand(g.id,g.params):!1}};function Ne(e){return/^[a-zA-Z]+:\/\//.test(e)}function Pe(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function Fe(e){return Ne(e)?e:Pe(e)?`mailto://${e}`:`https://${e}`}const z=()=>{let t=k(J),n=k(f),r=A(t.editingLink$),i=k(s),a=k(l),o=k(C),[c,u]=j(``),[d,p]=j(``),[g,v]=j(!1),y=m.isLegalUrl(c),b=r?a.getUnit(r.unitId,h.UNIVER_DOC):a.getCurrentUnitForType(h.UNIVER_DOC);De(()=>{var t,n,i;let a=o.getActiveTextRange();if(!a)return;if(r){var s,c;let t=b==null||(s=b.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:s.getBody(),n=t==null||(c=t.customRanges)==null?void 0:c.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(b&&n){var l,d;u((l=(d=n.properties)==null?void 0:d.url)==null?``:l),p(e.transform.getPlainText(_(t,n.startIndex,n.endIndex+1).dataStream))}return}let f=b==null||(t=b.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),m=f?a:null,h=m&&((n=e.customRange.getCustomRangesInterestsWithSelection(m,(i=f==null?void 0:f.customRanges)==null?[]:i))==null?void 0:n[0]);if(b&&h){var g,v;u((g=h==null||(v=h.properties)==null?void 0:v.url)==null?``:g)}},[b,r,o,a]);let x=()=>{t.hideEditPopup()},S=()=>{if(v(!0),!y||!b)return;let e=Fe(c);if(!r)i.executeCommand(L.id,{unitId:b.getUnitId(),payload:e});else{if(!d)return;i.executeCommand(R.id,{unitId:b.getUnitId(),payload:e,linkId:r.linkId,label:d,segmentId:r.segmentId})}t.hideEditPopup()};if(b)return N(`div`,{className:D(`univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900`,E),children:[N(`div`,{children:[r?M(he,{label:n.t(`docLink.edit.label`),error:g&&!d?n.t(`docLink.edit.labelError`):``,children:M(w,{value:d,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})}):null,M(he,{label:n.t(`docLink.edit.address`),error:g&&!y?n.t(`docLink.edit.addressError`):``,children:M(w,{value:c,onChange:u,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})})]}),N(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[M(me,{onClick:x,children:n.t(`docLink.edit.cancel`)}),M(me,{variant:`primary`,disabled:!c,onClick:S,children:n.t(`docLink.edit.confirm`)})]})]})};z.componentKey=`docs-hyper-link-edit`;const B={type:t.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,t){if(!t)return!1;let{unitId:n,linkId:r,segmentId:i}=t,a=e.get(s),o=re(e,{unitId:n,rangeId:r,segmentId:i});return o?await a.syncExecuteCommand(o.id,o.params):!1}},Ie=e=>{let t=e.get(C),n=e.get(l),r=t.getTextRanges();if(!(r!=null&&r.length))return!0;let i=r[0];return!!(!n.getCurrentUnitForType(h.UNIVER_DOC)||!i||i.collapsed)},V={type:t.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,t){var n;let r=t==null?void 0:t.link,i=e.get(l);if(Ie(e)&&!r)return!1;let a=e.get(J),o=(r==null?void 0:r.unitId)||((n=i.getCurrentUnitForType(h.UNIVER_DOC))==null?void 0:n.getUnitId());return o?(a.showEditPopup(o,r),!0):!1}},H={type:t.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(J);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},Le={type:t.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,t){var r;if(!t)return!1;let{unitId:i,linkId:a,segmentId:o}=t,s=e.get(l).getUnit(i,h.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),u=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===n.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return u&&window.open(u,`_blank`,`noopener noreferrer`),!0}},U=()=>{var e,t;let r=k(J),i=k(s),a=k(xe),o=k(f),c=A(r.showingLink$),u=k(l);if(!c)return null;let{unitId:d,linkId:p,segmentId:m,startIndex:g,endIndex:_}=c,v=u.getUnit(d,h.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(m).getBody(),b=y==null||(e=y.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===n.HYPERLINK&&e.startIndex===g&&e.endIndex===_);if(!b)return null;let x=(t=b.properties)==null?void 0:t.url;return N(`div`,{className:D(`univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow dark:!univer-bg-gray-900`,E),onClick:()=>{r.hideInfoPopup()},children:[N(`div`,{className:`univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate univer-text-sm univer-leading-5 univer-text-primary-500`,onClick:()=>window.open(x,void 0,`noopener noreferrer`),children:[M(`div`,{className:`univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center univer-justify-center univer-text-base univer-text-gray-900 dark:!univer-text-white`,children:M(P,{})}),M(T,{showIfEllipsis:!0,title:x,children:M(`span`,{className:`univer-flex-1 univer-truncate`,children:x})})]}),N(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{navigator.clipboard.writeText(x),a.show({content:o.t(`docLink.info.coped`),type:ge.Info})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:M(Oe,{})})}),M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(V.id,{link:c})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:M(Ae,{})})}),M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(B.id,{unitId:d,linkId:b.rangeId,segmentId:m})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:M(ke,{})})})]})]})};U.componentKey=`univer.doc.link-info-popup`;function W(e){"@babel/helpers - typeof";return W=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},W(e)}function Re(e,t){if(W(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(W(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ze(e){var t=Re(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=ze(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function K(e,t){return function(n,r){t(n,r,e)}}function q(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let J=class extends o{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,G(this,`_editingLink$`,new le(null)),G(this,`_showingLink$`,new le(null)),G(this,`editingLink$`,this._editingLink$.asObservable()),G(this,`showingLink$`,this._showingLink$.asObservable()),G(this,`_editPopup`,null),G(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:z.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var t,n,r,i,a,o;let{linkId:s,unitId:c,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}=e;if(!(((t=this.showing)==null?void 0:t.linkId)===s&&((n=this.showing)==null?void 0:n.unitId)===c&&((r=this.showing)==null?void 0:r.segmentId)===l&&((i=this.showing)==null?void 0:i.segmentPage)===u&&((a=this.showing)==null?void 0:a.startIndex)===d&&((o=this.showing)==null?void 0:o.endIndex)===f)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(c,h.UNIVER_DOC)))return this._showingLink$.next({unitId:c,linkId:s,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:d,endOffset:f+1,segmentId:l,segmentPage:u},{componentKey:U.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},c),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};J=q([K(0,u(ae)),K(1,u(C)),K(2,l)],J);let Y=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===te.id){let{unitId:r,ranges:i,segmentId:a}=e.params,o=this._univerInstanceService.getUnit(r,h.UNIVER_DOC),s=i[0];if(s&&o){var t;let{startOffset:e,endOffset:i,collapsed:c,segmentPage:l}=s,u=(t=o.getSelfOrHeaderFooterModel(a))==null||(t=t.getBody())==null?void 0:t.customRanges;if(c){var n;let t=(n=u==null?void 0:u.findIndex(t=>t.startIndex<e&&t.endIndex>i-1))==null?-1:n;if(t>-1){let e=u[t];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:a,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(t=>t.startIndex<=e&&t.endIndex>=i-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};Y=q([K(0,s),K(1,l),K(2,u(J))],Y);let X=class extends o{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,t,n,a,o,s){super(),this._context=e,this._docEventManagerService=t,this._commandService=n,this._hyperLinkPopupService=a,this._docSkeletonManagerService=o,this._docSelectionManagerService=s,!(this._context.unitId===i||this._context.unitId===r)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(H.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var t;let r=e.find(e=>e.range.rangeType===n.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((t=r==null?void 0:r.segmentId)==null?``:t)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(H.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(Le.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};X=q([K(1,u(oe)),K(2,s),K(3,u(J)),K(4,u(ee)),K(5,u(C))],X);let Z=class extends o{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(x.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(fe((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),pe()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Z=q([K(1,u(S)),K(2,u(J)),K(3,u(se))],Z);const Be=`doc-hyper-link-icon`;function Ve(e){return{id:V.id,type:Ce.BUTTON,icon:Be,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:Ee(e,h.UNIVER_DOC),disabled$:new ue(function(t){let n=e.get(C).textSelection$.pipe(de(16)).subscribe(()=>{t.next(Ie(e))});return()=>{n.unsubscribe()}})}}const He={id:V.id,binding:we.CTRL_COMMAND|O.K,description:`docLink.menu.tooltip`,preconditions:ce},Ue={[Te.MEDIA]:{[V.id]:{order:1,menuItemFactory:Ve}},[ye.MAIN_AREA]:{[ve.DATA]:{[V.id]:{order:0,menuItemFactory:Ve}}}};let Q=class extends o{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[z.componentKey,z],[U.componentKey,U],[Be,P]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[L,R,B,V,H,Le].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[He].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(Ue)}};Q=q([K(0,u(_e)),K(1,s),K(2,be),K(3,Se)],Q);let $=class extends p{constructor(e=I,t,n,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=n,this._configService=r;let{menu:i,...a}=v({},I,this._config);i&&this._configService.setConfig(`menu`,i,{merge:!0}),this._configService.setConfig(F,a)}onStarting(){[[J],[Q],[Y]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(Y)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Z],[X]].forEach(e=>{this._renderManagerSrv.registerRenderModule(h.UNIVER_DOC,e)})}};G($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),G($,`packageName`,je),G($,`version`,Me),G($,`type`,h.UNIVER_DOC),$=q([a(y),K(1,u(d)),K(2,b),K(3,c)],$);export{$ as UniverDocsHyperLinkUIPlugin};
|
package/lib/index.js
CHANGED
|
@@ -1,24 +1 @@
|
|
|
1
|
-
import{BuildTextUtils as e,CommandType as t,CustomRangeType as n,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as r,DOCS_ZEN_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,ICommandService as s,IConfigService as c,IUniverInstanceService as l,Inject as u,Injector as d,LocaleService as f,Plugin as p,Tools as m,UniverInstanceType as h,generateRandomId as g,getBodySlice as _,merge as v}from"@univerjs/core";import{UniverDocsHyperLinkPlugin as y}from"@univerjs/docs-hyper-link";import{IRenderManagerService as b}from"@univerjs/engine-render";import{DOC_INTERCEPTOR_POINT as x,DocInterceptorService as S,DocSelectionManagerService as C,DocSkeletonManagerService as ee,SetTextSelectionsOperation as te,addCustomRangeBySelectionFactory as ne,deleteCustomRangeFactory as re,replaceSelectionFactory as ie}from"@univerjs/docs";import{DocCanvasPopManagerService as ae,DocEventManagerService as oe,DocRenderController as se,whenDocAndEditorFocused as ce}from"@univerjs/docs-ui";import{BehaviorSubject as le,Observable as ue,debounceTime as de,distinctUntilChanged as fe,pairwise as pe}from"rxjs";import{Button as me,FormLayout as he,Input as w,MessageType as ge,Tooltip as T,borderClassName as E,clsx as D}from"@univerjs/design";import{ComponentManager as _e,ContextMenuGroup as ve,ContextMenuPosition as ye,IMenuManagerService as be,IMessageService as xe,IShortcutService as Se,KeyCode as O,MenuItemType as Ce,MetaKeys as we,RibbonInsertGroup as Te,getMenuHiddenObservable as Ee,useDependency as k,useObservable as A}from"@univerjs/ui";import{useEffect as De,useState as j}from"react";import{jsx as M,jsxs as N}from"react/jsx-runtime";import{CopyIcon as Oe,LinkIcon as P,UnlinkIcon as ke,WriteIcon as Ae}from"@univerjs/icons";var je=`@univerjs/docs-hyper-link-ui`,Me=`0.18.0`;const F=`docs-hyper-link-ui.config`;Symbol(F);const I={},L={type:t.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,t){if(!t)return!1;let{payload:r,unitId:i,selections:a}=t,o=e.get(s),c=ne(e,{rangeId:g(),rangeType:n.HYPERLINK,properties:{url:r},unitId:i,selections:a});return c?o.syncExecuteCommand(c.id,c.params):!1}},R={id:`docs.command.update-hyper-link`,type:t.COMMAND,handler(e,t){var r;if(!t)return!1;let{unitId:i,payload:a,segmentId:o,linkId:c}=t,u=e.get(s),d=e.get(l),f=e.get(C).getActiveTextRange(),p=d.getUnit(i,h.UNIVER_DOC);if(!f||!p)return!1;let m=(r=_(p.getSelfOrHeaderFooterModel(o).getBody(),f.startOffset,f.endOffset).textRuns)==null?void 0:r[0];m&&(m.ed=t.label.length+1);let g=ie(e,{unitId:i,body:{dataStream:`${t.label}`,customRanges:[{rangeId:c,rangeType:n.HYPERLINK,startIndex:0,endIndex:t.label.length+1,properties:{url:a}}],textRuns:m?[m]:void 0},selection:{startOffset:f.startOffset,endOffset:f.endOffset,collapsed:!1,segmentId:o}});return g?u.syncExecuteCommand(g.id,g.params):!1}};function Ne(e){return/^[a-zA-Z]+:\/\//.test(e)}function Pe(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function Fe(e){return Ne(e)?e:Pe(e)?`mailto://${e}`:`https://${e}`}const z=()=>{let t=k(J),n=k(f),r=A(t.editingLink$),i=k(s),a=k(l),o=k(C),[c,u]=j(``),[d,p]=j(``),[g,v]=j(!1),y=m.isLegalUrl(c),b=r?a.getUnit(r.unitId,h.UNIVER_DOC):a.getCurrentUnitForType(h.UNIVER_DOC);De(()=>{var t,n,i;let a=o.getActiveTextRange();if(!a)return;if(r){var s,c;let t=b==null||(s=b.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:s.getBody(),n=t==null||(c=t.customRanges)==null?void 0:c.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(b&&n){var l,d;u((l=(d=n.properties)==null?void 0:d.url)==null?``:l),p(e.transform.getPlainText(_(t,n.startIndex,n.endIndex+1).dataStream))}return}let f=b==null||(t=b.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),m=f?a:null,h=m&&((n=e.customRange.getCustomRangesInterestsWithSelection(m,(i=f==null?void 0:f.customRanges)==null?[]:i))==null?void 0:n[0]);if(b&&h){var g,v;u((g=h==null||(v=h.properties)==null?void 0:v.url)==null?``:g)}},[b,r,o,a]);let x=()=>{t.hideEditPopup()},S=()=>{if(v(!0),!y||!b)return;let e=Fe(c);if(!r)i.executeCommand(L.id,{unitId:b.getUnitId(),payload:e});else{if(!d)return;i.executeCommand(R.id,{unitId:b.getUnitId(),payload:e,linkId:r.linkId,label:d,segmentId:r.segmentId})}t.hideEditPopup()};if(b)return N(`div`,{className:D(`
|
|
2
|
-
univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow
|
|
3
|
-
dark:!univer-bg-gray-900
|
|
4
|
-
`,E),children:[N(`div`,{children:[r?M(he,{label:n.t(`docLink.edit.label`),error:g&&!d?n.t(`docLink.edit.labelError`):``,children:M(w,{value:d,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})}):null,M(he,{label:n.t(`docLink.edit.address`),error:g&&!y?n.t(`docLink.edit.addressError`):``,children:M(w,{value:c,onChange:u,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})})]}),N(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[M(me,{onClick:x,children:n.t(`docLink.edit.cancel`)}),M(me,{variant:`primary`,disabled:!c,onClick:S,children:n.t(`docLink.edit.confirm`)})]})]})};z.componentKey=`docs-hyper-link-edit`;const B={type:t.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,t){if(!t)return!1;let{unitId:n,linkId:r,segmentId:i}=t,a=e.get(s),o=re(e,{unitId:n,rangeId:r,segmentId:i});return o?await a.syncExecuteCommand(o.id,o.params):!1}},Ie=e=>{let t=e.get(C),n=e.get(l),r=t.getTextRanges();if(!(r!=null&&r.length))return!0;let i=r[0];return!!(!n.getCurrentUnitForType(h.UNIVER_DOC)||!i||i.collapsed)},V={type:t.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,t){var n;let r=t==null?void 0:t.link,i=e.get(l);if(Ie(e)&&!r)return!1;let a=e.get(J),o=(r==null?void 0:r.unitId)||((n=i.getCurrentUnitForType(h.UNIVER_DOC))==null?void 0:n.getUnitId());return o?(a.showEditPopup(o,r),!0):!1}},H={type:t.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(J);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},Le={type:t.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,t){var r;if(!t)return!1;let{unitId:i,linkId:a,segmentId:o}=t,s=e.get(l).getUnit(i,h.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),u=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===n.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return u&&window.open(u,`_blank`,`noopener noreferrer`),!0}},U=()=>{var e,t;let r=k(J),i=k(s),a=k(xe),o=k(f),c=A(r.showingLink$),u=k(l);if(!c)return null;let{unitId:d,linkId:p,segmentId:m,startIndex:g,endIndex:_}=c,v=u.getUnit(d,h.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(m).getBody(),b=y==null||(e=y.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===n.HYPERLINK&&e.startIndex===g&&e.endIndex===_);if(!b)return null;let x=(t=b.properties)==null?void 0:t.url;return N(`div`,{className:D(`
|
|
5
|
-
univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between
|
|
6
|
-
univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow
|
|
7
|
-
dark:!univer-bg-gray-900
|
|
8
|
-
`,E),onClick:()=>{r.hideInfoPopup()},children:[N(`div`,{className:`
|
|
9
|
-
univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate
|
|
10
|
-
univer-text-sm univer-leading-5 univer-text-primary-500
|
|
11
|
-
`,onClick:()=>window.open(x,void 0,`noopener noreferrer`),children:[M(`div`,{className:`
|
|
12
|
-
univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center
|
|
13
|
-
univer-justify-center univer-text-base univer-text-gray-900
|
|
14
|
-
dark:!univer-text-white
|
|
15
|
-
`,children:M(P,{})}),M(T,{showIfEllipsis:!0,title:x,children:M(`span`,{className:`univer-flex-1 univer-truncate`,children:x})})]}),N(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[M(`div`,{className:`
|
|
16
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
17
|
-
univer-justify-center univer-rounded univer-text-base
|
|
18
|
-
`,onClick:()=>{navigator.clipboard.writeText(x),a.show({content:o.t(`docLink.info.coped`),type:ge.Info})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:M(Oe,{})})}),M(`div`,{className:`
|
|
19
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
20
|
-
univer-justify-center univer-rounded univer-text-base
|
|
21
|
-
`,onClick:()=>{i.executeCommand(V.id,{link:c})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:M(Ae,{})})}),M(`div`,{className:`
|
|
22
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
23
|
-
univer-justify-center univer-rounded univer-text-base
|
|
24
|
-
`,onClick:()=>{i.executeCommand(B.id,{unitId:d,linkId:b.rangeId,segmentId:m})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:M(ke,{})})})]})]})};U.componentKey=`univer.doc.link-info-popup`;function W(e){"@babel/helpers - typeof";return W=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},W(e)}function Re(e,t){if(W(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(W(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ze(e){var t=Re(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=ze(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function K(e,t){return function(n,r){t(n,r,e)}}function q(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let J=class extends o{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,G(this,`_editingLink$`,new le(null)),G(this,`_showingLink$`,new le(null)),G(this,`editingLink$`,this._editingLink$.asObservable()),G(this,`showingLink$`,this._showingLink$.asObservable()),G(this,`_editPopup`,null),G(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:z.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var t,n,r,i,a,o;let{linkId:s,unitId:c,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}=e;if(!(((t=this.showing)==null?void 0:t.linkId)===s&&((n=this.showing)==null?void 0:n.unitId)===c&&((r=this.showing)==null?void 0:r.segmentId)===l&&((i=this.showing)==null?void 0:i.segmentPage)===u&&((a=this.showing)==null?void 0:a.startIndex)===d&&((o=this.showing)==null?void 0:o.endIndex)===f)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(c,h.UNIVER_DOC)))return this._showingLink$.next({unitId:c,linkId:s,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:d,endOffset:f+1,segmentId:l,segmentPage:u},{componentKey:U.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},c),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};J=q([K(0,u(ae)),K(1,u(C)),K(2,l)],J);let Y=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===te.id){let{unitId:r,ranges:i,segmentId:a}=e.params,o=this._univerInstanceService.getUnit(r,h.UNIVER_DOC),s=i[0];if(s&&o){var t;let{startOffset:e,endOffset:i,collapsed:c,segmentPage:l}=s,u=(t=o.getSelfOrHeaderFooterModel(a))==null||(t=t.getBody())==null?void 0:t.customRanges;if(c){var n;let t=(n=u==null?void 0:u.findIndex(t=>t.startIndex<e&&t.endIndex>i-1))==null?-1:n;if(t>-1){let e=u[t];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:a,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(t=>t.startIndex<=e&&t.endIndex>=i-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};Y=q([K(0,s),K(1,l),K(2,u(J))],Y);let X=class extends o{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,t,n,a,o,s){super(),this._context=e,this._docEventManagerService=t,this._commandService=n,this._hyperLinkPopupService=a,this._docSkeletonManagerService=o,this._docSelectionManagerService=s,!(this._context.unitId===i||this._context.unitId===r)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(H.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var t;let r=e.find(e=>e.range.rangeType===n.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((t=r==null?void 0:r.segmentId)==null?``:t)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(H.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(Le.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};X=q([K(1,u(oe)),K(2,s),K(3,u(J)),K(4,u(ee)),K(5,u(C))],X);let Z=class extends o{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(x.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(fe((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),pe()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Z=q([K(1,u(S)),K(2,u(J)),K(3,u(se))],Z);const Be=`doc-hyper-link-icon`;function Ve(e){return{id:V.id,type:Ce.BUTTON,icon:Be,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:Ee(e,h.UNIVER_DOC),disabled$:new ue(function(t){let n=e.get(C).textSelection$.pipe(de(16)).subscribe(()=>{t.next(Ie(e))});return()=>{n.unsubscribe()}})}}const He={id:V.id,binding:we.CTRL_COMMAND|O.K,description:`docLink.menu.tooltip`,preconditions:ce},Ue={[Te.MEDIA]:{[V.id]:{order:1,menuItemFactory:Ve}},[ye.MAIN_AREA]:{[ve.DATA]:{[V.id]:{order:0,menuItemFactory:Ve}}}};let Q=class extends o{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[z.componentKey,z],[U.componentKey,U],[Be,P]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[L,R,B,V,H,Le].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[He].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(Ue)}};Q=q([K(0,u(_e)),K(1,s),K(2,be),K(3,Se)],Q);let $=class extends p{constructor(e=I,t,n,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=n,this._configService=r;let{menu:i,...a}=v({},I,this._config);i&&this._configService.setConfig(`menu`,i,{merge:!0}),this._configService.setConfig(F,a)}onStarting(){[[J],[Q],[Y]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(Y)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Z],[X]].forEach(e=>{this._renderManagerSrv.registerRenderModule(h.UNIVER_DOC,e)})}};G($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),G($,`packageName`,je),G($,`version`,Me),G($,`type`,h.UNIVER_DOC),$=q([a(y),K(1,u(d)),K(2,b),K(3,c)],$);export{$ as UniverDocsHyperLinkUIPlugin};
|
|
1
|
+
import{BuildTextUtils as e,CommandType as t,CustomRangeType as n,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as r,DOCS_ZEN_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,ICommandService as s,IConfigService as c,IUniverInstanceService as l,Inject as u,Injector as d,LocaleService as f,Plugin as p,Tools as m,UniverInstanceType as h,generateRandomId as g,getBodySlice as _,merge as v}from"@univerjs/core";import{UniverDocsHyperLinkPlugin as y}from"@univerjs/docs-hyper-link";import{IRenderManagerService as b}from"@univerjs/engine-render";import{DOC_INTERCEPTOR_POINT as x,DocInterceptorService as S,DocSelectionManagerService as C,DocSkeletonManagerService as ee,SetTextSelectionsOperation as te,addCustomRangeBySelectionFactory as ne,deleteCustomRangeFactory as re,replaceSelectionFactory as ie}from"@univerjs/docs";import{DocCanvasPopManagerService as ae,DocEventManagerService as oe,DocRenderController as se,whenDocAndEditorFocused as ce}from"@univerjs/docs-ui";import{BehaviorSubject as le,Observable as ue,debounceTime as de,distinctUntilChanged as fe,pairwise as pe}from"rxjs";import{Button as me,FormLayout as he,Input as w,MessageType as ge,Tooltip as T,borderClassName as E,clsx as D}from"@univerjs/design";import{ComponentManager as _e,ContextMenuGroup as ve,ContextMenuPosition as ye,IMenuManagerService as be,IMessageService as xe,IShortcutService as Se,KeyCode as O,MenuItemType as Ce,MetaKeys as we,RibbonInsertGroup as Te,getMenuHiddenObservable as Ee,useDependency as k,useObservable as A}from"@univerjs/ui";import{useEffect as De,useState as j}from"react";import{jsx as M,jsxs as N}from"react/jsx-runtime";import{CopyIcon as Oe,LinkIcon as P,UnlinkIcon as ke,WriteIcon as Ae}from"@univerjs/icons";var je=`@univerjs/docs-hyper-link-ui`,Me=`0.19.0`;const F=`docs-hyper-link-ui.config`;Symbol(F);const I={},L={type:t.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,t){if(!t)return!1;let{payload:r,unitId:i,selections:a}=t,o=e.get(s),c=ne(e,{rangeId:g(),rangeType:n.HYPERLINK,properties:{url:r},unitId:i,selections:a});return c?o.syncExecuteCommand(c.id,c.params):!1}},R={id:`docs.command.update-hyper-link`,type:t.COMMAND,handler(e,t){var r;if(!t)return!1;let{unitId:i,payload:a,segmentId:o,linkId:c}=t,u=e.get(s),d=e.get(l),f=e.get(C).getActiveTextRange(),p=d.getUnit(i,h.UNIVER_DOC);if(!f||!p)return!1;let m=(r=_(p.getSelfOrHeaderFooterModel(o).getBody(),f.startOffset,f.endOffset).textRuns)==null?void 0:r[0];m&&(m.ed=t.label.length+1);let g=ie(e,{unitId:i,body:{dataStream:`${t.label}`,customRanges:[{rangeId:c,rangeType:n.HYPERLINK,startIndex:0,endIndex:t.label.length+1,properties:{url:a}}],textRuns:m?[m]:void 0},selection:{startOffset:f.startOffset,endOffset:f.endOffset,collapsed:!1,segmentId:o}});return g?u.syncExecuteCommand(g.id,g.params):!1}};function Ne(e){return/^[a-zA-Z]+:\/\//.test(e)}function Pe(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function Fe(e){return Ne(e)?e:Pe(e)?`mailto://${e}`:`https://${e}`}const z=()=>{let t=k(J),n=k(f),r=A(t.editingLink$),i=k(s),a=k(l),o=k(C),[c,u]=j(``),[d,p]=j(``),[g,v]=j(!1),y=m.isLegalUrl(c),b=r?a.getUnit(r.unitId,h.UNIVER_DOC):a.getCurrentUnitForType(h.UNIVER_DOC);De(()=>{var t,n,i;let a=o.getActiveTextRange();if(!a)return;if(r){var s,c;let t=b==null||(s=b.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:s.getBody(),n=t==null||(c=t.customRanges)==null?void 0:c.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(b&&n){var l,d;u((l=(d=n.properties)==null?void 0:d.url)==null?``:l),p(e.transform.getPlainText(_(t,n.startIndex,n.endIndex+1).dataStream))}return}let f=b==null||(t=b.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:t.getBody(),m=f?a:null,h=m&&((n=e.customRange.getCustomRangesInterestsWithSelection(m,(i=f==null?void 0:f.customRanges)==null?[]:i))==null?void 0:n[0]);if(b&&h){var g,v;u((g=h==null||(v=h.properties)==null?void 0:v.url)==null?``:g)}},[b,r,o,a]);let x=()=>{t.hideEditPopup()},S=()=>{if(v(!0),!y||!b)return;let e=Fe(c);if(!r)i.executeCommand(L.id,{unitId:b.getUnitId(),payload:e});else{if(!d)return;i.executeCommand(R.id,{unitId:b.getUnitId(),payload:e,linkId:r.linkId,label:d,segmentId:r.segmentId})}t.hideEditPopup()};if(b)return N(`div`,{className:D(`univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900`,E),children:[N(`div`,{children:[r?M(he,{label:n.t(`docLink.edit.label`),error:g&&!d?n.t(`docLink.edit.labelError`):``,children:M(w,{value:d,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})}):null,M(he,{label:n.t(`docLink.edit.address`),error:g&&!y?n.t(`docLink.edit.addressError`):``,children:M(w,{value:c,onChange:u,autoFocus:!0,onKeyDown:e=>{e.keyCode===O.ENTER&&S()}})})]}),N(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[M(me,{onClick:x,children:n.t(`docLink.edit.cancel`)}),M(me,{variant:`primary`,disabled:!c,onClick:S,children:n.t(`docLink.edit.confirm`)})]})]})};z.componentKey=`docs-hyper-link-edit`;const B={type:t.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,t){if(!t)return!1;let{unitId:n,linkId:r,segmentId:i}=t,a=e.get(s),o=re(e,{unitId:n,rangeId:r,segmentId:i});return o?await a.syncExecuteCommand(o.id,o.params):!1}},Ie=e=>{let t=e.get(C),n=e.get(l),r=t.getTextRanges();if(!(r!=null&&r.length))return!0;let i=r[0];return!!(!n.getCurrentUnitForType(h.UNIVER_DOC)||!i||i.collapsed)},V={type:t.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,t){var n;let r=t==null?void 0:t.link,i=e.get(l);if(Ie(e)&&!r)return!1;let a=e.get(J),o=(r==null?void 0:r.unitId)||((n=i.getCurrentUnitForType(h.UNIVER_DOC))==null?void 0:n.getUnitId());return o?(a.showEditPopup(o,r),!0):!1}},H={type:t.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(J);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},Le={type:t.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,t){var r;if(!t)return!1;let{unitId:i,linkId:a,segmentId:o}=t,s=e.get(l).getUnit(i,h.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),u=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===n.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return u&&window.open(u,`_blank`,`noopener noreferrer`),!0}},U=()=>{var e,t;let r=k(J),i=k(s),a=k(xe),o=k(f),c=A(r.showingLink$),u=k(l);if(!c)return null;let{unitId:d,linkId:p,segmentId:m,startIndex:g,endIndex:_}=c,v=u.getUnit(d,h.UNIVER_DOC),y=v==null?void 0:v.getSelfOrHeaderFooterModel(m).getBody(),b=y==null||(e=y.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===n.HYPERLINK&&e.startIndex===g&&e.endIndex===_);if(!b)return null;let x=(t=b.properties)==null?void 0:t.url;return N(`div`,{className:D(`univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow dark:!univer-bg-gray-900`,E),onClick:()=>{r.hideInfoPopup()},children:[N(`div`,{className:`univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate univer-text-sm univer-leading-5 univer-text-primary-500`,onClick:()=>window.open(x,void 0,`noopener noreferrer`),children:[M(`div`,{className:`univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center univer-justify-center univer-text-base univer-text-gray-900 dark:!univer-text-white`,children:M(P,{})}),M(T,{showIfEllipsis:!0,title:x,children:M(`span`,{className:`univer-flex-1 univer-truncate`,children:x})})]}),N(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{navigator.clipboard.writeText(x),a.show({content:o.t(`docLink.info.coped`),type:ge.Info})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:M(Oe,{})})}),M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(V.id,{link:c})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:M(Ae,{})})}),M(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(B.id,{unitId:d,linkId:b.rangeId,segmentId:m})},children:M(T,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:M(ke,{})})})]})]})};U.componentKey=`univer.doc.link-info-popup`;function W(e){"@babel/helpers - typeof";return W=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},W(e)}function Re(e,t){if(W(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(W(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ze(e){var t=Re(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=ze(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function K(e,t){return function(n,r){t(n,r,e)}}function q(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let J=class extends o{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,G(this,`_editingLink$`,new le(null)),G(this,`_showingLink$`,new le(null)),G(this,`editingLink$`,this._editingLink$.asObservable()),G(this,`showingLink$`,this._showingLink$.asObservable()),G(this,`_editPopup`,null),G(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:z.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var t,n,r,i,a,o;let{linkId:s,unitId:c,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}=e;if(!(((t=this.showing)==null?void 0:t.linkId)===s&&((n=this.showing)==null?void 0:n.unitId)===c&&((r=this.showing)==null?void 0:r.segmentId)===l&&((i=this.showing)==null?void 0:i.segmentPage)===u&&((a=this.showing)==null?void 0:a.startIndex)===d&&((o=this.showing)==null?void 0:o.endIndex)===f)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(c,h.UNIVER_DOC)))return this._showingLink$.next({unitId:c,linkId:s,segmentId:l,segmentPage:u,startIndex:d,endIndex:f}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:d,endOffset:f+1,segmentId:l,segmentPage:u},{componentKey:U.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},c),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};J=q([K(0,u(ae)),K(1,u(C)),K(2,l)],J);let Y=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===te.id){let{unitId:r,ranges:i,segmentId:a}=e.params,o=this._univerInstanceService.getUnit(r,h.UNIVER_DOC),s=i[0];if(s&&o){var t;let{startOffset:e,endOffset:i,collapsed:c,segmentPage:l}=s,u=(t=o.getSelfOrHeaderFooterModel(a))==null||(t=t.getBody())==null?void 0:t.customRanges;if(c){var n;let t=(n=u==null?void 0:u.findIndex(t=>t.startIndex<e&&t.endIndex>i-1))==null?-1:n;if(t>-1){let e=u[t];this._docHyperLinkService.showInfoPopup({unitId:r,linkId:e.rangeId,segmentId:a,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(t=>t.startIndex<=e&&t.endIndex>=i-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};Y=q([K(0,s),K(1,l),K(2,u(J))],Y);let X=class extends o{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,t,n,a,o,s){super(),this._context=e,this._docEventManagerService=t,this._commandService=n,this._hyperLinkPopupService=a,this._docSkeletonManagerService=o,this._docSelectionManagerService=s,!(this._context.unitId===i||this._context.unitId===r)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(H.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var t;let r=e.find(e=>e.range.rangeType===n.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((t=r==null?void 0:r.segmentId)==null?``:t)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(H.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(Le.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};X=q([K(1,u(oe)),K(2,s),K(3,u(J)),K(4,u(ee)),K(5,u(C))],X);let Z=class extends o{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(x.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(fe((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),pe()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Z=q([K(1,u(S)),K(2,u(J)),K(3,u(se))],Z);const Be=`doc-hyper-link-icon`;function Ve(e){return{id:V.id,type:Ce.BUTTON,icon:Be,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:Ee(e,h.UNIVER_DOC),disabled$:new ue(function(t){let n=e.get(C).textSelection$.pipe(de(16)).subscribe(()=>{t.next(Ie(e))});return()=>{n.unsubscribe()}})}}const He={id:V.id,binding:we.CTRL_COMMAND|O.K,description:`docLink.menu.tooltip`,preconditions:ce},Ue={[Te.MEDIA]:{[V.id]:{order:1,menuItemFactory:Ve}},[ye.MAIN_AREA]:{[ve.DATA]:{[V.id]:{order:0,menuItemFactory:Ve}}}};let Q=class extends o{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[z.componentKey,z],[U.componentKey,U],[Be,P]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[L,R,B,V,H,Le].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[He].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(Ue)}};Q=q([K(0,u(_e)),K(1,s),K(2,be),K(3,Se)],Q);let $=class extends p{constructor(e=I,t,n,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=n,this._configService=r;let{menu:i,...a}=v({},I,this._config);i&&this._configService.setConfig(`menu`,i,{merge:!0}),this._configService.setConfig(F,a)}onStarting(){[[J],[Q],[Y]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(Y)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Z],[X]].forEach(e=>{this._renderManagerSrv.registerRenderModule(h.UNIVER_DOC,e)})}};G($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),G($,`packageName`,je),G($,`version`,Me),G($,`type`,h.UNIVER_DOC),$=q([a(y),K(1,u(d)),K(2,b),K(3,c)],$);export{$ as UniverDocsHyperLinkUIPlugin};
|
package/lib/umd/index.js
CHANGED
|
@@ -1,24 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/docs-hyper-link`),require(`@univerjs/engine-render`),require(`@univerjs/docs`),require(`@univerjs/docs-ui`),require(`rxjs`),require(`@univerjs/design`),require(`@univerjs/ui`),require(`react`),require(`react/jsx-runtime`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs-hyper-link`,`@univerjs/engine-render`,`@univerjs/docs`,`@univerjs/docs-ui`,`rxjs`,`@univerjs/design`,`@univerjs/ui`,`react`,`react/jsx-runtime`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsHyperLinkUi={},e.UniverCore,e.UniverDocsHyperLink,e.UniverEngineRender,e.UniverDocs,e.UniverDocsUi,e.rxjs,e.UniverDesign,e.UniverUi,e.React,e.React))})(this,function(e,t,n,r,i,a,o,s,c,l,u){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var d=`@univerjs/docs-hyper-link-ui`,f=`0.18.0`;let p=`docs-hyper-link-ui.config`;Symbol(p);let m={},h={type:t.CommandType.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,n){if(!n)return!1;let{payload:r,unitId:a,selections:o}=n,s=e.get(t.ICommandService),c=(0,i.addCustomRangeBySelectionFactory)(e,{rangeId:(0,t.generateRandomId)(),rangeType:t.CustomRangeType.HYPERLINK,properties:{url:r},unitId:a,selections:o});return c?s.syncExecuteCommand(c.id,c.params):!1}},g={id:`docs.command.update-hyper-link`,type:t.CommandType.COMMAND,handler(e,n){var r;if(!n)return!1;let{unitId:a,payload:o,segmentId:s,linkId:c}=n,l=e.get(t.ICommandService),u=e.get(t.IUniverInstanceService),d=e.get(i.DocSelectionManagerService).getActiveTextRange(),f=u.getUnit(a,t.UniverInstanceType.UNIVER_DOC);if(!d||!f)return!1;let p=(r=(0,t.getBodySlice)(f.getSelfOrHeaderFooterModel(s).getBody(),d.startOffset,d.endOffset).textRuns)==null?void 0:r[0];p&&(p.ed=n.label.length+1);let m=(0,i.replaceSelectionFactory)(e,{unitId:a,body:{dataStream:`${n.label}`,customRanges:[{rangeId:c,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:n.label.length+1,properties:{url:o}}],textRuns:p?[p]:void 0},selection:{startOffset:d.startOffset,endOffset:d.endOffset,collapsed:!1,segmentId:s}});return m?l.syncExecuteCommand(m.id,m.params):!1}};function _(e){return/^[a-zA-Z]+:\/\//.test(e)}function v(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function y(e){return _(e)?e:v(e)?`mailto://${e}`:`https://${e}`}let b=()=>{let e=(0,c.useDependency)(K),n=(0,c.useDependency)(t.LocaleService),r=(0,c.useObservable)(e.editingLink$),a=(0,c.useDependency)(t.ICommandService),o=(0,c.useDependency)(t.IUniverInstanceService),d=(0,c.useDependency)(i.DocSelectionManagerService),[f,p]=(0,l.useState)(``),[m,_]=(0,l.useState)(``),[v,b]=(0,l.useState)(!1),x=t.Tools.isLegalUrl(f),S=r?o.getUnit(r.unitId,t.UniverInstanceType.UNIVER_DOC):o.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC);(0,l.useEffect)(()=>{var e,n,i;let a=d.getActiveTextRange();if(!a)return;if(r){var o,s;let e=S==null||(o=S.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:o.getBody(),n=e==null||(s=e.customRanges)==null?void 0:s.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(S&&n){var c,l;p((c=(l=n.properties)==null?void 0:l.url)==null?``:c),_(t.BuildTextUtils.transform.getPlainText((0,t.getBodySlice)(e,n.startIndex,n.endIndex+1).dataStream))}return}let u=S==null||(e=S.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:e.getBody(),f=u?a:null,m=f&&((n=t.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(f,(i=u==null?void 0:u.customRanges)==null?[]:i))==null?void 0:n[0]);if(S&&m){var h,g;p((h=m==null||(g=m.properties)==null?void 0:g.url)==null?``:h)}},[S,r,d,o]);let C=()=>{e.hideEditPopup()},w=()=>{if(b(!0),!x||!S)return;let t=y(f);if(!r)a.executeCommand(h.id,{unitId:S.getUnitId(),payload:t});else{if(!m)return;a.executeCommand(g.id,{unitId:S.getUnitId(),payload:t,linkId:r.linkId,label:m,segmentId:r.segmentId})}e.hideEditPopup()};if(S)return(0,u.jsxs)(`div`,{className:(0,s.clsx)(`
|
|
2
|
-
univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow
|
|
3
|
-
dark:!univer-bg-gray-900
|
|
4
|
-
`,s.borderClassName),children:[(0,u.jsxs)(`div`,{children:[r?(0,u.jsx)(s.FormLayout,{label:n.t(`docLink.edit.label`),error:v&&!m?n.t(`docLink.edit.labelError`):``,children:(0,u.jsx)(s.Input,{value:m,onChange:_,autoFocus:!0,onKeyDown:e=>{e.keyCode===c.KeyCode.ENTER&&w()}})}):null,(0,u.jsx)(s.FormLayout,{label:n.t(`docLink.edit.address`),error:v&&!x?n.t(`docLink.edit.addressError`):``,children:(0,u.jsx)(s.Input,{value:f,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===c.KeyCode.ENTER&&w()}})})]}),(0,u.jsxs)(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[(0,u.jsx)(s.Button,{onClick:C,children:n.t(`docLink.edit.cancel`)}),(0,u.jsx)(s.Button,{variant:`primary`,disabled:!f,onClick:w,children:n.t(`docLink.edit.confirm`)})]})]})};b.componentKey=`docs-hyper-link-edit`;function x({ref:e,...t}){let{icon:n,id:r,className:i,extend:a,...o}=t,s=`univerjs-icon univerjs-icon-${r} ${i||``}`.trim(),c=(0,l.useRef)(`_${T()}`);return S(n,`${r}`,{defIds:n.defIds,idSuffix:c.current},{ref:e,className:s,...o},a)}function S(e,t,n,r,i){return(0,l.createElement)(e.tag,{key:t,...C(e,n,i),...r},(w(e,n).children||[]).map((r,a)=>S(r,`${t}-${e.tag}-${a}`,n,void 0,i)))}function C(e,t,n){let r={...e.attrs};n!=null&&n.colorChannel1&&r.fill===`colorChannel1`&&(r.fill=n.colorChannel1),e.tag===`mask`&&r.id&&(r.id+=t.idSuffix),Object.entries(r).forEach(([e,n])=>{e===`mask`&&typeof n==`string`&&(r[e]=n.replace(/url\(#(.*)\)/,`url(#$1${t.idSuffix})`))});let{defIds:i}=t;return!i||i.length===0?r:(e.tag===`use`&&r[`xlink:href`]&&(r[`xlink:href`]+=t.idSuffix),Object.entries(r).forEach(([e,n])=>{typeof n==`string`&&(r[e]=n.replace(/url\(#(.*)\)/,`url(#$1${t.idSuffix})`))}),r)}function w(e,t){var n;let{defIds:r}=t;return!r||r.length===0?e:e.tag===`defs`&&(n=e.children)!=null&&n.length?{...e,children:e.children.map(e=>typeof e.attrs.id==`string`&&r&&r.includes(e.attrs.id)?{...e,attrs:{...e.attrs,id:e.attrs.id+t.idSuffix}}:e)}:e}function T(){return Math.random().toString(36).substring(2,8)}x.displayName=`UniverIcon`;let E={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M4.1302 12.4251C4.25802 13.7417 5.36779 14.7708 6.71792 14.7708H11.7179C13.1539 14.7708 14.3179 13.6067 14.3179 12.1708V6.1708C14.3179 4.78586 13.2351 3.65383 11.8698 3.57517C11.742 2.25858 10.6323 1.22949 9.28213 1.22949H4.28213C2.84619 1.22949 1.68213 2.39355 1.68213 3.82949V9.82949C1.68213 11.2144 2.76497 12.3465 4.1302 12.4251ZM10.6583 3.5708H6.71792C5.28198 3.5708 4.11792 4.73486 4.11792 6.1708V11.22C3.4221 11.1387 2.88213 10.5471 2.88213 9.82949V3.82949C2.88213 3.05629 3.50893 2.42949 4.28213 2.42949H9.28213C9.96695 2.42949 10.5369 2.92119 10.6583 3.5708ZM13.1179 6.1708C13.1179 5.3976 12.4911 4.7708 11.7179 4.7708H6.71792C5.94472 4.7708 5.31792 5.3976 5.31792 6.1708V12.1708C5.31792 12.944 5.94472 13.5708 6.71792 13.5708H11.7179C12.4911 13.5708 13.1179 12.944 13.1179 12.1708V6.1708Z`,fillRule:`evenodd`,clipRule:`evenodd`}}]},D=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`copy-icon`,ref:t,icon:E}))});D.displayName=`CopyIcon`;let O={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M9.8816 1.97978C11.0177 0.843607 12.862 0.884962 14.0004 2.02342C15.1389 3.16188 15.1803 5.00612 14.0441 6.14228L11.399 8.78737C11.1608 9.02559 10.7746 9.02559 10.5363 8.78737C10.2981 8.54915 10.2981 8.16292 10.5363 7.9247L13.1814 5.2796C13.8195 4.64155 13.8217 3.57006 13.1378 2.8861C12.4538 2.20211 11.3823 2.20438 10.7443 2.84245L7.6976 5.88911L7.69317 5.89349C7.05959 6.53211 7.05894 7.60014 7.74132 8.28252C7.97954 8.52074 7.97954 8.90697 7.74132 9.14519C7.5031 9.38341 7.11687 9.38341 6.87865 9.14519C5.74016 8.00671 5.69884 6.16251 6.83497 5.02633L6.84021 5.02116L9.8816 1.97978Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M4.61426 7.2364C4.85248 6.99818 5.23871 6.99818 5.47693 7.2364C5.71515 7.47462 5.71515 7.86085 5.47693 8.09907L2.83183 10.7442C2.19375 11.3823 2.1915 12.4537 2.87547 13.1377C3.55945 13.8217 4.6309 13.8194 5.26899 13.1813L8.31566 10.1347C8.32262 10.1277 8.32971 10.121 8.33691 10.1144C8.34408 10.1064 8.3515 10.0986 8.35916 10.091C8.99721 9.45291 8.99949 8.38145 8.3155 7.69746C8.07728 7.45924 8.07728 7.07301 8.3155 6.83479C8.55372 6.59657 8.93995 6.59657 9.17817 6.83479C10.3166 7.97327 10.358 9.81748 9.22183 10.9536C9.21487 10.9606 9.20779 10.9673 9.20058 10.9739C9.19341 10.9819 9.18599 10.9897 9.17833 10.9973L6.13166 14.044C4.99548 15.1802 3.15127 15.1389 2.01279 14.0004C0.874362 12.8619 0.83297 11.0177 1.96916 9.8815L4.61426 7.2364Z`}}]},k=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`link-icon`,ref:t,icon:O}))});k.displayName=`LinkIcon`;let A={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 17`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M12.5935 3.47302C11.6354 2.51492 10.082 2.51492 9.12388 3.47302L7.83534 4.76157C7.60102 4.99588 7.22112 4.99588 6.98681 4.76157C6.75249 4.52725 6.75249 4.14735 6.98681 3.91304L8.27535 2.62449C9.70209 1.19776 12.0153 1.19776 13.442 2.62449C14.8688 4.05123 14.8688 6.36442 13.442 7.79116L12.1535 9.0797C11.9192 9.31402 11.5393 9.31402 11.3049 9.0797C11.0706 8.84539 11.0706 8.46549 11.3049 8.23117L12.5935 6.94263C13.5516 5.98452 13.5516 4.43113 12.5935 3.47302Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M3.40637 12.6606C2.44827 11.7025 2.44827 10.1491 3.40637 9.19102L4.69492 7.90248C4.92923 7.66816 4.92923 7.28826 4.69492 7.05395C4.4606 6.81963 4.0807 6.81963 3.84639 7.05395L2.55784 8.34249C1.13111 9.76923 1.13111 12.0824 2.55784 13.5092C3.98458 14.9359 6.29777 14.9359 7.72451 13.5092L9.01305 12.2206C9.24737 11.9863 9.24737 11.6064 9.01305 11.3721C8.77874 11.1378 8.39884 11.1378 8.16452 11.3721L6.87598 12.6606C5.91787 13.6187 4.36448 13.6187 3.40637 12.6606Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M3.5852 2.80332C3.35088 2.569 2.97098 2.569 2.73667 2.80332C2.50235 3.03763 2.50235 3.41753 2.73667 3.65185L12.4151 13.3302C12.6494 13.5646 13.0293 13.5646 13.2636 13.3302C13.4979 13.0959 13.4979 12.716 13.2636 12.4817L3.5852 2.80332Z`}}]},j=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`unlink-icon`,ref:t,icon:A}))});j.displayName=`UnlinkIcon`;let M={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 17 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M12.6551 1.98906C11.7476 1.08113 10.2757 1.08149 9.3686 1.98987L4.82542 6.53955C4.75087 6.61421 4.69336 6.70411 4.65682 6.80309L3.2461 10.625C3.16506 10.8446 3.21909 11.0912 3.3845 11.2568C3.54991 11.4224 3.79651 11.4767 4.01616 11.3959L7.85031 9.98517C7.94979 9.94856 8.04014 9.89077 8.11508 9.81579L12.6552 5.27327C13.5618 4.36621 13.5618 2.89607 12.6551 1.98906ZM10.2177 2.83779C10.6562 2.39869 11.3677 2.39851 11.8064 2.8374C12.2447 3.27584 12.2447 3.9865 11.8065 4.42497L7.3392 8.89457L4.82213 9.82068L5.74706 7.31487L10.2177 2.83779Z`,fillRule:`evenodd`,clipRule:`evenodd`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M1.79238 13.2999C1.46101 13.2999 1.19238 13.5685 1.19238 13.8999C1.19238 14.2313 1.46101 14.4999 1.79238 14.4999H14.4924C14.8238 14.4999 15.0924 14.2313 15.0924 13.8999C15.0924 13.5685 14.8238 13.2999 14.4924 13.2999H1.79238Z`}}]},N=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`write-icon`,ref:t,icon:M}))});N.displayName=`WriteIcon`;let P={type:t.CommandType.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,n){if(!n)return!1;let{unitId:r,linkId:a,segmentId:o}=n,s=e.get(t.ICommandService),c=(0,i.deleteCustomRangeFactory)(e,{unitId:r,rangeId:a,segmentId:o});return c?await s.syncExecuteCommand(c.id,c.params):!1}},F=e=>{let n=e.get(i.DocSelectionManagerService),r=e.get(t.IUniverInstanceService),a=n.getTextRanges();if(!(a!=null&&a.length))return!0;let o=a[0];return!!(!r.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC)||!o||o.collapsed)},I={type:t.CommandType.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,n){var r;let i=n==null?void 0:n.link,a=e.get(t.IUniverInstanceService);if(F(e)&&!i)return!1;let o=e.get(K),s=(i==null?void 0:i.unitId)||((r=a.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());return s?(o.showEditPopup(s,i),!0):!1}},L={type:t.CommandType.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(K);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},R={type:t.CommandType.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,n){var r;if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=e.get(t.IUniverInstanceService).getUnit(i,t.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),l=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===t.CustomRangeType.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return l&&window.open(l,`_blank`,`noopener noreferrer`),!0}},z=()=>{var e,n;let r=(0,c.useDependency)(K),i=(0,c.useDependency)(t.ICommandService),a=(0,c.useDependency)(c.IMessageService),o=(0,c.useDependency)(t.LocaleService),l=(0,c.useObservable)(r.showingLink$),d=(0,c.useDependency)(t.IUniverInstanceService);if(!l)return null;let{unitId:f,linkId:p,segmentId:m,startIndex:h,endIndex:g}=l,_=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC),v=_==null?void 0:_.getSelfOrHeaderFooterModel(m).getBody(),y=v==null||(e=v.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===t.CustomRangeType.HYPERLINK&&e.startIndex===h&&e.endIndex===g);if(!y)return null;let b=(n=y.properties)==null?void 0:n.url;return(0,u.jsxs)(`div`,{className:(0,s.clsx)(`
|
|
5
|
-
univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between
|
|
6
|
-
univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow
|
|
7
|
-
dark:!univer-bg-gray-900
|
|
8
|
-
`,s.borderClassName),onClick:()=>{r.hideInfoPopup()},children:[(0,u.jsxs)(`div`,{className:`
|
|
9
|
-
univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate
|
|
10
|
-
univer-text-sm univer-leading-5 univer-text-primary-500
|
|
11
|
-
`,onClick:()=>window.open(b,void 0,`noopener noreferrer`),children:[(0,u.jsx)(`div`,{className:`
|
|
12
|
-
univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center
|
|
13
|
-
univer-justify-center univer-text-base univer-text-gray-900
|
|
14
|
-
dark:!univer-text-white
|
|
15
|
-
`,children:(0,u.jsx)(k,{})}),(0,u.jsx)(s.Tooltip,{showIfEllipsis:!0,title:b,children:(0,u.jsx)(`span`,{className:`univer-flex-1 univer-truncate`,children:b})})]}),(0,u.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[(0,u.jsx)(`div`,{className:`
|
|
16
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
17
|
-
univer-justify-center univer-rounded univer-text-base
|
|
18
|
-
`,onClick:()=>{navigator.clipboard.writeText(b),a.show({content:o.t(`docLink.info.coped`),type:s.MessageType.Info})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:(0,u.jsx)(D,{})})}),(0,u.jsx)(`div`,{className:`
|
|
19
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
20
|
-
univer-justify-center univer-rounded univer-text-base
|
|
21
|
-
`,onClick:()=>{i.executeCommand(I.id,{link:l})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:(0,u.jsx)(N,{})})}),(0,u.jsx)(`div`,{className:`
|
|
22
|
-
univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center
|
|
23
|
-
univer-justify-center univer-rounded univer-text-base
|
|
24
|
-
`,onClick:()=>{i.executeCommand(P.id,{unitId:f,linkId:y.rangeId,segmentId:m})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:(0,u.jsx)(j,{})})})]})]})};z.componentKey=`univer.doc.link-info-popup`;function B(e){"@babel/helpers - typeof";return B=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},B(e)}function V(e,t){if(B(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(B(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function H(e){var t=V(e,`string`);return B(t)==`symbol`?t:t+``}function U(e,t,n){return(t=H(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e,t){return function(n,r){t(n,r,e)}}function G(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let K=class extends t.Disposable{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,U(this,`_editingLink$`,new o.BehaviorSubject(null)),U(this,`_showingLink$`,new o.BehaviorSubject(null)),U(this,`editingLink$`,this._editingLink$.asObservable()),U(this,`showingLink$`,this._showingLink$.asObservable()),U(this,`_editPopup`,null),U(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:b.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var n,r,i,a,o,s;let{linkId:c,unitId:l,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}=e;if(!(((n=this.showing)==null?void 0:n.linkId)===c&&((r=this.showing)==null?void 0:r.unitId)===l&&((i=this.showing)==null?void 0:i.segmentId)===u&&((a=this.showing)==null?void 0:a.segmentPage)===d&&((o=this.showing)==null?void 0:o.startIndex)===f&&((s=this.showing)==null?void 0:s.endIndex)===p)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(l,t.UniverInstanceType.UNIVER_DOC)))return this._showingLink$.next({unitId:l,linkId:c,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:f,endOffset:p+1,segmentId:u,segmentPage:d},{componentKey:z.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},l),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};K=G([W(0,(0,t.Inject)(a.DocCanvasPopManagerService)),W(1,(0,t.Inject)(i.DocSelectionManagerService)),W(2,t.IUniverInstanceService)],K);let q=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.SetTextSelectionsOperation.id){let{unitId:i,ranges:a,segmentId:o}=e.params,s=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_DOC),c=a[0];if(c&&s){var n;let{startOffset:e,endOffset:t,collapsed:a,segmentPage:l}=c,u=(n=s.getSelfOrHeaderFooterModel(o))==null||(n=n.getBody())==null?void 0:n.customRanges;if(a){var r;let n=(r=u==null?void 0:u.findIndex(n=>n.startIndex<e&&n.endIndex>t-1))==null?-1:r;if(n>-1){let e=u[n];this._docHyperLinkService.showInfoPopup({unitId:i,linkId:e.rangeId,segmentId:o,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(n=>n.startIndex<=e&&n.endIndex>=t-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};q=G([W(0,t.ICommandService),W(1,t.IUniverInstanceService),W(2,(0,t.Inject)(K))],q);let J=class extends t.Disposable{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,n,r,i,a,o){super(),this._context=e,this._docEventManagerService=n,this._commandService=r,this._hyperLinkPopupService=i,this._docSkeletonManagerService=a,this._docSelectionManagerService=o,!(this._context.unitId===t.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(L.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var n;let r=e.find(e=>e.range.rangeType===t.CustomRangeType.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((n=r==null?void 0:r.segmentId)==null?``:n)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(L.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(R.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};J=G([W(1,(0,t.Inject)(a.DocEventManagerService)),W(2,t.ICommandService),W(3,(0,t.Inject)(K)),W(4,(0,t.Inject)(i.DocSkeletonManagerService)),W(5,(0,t.Inject)(i.DocSelectionManagerService))],J);let Y=class extends t.Disposable{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(i.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe((0,o.distinctUntilChanged)((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),(0,o.pairwise)()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Y=G([W(1,(0,t.Inject)(i.DocInterceptorService)),W(2,(0,t.Inject)(K)),W(3,(0,t.Inject)(a.DocRenderController))],Y);let X=`doc-hyper-link-icon`;function Z(e){return{id:I.id,type:c.MenuItemType.BUTTON,icon:X,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:(0,c.getMenuHiddenObservable)(e,t.UniverInstanceType.UNIVER_DOC),disabled$:new o.Observable(function(t){let n=e.get(i.DocSelectionManagerService).textSelection$.pipe((0,o.debounceTime)(16)).subscribe(()=>{t.next(F(e))});return()=>{n.unsubscribe()}})}}let ee={id:I.id,binding:c.MetaKeys.CTRL_COMMAND|c.KeyCode.K,description:`docLink.menu.tooltip`,preconditions:a.whenDocAndEditorFocused},te={[c.RibbonInsertGroup.MEDIA]:{[I.id]:{order:1,menuItemFactory:Z}},[c.ContextMenuPosition.MAIN_AREA]:{[c.ContextMenuGroup.DATA]:{[I.id]:{order:0,menuItemFactory:Z}}}},Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[z.componentKey,z],[X,k]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[h,g,P,I,L,R].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[ee].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(te)}};Q=G([W(0,(0,t.Inject)(c.ComponentManager)),W(1,t.ICommandService),W(2,c.IMenuManagerService),W(3,c.IShortcutService)],Q);let $=class extends t.Plugin{constructor(e=m,n,r,i){super(),this._config=e,this._injector=n,this._renderManagerSrv=r,this._configService=i;let{menu:a,...o}=(0,t.merge)({},m,this._config);a&&this._configService.setConfig(`menu`,a,{merge:!0}),this._configService.setConfig(p,o)}onStarting(){[[K],[Q],[q]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(q)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Y],[J]].forEach(e=>{this._renderManagerSrv.registerRenderModule(t.UniverInstanceType.UNIVER_DOC,e)})}};U($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),U($,`packageName`,d),U($,`version`,f),U($,`type`,t.UniverInstanceType.UNIVER_DOC),$=G([(0,t.DependentOn)(n.UniverDocsHyperLinkPlugin),W(1,(0,t.Inject)(t.Injector)),W(2,r.IRenderManagerService),W(3,t.IConfigService)],$),Object.defineProperty(e,`UniverDocsHyperLinkUIPlugin`,{enumerable:!0,get:function(){return $}})});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/docs-hyper-link`),require(`@univerjs/engine-render`),require(`@univerjs/docs`),require(`@univerjs/docs-ui`),require(`rxjs`),require(`@univerjs/design`),require(`@univerjs/ui`),require(`react`),require(`react/jsx-runtime`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs-hyper-link`,`@univerjs/engine-render`,`@univerjs/docs`,`@univerjs/docs-ui`,`rxjs`,`@univerjs/design`,`@univerjs/ui`,`react`,`react/jsx-runtime`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsHyperLinkUi={},e.UniverCore,e.UniverDocsHyperLink,e.UniverEngineRender,e.UniverDocs,e.UniverDocsUi,e.rxjs,e.UniverDesign,e.UniverUi,e.React,e.React))})(this,function(e,t,n,r,i,a,o,s,c,l,u){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var d=`@univerjs/docs-hyper-link-ui`,f=`0.19.0`;let p=`docs-hyper-link-ui.config`;Symbol(p);let m={},h={type:t.CommandType.COMMAND,id:`docs.command.add-hyper-link`,async handler(e,n){if(!n)return!1;let{payload:r,unitId:a,selections:o}=n,s=e.get(t.ICommandService),c=(0,i.addCustomRangeBySelectionFactory)(e,{rangeId:(0,t.generateRandomId)(),rangeType:t.CustomRangeType.HYPERLINK,properties:{url:r},unitId:a,selections:o});return c?s.syncExecuteCommand(c.id,c.params):!1}},g={id:`docs.command.update-hyper-link`,type:t.CommandType.COMMAND,handler(e,n){var r;if(!n)return!1;let{unitId:a,payload:o,segmentId:s,linkId:c}=n,l=e.get(t.ICommandService),u=e.get(t.IUniverInstanceService),d=e.get(i.DocSelectionManagerService).getActiveTextRange(),f=u.getUnit(a,t.UniverInstanceType.UNIVER_DOC);if(!d||!f)return!1;let p=(r=(0,t.getBodySlice)(f.getSelfOrHeaderFooterModel(s).getBody(),d.startOffset,d.endOffset).textRuns)==null?void 0:r[0];p&&(p.ed=n.label.length+1);let m=(0,i.replaceSelectionFactory)(e,{unitId:a,body:{dataStream:`${n.label}`,customRanges:[{rangeId:c,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:n.label.length+1,properties:{url:o}}],textRuns:p?[p]:void 0},selection:{startOffset:d.startOffset,endOffset:d.endOffset,collapsed:!1,segmentId:s}});return m?l.syncExecuteCommand(m.id,m.params):!1}};function _(e){return/^[a-zA-Z]+:\/\//.test(e)}function v(e){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(e)}function y(e){return _(e)?e:v(e)?`mailto://${e}`:`https://${e}`}let b=()=>{let e=(0,c.useDependency)(K),n=(0,c.useDependency)(t.LocaleService),r=(0,c.useObservable)(e.editingLink$),a=(0,c.useDependency)(t.ICommandService),o=(0,c.useDependency)(t.IUniverInstanceService),d=(0,c.useDependency)(i.DocSelectionManagerService),[f,p]=(0,l.useState)(``),[m,_]=(0,l.useState)(``),[v,b]=(0,l.useState)(!1),x=t.Tools.isLegalUrl(f),S=r?o.getUnit(r.unitId,t.UniverInstanceType.UNIVER_DOC):o.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC);(0,l.useEffect)(()=>{var e,n,i;let a=d.getActiveTextRange();if(!a)return;if(r){var o,s;let e=S==null||(o=S.getSelfOrHeaderFooterModel(r.segmentId))==null?void 0:o.getBody(),n=e==null||(s=e.customRanges)==null?void 0:s.find(e=>(r==null?void 0:r.linkId)===e.rangeId&&e.startIndex===r.startIndex&&e.endIndex===r.endIndex);if(S&&n){var c,l;p((c=(l=n.properties)==null?void 0:l.url)==null?``:c),_(t.BuildTextUtils.transform.getPlainText((0,t.getBodySlice)(e,n.startIndex,n.endIndex+1).dataStream))}return}let u=S==null||(e=S.getSelfOrHeaderFooterModel(a.segmentId))==null?void 0:e.getBody(),f=u?a:null,m=f&&((n=t.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(f,(i=u==null?void 0:u.customRanges)==null?[]:i))==null?void 0:n[0]);if(S&&m){var h,g;p((h=m==null||(g=m.properties)==null?void 0:g.url)==null?``:h)}},[S,r,d,o]);let C=()=>{e.hideEditPopup()},w=()=>{if(b(!0),!x||!S)return;let t=y(f);if(!r)a.executeCommand(h.id,{unitId:S.getUnitId(),payload:t});else{if(!m)return;a.executeCommand(g.id,{unitId:S.getUnitId(),payload:t,linkId:r.linkId,label:m,segmentId:r.segmentId})}e.hideEditPopup()};if(S)return(0,u.jsxs)(`div`,{className:(0,s.clsx)(`univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900`,s.borderClassName),children:[(0,u.jsxs)(`div`,{children:[r?(0,u.jsx)(s.FormLayout,{label:n.t(`docLink.edit.label`),error:v&&!m?n.t(`docLink.edit.labelError`):``,children:(0,u.jsx)(s.Input,{value:m,onChange:_,autoFocus:!0,onKeyDown:e=>{e.keyCode===c.KeyCode.ENTER&&w()}})}):null,(0,u.jsx)(s.FormLayout,{label:n.t(`docLink.edit.address`),error:v&&!x?n.t(`docLink.edit.addressError`):``,children:(0,u.jsx)(s.Input,{value:f,onChange:p,autoFocus:!0,onKeyDown:e=>{e.keyCode===c.KeyCode.ENTER&&w()}})})]}),(0,u.jsxs)(`div`,{className:`univer-flex univer-justify-end univer-gap-3`,children:[(0,u.jsx)(s.Button,{onClick:C,children:n.t(`docLink.edit.cancel`)}),(0,u.jsx)(s.Button,{variant:`primary`,disabled:!f,onClick:w,children:n.t(`docLink.edit.confirm`)})]})]})};b.componentKey=`docs-hyper-link-edit`;function x({ref:e,...t}){let{icon:n,id:r,className:i,extend:a,...o}=t,s=`univerjs-icon univerjs-icon-${r} ${i||``}`.trim(),c=(0,l.useRef)(`_${T()}`);return S(n,`${r}`,{defIds:n.defIds,idSuffix:c.current},{ref:e,className:s,...o},a)}function S(e,t,n,r,i){return(0,l.createElement)(e.tag,{key:t,...C(e,n,i),...r},(w(e,n).children||[]).map((r,a)=>S(r,`${t}-${e.tag}-${a}`,n,void 0,i)))}function C(e,t,n){let r={...e.attrs};n!=null&&n.colorChannel1&&r.fill===`colorChannel1`&&(r.fill=n.colorChannel1),e.tag===`mask`&&r.id&&(r.id+=t.idSuffix),Object.entries(r).forEach(([e,n])=>{e===`mask`&&typeof n==`string`&&(r[e]=n.replace(/url\(#(.*)\)/,`url(#$1${t.idSuffix})`))});let{defIds:i}=t;return!i||i.length===0?r:(e.tag===`use`&&r[`xlink:href`]&&(r[`xlink:href`]+=t.idSuffix),Object.entries(r).forEach(([e,n])=>{typeof n==`string`&&(r[e]=n.replace(/url\(#(.*)\)/,`url(#$1${t.idSuffix})`))}),r)}function w(e,t){var n;let{defIds:r}=t;return!r||r.length===0?e:e.tag===`defs`&&(n=e.children)!=null&&n.length?{...e,children:e.children.map(e=>typeof e.attrs.id==`string`&&r&&r.includes(e.attrs.id)?{...e,attrs:{...e.attrs,id:e.attrs.id+t.idSuffix}}:e)}:e}function T(){return Math.random().toString(36).substring(2,8)}x.displayName=`UniverIcon`;let E={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M4.1302 12.4251C4.25802 13.7417 5.36779 14.7708 6.71792 14.7708H11.7179C13.1539 14.7708 14.3179 13.6067 14.3179 12.1708V6.1708C14.3179 4.78586 13.2351 3.65383 11.8698 3.57517C11.742 2.25858 10.6323 1.22949 9.28213 1.22949H4.28213C2.84619 1.22949 1.68213 2.39355 1.68213 3.82949V9.82949C1.68213 11.2144 2.76497 12.3465 4.1302 12.4251ZM10.6583 3.5708H6.71792C5.28198 3.5708 4.11792 4.73486 4.11792 6.1708V11.22C3.4221 11.1387 2.88213 10.5471 2.88213 9.82949V3.82949C2.88213 3.05629 3.50893 2.42949 4.28213 2.42949H9.28213C9.96695 2.42949 10.5369 2.92119 10.6583 3.5708ZM13.1179 6.1708C13.1179 5.3976 12.4911 4.7708 11.7179 4.7708H6.71792C5.94472 4.7708 5.31792 5.3976 5.31792 6.1708V12.1708C5.31792 12.944 5.94472 13.5708 6.71792 13.5708H11.7179C12.4911 13.5708 13.1179 12.944 13.1179 12.1708V6.1708Z`,fillRule:`evenodd`,clipRule:`evenodd`}}]},D=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`copy-icon`,ref:t,icon:E}))});D.displayName=`CopyIcon`;let O={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M9.8816 1.97978C11.0177 0.843607 12.862 0.884962 14.0004 2.02342C15.1389 3.16188 15.1803 5.00612 14.0441 6.14228L11.399 8.78737C11.1608 9.02559 10.7746 9.02559 10.5363 8.78737C10.2981 8.54915 10.2981 8.16292 10.5363 7.9247L13.1814 5.2796C13.8195 4.64155 13.8217 3.57006 13.1378 2.8861C12.4538 2.20211 11.3823 2.20438 10.7443 2.84245L7.6976 5.88911L7.69317 5.89349C7.05959 6.53211 7.05894 7.60014 7.74132 8.28252C7.97954 8.52074 7.97954 8.90697 7.74132 9.14519C7.5031 9.38341 7.11687 9.38341 6.87865 9.14519C5.74016 8.00671 5.69884 6.16251 6.83497 5.02633L6.84021 5.02116L9.8816 1.97978Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M4.61426 7.2364C4.85248 6.99818 5.23871 6.99818 5.47693 7.2364C5.71515 7.47462 5.71515 7.86085 5.47693 8.09907L2.83183 10.7442C2.19375 11.3823 2.1915 12.4537 2.87547 13.1377C3.55945 13.8217 4.6309 13.8194 5.26899 13.1813L8.31566 10.1347C8.32262 10.1277 8.32971 10.121 8.33691 10.1144C8.34408 10.1064 8.3515 10.0986 8.35916 10.091C8.99721 9.45291 8.99949 8.38145 8.3155 7.69746C8.07728 7.45924 8.07728 7.07301 8.3155 6.83479C8.55372 6.59657 8.93995 6.59657 9.17817 6.83479C10.3166 7.97327 10.358 9.81748 9.22183 10.9536C9.21487 10.9606 9.20779 10.9673 9.20058 10.9739C9.19341 10.9819 9.18599 10.9897 9.17833 10.9973L6.13166 14.044C4.99548 15.1802 3.15127 15.1389 2.01279 14.0004C0.874362 12.8619 0.83297 11.0177 1.96916 9.8815L4.61426 7.2364Z`}}]},k=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`link-icon`,ref:t,icon:O}))});k.displayName=`LinkIcon`;let A={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 16 17`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M12.5935 3.47302C11.6354 2.51492 10.082 2.51492 9.12388 3.47302L7.83534 4.76157C7.60102 4.99588 7.22112 4.99588 6.98681 4.76157C6.75249 4.52725 6.75249 4.14735 6.98681 3.91304L8.27535 2.62449C9.70209 1.19776 12.0153 1.19776 13.442 2.62449C14.8688 4.05123 14.8688 6.36442 13.442 7.79116L12.1535 9.0797C11.9192 9.31402 11.5393 9.31402 11.3049 9.0797C11.0706 8.84539 11.0706 8.46549 11.3049 8.23117L12.5935 6.94263C13.5516 5.98452 13.5516 4.43113 12.5935 3.47302Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M3.40637 12.6606C2.44827 11.7025 2.44827 10.1491 3.40637 9.19102L4.69492 7.90248C4.92923 7.66816 4.92923 7.28826 4.69492 7.05395C4.4606 6.81963 4.0807 6.81963 3.84639 7.05395L2.55784 8.34249C1.13111 9.76923 1.13111 12.0824 2.55784 13.5092C3.98458 14.9359 6.29777 14.9359 7.72451 13.5092L9.01305 12.2206C9.24737 11.9863 9.24737 11.6064 9.01305 11.3721C8.77874 11.1378 8.39884 11.1378 8.16452 11.3721L6.87598 12.6606C5.91787 13.6187 4.36448 13.6187 3.40637 12.6606Z`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M3.5852 2.80332C3.35088 2.569 2.97098 2.569 2.73667 2.80332C2.50235 3.03763 2.50235 3.41753 2.73667 3.65185L12.4151 13.3302C12.6494 13.5646 13.0293 13.5646 13.2636 13.3302C13.4979 13.0959 13.4979 12.716 13.2636 12.4817L3.5852 2.80332Z`}}]},j=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`unlink-icon`,ref:t,icon:A}))});j.displayName=`UnlinkIcon`;let M={tag:`svg`,attrs:{xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 17 16`,width:`1em`,height:`1em`},children:[{tag:`path`,attrs:{fill:`currentColor`,d:`M12.6551 1.98906C11.7476 1.08113 10.2757 1.08149 9.3686 1.98987L4.82542 6.53955C4.75087 6.61421 4.69336 6.70411 4.65682 6.80309L3.2461 10.625C3.16506 10.8446 3.21909 11.0912 3.3845 11.2568C3.54991 11.4224 3.79651 11.4767 4.01616 11.3959L7.85031 9.98517C7.94979 9.94856 8.04014 9.89077 8.11508 9.81579L12.6552 5.27327C13.5618 4.36621 13.5618 2.89607 12.6551 1.98906ZM10.2177 2.83779C10.6562 2.39869 11.3677 2.39851 11.8064 2.8374C12.2447 3.27584 12.2447 3.9865 11.8065 4.42497L7.3392 8.89457L4.82213 9.82068L5.74706 7.31487L10.2177 2.83779Z`,fillRule:`evenodd`,clipRule:`evenodd`}},{tag:`path`,attrs:{fill:`currentColor`,d:`M1.79238 13.2999C1.46101 13.2999 1.19238 13.5685 1.19238 13.8999C1.19238 14.2313 1.46101 14.4999 1.79238 14.4999H14.4924C14.8238 14.4999 15.0924 14.2313 15.0924 13.8999C15.0924 13.5685 14.8238 13.2999 14.4924 13.2999H1.79238Z`}}]},N=(0,l.forwardRef)(function(e,t){return(0,l.createElement)(x,Object.assign({},e,{id:`write-icon`,ref:t,icon:M}))});N.displayName=`WriteIcon`;let P={type:t.CommandType.COMMAND,id:`docs.command.delete-hyper-link`,async handler(e,n){if(!n)return!1;let{unitId:r,linkId:a,segmentId:o}=n,s=e.get(t.ICommandService),c=(0,i.deleteCustomRangeFactory)(e,{unitId:r,rangeId:a,segmentId:o});return c?await s.syncExecuteCommand(c.id,c.params):!1}},F=e=>{let n=e.get(i.DocSelectionManagerService),r=e.get(t.IUniverInstanceService),a=n.getTextRanges();if(!(a!=null&&a.length))return!0;let o=a[0];return!!(!r.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC)||!o||o.collapsed)},I={type:t.CommandType.OPERATION,id:`doc.operation.show-hyper-link-edit-popup`,handler(e,n){var r;let i=n==null?void 0:n.link,a=e.get(t.IUniverInstanceService);if(F(e)&&!i)return!1;let o=e.get(K),s=(i==null?void 0:i.unitId)||((r=a.getCurrentUnitForType(t.UniverInstanceType.UNIVER_DOC))==null?void 0:r.getUnitId());return s?(o.showEditPopup(s,i),!0):!1}},L={type:t.CommandType.OPERATION,id:`doc.operation.toggle-hyper-link-info-popup`,handler(e,t){let n=e.get(K);return t?(n.showInfoPopup(t),!0):(n.hideInfoPopup(),!0)}},R={type:t.CommandType.OPERATION,id:`doc.operation.click-hyper-link`,handler(e,n){var r;if(!n)return!1;let{unitId:i,linkId:a,segmentId:o}=n,s=e.get(t.IUniverInstanceService).getUnit(i,t.UniverInstanceType.UNIVER_DOC),c=s==null?void 0:s.getSelfOrHeaderFooterModel(o).getBody(),l=c==null||(r=c.customRanges)==null||(r=r.find(e=>e.rangeId===a&&e.rangeType===t.CustomRangeType.HYPERLINK))==null||(r=r.properties)==null?void 0:r.url;return l&&window.open(l,`_blank`,`noopener noreferrer`),!0}},z=()=>{var e,n;let r=(0,c.useDependency)(K),i=(0,c.useDependency)(t.ICommandService),a=(0,c.useDependency)(c.IMessageService),o=(0,c.useDependency)(t.LocaleService),l=(0,c.useObservable)(r.showingLink$),d=(0,c.useDependency)(t.IUniverInstanceService);if(!l)return null;let{unitId:f,linkId:p,segmentId:m,startIndex:h,endIndex:g}=l,_=d.getUnit(f,t.UniverInstanceType.UNIVER_DOC),v=_==null?void 0:_.getSelfOrHeaderFooterModel(m).getBody(),y=v==null||(e=v.customRanges)==null?void 0:e.find(e=>e.rangeId===p&&e.rangeType===t.CustomRangeType.HYPERLINK&&e.startIndex===h&&e.endIndex===g);if(!y)return null;let b=(n=y.properties)==null?void 0:n.url;return(0,u.jsxs)(`div`,{className:(0,s.clsx)(`univer-box-border univer-flex univer-max-w-80 univer-items-center univer-justify-between univer-overflow-hidden univer-rounded-lg univer-bg-white univer-p-3 univer-shadow dark:!univer-bg-gray-900`,s.borderClassName),onClick:()=>{r.hideInfoPopup()},children:[(0,u.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-1 univer-cursor-pointer univer-items-center univer-truncate univer-text-sm univer-leading-5 univer-text-primary-500`,onClick:()=>window.open(b,void 0,`noopener noreferrer`),children:[(0,u.jsx)(`div`,{className:`univer-mr-2 univer-flex univer-size-5 univer-flex-[0_0_auto] univer-items-center univer-justify-center univer-text-base univer-text-gray-900 dark:!univer-text-white`,children:(0,u.jsx)(k,{})}),(0,u.jsx)(s.Tooltip,{showIfEllipsis:!0,title:b,children:(0,u.jsx)(`span`,{className:`univer-flex-1 univer-truncate`,children:b})})]}),(0,u.jsxs)(`div`,{className:`univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center`,children:[(0,u.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{navigator.clipboard.writeText(b),a.show({content:o.t(`docLink.info.coped`),type:s.MessageType.Info})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.copy`),children:(0,u.jsx)(D,{})})}),(0,u.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(I.id,{link:l})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.edit`),children:(0,u.jsx)(N,{})})}),(0,u.jsx)(`div`,{className:`univer-ml-2 univer-flex univer-size-6 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded univer-text-base`,onClick:()=>{i.executeCommand(P.id,{unitId:f,linkId:y.rangeId,segmentId:m})},children:(0,u.jsx)(s.Tooltip,{placement:`bottom`,title:o.t(`docLink.info.cancel`),children:(0,u.jsx)(j,{})})})]})]})};z.componentKey=`univer.doc.link-info-popup`;function B(e){"@babel/helpers - typeof";return B=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},B(e)}function V(e,t){if(B(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(B(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function H(e){var t=V(e,`string`);return B(t)==`symbol`?t:t+``}function U(e,t,n){return(t=H(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function W(e,t){return function(n,r){t(n,r,e)}}function G(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let K=class extends t.Disposable{constructor(e,t,n){super(),this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=n,U(this,`_editingLink$`,new o.BehaviorSubject(null)),U(this,`_showingLink$`,new o.BehaviorSubject(null)),U(this,`editingLink$`,this._editingLink$.asObservable()),U(this,`showingLink$`,this._showingLink$.asObservable()),U(this,`_editPopup`,null),U(this,`_infoPopup`,null),this.disposeWithMe(()=>{this._editingLink$.complete(),this._showingLink$.complete()})}get editing(){return this._editingLink$.value}get showing(){return this._showingLink$.value}showEditPopup(e,t){this._editPopup&&this._editPopup.dispose(),this._editingLink$.next(t);let n=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e}),r=n==null?void 0:n[n.length-1];if(t){let{segmentId:e,segmentPage:n,startIndex:i,endIndex:a}=t;r={collapsed:!1,startOffset:i,endOffset:a+1,segmentId:e,segmentPage:n},this._textSelectionManagerService.replaceDocRanges([{startOffset:i,endOffset:a+1}])}return r?(this._editPopup=this._docCanvasPopupManagerService.attachPopupToRange(r,{componentKey:b.componentKey,direction:`bottom`},e),this._editPopup):null}hideEditPopup(){var e;this._editingLink$.next(null),(e=this._editPopup)==null||e.dispose()}showInfoPopup(e){var n,r,i,a,o,s;let{linkId:c,unitId:l,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}=e;if(!(((n=this.showing)==null?void 0:n.linkId)===c&&((r=this.showing)==null?void 0:r.unitId)===l&&((i=this.showing)==null?void 0:i.segmentId)===u&&((a=this.showing)==null?void 0:a.segmentPage)===d&&((o=this.showing)==null?void 0:o.startIndex)===f&&((s=this.showing)==null?void 0:s.endIndex)===p)&&(this._infoPopup&&this._infoPopup.dispose(),this._univerInstanceService.getUnit(l,t.UniverInstanceType.UNIVER_DOC)))return this._showingLink$.next({unitId:l,linkId:c,segmentId:u,segmentPage:d,startIndex:f,endIndex:p}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:f,endOffset:p+1,segmentId:u,segmentPage:d},{componentKey:z.componentKey,direction:`top-center`,multipleDirection:`top`,onClickOutside:()=>{this.hideInfoPopup()}},l),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};K=G([W(0,(0,t.Inject)(a.DocCanvasPopManagerService)),W(1,(0,t.Inject)(i.DocSelectionManagerService)),W(2,t.IUniverInstanceService)],K);let q=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._docHyperLinkService=n,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===i.SetTextSelectionsOperation.id){let{unitId:i,ranges:a,segmentId:o}=e.params,s=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_DOC),c=a[0];if(c&&s){var n;let{startOffset:e,endOffset:t,collapsed:a,segmentPage:l}=c,u=(n=s.getSelfOrHeaderFooterModel(o))==null||(n=n.getBody())==null?void 0:n.customRanges;if(a){var r;let n=(r=u==null?void 0:u.findIndex(n=>n.startIndex<e&&n.endIndex>t-1))==null?-1:r;if(n>-1){let e=u[n];this._docHyperLinkService.showInfoPopup({unitId:i,linkId:e.rangeId,segmentId:o,segmentPage:l,startIndex:e.startIndex,endIndex:e.endIndex});return}}else if(u!=null&&u.find(n=>n.startIndex<=e&&n.endIndex>=t-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};q=G([W(0,t.ICommandService),W(1,t.IUniverInstanceService),W(2,(0,t.Inject)(K))],q);let J=class extends t.Disposable{get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}constructor(e,n,r,i,a,o){super(),this._context=e,this._docEventManagerService=n,this._commandService=r,this._hyperLinkPopupService=i,this._docSkeletonManagerService=a,this._docSelectionManagerService=o,!(this._context.unitId===t.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(L.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(e=>{var n;let r=e.find(e=>e.range.rangeType===t.CustomRangeType.HYPERLINK),i=this._docSelectionManagerService.getTextRanges(),a=i==null?void 0:i[0].segmentId;if(((n=r==null?void 0:r.segmentId)==null?``:n)!==a){this._hideInfoPopup();return}r?this._commandService.executeCommand(L.id,{unitId:this._context.unitId,linkId:r.range.rangeId,segmentId:r.segmentId,segmentPage:r.segmentPageIndex,rangeId:r.range.rangeId,startIndex:r.range.startIndex,endIndex:r.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(e=>{let t=e.range;t&&this._commandService.executeCommand(R.id,{unitId:this._context.unitId,linkId:t.rangeId,segmentId:e.segmentId})}))}};J=G([W(1,(0,t.Inject)(a.DocEventManagerService)),W(2,t.ICommandService),W(3,(0,t.Inject)(K)),W(4,(0,t.Inject)(i.DocSkeletonManagerService)),W(5,(0,t.Inject)(i.DocSelectionManagerService))],J);let Y=class extends t.Disposable{constructor(e,t,n,r){super(),this._context=e,this._docInterceptorService=t,this._hyperLinkService=n,this._docRenderController=r,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(i.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(e,t,n)=>{if(!e)return n(e);let{unitId:r,index:i}=t,a=this._hyperLinkService.showing;if(!a)return n({...e,active:!1});let{linkId:o,unitId:s,startIndex:c,endIndex:l}=a,u=s===r&&e.rangeId===o&&i>=c&&i<=l;return n({...e,active:u})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe((0,o.distinctUntilChanged)((e,t)=>(e==null?void 0:e.linkId)===(t==null?void 0:t.linkId)&&(e==null?void 0:e.unitId)===(t==null?void 0:t.unitId)&&(e==null?void 0:e.startIndex)===(t==null?void 0:t.startIndex)),(0,o.pairwise)()).subscribe(([e,t])=>{t?t.unitId===this._context.unitId&&this._docRenderController.reRender(t.unitId):e&&e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId)}))}};Y=G([W(1,(0,t.Inject)(i.DocInterceptorService)),W(2,(0,t.Inject)(K)),W(3,(0,t.Inject)(a.DocRenderController))],Y);let X=`doc-hyper-link-icon`;function Z(e){return{id:I.id,type:c.MenuItemType.BUTTON,icon:X,title:`docLink.menu.tooltip`,tooltip:`docLink.menu.tooltip`,hidden$:(0,c.getMenuHiddenObservable)(e,t.UniverInstanceType.UNIVER_DOC),disabled$:new o.Observable(function(t){let n=e.get(i.DocSelectionManagerService).textSelection$.pipe((0,o.debounceTime)(16)).subscribe(()=>{t.next(F(e))});return()=>{n.unsubscribe()}})}}let ee={id:I.id,binding:c.MetaKeys.CTRL_COMMAND|c.KeyCode.K,description:`docLink.menu.tooltip`,preconditions:a.whenDocAndEditorFocused},te={[c.RibbonInsertGroup.MEDIA]:{[I.id]:{order:1,menuItemFactory:Z}},[c.ContextMenuPosition.MAIN_AREA]:{[c.ContextMenuGroup.DATA]:{[I.id]:{order:0,menuItemFactory:Z}}}},Q=class extends t.Disposable{constructor(e,t,n,r){super(),this._componentManager=e,this._commandService=t,this._menuManagerService=n,this._shortcutService=r,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[z.componentKey,z],[X,k]].forEach(([e,t])=>{this.disposeWithMe(this._componentManager.register(e,t))})}_initCommands(){[h,g,P,I,L,R].forEach(e=>{this._commandService.registerCommand(e)})}_initShortcut(){[ee].forEach(e=>{this._shortcutService.registerShortcut(e)})}_initMenus(){this._menuManagerService.mergeMenu(te)}};Q=G([W(0,(0,t.Inject)(c.ComponentManager)),W(1,t.ICommandService),W(2,c.IMenuManagerService),W(3,c.IShortcutService)],Q);let $=class extends t.Plugin{constructor(e=m,n,r,i){super(),this._config=e,this._injector=n,this._renderManagerSrv=r,this._configService=i;let{menu:a,...o}=(0,t.merge)({},m,this._config);a&&this._configService.setConfig(`menu`,a,{merge:!0}),this._configService.setConfig(p,o)}onStarting(){[[K],[Q],[q]].forEach(e=>{this._injector.add(e)}),this._injector.get(Q)}onReady(){this._injector.get(q)}onRendered(){this._initRenderModule()}_initRenderModule(){[[Y],[J]].forEach(e=>{this._renderManagerSrv.registerRenderModule(t.UniverInstanceType.UNIVER_DOC,e)})}};U($,`pluginName`,`DOC_HYPER_LINK_UI_PLUGIN`),U($,`packageName`,d),U($,`version`,f),U($,`type`,t.UniverInstanceType.UNIVER_DOC),$=G([(0,t.DependentOn)(n.UniverDocsHyperLinkPlugin),W(1,(0,t.Inject)(t.Injector)),W(2,r.IRenderManagerService),W(3,t.IConfigService)],$),Object.defineProperty(e,`UniverDocsHyperLinkUIPlugin`,{enumerable:!0,get:function(){return $}})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/docs-hyper-link-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Univer thread comment plugin",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -53,22 +53,22 @@
|
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@univerjs/icons": "^1.1.1",
|
|
56
|
-
"@univerjs/
|
|
57
|
-
"@univerjs/
|
|
58
|
-
"@univerjs/docs": "0.
|
|
59
|
-
"@univerjs/docs-hyper-link": "0.
|
|
60
|
-
"@univerjs/docs-ui": "0.
|
|
61
|
-
"@univerjs/engine-render": "0.
|
|
62
|
-
"@univerjs/ui": "0.
|
|
56
|
+
"@univerjs/design": "0.19.0",
|
|
57
|
+
"@univerjs/core": "0.19.0",
|
|
58
|
+
"@univerjs/docs": "0.19.0",
|
|
59
|
+
"@univerjs/docs-hyper-link": "0.19.0",
|
|
60
|
+
"@univerjs/docs-ui": "0.19.0",
|
|
61
|
+
"@univerjs/engine-render": "0.19.0",
|
|
62
|
+
"@univerjs/ui": "0.19.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"postcss": "^8.5.8",
|
|
66
66
|
"react": "18.3.1",
|
|
67
67
|
"rxjs": "^7.8.2",
|
|
68
68
|
"tailwindcss": "3.4.18",
|
|
69
|
-
"typescript": "^
|
|
70
|
-
"vitest": "^4.1.
|
|
71
|
-
"@univerjs-infra/shared": "0.
|
|
69
|
+
"typescript": "^6.0.2",
|
|
70
|
+
"vitest": "^4.1.1",
|
|
71
|
+
"@univerjs-infra/shared": "0.19.0"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"test": "vitest run",
|