@univerjs/docs-hyper-link-ui 0.16.1 → 0.17.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.
@@ -14,5 +14,5 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import './global.css';
17
- export type { IUniverDocsHyperLinkUIConfig } from './controllers/config.schema';
17
+ export type { IUniverDocsHyperLinkUIConfig } from './config/config';
18
18
  export { UniverDocsHyperLinkUIPlugin } from './plugin';
@@ -1,4 +1,4 @@
1
- import { IUniverDocsHyperLinkUIConfig } from './controllers/config.schema';
1
+ import { IUniverDocsHyperLinkUIConfig } from './config/config';
2
2
  import { IConfigService, Injector, Plugin, UniverInstanceType } from '@univerjs/core';
3
3
  import { IRenderManagerService } from '@univerjs/engine-render';
4
4
  export declare class UniverDocsHyperLinkUIPlugin extends Plugin {
@@ -7,6 +7,8 @@ export declare class UniverDocsHyperLinkUIPlugin extends Plugin {
7
7
  private readonly _renderManagerSrv;
8
8
  private readonly _configService;
9
9
  static pluginName: string;
10
+ static packageName: string;
11
+ static version: string;
10
12
  static type: UniverInstanceType;
11
13
  constructor(_config: Partial<IUniverDocsHyperLinkUIConfig> | undefined, _injector: Injector, _renderManagerSrv: IRenderManagerService, _configService: IConfigService);
12
14
  onStarting(): void;
package/lib/umd/index.js CHANGED
@@ -1 +1 @@
1
- (function(a,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@univerjs/docs-hyper-link"),require("@univerjs/engine-render"),require("@univerjs/docs"),require("@univerjs/docs-ui"),require("rxjs"),require("react/jsx-runtime"),require("@univerjs/design"),require("@univerjs/ui"),require("react")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/docs-hyper-link","@univerjs/engine-render","@univerjs/docs","@univerjs/docs-ui","rxjs","react/jsx-runtime","@univerjs/design","@univerjs/ui","react"],o):(a=typeof globalThis<"u"?globalThis:a||self,o(a.UniverDocsHyperLinkUi={},a.UniverCore,a.UniverDocsHyperLink,a.UniverEngineRender,a.UniverDocs,a.UniverDocsUi,a.rxjs,a.React,a.UniverDesign,a.UniverUi,a.React))})(this,(function(a,o,w,Ce,S,E,O,u,C,p,y){"use strict";var We=Object.defineProperty;var Ge=(a,o,w)=>o in a?We(a,o,{enumerable:!0,configurable:!0,writable:!0,value:w}):a[o]=w;var D=(a,o,w)=>Ge(a,typeof o!="symbol"?o+"":o,w);const _e="docs-hyper-link-ui.config",z={},J={type:o.CommandType.COMMAND,id:"docs.command.add-hyper-link",async handler(n,e){if(!e)return!1;const{payload:t,unitId:i,selections:r}=e,s=n.get(o.ICommandService),c=o.generateRandomId(),d=S.addCustomRangeBySelectionFactory(n,{rangeId:c,rangeType:o.CustomRangeType.HYPERLINK,properties:{url:t},unitId:i,selections:r});return d?s.syncExecuteCommand(d.id,d.params):!1}},Q={id:"docs.command.update-hyper-link",type:o.CommandType.COMMAND,handler(n,e){var I;if(!e)return!1;const{unitId:t,payload:i,segmentId:r,linkId:s}=e,c=n.get(o.ICommandService),d=n.get(o.IUniverInstanceService),g=n.get(S.DocSelectionManagerService).getActiveTextRange(),m=d.getUnit(t,o.UniverInstanceType.UNIVER_DOC);if(!g||!m)return!1;const f=(I=o.getBodySlice(m.getSelfOrHeaderFooterModel(r).getBody(),g.startOffset,g.endOffset).textRuns)==null?void 0:I[0];f&&(f.ed=e.label.length+1);const l=S.replaceSelectionFactory(n,{unitId:t,body:{dataStream:`${e.label}`,customRanges:[{rangeId:s,rangeType:o.CustomRangeType.HYPERLINK,startIndex:0,endIndex:e.label.length+1,properties:{url:i}}],textRuns:f?[f]:void 0},selection:{startOffset:g.startOffset,endOffset:g.endOffset,collapsed:!1,segmentId:r}});return l?c.syncExecuteCommand(l.id,l.params):!1}};function ye(n){return/^[a-zA-Z]+:\/\//.test(n)}function Se(n){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(n)}function xe(n){return ye(n)?n:Se(n)?`mailto://${n}`:`https://${n}`}const b=()=>{const n=p.useDependency(x),e=p.useDependency(o.LocaleService),t=p.useObservable(n.editingLink$),i=p.useDependency(o.ICommandService),r=p.useDependency(o.IUniverInstanceService),s=p.useDependency(S.DocSelectionManagerService),[c,d]=y.useState(""),[h,g]=y.useState(""),[m,_]=y.useState(!1),f=o.Tools.isLegalUrl(c),l=t?r.getUnit(t.unitId,o.UniverInstanceType.UNIVER_DOC):r.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC);y.useEffect(()=>{var le,ue,pe,ve,he,ge,Ie,fe,me;const v=s.getActiveTextRange();if(!v)return;if(t){const H=(le=l==null?void 0:l.getSelfOrHeaderFooterModel(t.segmentId))==null?void 0:le.getBody(),K=(ue=H==null?void 0:H.customRanges)==null?void 0:ue.find(G=>(t==null?void 0:t.linkId)===G.rangeId&&G.startIndex===t.startIndex&&G.endIndex===t.endIndex);l&&K&&(d((ve=(pe=K.properties)==null?void 0:pe.url)!=null?ve:""),g(o.BuildTextUtils.transform.getPlainText(o.getBodySlice(H,K.startIndex,K.endIndex+1).dataStream)));return}const L=(he=l==null?void 0:l.getSelfOrHeaderFooterModel(v.segmentId))==null?void 0:he.getBody(),ae=L?v:null,j=ae&&((Ie=o.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(ae,(ge=L==null?void 0:L.customRanges)!=null?ge:[]))==null?void 0:Ie[0]);l&&j&&d((me=(fe=j==null?void 0:j.properties)==null?void 0:fe.url)!=null?me:"")},[l,t,s,r]);const I=()=>{n.hideEditPopup()},k=()=>{if(_(!0),!f||!l)return;const v=xe(c);if(!t)i.executeCommand(J.id,{unitId:l.getUnitId(),payload:v});else{if(!h)return;i.executeCommand(Q.id,{unitId:l.getUnitId(),payload:v,linkId:t.linkId,label:h,segmentId:t.segmentId})}n.hideEditPopup()};if(l)return u.jsxs("div",{className:C.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",C.borderClassName),children:[u.jsxs("div",{children:[t?u.jsx(C.FormLayout,{label:e.t("docLink.edit.label"),error:m&&!h?e.t("docLink.edit.labelError"):"",children:u.jsx(C.Input,{value:h,onChange:g,autoFocus:!0,onKeyDown:v=>{v.keyCode===p.KeyCode.ENTER&&k()}})}):null,u.jsx(C.FormLayout,{label:e.t("docLink.edit.address"),error:m&&!f?e.t("docLink.edit.addressError"):"",children:u.jsx(C.Input,{value:c,onChange:d,autoFocus:!0,onKeyDown:v=>{v.keyCode===p.KeyCode.ENTER&&k()}})})]}),u.jsxs("div",{className:"univer-flex univer-justify-end univer-gap-3",children:[u.jsx(C.Button,{onClick:I,children:e.t("docLink.edit.cancel")}),u.jsx(C.Button,{variant:"primary",disabled:!c,onClick:k,children:e.t("docLink.edit.confirm")})]})]})};b.componentKey="docs-hyper-link-edit";function U({ref:n,...e}){const{icon:t,id:i,className:r,extend:s,...c}=e,d=`univerjs-icon univerjs-icon-${i} ${r||""}`.trim(),h=y.useRef(`_${De()}`);return X(t,`${i}`,{defIds:t.defIds,idSuffix:h.current},{ref:n,className:d,...c},s)}function X(n,e,t,i,r){return y.createElement(n.tag,{key:e,...ke(n,t,r),...i},(Le(n,t).children||[]).map((s,c)=>X(s,`${e}-${n.tag}-${c}`,t,void 0,r)))}function ke(n,e,t){const i={...n.attrs};t!=null&&t.colorChannel1&&i.fill==="colorChannel1"&&(i.fill=t.colorChannel1),n.tag==="mask"&&i.id&&(i.id=i.id+e.idSuffix),Object.entries(i).forEach(([s,c])=>{s==="mask"&&typeof c=="string"&&(i[s]=c.replace(/url\(#(.*)\)/,`url(#$1${e.idSuffix})`))});const{defIds:r}=e;return!r||r.length===0||(n.tag==="use"&&i["xlink:href"]&&(i["xlink:href"]=i["xlink:href"]+e.idSuffix),Object.entries(i).forEach(([s,c])=>{typeof c=="string"&&(i[s]=c.replace(/url\(#(.*)\)/,`url(#$1${e.idSuffix})`))})),i}function Le(n,e){var i;const{defIds:t}=e;return!t||t.length===0?n:n.tag==="defs"&&((i=n.children)!=null&&i.length)?{...n,children:n.children.map(r=>typeof r.attrs.id=="string"&&t&&t.includes(r.attrs.id)?{...r,attrs:{...r.attrs,id:r.attrs.id+e.idSuffix}}:r)}:n}function De(){return Math.random().toString(36).substring(2,8)}U.displayName="UniverIcon";const we={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"}}]},ee=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"copy-icon",ref:t,icon:we}))});ee.displayName="CopyIcon";const Oe={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"}}]},A=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"link-icon",ref:t,icon:Oe}))});A.displayName="LinkIcon";const Pe={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"}}]},ne=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"unlink-icon",ref:t,icon:Pe}))});ne.displayName="UnlinkIcon";const Ue={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"}}]},te=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"write-icon",ref:t,icon:Ue}))});te.displayName="WriteIcon";const ie={type:o.CommandType.COMMAND,id:"docs.command.delete-hyper-link",async handler(n,e){if(!e)return!1;const{unitId:t,linkId:i,segmentId:r}=e,s=n.get(o.ICommandService),c=S.deleteCustomRangeFactory(n,{unitId:t,rangeId:i,segmentId:r});return c?await s.syncExecuteCommand(c.id,c.params):!1}},re=n=>{const e=n.get(S.DocSelectionManagerService),t=n.get(o.IUniverInstanceService),i=e.getTextRanges();if(!(i!=null&&i.length))return!0;const r=i[0];return!!(!t.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC)||!r||r.collapsed)},P={type:o.CommandType.OPERATION,id:"doc.operation.show-hyper-link-edit-popup",handler(n,e){var c;const t=e==null?void 0:e.link,i=n.get(o.IUniverInstanceService);if(re(n)&&!t)return!1;const r=n.get(x),s=(t==null?void 0:t.unitId)||((c=i.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC))==null?void 0:c.getUnitId());return s?(r.showEditPopup(s,t),!0):!1}},B={type:o.CommandType.OPERATION,id:"doc.operation.toggle-hyper-link-info-popup",handler(n,e){const t=n.get(x);return e?(t.showInfoPopup(e),!0):(t.hideInfoPopup(),!0)}},oe={type:o.CommandType.OPERATION,id:"doc.operation.click-hyper-link",handler(n,e){var g,m,_;if(!e)return!1;const{unitId:t,linkId:i,segmentId:r}=e,c=n.get(o.IUniverInstanceService).getUnit(t,o.UniverInstanceType.UNIVER_DOC),d=c==null?void 0:c.getSelfOrHeaderFooterModel(r).getBody(),h=(_=(m=(g=d==null?void 0:d.customRanges)==null?void 0:g.find(f=>f.rangeId===i&&f.rangeType===o.CustomRangeType.HYPERLINK))==null?void 0:m.properties)==null?void 0:_.url;return h&&window.open(h,"_blank","noopener noreferrer"),!0}},T=()=>{var k,v;const n=p.useDependency(x),e=p.useDependency(o.ICommandService),t=p.useDependency(p.IMessageService),i=p.useDependency(o.LocaleService),r=p.useObservable(n.showingLink$),s=p.useDependency(o.IUniverInstanceService);if(!r)return null;const{unitId:c,linkId:d,segmentId:h,startIndex:g,endIndex:m}=r,_=s.getUnit(c,o.UniverInstanceType.UNIVER_DOC),f=_==null?void 0:_.getSelfOrHeaderFooterModel(h).getBody(),l=(k=f==null?void 0:f.customRanges)==null?void 0:k.find(L=>L.rangeId===d&&L.rangeType===o.CustomRangeType.HYPERLINK&&L.startIndex===g&&L.endIndex===m);if(!l)return null;const I=(v=l.properties)==null?void 0:v.url;return u.jsxs("div",{className:C.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",C.borderClassName),onClick:()=>{n.hideInfoPopup()},children:[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(I,void 0,"noopener noreferrer"),children:[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:u.jsx(A,{})}),u.jsx(C.Tooltip,{showIfEllipsis:!0,title:I,children:u.jsx("span",{className:"univer-flex-1 univer-truncate",children:I})})]}),u.jsxs("div",{className:"univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center",children:[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(I),t.show({content:i.t("docLink.info.coped"),type:C.MessageType.Info})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.copy"),children:u.jsx(ee,{})})}),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:()=>{e.executeCommand(P.id,{link:r})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.edit"),children:u.jsx(te,{})})}),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:()=>{e.executeCommand(ie.id,{unitId:c,linkId:l.rangeId,segmentId:h})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.cancel"),children:u.jsx(ne,{})})})]})]})};T.componentKey="univer.doc.link-info-popup";var Me=Object.getOwnPropertyDescriptor,Ee=(n,e,t,i)=>{for(var r=i>1?void 0:i?Me(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},F=(n,e)=>(t,i)=>e(t,i,n);let x=class extends o.Disposable{constructor(e,t,i){super();D(this,"_editingLink$",new O.BehaviorSubject(null));D(this,"_showingLink$",new O.BehaviorSubject(null));D(this,"editingLink$",this._editingLink$.asObservable());D(this,"showingLink$",this._showingLink$.asObservable());D(this,"_editPopup",null);D(this,"_infoPopup",null);this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=i,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);const i=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e});let r=i==null?void 0:i[i.length-1];if(t){const{segmentId:s,segmentPage:c,startIndex:d,endIndex:h}=t;r={collapsed:!1,startOffset:d,endOffset:h+1,segmentId:s,segmentPage:c},this._textSelectionManagerService.replaceDocRanges([{startOffset:d,endOffset:h+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 g,m,_,f,l,I;const{linkId:t,unitId:i,segmentId:r,segmentPage:s,startIndex:c,endIndex:d}=e;if(!(((g=this.showing)==null?void 0:g.linkId)===t&&((m=this.showing)==null?void 0:m.unitId)===i&&((_=this.showing)==null?void 0:_.segmentId)===r&&((f=this.showing)==null?void 0:f.segmentPage)===s&&((l=this.showing)==null?void 0:l.startIndex)===c&&((I=this.showing)==null?void 0:I.endIndex)===d||(this._infoPopup&&this._infoPopup.dispose(),!this._univerInstanceService.getUnit(i,o.UniverInstanceType.UNIVER_DOC))))return this._showingLink$.next({unitId:i,linkId:t,segmentId:r,segmentPage:s,startIndex:c,endIndex:d}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:c,endOffset:d+1,segmentId:r,segmentPage:s},{componentKey:T.componentKey,direction:"top-center",multipleDirection:"top",onClickOutside:()=>{this.hideInfoPopup()}},i),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};x=Ee([F(0,o.Inject(E.DocCanvasPopManagerService)),F(1,o.Inject(S.DocSelectionManagerService)),F(2,o.IUniverInstanceService)],x);var be=Object.getOwnPropertyDescriptor,Te=(n,e,t,i)=>{for(var r=i>1?void 0:i?be(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},V=(n,e)=>(t,i)=>e(t,i,n);let R=class extends o.Disposable{constructor(n,e,t){super(),this._commandService=n,this._univerInstanceService=e,this._docHyperLinkService=t,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(n=>{var e,t,i;if(n.id===S.SetTextSelectionsOperation.id){const r=n.params,{unitId:s,ranges:c,segmentId:d}=r,h=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_DOC),g=c[0];if(g&&h){const{startOffset:m,endOffset:_,collapsed:f,segmentPage:l}=g,I=(t=(e=h.getSelfOrHeaderFooterModel(d))==null?void 0:e.getBody())==null?void 0:t.customRanges;if(f){const k=(i=I==null?void 0:I.findIndex(v=>v.startIndex<m&&v.endIndex>_-1))!=null?i:-1;if(k>-1){const v=I[k];this._docHyperLinkService.showInfoPopup({unitId:s,linkId:v.rangeId,segmentId:d,segmentPage:l,startIndex:v.startIndex,endIndex:v.endIndex});return}}else if(I==null?void 0:I.find(v=>v.startIndex<=m&&v.endIndex>=_-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};R=Te([V(0,o.ICommandService),V(1,o.IUniverInstanceService),V(2,o.Inject(x))],R);var Re=Object.getOwnPropertyDescriptor,Ne=(n,e,t,i)=>{for(var r=i>1?void 0:i?Re(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},M=(n,e)=>(t,i)=>e(t,i,n);let Z=class extends o.Disposable{constructor(n,e,t,i,r,s){super(),this._context=n,this._docEventManagerService=e,this._commandService=t,this._hyperLinkPopupService=i,this._docSkeletonManagerService=r,this._docSelectionManagerService=s,!(this._context.unitId===o.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===o.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(B.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(n=>{var r;const e=n.find(s=>s.range.rangeType===o.CustomRangeType.HYPERLINK),t=this._docSelectionManagerService.getTextRanges(),i=t==null?void 0:t[0].segmentId;if(((r=e==null?void 0:e.segmentId)!=null?r:"")!==i){this._hideInfoPopup();return}e?this._commandService.executeCommand(B.id,{unitId:this._context.unitId,linkId:e.range.rangeId,segmentId:e.segmentId,segmentPage:e.segmentPageIndex,rangeId:e.range.rangeId,startIndex:e.range.startIndex,endIndex:e.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(n=>{const e=n.range;e&&this._commandService.executeCommand(oe.id,{unitId:this._context.unitId,linkId:e.rangeId,segmentId:n.segmentId})}))}};Z=Ne([M(1,o.Inject(E.DocEventManagerService)),M(2,o.ICommandService),M(3,o.Inject(x)),M(4,o.Inject(S.DocSkeletonManagerService)),M(5,o.Inject(S.DocSelectionManagerService))],Z);var $e=Object.getOwnPropertyDescriptor,je=(n,e,t,i)=>{for(var r=i>1?void 0:i?$e(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},Y=(n,e)=>(t,i)=>e(t,i,n);let q=class extends o.Disposable{constructor(n,e,t,i){super(),this._context=n,this._docInterceptorService=e,this._hyperLinkService=t,this._docRenderController=i,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(S.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(n,e,t)=>{if(!n)return t(n);const{unitId:i,index:r}=e,s=this._hyperLinkService.showing;if(!s)return t({...n,active:!1});const{linkId:c,unitId:d,startIndex:h,endIndex:g}=s,m=d===i&&n.rangeId===c&&r>=h&&r<=g;return t({...n,active:m})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(O.distinctUntilChanged((n,e)=>(n==null?void 0:n.linkId)===(e==null?void 0:e.linkId)&&(n==null?void 0:n.unitId)===(e==null?void 0:e.unitId)&&(n==null?void 0:n.startIndex)===(e==null?void 0:e.startIndex)),O.pairwise()).subscribe(([n,e])=>{e?e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId):n&&n.unitId===this._context.unitId&&this._docRenderController.reRender(n.unitId)}))}};q=je([Y(1,o.Inject(S.DocInterceptorService)),Y(2,o.Inject(x)),Y(3,o.Inject(E.DocRenderController))],q);const se="doc-hyper-link-icon";function ce(n){return{id:P.id,type:p.MenuItemType.BUTTON,icon:se,title:"docLink.menu.tooltip",tooltip:"docLink.menu.tooltip",hidden$:p.getMenuHiddenObservable(n,o.UniverInstanceType.UNIVER_DOC),disabled$:new O.Observable(function(e){const i=n.get(S.DocSelectionManagerService).textSelection$.pipe(O.debounceTime(16)).subscribe(()=>{e.next(re(n))});return()=>{i.unsubscribe()}})}}const He={id:P.id,binding:p.MetaKeys.CTRL_COMMAND|p.KeyCode.K,description:"docLink.menu.tooltip",preconditions:E.whenDocAndEditorFocused},Ke={[p.RibbonInsertGroup.MEDIA]:{[P.id]:{order:1,menuItemFactory:ce}},[p.ContextMenuPosition.MAIN_AREA]:{[p.ContextMenuGroup.DATA]:{[P.id]:{order:0,menuItemFactory:ce}}}};var Ae=Object.getOwnPropertyDescriptor,Be=(n,e,t,i)=>{for(var r=i>1?void 0:i?Ae(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},N=(n,e)=>(t,i)=>e(t,i,n);let $=class extends o.Disposable{constructor(n,e,t,i){super(),this._componentManager=n,this._commandService=e,this._menuManagerService=t,this._shortcutService=i,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[T.componentKey,T],[se,A]].forEach(([n,e])=>{this.disposeWithMe(this._componentManager.register(n,e))})}_initCommands(){[J,Q,ie,P,B,oe].forEach(n=>{this._commandService.registerCommand(n)})}_initShortcut(){[He].forEach(n=>{this._shortcutService.registerShortcut(n)})}_initMenus(){this._menuManagerService.mergeMenu(Ke)}};$=Be([N(0,o.Inject(p.ComponentManager)),N(1,o.ICommandService),N(2,p.IMenuManagerService),N(3,p.IShortcutService)],$);const Fe="DOC_HYPER_LINK_UI_PLUGIN";var Ve=Object.defineProperty,Ze=Object.getOwnPropertyDescriptor,Ye=(n,e,t)=>e in n?Ve(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,qe=(n,e,t,i)=>{for(var r=i>1?void 0:i?Ze(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},W=(n,e)=>(t,i)=>e(t,i,n),de=(n,e,t)=>Ye(n,typeof e!="symbol"?e+"":e,t);a.UniverDocsHyperLinkUIPlugin=class extends o.Plugin{constructor(e=z,t,i,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=i,this._configService=r;const{menu:s,...c}=o.merge({},z,this._config);s&&this._configService.setConfig("menu",s,{merge:!0}),this._configService.setConfig(_e,c)}onStarting(){[[x],[$],[R]].forEach(t=>{this._injector.add(t)}),this._injector.get($)}onReady(){this._injector.get(R)}onRendered(){this._initRenderModule()}_initRenderModule(){[[q],[Z]].forEach(e=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,e)})}},de(a.UniverDocsHyperLinkUIPlugin,"pluginName",Fe),de(a.UniverDocsHyperLinkUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC),a.UniverDocsHyperLinkUIPlugin=qe([o.DependentOn(w.UniverDocsHyperLinkPlugin),W(1,o.Inject(o.Injector)),W(2,Ce.IRenderManagerService),W(3,o.IConfigService)],a.UniverDocsHyperLinkUIPlugin),Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(a,o){typeof exports=="object"&&typeof module<"u"?o(exports,require("@univerjs/core"),require("@univerjs/docs-hyper-link"),require("@univerjs/engine-render"),require("@univerjs/docs"),require("@univerjs/docs-ui"),require("rxjs"),require("react/jsx-runtime"),require("@univerjs/design"),require("@univerjs/ui"),require("react")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/docs-hyper-link","@univerjs/engine-render","@univerjs/docs","@univerjs/docs-ui","rxjs","react/jsx-runtime","@univerjs/design","@univerjs/ui","react"],o):(a=typeof globalThis<"u"?globalThis:a||self,o(a.UniverDocsHyperLinkUi={},a.UniverCore,a.UniverDocsHyperLink,a.UniverEngineRender,a.UniverDocs,a.UniverDocsUi,a.rxjs,a.React,a.UniverDesign,a.UniverUi,a.React))})(this,(function(a,o,w,_e,S,E,O,u,C,p,y){"use strict";var Ge=Object.defineProperty;var ze=(a,o,w)=>o in a?Ge(a,o,{enumerable:!0,configurable:!0,writable:!0,value:w}):a[o]=w;var D=(a,o,w)=>ze(a,typeof o!="symbol"?o+"":o,w);const J={name:"@univerjs/docs-hyper-link-ui",version:"0.17.0"},ye="docs-hyper-link-ui.config",Q={},X={type:o.CommandType.COMMAND,id:"docs.command.add-hyper-link",async handler(n,e){if(!e)return!1;const{payload:t,unitId:i,selections:r}=e,s=n.get(o.ICommandService),c=o.generateRandomId(),d=S.addCustomRangeBySelectionFactory(n,{rangeId:c,rangeType:o.CustomRangeType.HYPERLINK,properties:{url:t},unitId:i,selections:r});return d?s.syncExecuteCommand(d.id,d.params):!1}},ee={id:"docs.command.update-hyper-link",type:o.CommandType.COMMAND,handler(n,e){var I;if(!e)return!1;const{unitId:t,payload:i,segmentId:r,linkId:s}=e,c=n.get(o.ICommandService),d=n.get(o.IUniverInstanceService),g=n.get(S.DocSelectionManagerService).getActiveTextRange(),m=d.getUnit(t,o.UniverInstanceType.UNIVER_DOC);if(!g||!m)return!1;const f=(I=o.getBodySlice(m.getSelfOrHeaderFooterModel(r).getBody(),g.startOffset,g.endOffset).textRuns)==null?void 0:I[0];f&&(f.ed=e.label.length+1);const l=S.replaceSelectionFactory(n,{unitId:t,body:{dataStream:`${e.label}`,customRanges:[{rangeId:s,rangeType:o.CustomRangeType.HYPERLINK,startIndex:0,endIndex:e.label.length+1,properties:{url:i}}],textRuns:f?[f]:void 0},selection:{startOffset:g.startOffset,endOffset:g.endOffset,collapsed:!1,segmentId:r}});return l?c.syncExecuteCommand(l.id,l.params):!1}};function Se(n){return/^[a-zA-Z]+:\/\//.test(n)}function ke(n){return/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(n)}function xe(n){return Se(n)?n:ke(n)?`mailto://${n}`:`https://${n}`}const b=()=>{const n=p.useDependency(k),e=p.useDependency(o.LocaleService),t=p.useObservable(n.editingLink$),i=p.useDependency(o.ICommandService),r=p.useDependency(o.IUniverInstanceService),s=p.useDependency(S.DocSelectionManagerService),[c,d]=y.useState(""),[h,g]=y.useState(""),[m,_]=y.useState(!1),f=o.Tools.isLegalUrl(c),l=t?r.getUnit(t.unitId,o.UniverInstanceType.UNIVER_DOC):r.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC);y.useEffect(()=>{var ue,pe,ve,he,ge,Ie,fe,me,Ce;const v=s.getActiveTextRange();if(!v)return;if(t){const K=(ue=l==null?void 0:l.getSelfOrHeaderFooterModel(t.segmentId))==null?void 0:ue.getBody(),A=(pe=K==null?void 0:K.customRanges)==null?void 0:pe.find(z=>(t==null?void 0:t.linkId)===z.rangeId&&z.startIndex===t.startIndex&&z.endIndex===t.endIndex);l&&A&&(d((he=(ve=A.properties)==null?void 0:ve.url)!=null?he:""),g(o.BuildTextUtils.transform.getPlainText(o.getBodySlice(K,A.startIndex,A.endIndex+1).dataStream)));return}const L=(ge=l==null?void 0:l.getSelfOrHeaderFooterModel(v.segmentId))==null?void 0:ge.getBody(),le=L?v:null,H=le&&((fe=o.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(le,(Ie=L==null?void 0:L.customRanges)!=null?Ie:[]))==null?void 0:fe[0]);l&&H&&d((Ce=(me=H==null?void 0:H.properties)==null?void 0:me.url)!=null?Ce:"")},[l,t,s,r]);const I=()=>{n.hideEditPopup()},x=()=>{if(_(!0),!f||!l)return;const v=xe(c);if(!t)i.executeCommand(X.id,{unitId:l.getUnitId(),payload:v});else{if(!h)return;i.executeCommand(ee.id,{unitId:l.getUnitId(),payload:v,linkId:t.linkId,label:h,segmentId:t.segmentId})}n.hideEditPopup()};if(l)return u.jsxs("div",{className:C.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",C.borderClassName),children:[u.jsxs("div",{children:[t?u.jsx(C.FormLayout,{label:e.t("docLink.edit.label"),error:m&&!h?e.t("docLink.edit.labelError"):"",children:u.jsx(C.Input,{value:h,onChange:g,autoFocus:!0,onKeyDown:v=>{v.keyCode===p.KeyCode.ENTER&&x()}})}):null,u.jsx(C.FormLayout,{label:e.t("docLink.edit.address"),error:m&&!f?e.t("docLink.edit.addressError"):"",children:u.jsx(C.Input,{value:c,onChange:d,autoFocus:!0,onKeyDown:v=>{v.keyCode===p.KeyCode.ENTER&&x()}})})]}),u.jsxs("div",{className:"univer-flex univer-justify-end univer-gap-3",children:[u.jsx(C.Button,{onClick:I,children:e.t("docLink.edit.cancel")}),u.jsx(C.Button,{variant:"primary",disabled:!c,onClick:x,children:e.t("docLink.edit.confirm")})]})]})};b.componentKey="docs-hyper-link-edit";function U({ref:n,...e}){const{icon:t,id:i,className:r,extend:s,...c}=e,d=`univerjs-icon univerjs-icon-${i} ${r||""}`.trim(),h=y.useRef(`_${we()}`);return ne(t,`${i}`,{defIds:t.defIds,idSuffix:h.current},{ref:n,className:d,...c},s)}function ne(n,e,t,i,r){return y.createElement(n.tag,{key:e,...Le(n,t,r),...i},(De(n,t).children||[]).map((s,c)=>ne(s,`${e}-${n.tag}-${c}`,t,void 0,r)))}function Le(n,e,t){const i={...n.attrs};t!=null&&t.colorChannel1&&i.fill==="colorChannel1"&&(i.fill=t.colorChannel1),n.tag==="mask"&&i.id&&(i.id=i.id+e.idSuffix),Object.entries(i).forEach(([s,c])=>{s==="mask"&&typeof c=="string"&&(i[s]=c.replace(/url\(#(.*)\)/,`url(#$1${e.idSuffix})`))});const{defIds:r}=e;return!r||r.length===0||(n.tag==="use"&&i["xlink:href"]&&(i["xlink:href"]=i["xlink:href"]+e.idSuffix),Object.entries(i).forEach(([s,c])=>{typeof c=="string"&&(i[s]=c.replace(/url\(#(.*)\)/,`url(#$1${e.idSuffix})`))})),i}function De(n,e){var i;const{defIds:t}=e;return!t||t.length===0?n:n.tag==="defs"&&((i=n.children)!=null&&i.length)?{...n,children:n.children.map(r=>typeof r.attrs.id=="string"&&t&&t.includes(r.attrs.id)?{...r,attrs:{...r.attrs,id:r.attrs.id+e.idSuffix}}:r)}:n}function we(){return Math.random().toString(36).substring(2,8)}U.displayName="UniverIcon";const Oe={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"}}]},te=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"copy-icon",ref:t,icon:Oe}))});te.displayName="CopyIcon";const Pe={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"}}]},B=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"link-icon",ref:t,icon:Pe}))});B.displayName="LinkIcon";const Ue={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"}}]},ie=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"unlink-icon",ref:t,icon:Ue}))});ie.displayName="UnlinkIcon";const Me={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"}}]},re=y.forwardRef(function(e,t){return y.createElement(U,Object.assign({},e,{id:"write-icon",ref:t,icon:Me}))});re.displayName="WriteIcon";const oe={type:o.CommandType.COMMAND,id:"docs.command.delete-hyper-link",async handler(n,e){if(!e)return!1;const{unitId:t,linkId:i,segmentId:r}=e,s=n.get(o.ICommandService),c=S.deleteCustomRangeFactory(n,{unitId:t,rangeId:i,segmentId:r});return c?await s.syncExecuteCommand(c.id,c.params):!1}},se=n=>{const e=n.get(S.DocSelectionManagerService),t=n.get(o.IUniverInstanceService),i=e.getTextRanges();if(!(i!=null&&i.length))return!0;const r=i[0];return!!(!t.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC)||!r||r.collapsed)},P={type:o.CommandType.OPERATION,id:"doc.operation.show-hyper-link-edit-popup",handler(n,e){var c;const t=e==null?void 0:e.link,i=n.get(o.IUniverInstanceService);if(se(n)&&!t)return!1;const r=n.get(k),s=(t==null?void 0:t.unitId)||((c=i.getCurrentUnitForType(o.UniverInstanceType.UNIVER_DOC))==null?void 0:c.getUnitId());return s?(r.showEditPopup(s,t),!0):!1}},F={type:o.CommandType.OPERATION,id:"doc.operation.toggle-hyper-link-info-popup",handler(n,e){const t=n.get(k);return e?(t.showInfoPopup(e),!0):(t.hideInfoPopup(),!0)}},ce={type:o.CommandType.OPERATION,id:"doc.operation.click-hyper-link",handler(n,e){var g,m,_;if(!e)return!1;const{unitId:t,linkId:i,segmentId:r}=e,c=n.get(o.IUniverInstanceService).getUnit(t,o.UniverInstanceType.UNIVER_DOC),d=c==null?void 0:c.getSelfOrHeaderFooterModel(r).getBody(),h=(_=(m=(g=d==null?void 0:d.customRanges)==null?void 0:g.find(f=>f.rangeId===i&&f.rangeType===o.CustomRangeType.HYPERLINK))==null?void 0:m.properties)==null?void 0:_.url;return h&&window.open(h,"_blank","noopener noreferrer"),!0}},T=()=>{var x,v;const n=p.useDependency(k),e=p.useDependency(o.ICommandService),t=p.useDependency(p.IMessageService),i=p.useDependency(o.LocaleService),r=p.useObservable(n.showingLink$),s=p.useDependency(o.IUniverInstanceService);if(!r)return null;const{unitId:c,linkId:d,segmentId:h,startIndex:g,endIndex:m}=r,_=s.getUnit(c,o.UniverInstanceType.UNIVER_DOC),f=_==null?void 0:_.getSelfOrHeaderFooterModel(h).getBody(),l=(x=f==null?void 0:f.customRanges)==null?void 0:x.find(L=>L.rangeId===d&&L.rangeType===o.CustomRangeType.HYPERLINK&&L.startIndex===g&&L.endIndex===m);if(!l)return null;const I=(v=l.properties)==null?void 0:v.url;return u.jsxs("div",{className:C.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",C.borderClassName),onClick:()=>{n.hideInfoPopup()},children:[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(I,void 0,"noopener noreferrer"),children:[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:u.jsx(B,{})}),u.jsx(C.Tooltip,{showIfEllipsis:!0,title:I,children:u.jsx("span",{className:"univer-flex-1 univer-truncate",children:I})})]}),u.jsxs("div",{className:"univer-flex univer-h-6 univer-flex-[0_0_auto] univer-items-center univer-justify-center",children:[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(I),t.show({content:i.t("docLink.info.coped"),type:C.MessageType.Info})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.copy"),children:u.jsx(te,{})})}),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:()=>{e.executeCommand(P.id,{link:r})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.edit"),children:u.jsx(re,{})})}),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:()=>{e.executeCommand(oe.id,{unitId:c,linkId:l.rangeId,segmentId:h})},children:u.jsx(C.Tooltip,{placement:"bottom",title:i.t("docLink.info.cancel"),children:u.jsx(ie,{})})})]})]})};T.componentKey="univer.doc.link-info-popup";var Ee=Object.getOwnPropertyDescriptor,be=(n,e,t,i)=>{for(var r=i>1?void 0:i?Ee(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},V=(n,e)=>(t,i)=>e(t,i,n);let k=class extends o.Disposable{constructor(e,t,i){super();D(this,"_editingLink$",new O.BehaviorSubject(null));D(this,"_showingLink$",new O.BehaviorSubject(null));D(this,"editingLink$",this._editingLink$.asObservable());D(this,"showingLink$",this._showingLink$.asObservable());D(this,"_editPopup",null);D(this,"_infoPopup",null);this._docCanvasPopupManagerService=e,this._textSelectionManagerService=t,this._univerInstanceService=i,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);const i=this._textSelectionManagerService.getTextRanges({unitId:e,subUnitId:e});let r=i==null?void 0:i[i.length-1];if(t){const{segmentId:s,segmentPage:c,startIndex:d,endIndex:h}=t;r={collapsed:!1,startOffset:d,endOffset:h+1,segmentId:s,segmentPage:c},this._textSelectionManagerService.replaceDocRanges([{startOffset:d,endOffset:h+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 g,m,_,f,l,I;const{linkId:t,unitId:i,segmentId:r,segmentPage:s,startIndex:c,endIndex:d}=e;if(!(((g=this.showing)==null?void 0:g.linkId)===t&&((m=this.showing)==null?void 0:m.unitId)===i&&((_=this.showing)==null?void 0:_.segmentId)===r&&((f=this.showing)==null?void 0:f.segmentPage)===s&&((l=this.showing)==null?void 0:l.startIndex)===c&&((I=this.showing)==null?void 0:I.endIndex)===d||(this._infoPopup&&this._infoPopup.dispose(),!this._univerInstanceService.getUnit(i,o.UniverInstanceType.UNIVER_DOC))))return this._showingLink$.next({unitId:i,linkId:t,segmentId:r,segmentPage:s,startIndex:c,endIndex:d}),this._infoPopup=this._docCanvasPopupManagerService.attachPopupToRange({collapsed:!1,startOffset:c,endOffset:d+1,segmentId:r,segmentPage:s},{componentKey:T.componentKey,direction:"top-center",multipleDirection:"top",onClickOutside:()=>{this.hideInfoPopup()}},i),this._infoPopup}hideInfoPopup(){var e;this._showingLink$.next(null),(e=this._infoPopup)==null||e.dispose()}};k=be([V(0,o.Inject(E.DocCanvasPopManagerService)),V(1,o.Inject(S.DocSelectionManagerService)),V(2,o.IUniverInstanceService)],k);var Te=Object.getOwnPropertyDescriptor,Re=(n,e,t,i)=>{for(var r=i>1?void 0:i?Te(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},Z=(n,e)=>(t,i)=>e(t,i,n);let R=class extends o.Disposable{constructor(n,e,t){super(),this._commandService=n,this._univerInstanceService=e,this._docHyperLinkService=t,this._initSelectionChange()}_initSelectionChange(){this.disposeWithMe(this._commandService.onCommandExecuted(n=>{var e,t,i;if(n.id===S.SetTextSelectionsOperation.id){const r=n.params,{unitId:s,ranges:c,segmentId:d}=r,h=this._univerInstanceService.getUnit(s,o.UniverInstanceType.UNIVER_DOC),g=c[0];if(g&&h){const{startOffset:m,endOffset:_,collapsed:f,segmentPage:l}=g,I=(t=(e=h.getSelfOrHeaderFooterModel(d))==null?void 0:e.getBody())==null?void 0:t.customRanges;if(f){const x=(i=I==null?void 0:I.findIndex(v=>v.startIndex<m&&v.endIndex>_-1))!=null?i:-1;if(x>-1){const v=I[x];this._docHyperLinkService.showInfoPopup({unitId:s,linkId:v.rangeId,segmentId:d,segmentPage:l,startIndex:v.startIndex,endIndex:v.endIndex});return}}else if(I==null?void 0:I.find(v=>v.startIndex<=m&&v.endIndex>=_-1))return}this._docHyperLinkService.hideInfoPopup(),this._docHyperLinkService.hideEditPopup()}}))}};R=Re([Z(0,o.ICommandService),Z(1,o.IUniverInstanceService),Z(2,o.Inject(k))],R);var Ne=Object.getOwnPropertyDescriptor,$e=(n,e,t,i)=>{for(var r=i>1?void 0:i?Ne(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},M=(n,e)=>(t,i)=>e(t,i,n);let Y=class extends o.Disposable{constructor(n,e,t,i,r,s){super(),this._context=n,this._docEventManagerService=e,this._commandService=t,this._hyperLinkPopupService=i,this._docSkeletonManagerService=r,this._docSelectionManagerService=s,!(this._context.unitId===o.DOCS_ZEN_EDITOR_UNIT_ID_KEY||this._context.unitId===o.DOCS_NORMAL_EDITOR_UNIT_ID_KEY)&&(this._initHover(),this._initClick())}get _skeleton(){return this._docSkeletonManagerService.getSkeleton()}_hideInfoPopup(){this._hyperLinkPopupService.showing&&this._commandService.executeCommand(F.id)}_initHover(){this.disposeWithMe(this._docEventManagerService.hoverCustomRanges$.subscribe(n=>{var r;const e=n.find(s=>s.range.rangeType===o.CustomRangeType.HYPERLINK),t=this._docSelectionManagerService.getTextRanges(),i=t==null?void 0:t[0].segmentId;if(((r=e==null?void 0:e.segmentId)!=null?r:"")!==i){this._hideInfoPopup();return}e?this._commandService.executeCommand(F.id,{unitId:this._context.unitId,linkId:e.range.rangeId,segmentId:e.segmentId,segmentPage:e.segmentPageIndex,rangeId:e.range.rangeId,startIndex:e.range.startIndex,endIndex:e.range.endIndex}):this._hideInfoPopup()}))}_initClick(){this.disposeWithMe(this._docEventManagerService.clickCustomRanges$.subscribe(n=>{const e=n.range;e&&this._commandService.executeCommand(ce.id,{unitId:this._context.unitId,linkId:e.rangeId,segmentId:n.segmentId})}))}};Y=$e([M(1,o.Inject(E.DocEventManagerService)),M(2,o.ICommandService),M(3,o.Inject(k)),M(4,o.Inject(S.DocSkeletonManagerService)),M(5,o.Inject(S.DocSelectionManagerService))],Y);var je=Object.getOwnPropertyDescriptor,He=(n,e,t,i)=>{for(var r=i>1?void 0:i?je(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},q=(n,e)=>(t,i)=>e(t,i,n);let W=class extends o.Disposable{constructor(n,e,t,i){super(),this._context=n,this._docInterceptorService=e,this._hyperLinkService=t,this._docRenderController=i,this._init(),this._initReRender()}_init(){this._docInterceptorService.intercept(S.DOC_INTERCEPTOR_POINT.CUSTOM_RANGE,{handler:(n,e,t)=>{if(!n)return t(n);const{unitId:i,index:r}=e,s=this._hyperLinkService.showing;if(!s)return t({...n,active:!1});const{linkId:c,unitId:d,startIndex:h,endIndex:g}=s,m=d===i&&n.rangeId===c&&r>=h&&r<=g;return t({...n,active:m})}})}_initReRender(){this.disposeWithMe(this._hyperLinkService.showingLink$.pipe(O.distinctUntilChanged((n,e)=>(n==null?void 0:n.linkId)===(e==null?void 0:e.linkId)&&(n==null?void 0:n.unitId)===(e==null?void 0:e.unitId)&&(n==null?void 0:n.startIndex)===(e==null?void 0:e.startIndex)),O.pairwise()).subscribe(([n,e])=>{e?e.unitId===this._context.unitId&&this._docRenderController.reRender(e.unitId):n&&n.unitId===this._context.unitId&&this._docRenderController.reRender(n.unitId)}))}};W=He([q(1,o.Inject(S.DocInterceptorService)),q(2,o.Inject(k)),q(3,o.Inject(E.DocRenderController))],W);const de="doc-hyper-link-icon";function ae(n){return{id:P.id,type:p.MenuItemType.BUTTON,icon:de,title:"docLink.menu.tooltip",tooltip:"docLink.menu.tooltip",hidden$:p.getMenuHiddenObservable(n,o.UniverInstanceType.UNIVER_DOC),disabled$:new O.Observable(function(e){const i=n.get(S.DocSelectionManagerService).textSelection$.pipe(O.debounceTime(16)).subscribe(()=>{e.next(se(n))});return()=>{i.unsubscribe()}})}}const Ke={id:P.id,binding:p.MetaKeys.CTRL_COMMAND|p.KeyCode.K,description:"docLink.menu.tooltip",preconditions:E.whenDocAndEditorFocused},Ae={[p.RibbonInsertGroup.MEDIA]:{[P.id]:{order:1,menuItemFactory:ae}},[p.ContextMenuPosition.MAIN_AREA]:{[p.ContextMenuGroup.DATA]:{[P.id]:{order:0,menuItemFactory:ae}}}};var Be=Object.getOwnPropertyDescriptor,Fe=(n,e,t,i)=>{for(var r=i>1?void 0:i?Be(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},N=(n,e)=>(t,i)=>e(t,i,n);let $=class extends o.Disposable{constructor(n,e,t,i){super(),this._componentManager=n,this._commandService=e,this._menuManagerService=t,this._shortcutService=i,this._initComponents(),this._initCommands(),this._initMenus(),this._initShortcut()}_initComponents(){[[b.componentKey,b],[T.componentKey,T],[de,B]].forEach(([n,e])=>{this.disposeWithMe(this._componentManager.register(n,e))})}_initCommands(){[X,ee,oe,P,F,ce].forEach(n=>{this._commandService.registerCommand(n)})}_initShortcut(){[Ke].forEach(n=>{this._shortcutService.registerShortcut(n)})}_initMenus(){this._menuManagerService.mergeMenu(Ae)}};$=Fe([N(0,o.Inject(p.ComponentManager)),N(1,o.ICommandService),N(2,p.IMenuManagerService),N(3,p.IShortcutService)],$);const Ve="DOC_HYPER_LINK_UI_PLUGIN";var Ze=Object.defineProperty,Ye=Object.getOwnPropertyDescriptor,qe=(n,e,t)=>e in n?Ze(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,We=(n,e,t,i)=>{for(var r=i>1?void 0:i?Ye(e,t):e,s=n.length-1,c;s>=0;s--)(c=n[s])&&(r=c(r)||r);return r},G=(n,e)=>(t,i)=>e(t,i,n),j=(n,e,t)=>qe(n,typeof e!="symbol"?e+"":e,t);a.UniverDocsHyperLinkUIPlugin=class extends o.Plugin{constructor(e=Q,t,i,r){super(),this._config=e,this._injector=t,this._renderManagerSrv=i,this._configService=r;const{menu:s,...c}=o.merge({},Q,this._config);s&&this._configService.setConfig("menu",s,{merge:!0}),this._configService.setConfig(ye,c)}onStarting(){[[k],[$],[R]].forEach(t=>{this._injector.add(t)}),this._injector.get($)}onReady(){this._injector.get(R)}onRendered(){this._initRenderModule()}_initRenderModule(){[[W],[Y]].forEach(e=>{this._renderManagerSrv.registerRenderModule(o.UniverInstanceType.UNIVER_DOC,e)})}},j(a.UniverDocsHyperLinkUIPlugin,"pluginName",Ve),j(a.UniverDocsHyperLinkUIPlugin,"packageName",J.name),j(a.UniverDocsHyperLinkUIPlugin,"version",J.version),j(a.UniverDocsHyperLinkUIPlugin,"type",o.UniverInstanceType.UNIVER_DOC),a.UniverDocsHyperLinkUIPlugin=We([o.DependentOn(w.UniverDocsHyperLinkPlugin),G(1,o.Inject(o.Injector)),G(2,_e.IRenderManagerService),G(3,o.IConfigService)],a.UniverDocsHyperLinkUIPlugin),Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-hyper-link-ui",
3
- "version": "0.16.1",
3
+ "version": "0.17.0",
4
4
  "private": false,
5
5
  "description": "Univer thread comment plugin",
6
6
  "author": "DreamNum <developer@univer.ai>",
@@ -53,23 +53,23 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@univerjs/icons": "^1.1.1",
56
- "@univerjs/design": "0.16.1",
57
- "@univerjs/docs": "0.16.1",
58
- "@univerjs/docs-hyper-link": "0.16.1",
59
- "@univerjs/core": "0.16.1",
60
- "@univerjs/docs-ui": "0.16.1",
61
- "@univerjs/engine-render": "0.16.1",
62
- "@univerjs/ui": "0.16.1"
56
+ "@univerjs/core": "0.17.0",
57
+ "@univerjs/design": "0.17.0",
58
+ "@univerjs/docs-hyper-link": "0.17.0",
59
+ "@univerjs/docs": "0.17.0",
60
+ "@univerjs/docs-ui": "0.17.0",
61
+ "@univerjs/engine-render": "0.17.0",
62
+ "@univerjs/ui": "0.17.0"
63
63
  },
64
64
  "devDependencies": {
65
- "postcss": "^8.5.6",
65
+ "postcss": "^8.5.8",
66
66
  "react": "18.3.1",
67
67
  "rxjs": "^7.8.2",
68
68
  "tailwindcss": "3.4.18",
69
69
  "typescript": "^5.9.3",
70
70
  "vite": "^7.3.1",
71
71
  "vitest": "^4.0.18",
72
- "@univerjs-infra/shared": "0.16.1"
72
+ "@univerjs-infra/shared": "0.17.0"
73
73
  },
74
74
  "scripts": {
75
75
  "test": "vitest run",
File without changes