@univerjs/sheets-hyper-link 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 -1
- package/lib/es/index.js +1 -1
- package/lib/index.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +8 -8
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/docs`),n=require(`@univerjs/sheets`),r=require(`rxjs`),i=require(`@univerjs/engine-formula`);function a(e){"@babel/helpers - typeof";return a=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},a(e)}function o(e,t){if(a(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(a(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function s(e){var t=o(e,`string`);return a(t)==`symbol`?t:t+``}function c(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(n,r){t(n,r,e)}}function u(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 d=class extends e.Disposable{constructor(e){super(),this._univerInstanceService=e,c(this,`_linkUpdate$`,new r.Subject),c(this,`linkUpdate$`,this._linkUpdate$.asObservable()),c(this,`_linkMap`,new Map),c(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(t,n){let r=this._linkMap.get(t);r||(r=new Map,this._linkMap.set(t,r));let i=r.get(n);i||(i=new e.ObjectMatrix,r.set(n,i));let a=this._linkPositionMap.get(t);a||(a=new Map,this._linkPositionMap.set(t,a));let o=a.get(n);return o||(o=new Map,a.set(n,o)),{matrix:i,positionMap:o}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(t,n,r,i){var a,o,s,c;let{matrix:l}=this._ensureMap(t,n),u=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET),d=u==null||(a=u.getSheetBySheetId(n))==null?void 0:a.getCellRaw(r,i),f=((o=(s=d==null?void 0:d.v)==null?d==null||(c=d.p)==null||(c=c.body)==null?void 0:c.dataStream.slice(0,-2):s)==null?``:o).toString(),p=l.getValue(r,i);if(p)return{...p,display:f}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};d=u([l(0,e.IUniverInstanceService)],d);const f={type:e.CommandType.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},p={type:e.CommandType.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},m={type:e.CommandType.COMMAND,id:`sheets.command.add-hyper-link`,async handler(t,r){if(!r)return!1;let i=t.get(e.ICommandService),a=t.get(e.IUndoRedoService),o=t.get(e.IUniverInstanceService),s=t.get(d),c=t.get(n.SheetInterceptorService),l=(0,n.getSheetCommandTarget)(o,r);if(!l)return!1;let{unitId:u,subUnitId:m,workbook:h,worksheet:g}=l,{link:_}=r,{payload:v,display:y,row:b,column:x,id:S}=_,C=g.getCell(b,x),w=g.getBlankCellDocumentModel(C,b,x),T=w.documentModel.getSnapshot(),E=e.Tools.deepClone(T.body);if(!E)return!1;let D;if(D=y?e.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:E.dataStream.length-2,collapsed:E.dataStream.length-2==0},body:{dataStream:`${y}`,customRanges:[{startIndex:0,endIndex:y.length-1,rangeType:e.CustomRangeType.HYPERLINK,rangeId:S,properties:{url:v}}]},doc:w.documentModel}):e.BuildTextUtils.customRange.add({body:E,ranges:[{startOffset:0,endOffset:E.dataStream.length-2,collapsed:!1}],rangeId:S,rangeType:e.CustomRangeType.HYPERLINK,properties:{url:v,refId:S}}),!D)return!1;let O=e.TextX.apply(E,D.serialize()),k={p:{...T,body:O},t:e.CellValueType.STRING},A=c.onWriteCell(h,g,b,x,k),j={unitId:u,subUnitId:m,cellValue:{[_.row]:{[_.column]:A}}},M={id:n.SetRangeValuesMutation.id,params:j},N=(0,n.SetRangeValuesUndoMutationFactory)(t,j),P={id:n.SetRangeValuesMutation.id,params:N},F=[M],I=[P],L=s.getHyperLinkByLocation(u,m,b,x);return L&&(F.push({id:p.id,params:{unitId:u,subUnitId:m,id:L.id}}),I.push({id:f.id,params:{unitId:u,subUnitId:m,link:L}})),await(0,e.sequenceExecute)(F,i)?await c.onValidateCell(h,g,b,x)===!1?((0,e.sequenceExecute)(I,i),!1):(a.pushUndoRedo({redoMutations:F,undoMutations:I,unitID:u}),!0):!1}},h={id:`sheets.command.add-rich-hyper-link`,type:e.CommandType.COMMAND,handler:async(n,r)=>{if(!r)return!1;let{documentId:i,link:a}=r,o=n.get(e.ICommandService),s=(0,e.generateRandomId)(),{payload:c}=a,l=(0,t.addCustomRangeBySelectionFactory)(n,{unitId:i,rangeId:s,rangeType:e.CustomRangeType.HYPERLINK,properties:{url:c,refId:s}});return l?o.syncExecuteCommand(l.id,l.params):!1}},g={type:e.CommandType.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(t,r){var i;if(!r)return!1;let a=t.get(e.ICommandService),o=t.get(e.IUndoRedoService),s=t.get(e.IUniverInstanceService),c=t.get(d),l=(0,n.getSheetCommandTarget)(s,r);if(!l)return!1;let{row:u,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=l,y=v.getCell(u,m);if(!y)return!1;let b=v.getCellDocumentModelWithFormula(y,u,m);if(!(b!=null&&b.documentModel))return!1;let x=e.Tools.deepClone(b.documentModel.getSnapshot()),S=(i=x.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!S)return!1;let C=e.BuildTextUtils.customRange.delete({documentDataModel:b.documentModel,rangeId:S.rangeId});if(!C)return!1;let w=e.TextX.apply(x.body,C.serialize()),T=[],E=[],D={unitId:g,subUnitId:_,cellValue:{[u]:{[m]:{p:{...x,body:w},t:e.CellValueType.STRING}}}};T.push({id:n.SetRangeValuesMutation.id,params:D});let O=(0,n.SetRangeValuesUndoMutationFactory)(t,D);E.push({id:n.SetRangeValuesMutation.id,params:O});let k=c.getHyperLinkByLocation(g,_,u,m);return k&&(T.push({id:p.id,params:{unitId:g,subUnitId:_,id:h}}),E.push({id:f.id,params:{unitId:g,subUnitId:_,link:{...k}}})),(0,e.sequenceExecute)(T,a).result?(o.pushUndoRedo({redoMutations:T,undoMutations:E,unitID:g}),!0):!1}},_={type:e.CommandType.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(n,r){var i;if(!r)return!1;let{id:a,documentId:o}=r,s=n.get(e.ICommandService),c=n.get(e.IUniverInstanceService).getUnit(o,e.UniverInstanceType.UNIVER_DOC),l=c==null||(i=c.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===a),u=null;l&&l.endIndex===c.getBody().dataStream.length-3&&(u={dataStream:` `});let d=(0,t.deleteCustomRangeFactory)(n,{unitId:o,rangeId:a,insert:u});return d?s.syncExecuteCommand(d.id,d.params):!1}},v={type:e.CommandType.COMMAND,id:`sheets.command.update-hyper-link`,async handler(r,i){var a,o;if(!i)return!1;let s=r.get(e.ICommandService),c=r.get(e.IUndoRedoService),l=r.get(e.IUniverInstanceService),u=r.get(d),m=r.get(n.SheetInterceptorService),h=(0,n.getSheetCommandTarget)(l,{unitId:i.unitId,subUnitId:i.subUnitId});if(!h)return!1;let{payload:g,row:_,column:v,id:y}=i,{workbook:b,worksheet:x,unitId:S,subUnitId:C}=h,{payload:w,display:T=``}=g,E=x.getCell(_,v);if(!E)return!1;let D=x.getCellDocumentModelWithFormula(E,_,v);if(!(D!=null&&D.documentModel))return!1;let O=D.documentModel.getSnapshot(),k=(a=O.body)==null||(a=a.customRanges)==null?void 0:a.find(e=>`${e.rangeId}`===y);if(!k)return!1;let A=(0,e.generateRandomId)(),j=(o=(0,e.getBodySlice)(D.documentModel.getBody(),k.startIndex,k.endIndex+1).textRuns)==null?void 0:o[0];j&&(j.ed=T.length+1);let M=(0,t.replaceSelectionFactory)(r,{unitId:S,body:{dataStream:`${T}`,customRanges:[{rangeId:A,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:T.length-1,properties:{url:w}}],textRuns:j?[j]:void 0},selection:{startOffset:k.startIndex,endOffset:k.endIndex+1,collapsed:!1},doc:D.documentModel});if(!M)return!1;let N=e.TextX.apply(e.Tools.deepClone(O.body),M.textX.serialize()),P={p:{...O,body:N},t:e.CellValueType.STRING},F=m.onWriteCell(b,x,_,v,P),I={id:n.SetRangeValuesMutation.id,params:{unitId:S,subUnitId:C,cellValue:{[_]:{[v]:F}}}},L=(0,n.SetRangeValuesUndoMutationFactory)(r,I.params),R={id:n.SetRangeValuesMutation.id,params:L},z=[I],B=[R],V=u.getHyperLinkByLocation(S,C,_,v);return V&&(z.push({id:p.id,params:{unitId:S,subUnitId:C,id:V.id}}),B.push({id:f.id,params:{unitId:S,subUnitId:C,link:V}})),(0,e.sequenceExecute)(z,s)?await m.onValidateCell(b,x,_,v)===!1?((0,e.sequenceExecute)(B,s),!1):(c.pushUndoRedo({redoMutations:z,undoMutations:B,unitID:S}),!0):!1}},y={type:e.CommandType.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(n,r)=>{var i,a,o;if(!r)return!1;let{documentId:s,payload:c,id:l}=r,u=n.get(e.IUniverInstanceService),d=n.get(e.ICommandService),f=u.getUnit(s,e.UniverInstanceType.UNIVER_DOC);if(!f)return!1;let p=(i=f.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===l);if(!p)return!1;let m=(a=r.payload.display)==null?``:a,h=(0,e.generateRandomId)(),g=(o=(0,e.getBodySlice)(f.getBody(),p.startIndex,p.endIndex+1).textRuns)==null?void 0:o[0];g&&(g.ed=m.length+1);let _=(0,t.replaceSelectionFactory)(n,{unitId:s,body:{dataStream:`${m}`,customRanges:[{rangeId:h,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:m.length-1,properties:{url:c.payload}}],textRuns:g?[g]:void 0},selection:{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},doc:f});return _?d.syncExecuteCommand(_.id,_.params):!1}},b={type:e.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},x={type:e.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},S={type:e.CommandType.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(t,r){var i;if(!r)return!1;let{unitId:a,subUnitId:o,row:s,col:c,id:l,url:u}=r,d=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService),{unitId:a,subUnitId:o});if(!d)return!1;let{worksheet:f}=d,p=f.getCellRaw(s,c),m=p==null||(i=p.p)==null||(i=i.body)==null||(i=i.customRanges)==null?void 0:i.find(t=>t.rangeType===e.CustomRangeType.HYPERLINK&&t.rangeId===l);return m&&(m.properties.url=u),!0}};var C=`@univerjs/sheets-hyper-link`,w=`0.18.0`;const T=`sheets-hyper-link.config`;Symbol(T);const E={},D=`SHEET_HYPER_LINK_PLUGIN`;let O=class extends e.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,c(this,`_disposableMap`,new Map),c(this,`_watchDisposableMap`,new Map),c(this,`_rangeDisableMap`,new Map),c(this,`_rangeWatcherMap`,new Map),c(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:x.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:x.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:p.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:f.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._disposableMap.set(i,this._refRangeService.registerRefRange(a,i=>{let o=(0,n.handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests)(a,i,{selectionManagerService:this._selectionManagerService}),s=Array.isArray(o)?o[0]:o;return s&&s.startColumn===a.startColumn&&s.startRow===a.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,r,s,!1)},e,t))}_watchPosition(t,n,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._watchDisposableMap.set(i,this._refRangeService.watchRange(t,n,a,(i,a)=>{let{redos:o}=this._handlePositionChange(t,n,r,a,!0);(0,e.sequenceExecuteAsync)(o,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(t,r,a,o=!1){if(a.startsWith(`#`)){var s,c,l;let u=new URLSearchParams(a.slice(1)),d={gid:(s=u.get(`gid`))==null?``:s,range:(c=u.get(`range`))==null?``:c,rangeid:(l=u.get(`rangeid`))==null?``:l};if(d.range&&d.gid){let s=d.gid,c=(0,i.deserializeRangeWithSheet)(d.range).range;(0,e.isValidRange)(c)&&d.range!==`err`&&(this._rangeDisableMap.set(r,this._refRangeService.registerRefRange(c,e=>{let o=(0,n.handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests)(c,e,{selectionManagerService:this._selectionManagerService});return o&&(0,i.serializeRange)(o)===(0,i.serializeRange)(c)?{redos:[],undos:[]}:{redos:[{id:b.id,params:{unitId:t,subUnitId:s,id:r,payload:{payload:`#gid=${s}&range=${o?(0,i.serializeRange)(o):`err`}`}}}],undos:[{id:b.id,params:{unitId:t,subUnitId:s,id:r,payload:{payload:a}}}]}},t,s)),o||this._rangeWatcherMap.set(r,this._refRangeService.watchRange(t,s,c,(e,n)=>{this._hyperLinkModel.updateHyperLink(t,s,r,{payload:`#gid=${s}&range=${n?(0,i.serializeRange)(n):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe((0,e.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};O=u([l(0,(0,e.Inject)(n.RefRangeService)),l(1,(0,e.Inject)(d)),l(2,(0,e.Inject)(n.SheetsSelectionsService)),l(3,e.ICommandService)],O);let k=class extends e.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.RemoveSheetCommand.id){var r;let n=t.params,i=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET);if(!i)return{redos:[],undos:[]};let a=i.getUnitId(),o=n.subUnitId||((r=i.getActiveSheet())==null?void 0:r.getSheetId());if(!o)return{redos:[],undos:[]};let s=this._hyperLinkModel.getSubUnit(a,o);return{redos:s.map(e=>({id:p.id,params:{unitId:a,subUnitId:o,id:e.id}})),undos:s.map(e=>({id:f.id,params:{unitId:a,subUnitId:o,link:e}}))}}return{redos:[],undos:[]}}}))}};k=u([l(0,(0,e.Inject)(n.SheetInterceptorService)),l(1,e.IUniverInstanceService),l(2,(0,e.Inject)(d))],k);let A=class extends e.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,c(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(t,n){let r=this._refRangeMap.get(t);r||(r=new Map,this._refRangeMap.set(t,r));let i=r.get(n);return i||(i=new e.ObjectMatrix,r.set(n,i)),i}_isLegalRangeUrl(t,n){let r=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);if(!r)return null;if(n&&n.startsWith(`#`)){var a,o,s;let t=new URLSearchParams(n.slice(1)),c={gid:(a=t.get(`gid`))==null?``:a,range:(o=t.get(`range`))==null?``:o,rangeid:(s=t.get(`rangeid`))==null?``:s};if(c.range&&c.gid){let t=c.gid,n=r.getSheetBySheetId(t);if(!n)return null;let a=(0,i.deserializeRangeWithSheet)(c.range).range;if((0,e.isValidRange)(a,n)&&c.range!==`err`)return{range:a,worksheet:n}}}return null}_registerRange(t,r,a,o,s){var c;let l=this._enusreMap(t,r);if(!((c=s.body)==null||(c=c.customRanges)==null)&&c.some(n=>{var r;return n.rangeType===e.CustomRangeType.HYPERLINK&&this._isLegalRangeUrl(t,(r=n.properties)==null?void 0:r.url)})){var u;let c=new e.DisposableCollection,d=!1;(u=s.body)==null||(u=u.customRanges)==null||u.forEach(s=>{if(s.rangeType===e.CustomRangeType.HYPERLINK){var l;let u=(l=s.properties)==null?void 0:l.url,f=this._isLegalRangeUrl(t,u);if(f){let{range:l,worksheet:p}=f;d=!0,c.add(this._refRangeService.registerRefRange(l,c=>{let d=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(l,c);return d&&e.Rectangle.equals(d,l)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:S.id,params:{unitId:t,subUnitId:r,row:a,col:o,id:s.rangeId,url:`#gid=${r}&range=${d?(0,i.serializeRange)(d):`err`}`}}],undos:[{id:S.id,params:{unitId:t,subUnitId:r,row:a,col:o,id:s.rangeId,url:u}}],redos:[]}},p.getUnitId(),p.getSheetId()))}}}),d&&l.setValue(a,o,c)}}_initWorkbookLoad(){let t=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(e.UniverInstanceType.UNIVER_SHEET).forEach(e=>{t(e)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(n=>{n.type===e.UniverInstanceType.UNIVER_SHEET&&t(n)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(t=>{if(t.type===e.UniverInstanceType.UNIVER_SHEET){let e=t,n=e.getUnitId();e.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===n.SetRangeValuesMutation.id){let{unitId:n,subUnitId:r,cellValue:i}=t.params,a=this._enusreMap(n,r);i&&new e.ObjectMatrix(i).forValue((e,t,i)=>{let o=a.getValue(e,t);o&&o.dispose(),i&&i.p&&this._registerRange(n,r,e,t,i.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===S.id){let{unitId:t,subUnitId:r,row:i,col:a}=e.params,o=(0,n.getSheetCommandTarget)(this._univerInstanceService,{unitId:t,subUnitId:r}),s=this._enusreMap(t,r).getValue(i,a);if(s&&s.dispose(),o){let{worksheet:e}=o,n=e.getCellRaw(i,a);n&&n.p&&this._registerRange(t,r,i,a,n.p)}}}))}};A=u([l(0,e.ICommandService),l(1,e.IUniverInstanceService),l(2,(0,e.Inject)(n.RefRangeService))],A);let j=class extends e.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.SetRangeValuesCommand.id){let n=t.params,{unitId:r,subUnitId:i}=n,a=[],o=[];return n.cellValue&&new e.ObjectMatrix(n.cellValue).forValue((e,t)=>{let n=this._hyperLinkModel.getHyperLinkByLocation(r,i,e,t);n&&(a.push({id:p.id,params:{unitId:r,subUnitId:i,id:n.id}}),o.push({id:f.id,params:{unitId:r,subUnitId:i,link:n}}))}),{undos:o,redos:a}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.ClearSelectionContentCommand.id||t.id===n.ClearSelectionAllCommand.id||t.id===n.ClearSelectionFormatCommand.id){let r=[],i=[],a=this._selectionManagerService.getCurrentLastSelection(),o=(0,n.getSheetCommandTarget)(this._univerInstanceService,t.params);if(a&&o){let{unitId:t,subUnitId:n}=o;e.Range.foreach(a.range,(e,a)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(t,n,e,a);o&&(r.push({id:p.id,params:{unitId:t,subUnitId:n,id:o.id}}),i.push({id:f.id,params:{unitId:t,subUnitId:n,link:o}}))})}return{redos:r,undos:i}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(n.AFTER_CELL_EDIT,{handler:(t,n,r)=>{if(!t||t.p)return r(t);if(typeof t.v==`string`&&e.Tools.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:i,subUnitId:a,row:o,col:s}=n,c=e.Tools.normalizeUrl(t.v),l=this._univerInstanceService.getUnit(i,e.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return r(t);let d=u.getBlankCellDocumentModel(t,o,s);if(!d.documentModel)return r(t);let f=e.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:(0,e.generateRandomId)(),rangeType:e.CustomRangeType.HYPERLINK,properties:{url:c}}]},doc:d.documentModel});if(!f)return r(t);let p=d.documentModel.getBody();return e.TextX.apply(p,f.serialize()),r({...t,p:{id:e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,body:p,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return r(t)}}))}};j=u([l(0,(0,e.Inject)(n.SheetInterceptorService)),l(1,(0,e.Inject)(d)),l(2,(0,e.Inject)(n.SheetsSelectionsService)),l(3,e.IUniverInstanceService)],j);let M=class extends e.Disposable{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let t=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},n=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:D,businesses:[e.UniverInstanceType.UNIVER_SHEET],toJson:e=>t(e),parseJson:e=>n(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};M=u([l(0,e.IResourceManagerService),l(1,(0,e.Inject)(d))],M);let N=class extends e.Disposable{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[m,v,g,y,_,h,f,b,p,x,S].forEach(e=>{this._commandService.registerCommand(e)})}};N=u([l(0,e.ICommandService)],N);let P=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),F=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${P.SHEET}=${t}${n?`&${typeof n==`string`?P.DEFINE_NAME:P.RANGE}=${typeof n==`string`?n:(0,i.serializeRange)(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:P.URL,name:e,url:e,searchObj:null}}_getURLName(t){var n;let{gid:r,range:a,rangeid:o,unitid:s}=t,c=s?this._univerInstanceService.getUnit(s,e.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),l={type:P.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!c)return l;let u=r?c.getSheetBySheetId(r):c.getActiveSheet(),d=(n=u==null?void 0:u.getName())==null?``:n;if(a){if(!u)return l;let t=(0,i.deserializeRangeWithSheet)(a).range;return(0,e.isValidRange)(t,u)&&a!==`err`?{type:P.RANGE,name:(0,i.serializeRangeWithSheet)(d,t)}:l}if(o){let e=this._definedNamesService.getValueById(c.getUnitId(),o);return e?{type:P.DEFINE_NAME,name:e.formulaOrRefString}:l}if(r){let e=c.getSheetBySheetId(r);return e?{type:P.SHEET,name:e.getName()}:l}return l}};F=u([l(0,e.IUniverInstanceService),l(1,(0,e.Inject)(e.LocaleService)),l(2,i.IDefinedNamesService)],F);let I=class extends e.Plugin{constructor(t=E,n,r){super(),this._config=t,this._injector=n,this._configService=r;let{...i}=(0,e.merge)({},E,this._config);this._configService.setConfig(T,i)}onStarting(){(0,e.registerDependencies)(this._injector,[[d],[F],[M],[N],[O],[j],[k],[A]]),(0,e.touchDependencies)(this._injector,[[O],[M],[N],[j],[k],[A]])}};c(I,`pluginName`,D),c(I,`packageName`,C),c(I,`version`,w),c(I,`type`,e.UniverInstanceType.UNIVER_SHEET),I=u([(0,e.DependentOn)(n.UniverSheetsPlugin),l(1,(0,e.Inject)(e.Injector)),l(2,e.IConfigService)],I),exports.AddHyperLinkCommand=m,exports.AddHyperLinkMutation=f,exports.AddRichHyperLinkCommand=h,exports.CancelHyperLinkCommand=g,exports.CancelRichHyperLinkCommand=_,exports.ERROR_RANGE=`err`,Object.defineProperty(exports,`HyperLinkModel`,{enumerable:!0,get:function(){return d}}),exports.RemoveHyperLinkMutation=p,exports.SheetHyperLinkType=P,Object.defineProperty(exports,`SheetsHyperLinkParserService`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`UniverSheetsHyperLinkPlugin`,{enumerable:!0,get:function(){return I}}),exports.UpdateHyperLinkCommand=v,exports.UpdateHyperLinkMutation=b,exports.UpdateHyperLinkRefMutation=x,exports.UpdateRichHyperLinkCommand=y;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/docs`),n=require(`@univerjs/sheets`),r=require(`rxjs`),i=require(`@univerjs/engine-formula`);function a(e){"@babel/helpers - typeof";return a=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},a(e)}function o(e,t){if(a(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(a(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function s(e){var t=o(e,`string`);return a(t)==`symbol`?t:t+``}function c(e,t,n){return(t=s(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(n,r){t(n,r,e)}}function u(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 d=class extends e.Disposable{constructor(e){super(),this._univerInstanceService=e,c(this,`_linkUpdate$`,new r.Subject),c(this,`linkUpdate$`,this._linkUpdate$.asObservable()),c(this,`_linkMap`,new Map),c(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(t,n){let r=this._linkMap.get(t);r||(r=new Map,this._linkMap.set(t,r));let i=r.get(n);i||(i=new e.ObjectMatrix,r.set(n,i));let a=this._linkPositionMap.get(t);a||(a=new Map,this._linkPositionMap.set(t,a));let o=a.get(n);return o||(o=new Map,a.set(n,o)),{matrix:i,positionMap:o}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(t,n,r,i){var a,o,s,c;let{matrix:l}=this._ensureMap(t,n),u=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET),d=u==null||(a=u.getSheetBySheetId(n))==null?void 0:a.getCellRaw(r,i),f=((o=(s=d==null?void 0:d.v)==null?d==null||(c=d.p)==null||(c=c.body)==null?void 0:c.dataStream.slice(0,-2):s)==null?``:o).toString(),p=l.getValue(r,i);if(p)return{...p,display:f}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};d=u([l(0,e.IUniverInstanceService)],d);const f={type:e.CommandType.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},p={type:e.CommandType.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},m={type:e.CommandType.COMMAND,id:`sheets.command.add-hyper-link`,async handler(t,r){if(!r)return!1;let i=t.get(e.ICommandService),a=t.get(e.IUndoRedoService),o=t.get(e.IUniverInstanceService),s=t.get(d),c=t.get(n.SheetInterceptorService),l=(0,n.getSheetCommandTarget)(o,r);if(!l)return!1;let{unitId:u,subUnitId:m,workbook:h,worksheet:g}=l,{link:_}=r,{payload:v,display:y,row:b,column:x,id:S}=_,C=g.getCell(b,x),w=g.getBlankCellDocumentModel(C,b,x),T=w.documentModel.getSnapshot(),E=e.Tools.deepClone(T.body);if(!E)return!1;let D;if(D=y?e.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:E.dataStream.length-2,collapsed:E.dataStream.length-2==0},body:{dataStream:`${y}`,customRanges:[{startIndex:0,endIndex:y.length-1,rangeType:e.CustomRangeType.HYPERLINK,rangeId:S,properties:{url:v}}]},doc:w.documentModel}):e.BuildTextUtils.customRange.add({body:E,ranges:[{startOffset:0,endOffset:E.dataStream.length-2,collapsed:!1}],rangeId:S,rangeType:e.CustomRangeType.HYPERLINK,properties:{url:v,refId:S}}),!D)return!1;let O=e.TextX.apply(E,D.serialize()),k={p:{...T,body:O},t:e.CellValueType.STRING},A=c.onWriteCell(h,g,b,x,k),j={unitId:u,subUnitId:m,cellValue:{[_.row]:{[_.column]:A}}},M={id:n.SetRangeValuesMutation.id,params:j},N=(0,n.SetRangeValuesUndoMutationFactory)(t,j),P={id:n.SetRangeValuesMutation.id,params:N},F=[M],I=[P],L=s.getHyperLinkByLocation(u,m,b,x);return L&&(F.push({id:p.id,params:{unitId:u,subUnitId:m,id:L.id}}),I.push({id:f.id,params:{unitId:u,subUnitId:m,link:L}})),await(0,e.sequenceExecute)(F,i)?await c.onValidateCell(h,g,b,x)===!1?((0,e.sequenceExecute)(I,i),!1):(a.pushUndoRedo({redoMutations:F,undoMutations:I,unitID:u}),!0):!1}},h={id:`sheets.command.add-rich-hyper-link`,type:e.CommandType.COMMAND,handler:async(n,r)=>{if(!r)return!1;let{documentId:i,link:a}=r,o=n.get(e.ICommandService),s=(0,e.generateRandomId)(),{payload:c}=a,l=(0,t.addCustomRangeBySelectionFactory)(n,{unitId:i,rangeId:s,rangeType:e.CustomRangeType.HYPERLINK,properties:{url:c,refId:s}});return l?o.syncExecuteCommand(l.id,l.params):!1}},g={type:e.CommandType.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(t,r){var i;if(!r)return!1;let a=t.get(e.ICommandService),o=t.get(e.IUndoRedoService),s=t.get(e.IUniverInstanceService),c=t.get(d),l=(0,n.getSheetCommandTarget)(s,r);if(!l)return!1;let{row:u,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=l,y=v.getCell(u,m);if(!y)return!1;let b=v.getCellDocumentModelWithFormula(y,u,m);if(!(b!=null&&b.documentModel))return!1;let x=e.Tools.deepClone(b.documentModel.getSnapshot()),S=(i=x.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!S)return!1;let C=e.BuildTextUtils.customRange.delete({documentDataModel:b.documentModel,rangeId:S.rangeId});if(!C)return!1;let w=e.TextX.apply(x.body,C.serialize()),T=[],E=[],D={unitId:g,subUnitId:_,cellValue:{[u]:{[m]:{p:{...x,body:w},t:e.CellValueType.STRING}}}};T.push({id:n.SetRangeValuesMutation.id,params:D});let O=(0,n.SetRangeValuesUndoMutationFactory)(t,D);E.push({id:n.SetRangeValuesMutation.id,params:O});let k=c.getHyperLinkByLocation(g,_,u,m);return k&&(T.push({id:p.id,params:{unitId:g,subUnitId:_,id:h}}),E.push({id:f.id,params:{unitId:g,subUnitId:_,link:{...k}}})),(0,e.sequenceExecute)(T,a).result?(o.pushUndoRedo({redoMutations:T,undoMutations:E,unitID:g}),!0):!1}},_={type:e.CommandType.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(n,r){var i;if(!r)return!1;let{id:a,documentId:o}=r,s=n.get(e.ICommandService),c=n.get(e.IUniverInstanceService).getUnit(o,e.UniverInstanceType.UNIVER_DOC),l=c==null||(i=c.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===a),u=null;l&&l.endIndex===c.getBody().dataStream.length-3&&(u={dataStream:` `});let d=(0,t.deleteCustomRangeFactory)(n,{unitId:o,rangeId:a,insert:u});return d?s.syncExecuteCommand(d.id,d.params):!1}},v={type:e.CommandType.COMMAND,id:`sheets.command.update-hyper-link`,async handler(r,i){var a,o;if(!i)return!1;let s=r.get(e.ICommandService),c=r.get(e.IUndoRedoService),l=r.get(e.IUniverInstanceService),u=r.get(d),m=r.get(n.SheetInterceptorService),h=(0,n.getSheetCommandTarget)(l,{unitId:i.unitId,subUnitId:i.subUnitId});if(!h)return!1;let{payload:g,row:_,column:v,id:y}=i,{workbook:b,worksheet:x,unitId:S,subUnitId:C}=h,{payload:w,display:T=``}=g,E=x.getCell(_,v);if(!E)return!1;let D=x.getCellDocumentModelWithFormula(E,_,v);if(!(D!=null&&D.documentModel))return!1;let O=D.documentModel.getSnapshot(),k=(a=O.body)==null||(a=a.customRanges)==null?void 0:a.find(e=>`${e.rangeId}`===y);if(!k)return!1;let A=(0,e.generateRandomId)(),j=(o=(0,e.getBodySlice)(D.documentModel.getBody(),k.startIndex,k.endIndex+1).textRuns)==null?void 0:o[0];j&&(j.ed=T.length+1);let M=(0,t.replaceSelectionFactory)(r,{unitId:S,body:{dataStream:`${T}`,customRanges:[{rangeId:A,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:T.length-1,properties:{url:w}}],textRuns:j?[j]:void 0},selection:{startOffset:k.startIndex,endOffset:k.endIndex+1,collapsed:!1},doc:D.documentModel});if(!M)return!1;let N=e.TextX.apply(e.Tools.deepClone(O.body),M.textX.serialize()),P={p:{...O,body:N},t:e.CellValueType.STRING},F=m.onWriteCell(b,x,_,v,P),I={id:n.SetRangeValuesMutation.id,params:{unitId:S,subUnitId:C,cellValue:{[_]:{[v]:F}}}},L=(0,n.SetRangeValuesUndoMutationFactory)(r,I.params),R={id:n.SetRangeValuesMutation.id,params:L},z=[I],B=[R],V=u.getHyperLinkByLocation(S,C,_,v);return V&&(z.push({id:p.id,params:{unitId:S,subUnitId:C,id:V.id}}),B.push({id:f.id,params:{unitId:S,subUnitId:C,link:V}})),(0,e.sequenceExecute)(z,s)?await m.onValidateCell(b,x,_,v)===!1?((0,e.sequenceExecute)(B,s),!1):(c.pushUndoRedo({redoMutations:z,undoMutations:B,unitID:S}),!0):!1}},y={type:e.CommandType.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(n,r)=>{var i,a,o;if(!r)return!1;let{documentId:s,payload:c,id:l}=r,u=n.get(e.IUniverInstanceService),d=n.get(e.ICommandService),f=u.getUnit(s,e.UniverInstanceType.UNIVER_DOC);if(!f)return!1;let p=(i=f.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===l);if(!p)return!1;let m=(a=r.payload.display)==null?``:a,h=(0,e.generateRandomId)(),g=(o=(0,e.getBodySlice)(f.getBody(),p.startIndex,p.endIndex+1).textRuns)==null?void 0:o[0];g&&(g.ed=m.length+1);let _=(0,t.replaceSelectionFactory)(n,{unitId:s,body:{dataStream:`${m}`,customRanges:[{rangeId:h,rangeType:e.CustomRangeType.HYPERLINK,startIndex:0,endIndex:m.length-1,properties:{url:c.payload}}],textRuns:g?[g]:void 0},selection:{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},doc:f});return _?d.syncExecuteCommand(_.id,_.params):!1}},b={type:e.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},x={type:e.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(d),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},S={type:e.CommandType.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(t,r){var i;if(!r)return!1;let{unitId:a,subUnitId:o,row:s,col:c,id:l,url:u}=r,d=(0,n.getSheetCommandTarget)(t.get(e.IUniverInstanceService),{unitId:a,subUnitId:o});if(!d)return!1;let{worksheet:f}=d,p=f.getCellRaw(s,c),m=p==null||(i=p.p)==null||(i=i.body)==null||(i=i.customRanges)==null?void 0:i.find(t=>t.rangeType===e.CustomRangeType.HYPERLINK&&t.rangeId===l);return m&&(m.properties.url=u),!0}};var C=`@univerjs/sheets-hyper-link`,w=`0.19.0`;const T=`sheets-hyper-link.config`;Symbol(T);const E={},D=`SHEET_HYPER_LINK_PLUGIN`;let O=class extends e.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,c(this,`_disposableMap`,new Map),c(this,`_watchDisposableMap`,new Map),c(this,`_rangeDisableMap`,new Map),c(this,`_rangeWatcherMap`,new Map),c(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:x.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:x.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:p.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:f.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._disposableMap.set(i,this._refRangeService.registerRefRange(a,i=>{let o=(0,n.handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests)(a,i,{selectionManagerService:this._selectionManagerService}),s=Array.isArray(o)?o[0]:o;return s&&s.startColumn===a.startColumn&&s.startRow===a.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,r,s,!1)},e,t))}_watchPosition(t,n,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._watchDisposableMap.set(i,this._refRangeService.watchRange(t,n,a,(i,a)=>{let{redos:o}=this._handlePositionChange(t,n,r,a,!0);(0,e.sequenceExecuteAsync)(o,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(t,r,a,o=!1){if(a.startsWith(`#`)){var s,c,l;let u=new URLSearchParams(a.slice(1)),d={gid:(s=u.get(`gid`))==null?``:s,range:(c=u.get(`range`))==null?``:c,rangeid:(l=u.get(`rangeid`))==null?``:l};if(d.range&&d.gid){let s=d.gid,c=(0,i.deserializeRangeWithSheet)(d.range).range;(0,e.isValidRange)(c)&&d.range!==`err`&&(this._rangeDisableMap.set(r,this._refRangeService.registerRefRange(c,e=>{let o=(0,n.handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests)(c,e,{selectionManagerService:this._selectionManagerService});return o&&(0,i.serializeRange)(o)===(0,i.serializeRange)(c)?{redos:[],undos:[]}:{redos:[{id:b.id,params:{unitId:t,subUnitId:s,id:r,payload:{payload:`#gid=${s}&range=${o?(0,i.serializeRange)(o):`err`}`}}}],undos:[{id:b.id,params:{unitId:t,subUnitId:s,id:r,payload:{payload:a}}}]}},t,s)),o||this._rangeWatcherMap.set(r,this._refRangeService.watchRange(t,s,c,(e,n)=>{this._hyperLinkModel.updateHyperLink(t,s,r,{payload:`#gid=${s}&range=${n?(0,i.serializeRange)(n):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe((0,e.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};O=u([l(0,(0,e.Inject)(n.RefRangeService)),l(1,(0,e.Inject)(d)),l(2,(0,e.Inject)(n.SheetsSelectionsService)),l(3,e.ICommandService)],O);let k=class extends e.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.RemoveSheetCommand.id){var r;let n=t.params,i=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET);if(!i)return{redos:[],undos:[]};let a=i.getUnitId(),o=n.subUnitId||((r=i.getActiveSheet())==null?void 0:r.getSheetId());if(!o)return{redos:[],undos:[]};let s=this._hyperLinkModel.getSubUnit(a,o);return{redos:s.map(e=>({id:p.id,params:{unitId:a,subUnitId:o,id:e.id}})),undos:s.map(e=>({id:f.id,params:{unitId:a,subUnitId:o,link:e}}))}}return{redos:[],undos:[]}}}))}};k=u([l(0,(0,e.Inject)(n.SheetInterceptorService)),l(1,e.IUniverInstanceService),l(2,(0,e.Inject)(d))],k);let A=class extends e.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,c(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(t,n){let r=this._refRangeMap.get(t);r||(r=new Map,this._refRangeMap.set(t,r));let i=r.get(n);return i||(i=new e.ObjectMatrix,r.set(n,i)),i}_isLegalRangeUrl(t,n){let r=this._univerInstanceService.getUnit(t,e.UniverInstanceType.UNIVER_SHEET);if(!r)return null;if(n&&n.startsWith(`#`)){var a,o,s;let t=new URLSearchParams(n.slice(1)),c={gid:(a=t.get(`gid`))==null?``:a,range:(o=t.get(`range`))==null?``:o,rangeid:(s=t.get(`rangeid`))==null?``:s};if(c.range&&c.gid){let t=c.gid,n=r.getSheetBySheetId(t);if(!n)return null;let a=(0,i.deserializeRangeWithSheet)(c.range).range;if((0,e.isValidRange)(a,n)&&c.range!==`err`)return{range:a,worksheet:n}}}return null}_registerRange(t,r,a,o,s){var c;let l=this._enusreMap(t,r);if(!((c=s.body)==null||(c=c.customRanges)==null)&&c.some(n=>{var r;return n.rangeType===e.CustomRangeType.HYPERLINK&&this._isLegalRangeUrl(t,(r=n.properties)==null?void 0:r.url)})){var u;let c=new e.DisposableCollection,d=!1;(u=s.body)==null||(u=u.customRanges)==null||u.forEach(s=>{if(s.rangeType===e.CustomRangeType.HYPERLINK){var l;let u=(l=s.properties)==null?void 0:l.url,f=this._isLegalRangeUrl(t,u);if(f){let{range:l,worksheet:p}=f;d=!0,c.add(this._refRangeService.registerRefRange(l,c=>{let d=(0,n.handleDefaultRangeChangeWithEffectRefCommands)(l,c);return d&&e.Rectangle.equals(d,l)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:S.id,params:{unitId:t,subUnitId:r,row:a,col:o,id:s.rangeId,url:`#gid=${r}&range=${d?(0,i.serializeRange)(d):`err`}`}}],undos:[{id:S.id,params:{unitId:t,subUnitId:r,row:a,col:o,id:s.rangeId,url:u}}],redos:[]}},p.getUnitId(),p.getSheetId()))}}}),d&&l.setValue(a,o,c)}}_initWorkbookLoad(){let t=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(e.UniverInstanceType.UNIVER_SHEET).forEach(e=>{t(e)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(n=>{n.type===e.UniverInstanceType.UNIVER_SHEET&&t(n)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(t=>{if(t.type===e.UniverInstanceType.UNIVER_SHEET){let e=t,n=e.getUnitId();e.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(t=>{if(t.id===n.SetRangeValuesMutation.id){let{unitId:n,subUnitId:r,cellValue:i}=t.params,a=this._enusreMap(n,r);i&&new e.ObjectMatrix(i).forValue((e,t,i)=>{let o=a.getValue(e,t);o&&o.dispose(),i&&i.p&&this._registerRange(n,r,e,t,i.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===S.id){let{unitId:t,subUnitId:r,row:i,col:a}=e.params,o=(0,n.getSheetCommandTarget)(this._univerInstanceService,{unitId:t,subUnitId:r}),s=this._enusreMap(t,r).getValue(i,a);if(s&&s.dispose(),o){let{worksheet:e}=o,n=e.getCellRaw(i,a);n&&n.p&&this._registerRange(t,r,i,a,n.p)}}}))}};A=u([l(0,e.ICommandService),l(1,e.IUniverInstanceService),l(2,(0,e.Inject)(n.RefRangeService))],A);let j=class extends e.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.SetRangeValuesCommand.id){let n=t.params,{unitId:r,subUnitId:i}=n,a=[],o=[];return n.cellValue&&new e.ObjectMatrix(n.cellValue).forValue((e,t)=>{let n=this._hyperLinkModel.getHyperLinkByLocation(r,i,e,t);n&&(a.push({id:p.id,params:{unitId:r,subUnitId:i,id:n.id}}),o.push({id:f.id,params:{unitId:r,subUnitId:i,link:n}}))}),{undos:o,redos:a}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:t=>{if(t.id===n.ClearSelectionContentCommand.id||t.id===n.ClearSelectionAllCommand.id||t.id===n.ClearSelectionFormatCommand.id){let r=[],i=[],a=this._selectionManagerService.getCurrentLastSelection(),o=(0,n.getSheetCommandTarget)(this._univerInstanceService,t.params);if(a&&o){let{unitId:t,subUnitId:n}=o;e.Range.foreach(a.range,(e,a)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(t,n,e,a);o&&(r.push({id:p.id,params:{unitId:t,subUnitId:n,id:o.id}}),i.push({id:f.id,params:{unitId:t,subUnitId:n,link:o}}))})}return{redos:r,undos:i}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(n.AFTER_CELL_EDIT,{handler:(t,n,r)=>{if(!t||t.p)return r(t);if(typeof t.v==`string`&&e.Tools.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:i,subUnitId:a,row:o,col:s}=n,c=e.Tools.normalizeUrl(t.v),l=this._univerInstanceService.getUnit(i,e.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return r(t);let d=u.getBlankCellDocumentModel(t,o,s);if(!d.documentModel)return r(t);let f=e.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:(0,e.generateRandomId)(),rangeType:e.CustomRangeType.HYPERLINK,properties:{url:c}}]},doc:d.documentModel});if(!f)return r(t);let p=d.documentModel.getBody();return e.TextX.apply(p,f.serialize()),r({...t,p:{id:e.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,body:p,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return r(t)}}))}};j=u([l(0,(0,e.Inject)(n.SheetInterceptorService)),l(1,(0,e.Inject)(d)),l(2,(0,e.Inject)(n.SheetsSelectionsService)),l(3,e.IUniverInstanceService)],j);let M=class extends e.Disposable{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let t=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},n=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:D,businesses:[e.UniverInstanceType.UNIVER_SHEET],toJson:e=>t(e),parseJson:e=>n(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};M=u([l(0,e.IResourceManagerService),l(1,(0,e.Inject)(d))],M);let N=class extends e.Disposable{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[m,v,g,y,_,h,f,b,p,x,S].forEach(e=>{this._commandService.registerCommand(e)})}};N=u([l(0,e.ICommandService)],N);let P=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),F=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${P.SHEET}=${t}${n?`&${typeof n==`string`?P.DEFINE_NAME:P.RANGE}=${typeof n==`string`?n:(0,i.serializeRange)(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:P.URL,name:e,url:e,searchObj:null}}_getURLName(t){var n;let{gid:r,range:a,rangeid:o,unitid:s}=t,c=s?this._univerInstanceService.getUnit(s,e.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(e.UniverInstanceType.UNIVER_SHEET),l={type:P.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!c)return l;let u=r?c.getSheetBySheetId(r):c.getActiveSheet(),d=(n=u==null?void 0:u.getName())==null?``:n;if(a){if(!u)return l;let t=(0,i.deserializeRangeWithSheet)(a).range;return(0,e.isValidRange)(t,u)&&a!==`err`?{type:P.RANGE,name:(0,i.serializeRangeWithSheet)(d,t)}:l}if(o){let e=this._definedNamesService.getValueById(c.getUnitId(),o);return e?{type:P.DEFINE_NAME,name:e.formulaOrRefString}:l}if(r){let e=c.getSheetBySheetId(r);return e?{type:P.SHEET,name:e.getName()}:l}return l}};F=u([l(0,e.IUniverInstanceService),l(1,(0,e.Inject)(e.LocaleService)),l(2,i.IDefinedNamesService)],F);let I=class extends e.Plugin{constructor(t=E,n,r){super(),this._config=t,this._injector=n,this._configService=r;let{...i}=(0,e.merge)({},E,this._config);this._configService.setConfig(T,i)}onStarting(){(0,e.registerDependencies)(this._injector,[[d],[F],[M],[N],[O],[j],[k],[A]]),(0,e.touchDependencies)(this._injector,[[O],[M],[N],[j],[k],[A]])}};c(I,`pluginName`,D),c(I,`packageName`,C),c(I,`version`,w),c(I,`type`,e.UniverInstanceType.UNIVER_SHEET),I=u([(0,e.DependentOn)(n.UniverSheetsPlugin),l(1,(0,e.Inject)(e.Injector)),l(2,e.IConfigService)],I),exports.AddHyperLinkCommand=m,exports.AddHyperLinkMutation=f,exports.AddRichHyperLinkCommand=h,exports.CancelHyperLinkCommand=g,exports.CancelRichHyperLinkCommand=_,exports.ERROR_RANGE=`err`,Object.defineProperty(exports,`HyperLinkModel`,{enumerable:!0,get:function(){return d}}),exports.RemoveHyperLinkMutation=p,exports.SheetHyperLinkType=P,Object.defineProperty(exports,`SheetsHyperLinkParserService`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`UniverSheetsHyperLinkPlugin`,{enumerable:!0,get:function(){return I}}),exports.UpdateHyperLinkCommand=v,exports.UpdateHyperLinkMutation=b,exports.UpdateHyperLinkRefMutation=x,exports.UpdateRichHyperLinkCommand=y;
|
package/lib/es/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{BuildTextUtils as e,CellValueType as t,CommandType as n,CustomRangeType as r,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,DisposableCollection as s,ICommandService as c,IConfigService as l,IResourceManagerService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LocaleService as h,ObjectMatrix as g,Plugin as _,Range as v,Rectangle as y,TextX as b,Tools as x,UniverInstanceType as S,generateRandomId as C,getBodySlice as w,isValidRange as T,merge as E,registerDependencies as D,sequenceExecute as O,sequenceExecuteAsync as k,toDisposable as A,touchDependencies as j}from"@univerjs/core";import{addCustomRangeBySelectionFactory as M,deleteCustomRangeFactory as N,replaceSelectionFactory as ee}from"@univerjs/docs";import{AFTER_CELL_EDIT as P,ClearSelectionAllCommand as F,ClearSelectionContentCommand as I,ClearSelectionFormatCommand as te,RefRangeService as L,RemoveSheetCommand as R,SetRangeValuesCommand as z,SetRangeValuesMutation as B,SetRangeValuesUndoMutationFactory as ne,SheetInterceptorService as re,SheetsSelectionsService as ie,UniverSheetsPlugin as ae,getSheetCommandTarget as V,handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests as oe,handleDefaultRangeChangeWithEffectRefCommands as H,handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests as se}from"@univerjs/sheets";import{Subject as ce}from"rxjs";import{IDefinedNamesService as le,deserializeRangeWithSheet as ue,serializeRange as U,serializeRangeWithSheet as de}from"@univerjs/engine-formula";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 fe(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 pe(e){var t=fe(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=pe(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){super(),this._univerInstanceService=e,G(this,`_linkUpdate$`,new ce),G(this,`linkUpdate$`,this._linkUpdate$.asObservable()),G(this,`_linkMap`,new Map),G(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,t){let n=this._linkMap.get(e);n||(n=new Map,this._linkMap.set(e,n));let r=n.get(t);r||(r=new g,n.set(t,r));let i=this._linkPositionMap.get(e);i||(i=new Map,this._linkPositionMap.set(e,i));let a=i.get(t);return a||(a=new Map,i.set(t,a)),{matrix:r,positionMap:a}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,t,n,r){var i,a,o,s;let{matrix:c}=this._ensureMap(e,t),l=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET),u=l==null||(i=l.getSheetBySheetId(t))==null?void 0:i.getCellRaw(n,r),d=((a=(o=u==null?void 0:u.v)==null?u==null||(s=u.p)==null||(s=s.body)==null?void 0:s.dataStream.slice(0,-2):o)==null?``:a).toString(),f=c.getValue(n,r);if(f)return{...f,display:d}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};J=q([K(0,f)],J);const Y={type:n.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},X={type:n.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},me={type:n.COMMAND,id:`sheets.command.add-hyper-link`,async handler(n,i){if(!i)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=n.get(re),p=V(s,i);if(!p)return!1;let{unitId:m,subUnitId:h,workbook:g,worksheet:_}=p,{link:v}=i,{payload:y,display:S,row:C,column:w,id:T}=v,E=_.getCell(C,w),D=_.getBlankCellDocumentModel(E,C,w),k=D.documentModel.getSnapshot(),A=x.deepClone(k.body);if(!A)return!1;let j;if(j=S?e.selection.replace({selection:{startOffset:0,endOffset:A.dataStream.length-2,collapsed:A.dataStream.length-2==0},body:{dataStream:`${S}`,customRanges:[{startIndex:0,endIndex:S.length-1,rangeType:r.HYPERLINK,rangeId:T,properties:{url:y}}]},doc:D.documentModel}):e.customRange.add({body:A,ranges:[{startOffset:0,endOffset:A.dataStream.length-2,collapsed:!1}],rangeId:T,rangeType:r.HYPERLINK,properties:{url:y,refId:T}}),!j)return!1;let M=b.apply(A,j.serialize()),N={p:{...k,body:M},t:t.STRING},ee=u.onWriteCell(g,_,C,w,N),P={unitId:m,subUnitId:h,cellValue:{[v.row]:{[v.column]:ee}}},F={id:B.id,params:P},I=ne(n,P),te={id:B.id,params:I},L=[F],R=[te],z=l.getHyperLinkByLocation(m,h,C,w);return z&&(L.push({id:X.id,params:{unitId:m,subUnitId:h,id:z.id}}),R.push({id:Y.id,params:{unitId:m,subUnitId:h,link:z}})),await O(L,a)?await u.onValidateCell(g,_,C,w)===!1?(O(R,a),!1):(o.pushUndoRedo({redoMutations:L,undoMutations:R,unitID:m}),!0):!1}},he={id:`sheets.command.add-rich-hyper-link`,type:n.COMMAND,handler:async(e,t)=>{if(!t)return!1;let{documentId:n,link:i}=t,a=e.get(c),o=C(),{payload:s}=i,l=M(e,{unitId:n,rangeId:o,rangeType:r.HYPERLINK,properties:{url:s,refId:o}});return l?a.syncExecuteCommand(l.id,l.params):!1}},ge={type:n.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(n,r){var i;if(!r)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=V(s,r);if(!u)return!1;let{row:p,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=u,y=v.getCell(p,m);if(!y)return!1;let S=v.getCellDocumentModelWithFormula(y,p,m);if(!(S!=null&&S.documentModel))return!1;let C=x.deepClone(S.documentModel.getSnapshot()),w=(i=C.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!w)return!1;let T=e.customRange.delete({documentDataModel:S.documentModel,rangeId:w.rangeId});if(!T)return!1;let E=b.apply(C.body,T.serialize()),D=[],k=[],A={unitId:g,subUnitId:_,cellValue:{[p]:{[m]:{p:{...C,body:E},t:t.STRING}}}};D.push({id:B.id,params:A});let j=ne(n,A);k.push({id:B.id,params:j});let M=l.getHyperLinkByLocation(g,_,p,m);return M&&(D.push({id:X.id,params:{unitId:g,subUnitId:_,id:h}}),k.push({id:Y.id,params:{unitId:g,subUnitId:_,link:{...M}}})),O(D,a).result?(o.pushUndoRedo({redoMutations:D,undoMutations:k,unitID:g}),!0):!1}},_e={type:n.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{id:r,documentId:i}=t,a=e.get(c),o=e.get(f).getUnit(i,S.UNIVER_DOC),s=o==null||(n=o.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===r),l=null;s&&s.endIndex===o.getBody().dataStream.length-3&&(l={dataStream:` `});let u=N(e,{unitId:i,rangeId:r,insert:l});return u?a.syncExecuteCommand(u.id,u.params):!1}},ve={type:n.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,n){var i,a;if(!n)return!1;let o=e.get(c),s=e.get(d),l=e.get(f),u=e.get(J),p=e.get(re),m=V(l,{unitId:n.unitId,subUnitId:n.subUnitId});if(!m)return!1;let{payload:h,row:g,column:_,id:v}=n,{workbook:y,worksheet:S,unitId:T,subUnitId:E}=m,{payload:D,display:k=``}=h,A=S.getCell(g,_);if(!A)return!1;let j=S.getCellDocumentModelWithFormula(A,g,_);if(!(j!=null&&j.documentModel))return!1;let M=j.documentModel.getSnapshot(),N=(i=M.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===v);if(!N)return!1;let P=C(),F=(a=w(j.documentModel.getBody(),N.startIndex,N.endIndex+1).textRuns)==null?void 0:a[0];F&&(F.ed=k.length+1);let I=ee(e,{unitId:T,body:{dataStream:`${k}`,customRanges:[{rangeId:P,rangeType:r.HYPERLINK,startIndex:0,endIndex:k.length-1,properties:{url:D}}],textRuns:F?[F]:void 0},selection:{startOffset:N.startIndex,endOffset:N.endIndex+1,collapsed:!1},doc:j.documentModel});if(!I)return!1;let te=b.apply(x.deepClone(M.body),I.textX.serialize()),L={p:{...M,body:te},t:t.STRING},R=p.onWriteCell(y,S,g,_,L),z={id:B.id,params:{unitId:T,subUnitId:E,cellValue:{[g]:{[_]:R}}}},ie=ne(e,z.params),ae={id:B.id,params:ie},oe=[z],H=[ae],se=u.getHyperLinkByLocation(T,E,g,_);return se&&(oe.push({id:X.id,params:{unitId:T,subUnitId:E,id:se.id}}),H.push({id:Y.id,params:{unitId:T,subUnitId:E,link:se}})),O(oe,o)?await p.onValidateCell(y,S,g,_)===!1?(O(H,o),!1):(s.pushUndoRedo({redoMutations:oe,undoMutations:H,unitID:T}),!0):!1}},ye={type:n.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,t)=>{var n,i,a;if(!t)return!1;let{documentId:o,payload:s,id:l}=t,u=e.get(f),d=e.get(c),p=u.getUnit(o,S.UNIVER_DOC);if(!p)return!1;let m=(n=p.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===l);if(!m)return!1;let h=(i=t.payload.display)==null?``:i,g=C(),_=(a=w(p.getBody(),m.startIndex,m.endIndex+1).textRuns)==null?void 0:a[0];_&&(_.ed=h.length+1);let v=ee(e,{unitId:o,body:{dataStream:`${h}`,customRanges:[{rangeId:g,rangeType:r.HYPERLINK,startIndex:0,endIndex:h.length-1,properties:{url:s.payload}}],textRuns:_?[_]:void 0},selection:{startOffset:m.startIndex,endOffset:m.endIndex+1,collapsed:!1},doc:p});return v?d.syncExecuteCommand(v.id,v.params):!1}},be={type:n.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},xe={type:n.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},Se={type:n.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{unitId:i,subUnitId:a,row:o,col:s,id:c,url:l}=t,u=V(e.get(f),{unitId:i,subUnitId:a});if(!u)return!1;let{worksheet:d}=u,p=d.getCellRaw(o,s),m=p==null||(n=p.p)==null||(n=n.body)==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeType===r.HYPERLINK&&e.rangeId===c);return m&&(m.properties.url=l),!0}};var Ce=`@univerjs/sheets-hyper-link`,we=`0.18.0`;const Te=`sheets-hyper-link.config`;Symbol(Te);const Ee={},De=`SHEET_HYPER_LINK_PLUGIN`,Oe=`err`;let ke=class extends o{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,G(this,`_disposableMap`,new Map),G(this,`_watchDisposableMap`,new Map),G(this,`_rangeDisableMap`,new Map),G(this,`_rangeWatcherMap`,new Map),G(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:X.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:Y.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(r,this._refRangeService.registerRefRange(i,r=>{let a=oe(i,r,{selectionManagerService:this._selectionManagerService}),o=Array.isArray(a)?a[0]:a;return o&&o.startColumn===i.startColumn&&o.startRow===i.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,o,!1)},e,t))}_watchPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._watchDisposableMap.set(r,this._refRangeService.watchRange(e,t,i,(r,i)=>{let{redos:a}=this._handlePositionChange(e,t,n,i,!0);k(a,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,t,n,r=!1){if(n.startsWith(`#`)){var i,a,o;let s=new URLSearchParams(n.slice(1)),c={gid:(i=s.get(`gid`))==null?``:i,range:(a=s.get(`range`))==null?``:a,rangeid:(o=s.get(`rangeid`))==null?``:o};if(c.range&&c.gid){let i=c.gid,a=ue(c.range).range;T(a)&&c.range!==`err`&&(this._rangeDisableMap.set(t,this._refRangeService.registerRefRange(a,r=>{let o=se(a,r,{selectionManagerService:this._selectionManagerService});return o&&U(o)===U(a)?{redos:[],undos:[]}:{redos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:`#gid=${i}&range=${o?U(o):`err`}`}}}],undos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:n}}}]}},e,i)),r||this._rangeWatcherMap.set(t,this._refRangeService.watchRange(e,i,a,(n,r)=>{this._hyperLinkModel.updateHyperLink(e,i,t,{payload:`#gid=${i}&range=${r?U(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe(A(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ke=q([K(0,p(L)),K(1,p(J)),K(2,p(ie)),K(3,c)],ke);let Z=class extends o{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===R.id){var t;let n=e.params,r=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET);if(!r)return{redos:[],undos:[]};let i=r.getUnitId(),a=n.subUnitId||((t=r.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._hyperLinkModel.getSubUnit(i,a);return{redos:o.map(e=>({id:X.id,params:{unitId:i,subUnitId:a,id:e.id}})),undos:o.map(e=>({id:Y.id,params:{unitId:i,subUnitId:a,link:e}}))}}return{redos:[],undos:[]}}}))}};Z=q([K(0,p(re)),K(1,f),K(2,p(J))],Z);let Ae=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,G(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,t){let n=this._refRangeMap.get(e);n||(n=new Map,this._refRangeMap.set(e,n));let r=n.get(t);return r||(r=new g,n.set(t,r)),r}_isLegalRangeUrl(e,t){let n=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET);if(!n)return null;if(t&&t.startsWith(`#`)){var r,i,a;let e=new URLSearchParams(t.slice(1)),o={gid:(r=e.get(`gid`))==null?``:r,range:(i=e.get(`range`))==null?``:i,rangeid:(a=e.get(`rangeid`))==null?``:a};if(o.range&&o.gid){let e=o.gid,t=n.getSheetBySheetId(e);if(!t)return null;let r=ue(o.range).range;if(T(r,t)&&o.range!==`err`)return{range:r,worksheet:t}}}return null}_registerRange(e,t,n,i,a){var o;let c=this._enusreMap(e,t);if(!((o=a.body)==null||(o=o.customRanges)==null)&&o.some(t=>{var n;return t.rangeType===r.HYPERLINK&&this._isLegalRangeUrl(e,(n=t.properties)==null?void 0:n.url)})){var l;let o=new s,u=!1;(l=a.body)==null||(l=l.customRanges)==null||l.forEach(a=>{if(a.rangeType===r.HYPERLINK){var s;let r=(s=a.properties)==null?void 0:s.url,c=this._isLegalRangeUrl(e,r);if(c){let{range:s,worksheet:l}=c;u=!0,o.add(this._refRangeService.registerRefRange(s,o=>{let c=H(s,o);return c&&y.equals(c,s)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:`#gid=${t}&range=${c?U(c):`err`}`}}],undos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:r}}],redos:[]}},l.getUnitId(),l.getSheetId()))}}}),u&&c.setValue(n,i,o)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(S.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(t=>{t.type===S.UNIVER_SHEET&&e(t)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===S.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===B.id){let{unitId:t,subUnitId:n,cellValue:r}=e.params,i=this._enusreMap(t,n);r&&new g(r).forValue((e,r,a)=>{let o=i.getValue(e,r);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,r,a.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===Se.id){let{unitId:t,subUnitId:n,row:r,col:i}=e.params,a=V(this._univerInstanceService,{unitId:t,subUnitId:n}),o=this._enusreMap(t,n).getValue(r,i);if(o&&o.dispose(),a){let{worksheet:e}=a,o=e.getCellRaw(r,i);o&&o.p&&this._registerRange(t,n,r,i,o.p)}}}))}};Ae=q([K(0,c),K(1,f),K(2,p(L))],Ae);let je=class extends o{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===z.id){let t=e.params,{unitId:n,subUnitId:r}=t,i=[],a=[];return t.cellValue&&new g(t.cellValue).forValue((e,t)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(n,r,e,t);o&&(i.push({id:X.id,params:{unitId:n,subUnitId:r,id:o.id}}),a.push({id:Y.id,params:{unitId:n,subUnitId:r,link:o}}))}),{undos:a,redos:i}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===I.id||e.id===F.id||e.id===te.id){let t=[],n=[],r=this._selectionManagerService.getCurrentLastSelection(),i=V(this._univerInstanceService,e.params);if(r&&i){let{unitId:e,subUnitId:a}=i;v.foreach(r.range,(r,i)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,a,r,i);o&&(t.push({id:X.id,params:{unitId:e,subUnitId:a,id:o.id}}),n.push({id:Y.id,params:{unitId:e,subUnitId:a,link:o}}))})}return{redos:t,undos:n}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(P,{handler:(t,n,a)=>{if(!t||t.p)return a(t);if(typeof t.v==`string`&&x.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:o,subUnitId:s,row:c,col:l}=n,u=x.normalizeUrl(t.v),d=this._univerInstanceService.getUnit(o,S.UNIVER_SHEET),f=d==null?void 0:d.getSheetBySheetId(s);if(!f)return a(t);let p=f.getBlankCellDocumentModel(t,c,l);if(!p.documentModel)return a(t);let m=e.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:C(),rangeType:r.HYPERLINK,properties:{url:u}}]},doc:p.documentModel});if(!m)return a(t);let h=p.documentModel.getBody();return b.apply(h,m.serialize()),a({...t,p:{id:i,body:h,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return a(t)}}))}};je=q([K(0,p(re)),K(1,p(J)),K(2,p(ie)),K(3,f)],je);let Me=class extends o{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:De,businesses:[S.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>t(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};Me=q([K(0,u),K(1,p(J))],Me);let Ne=class extends o{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[me,ve,ge,ye,_e,he,Y,be,X,xe,Se].forEach(e=>{this._commandService.registerCommand(e)})}};Ne=q([K(0,c)],Ne);let Q=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),Pe=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${Q.SHEET}=${t}${n?`&${typeof n==`string`?Q.DEFINE_NAME:Q.RANGE}=${typeof n==`string`?n:U(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:Q.URL,name:e,url:e,searchObj:null}}_getURLName(e){var t;let{gid:n,range:r,rangeid:i,unitid:a}=e,o=a?this._univerInstanceService.getUnit(a,S.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET),s={type:Q.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!o)return s;let c=n?o.getSheetBySheetId(n):o.getActiveSheet(),l=(t=c==null?void 0:c.getName())==null?``:t;if(r){if(!c)return s;let e=ue(r).range;return T(e,c)&&r!==`err`?{type:Q.RANGE,name:de(l,e)}:s}if(i){let e=this._definedNamesService.getValueById(o.getUnitId(),i);return e?{type:Q.DEFINE_NAME,name:e.formulaOrRefString}:s}if(n){let e=o.getSheetBySheetId(n);return e?{type:Q.SHEET,name:e.getName()}:s}return s}};Pe=q([K(0,f),K(1,p(h)),K(2,le)],Pe);let $=class extends _{constructor(e=Ee,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=E({},Ee,this._config);this._configService.setConfig(Te,r)}onStarting(){D(this._injector,[[J],[Pe],[Me],[Ne],[ke],[je],[Z],[Ae]]),j(this._injector,[[ke],[Me],[Ne],[je],[Z],[Ae]])}};G($,`pluginName`,De),G($,`packageName`,Ce),G($,`version`,we),G($,`type`,S.UNIVER_SHEET),$=q([a(ae),K(1,p(m)),K(2,l)],$);export{me as AddHyperLinkCommand,Y as AddHyperLinkMutation,he as AddRichHyperLinkCommand,ge as CancelHyperLinkCommand,_e as CancelRichHyperLinkCommand,Oe as ERROR_RANGE,J as HyperLinkModel,X as RemoveHyperLinkMutation,Q as SheetHyperLinkType,Pe as SheetsHyperLinkParserService,$ as UniverSheetsHyperLinkPlugin,ve as UpdateHyperLinkCommand,be as UpdateHyperLinkMutation,xe as UpdateHyperLinkRefMutation,ye as UpdateRichHyperLinkCommand};
|
|
1
|
+
import{BuildTextUtils as e,CellValueType as t,CommandType as n,CustomRangeType as r,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,DisposableCollection as s,ICommandService as c,IConfigService as l,IResourceManagerService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LocaleService as h,ObjectMatrix as g,Plugin as _,Range as v,Rectangle as y,TextX as b,Tools as x,UniverInstanceType as S,generateRandomId as C,getBodySlice as w,isValidRange as T,merge as E,registerDependencies as D,sequenceExecute as O,sequenceExecuteAsync as k,toDisposable as A,touchDependencies as j}from"@univerjs/core";import{addCustomRangeBySelectionFactory as M,deleteCustomRangeFactory as N,replaceSelectionFactory as ee}from"@univerjs/docs";import{AFTER_CELL_EDIT as P,ClearSelectionAllCommand as F,ClearSelectionContentCommand as I,ClearSelectionFormatCommand as te,RefRangeService as L,RemoveSheetCommand as R,SetRangeValuesCommand as z,SetRangeValuesMutation as B,SetRangeValuesUndoMutationFactory as ne,SheetInterceptorService as re,SheetsSelectionsService as ie,UniverSheetsPlugin as ae,getSheetCommandTarget as V,handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests as oe,handleDefaultRangeChangeWithEffectRefCommands as H,handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests as se}from"@univerjs/sheets";import{Subject as ce}from"rxjs";import{IDefinedNamesService as le,deserializeRangeWithSheet as ue,serializeRange as U,serializeRangeWithSheet as de}from"@univerjs/engine-formula";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 fe(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 pe(e){var t=fe(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=pe(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){super(),this._univerInstanceService=e,G(this,`_linkUpdate$`,new ce),G(this,`linkUpdate$`,this._linkUpdate$.asObservable()),G(this,`_linkMap`,new Map),G(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,t){let n=this._linkMap.get(e);n||(n=new Map,this._linkMap.set(e,n));let r=n.get(t);r||(r=new g,n.set(t,r));let i=this._linkPositionMap.get(e);i||(i=new Map,this._linkPositionMap.set(e,i));let a=i.get(t);return a||(a=new Map,i.set(t,a)),{matrix:r,positionMap:a}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,t,n,r){var i,a,o,s;let{matrix:c}=this._ensureMap(e,t),l=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET),u=l==null||(i=l.getSheetBySheetId(t))==null?void 0:i.getCellRaw(n,r),d=((a=(o=u==null?void 0:u.v)==null?u==null||(s=u.p)==null||(s=s.body)==null?void 0:s.dataStream.slice(0,-2):o)==null?``:a).toString(),f=c.getValue(n,r);if(f)return{...f,display:d}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};J=q([K(0,f)],J);const Y={type:n.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},X={type:n.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},me={type:n.COMMAND,id:`sheets.command.add-hyper-link`,async handler(n,i){if(!i)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=n.get(re),p=V(s,i);if(!p)return!1;let{unitId:m,subUnitId:h,workbook:g,worksheet:_}=p,{link:v}=i,{payload:y,display:S,row:C,column:w,id:T}=v,E=_.getCell(C,w),D=_.getBlankCellDocumentModel(E,C,w),k=D.documentModel.getSnapshot(),A=x.deepClone(k.body);if(!A)return!1;let j;if(j=S?e.selection.replace({selection:{startOffset:0,endOffset:A.dataStream.length-2,collapsed:A.dataStream.length-2==0},body:{dataStream:`${S}`,customRanges:[{startIndex:0,endIndex:S.length-1,rangeType:r.HYPERLINK,rangeId:T,properties:{url:y}}]},doc:D.documentModel}):e.customRange.add({body:A,ranges:[{startOffset:0,endOffset:A.dataStream.length-2,collapsed:!1}],rangeId:T,rangeType:r.HYPERLINK,properties:{url:y,refId:T}}),!j)return!1;let M=b.apply(A,j.serialize()),N={p:{...k,body:M},t:t.STRING},ee=u.onWriteCell(g,_,C,w,N),P={unitId:m,subUnitId:h,cellValue:{[v.row]:{[v.column]:ee}}},F={id:B.id,params:P},I=ne(n,P),te={id:B.id,params:I},L=[F],R=[te],z=l.getHyperLinkByLocation(m,h,C,w);return z&&(L.push({id:X.id,params:{unitId:m,subUnitId:h,id:z.id}}),R.push({id:Y.id,params:{unitId:m,subUnitId:h,link:z}})),await O(L,a)?await u.onValidateCell(g,_,C,w)===!1?(O(R,a),!1):(o.pushUndoRedo({redoMutations:L,undoMutations:R,unitID:m}),!0):!1}},he={id:`sheets.command.add-rich-hyper-link`,type:n.COMMAND,handler:async(e,t)=>{if(!t)return!1;let{documentId:n,link:i}=t,a=e.get(c),o=C(),{payload:s}=i,l=M(e,{unitId:n,rangeId:o,rangeType:r.HYPERLINK,properties:{url:s,refId:o}});return l?a.syncExecuteCommand(l.id,l.params):!1}},ge={type:n.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(n,r){var i;if(!r)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=V(s,r);if(!u)return!1;let{row:p,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=u,y=v.getCell(p,m);if(!y)return!1;let S=v.getCellDocumentModelWithFormula(y,p,m);if(!(S!=null&&S.documentModel))return!1;let C=x.deepClone(S.documentModel.getSnapshot()),w=(i=C.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!w)return!1;let T=e.customRange.delete({documentDataModel:S.documentModel,rangeId:w.rangeId});if(!T)return!1;let E=b.apply(C.body,T.serialize()),D=[],k=[],A={unitId:g,subUnitId:_,cellValue:{[p]:{[m]:{p:{...C,body:E},t:t.STRING}}}};D.push({id:B.id,params:A});let j=ne(n,A);k.push({id:B.id,params:j});let M=l.getHyperLinkByLocation(g,_,p,m);return M&&(D.push({id:X.id,params:{unitId:g,subUnitId:_,id:h}}),k.push({id:Y.id,params:{unitId:g,subUnitId:_,link:{...M}}})),O(D,a).result?(o.pushUndoRedo({redoMutations:D,undoMutations:k,unitID:g}),!0):!1}},_e={type:n.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{id:r,documentId:i}=t,a=e.get(c),o=e.get(f).getUnit(i,S.UNIVER_DOC),s=o==null||(n=o.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===r),l=null;s&&s.endIndex===o.getBody().dataStream.length-3&&(l={dataStream:` `});let u=N(e,{unitId:i,rangeId:r,insert:l});return u?a.syncExecuteCommand(u.id,u.params):!1}},ve={type:n.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,n){var i,a;if(!n)return!1;let o=e.get(c),s=e.get(d),l=e.get(f),u=e.get(J),p=e.get(re),m=V(l,{unitId:n.unitId,subUnitId:n.subUnitId});if(!m)return!1;let{payload:h,row:g,column:_,id:v}=n,{workbook:y,worksheet:S,unitId:T,subUnitId:E}=m,{payload:D,display:k=``}=h,A=S.getCell(g,_);if(!A)return!1;let j=S.getCellDocumentModelWithFormula(A,g,_);if(!(j!=null&&j.documentModel))return!1;let M=j.documentModel.getSnapshot(),N=(i=M.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===v);if(!N)return!1;let P=C(),F=(a=w(j.documentModel.getBody(),N.startIndex,N.endIndex+1).textRuns)==null?void 0:a[0];F&&(F.ed=k.length+1);let I=ee(e,{unitId:T,body:{dataStream:`${k}`,customRanges:[{rangeId:P,rangeType:r.HYPERLINK,startIndex:0,endIndex:k.length-1,properties:{url:D}}],textRuns:F?[F]:void 0},selection:{startOffset:N.startIndex,endOffset:N.endIndex+1,collapsed:!1},doc:j.documentModel});if(!I)return!1;let te=b.apply(x.deepClone(M.body),I.textX.serialize()),L={p:{...M,body:te},t:t.STRING},R=p.onWriteCell(y,S,g,_,L),z={id:B.id,params:{unitId:T,subUnitId:E,cellValue:{[g]:{[_]:R}}}},ie=ne(e,z.params),ae={id:B.id,params:ie},oe=[z],H=[ae],se=u.getHyperLinkByLocation(T,E,g,_);return se&&(oe.push({id:X.id,params:{unitId:T,subUnitId:E,id:se.id}}),H.push({id:Y.id,params:{unitId:T,subUnitId:E,link:se}})),O(oe,o)?await p.onValidateCell(y,S,g,_)===!1?(O(H,o),!1):(s.pushUndoRedo({redoMutations:oe,undoMutations:H,unitID:T}),!0):!1}},ye={type:n.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,t)=>{var n,i,a;if(!t)return!1;let{documentId:o,payload:s,id:l}=t,u=e.get(f),d=e.get(c),p=u.getUnit(o,S.UNIVER_DOC);if(!p)return!1;let m=(n=p.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===l);if(!m)return!1;let h=(i=t.payload.display)==null?``:i,g=C(),_=(a=w(p.getBody(),m.startIndex,m.endIndex+1).textRuns)==null?void 0:a[0];_&&(_.ed=h.length+1);let v=ee(e,{unitId:o,body:{dataStream:`${h}`,customRanges:[{rangeId:g,rangeType:r.HYPERLINK,startIndex:0,endIndex:h.length-1,properties:{url:s.payload}}],textRuns:_?[_]:void 0},selection:{startOffset:m.startIndex,endOffset:m.endIndex+1,collapsed:!1},doc:p});return v?d.syncExecuteCommand(v.id,v.params):!1}},be={type:n.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},xe={type:n.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},Se={type:n.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{unitId:i,subUnitId:a,row:o,col:s,id:c,url:l}=t,u=V(e.get(f),{unitId:i,subUnitId:a});if(!u)return!1;let{worksheet:d}=u,p=d.getCellRaw(o,s),m=p==null||(n=p.p)==null||(n=n.body)==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeType===r.HYPERLINK&&e.rangeId===c);return m&&(m.properties.url=l),!0}};var Ce=`@univerjs/sheets-hyper-link`,we=`0.19.0`;const Te=`sheets-hyper-link.config`;Symbol(Te);const Ee={},De=`SHEET_HYPER_LINK_PLUGIN`,Oe=`err`;let ke=class extends o{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,G(this,`_disposableMap`,new Map),G(this,`_watchDisposableMap`,new Map),G(this,`_rangeDisableMap`,new Map),G(this,`_rangeWatcherMap`,new Map),G(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:X.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:Y.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(r,this._refRangeService.registerRefRange(i,r=>{let a=oe(i,r,{selectionManagerService:this._selectionManagerService}),o=Array.isArray(a)?a[0]:a;return o&&o.startColumn===i.startColumn&&o.startRow===i.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,o,!1)},e,t))}_watchPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._watchDisposableMap.set(r,this._refRangeService.watchRange(e,t,i,(r,i)=>{let{redos:a}=this._handlePositionChange(e,t,n,i,!0);k(a,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,t,n,r=!1){if(n.startsWith(`#`)){var i,a,o;let s=new URLSearchParams(n.slice(1)),c={gid:(i=s.get(`gid`))==null?``:i,range:(a=s.get(`range`))==null?``:a,rangeid:(o=s.get(`rangeid`))==null?``:o};if(c.range&&c.gid){let i=c.gid,a=ue(c.range).range;T(a)&&c.range!==`err`&&(this._rangeDisableMap.set(t,this._refRangeService.registerRefRange(a,r=>{let o=se(a,r,{selectionManagerService:this._selectionManagerService});return o&&U(o)===U(a)?{redos:[],undos:[]}:{redos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:`#gid=${i}&range=${o?U(o):`err`}`}}}],undos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:n}}}]}},e,i)),r||this._rangeWatcherMap.set(t,this._refRangeService.watchRange(e,i,a,(n,r)=>{this._hyperLinkModel.updateHyperLink(e,i,t,{payload:`#gid=${i}&range=${r?U(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe(A(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ke=q([K(0,p(L)),K(1,p(J)),K(2,p(ie)),K(3,c)],ke);let Z=class extends o{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===R.id){var t;let n=e.params,r=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET);if(!r)return{redos:[],undos:[]};let i=r.getUnitId(),a=n.subUnitId||((t=r.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._hyperLinkModel.getSubUnit(i,a);return{redos:o.map(e=>({id:X.id,params:{unitId:i,subUnitId:a,id:e.id}})),undos:o.map(e=>({id:Y.id,params:{unitId:i,subUnitId:a,link:e}}))}}return{redos:[],undos:[]}}}))}};Z=q([K(0,p(re)),K(1,f),K(2,p(J))],Z);let Ae=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,G(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,t){let n=this._refRangeMap.get(e);n||(n=new Map,this._refRangeMap.set(e,n));let r=n.get(t);return r||(r=new g,n.set(t,r)),r}_isLegalRangeUrl(e,t){let n=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET);if(!n)return null;if(t&&t.startsWith(`#`)){var r,i,a;let e=new URLSearchParams(t.slice(1)),o={gid:(r=e.get(`gid`))==null?``:r,range:(i=e.get(`range`))==null?``:i,rangeid:(a=e.get(`rangeid`))==null?``:a};if(o.range&&o.gid){let e=o.gid,t=n.getSheetBySheetId(e);if(!t)return null;let r=ue(o.range).range;if(T(r,t)&&o.range!==`err`)return{range:r,worksheet:t}}}return null}_registerRange(e,t,n,i,a){var o;let c=this._enusreMap(e,t);if(!((o=a.body)==null||(o=o.customRanges)==null)&&o.some(t=>{var n;return t.rangeType===r.HYPERLINK&&this._isLegalRangeUrl(e,(n=t.properties)==null?void 0:n.url)})){var l;let o=new s,u=!1;(l=a.body)==null||(l=l.customRanges)==null||l.forEach(a=>{if(a.rangeType===r.HYPERLINK){var s;let r=(s=a.properties)==null?void 0:s.url,c=this._isLegalRangeUrl(e,r);if(c){let{range:s,worksheet:l}=c;u=!0,o.add(this._refRangeService.registerRefRange(s,o=>{let c=H(s,o);return c&&y.equals(c,s)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:`#gid=${t}&range=${c?U(c):`err`}`}}],undos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:r}}],redos:[]}},l.getUnitId(),l.getSheetId()))}}}),u&&c.setValue(n,i,o)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(S.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(t=>{t.type===S.UNIVER_SHEET&&e(t)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===S.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===B.id){let{unitId:t,subUnitId:n,cellValue:r}=e.params,i=this._enusreMap(t,n);r&&new g(r).forValue((e,r,a)=>{let o=i.getValue(e,r);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,r,a.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===Se.id){let{unitId:t,subUnitId:n,row:r,col:i}=e.params,a=V(this._univerInstanceService,{unitId:t,subUnitId:n}),o=this._enusreMap(t,n).getValue(r,i);if(o&&o.dispose(),a){let{worksheet:e}=a,o=e.getCellRaw(r,i);o&&o.p&&this._registerRange(t,n,r,i,o.p)}}}))}};Ae=q([K(0,c),K(1,f),K(2,p(L))],Ae);let je=class extends o{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===z.id){let t=e.params,{unitId:n,subUnitId:r}=t,i=[],a=[];return t.cellValue&&new g(t.cellValue).forValue((e,t)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(n,r,e,t);o&&(i.push({id:X.id,params:{unitId:n,subUnitId:r,id:o.id}}),a.push({id:Y.id,params:{unitId:n,subUnitId:r,link:o}}))}),{undos:a,redos:i}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===I.id||e.id===F.id||e.id===te.id){let t=[],n=[],r=this._selectionManagerService.getCurrentLastSelection(),i=V(this._univerInstanceService,e.params);if(r&&i){let{unitId:e,subUnitId:a}=i;v.foreach(r.range,(r,i)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,a,r,i);o&&(t.push({id:X.id,params:{unitId:e,subUnitId:a,id:o.id}}),n.push({id:Y.id,params:{unitId:e,subUnitId:a,link:o}}))})}return{redos:t,undos:n}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(P,{handler:(t,n,a)=>{if(!t||t.p)return a(t);if(typeof t.v==`string`&&x.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:o,subUnitId:s,row:c,col:l}=n,u=x.normalizeUrl(t.v),d=this._univerInstanceService.getUnit(o,S.UNIVER_SHEET),f=d==null?void 0:d.getSheetBySheetId(s);if(!f)return a(t);let p=f.getBlankCellDocumentModel(t,c,l);if(!p.documentModel)return a(t);let m=e.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:C(),rangeType:r.HYPERLINK,properties:{url:u}}]},doc:p.documentModel});if(!m)return a(t);let h=p.documentModel.getBody();return b.apply(h,m.serialize()),a({...t,p:{id:i,body:h,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return a(t)}}))}};je=q([K(0,p(re)),K(1,p(J)),K(2,p(ie)),K(3,f)],je);let Me=class extends o{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:De,businesses:[S.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>t(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};Me=q([K(0,u),K(1,p(J))],Me);let Ne=class extends o{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[me,ve,ge,ye,_e,he,Y,be,X,xe,Se].forEach(e=>{this._commandService.registerCommand(e)})}};Ne=q([K(0,c)],Ne);let Q=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),Pe=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${Q.SHEET}=${t}${n?`&${typeof n==`string`?Q.DEFINE_NAME:Q.RANGE}=${typeof n==`string`?n:U(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:Q.URL,name:e,url:e,searchObj:null}}_getURLName(e){var t;let{gid:n,range:r,rangeid:i,unitid:a}=e,o=a?this._univerInstanceService.getUnit(a,S.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET),s={type:Q.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!o)return s;let c=n?o.getSheetBySheetId(n):o.getActiveSheet(),l=(t=c==null?void 0:c.getName())==null?``:t;if(r){if(!c)return s;let e=ue(r).range;return T(e,c)&&r!==`err`?{type:Q.RANGE,name:de(l,e)}:s}if(i){let e=this._definedNamesService.getValueById(o.getUnitId(),i);return e?{type:Q.DEFINE_NAME,name:e.formulaOrRefString}:s}if(n){let e=o.getSheetBySheetId(n);return e?{type:Q.SHEET,name:e.getName()}:s}return s}};Pe=q([K(0,f),K(1,p(h)),K(2,le)],Pe);let $=class extends _{constructor(e=Ee,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=E({},Ee,this._config);this._configService.setConfig(Te,r)}onStarting(){D(this._injector,[[J],[Pe],[Me],[Ne],[ke],[je],[Z],[Ae]]),j(this._injector,[[ke],[Me],[Ne],[je],[Z],[Ae]])}};G($,`pluginName`,De),G($,`packageName`,Ce),G($,`version`,we),G($,`type`,S.UNIVER_SHEET),$=q([a(ae),K(1,p(m)),K(2,l)],$);export{me as AddHyperLinkCommand,Y as AddHyperLinkMutation,he as AddRichHyperLinkCommand,ge as CancelHyperLinkCommand,_e as CancelRichHyperLinkCommand,Oe as ERROR_RANGE,J as HyperLinkModel,X as RemoveHyperLinkMutation,Q as SheetHyperLinkType,Pe as SheetsHyperLinkParserService,$ as UniverSheetsHyperLinkPlugin,ve as UpdateHyperLinkCommand,be as UpdateHyperLinkMutation,xe as UpdateHyperLinkRefMutation,ye as UpdateRichHyperLinkCommand};
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{BuildTextUtils as e,CellValueType as t,CommandType as n,CustomRangeType as r,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,DisposableCollection as s,ICommandService as c,IConfigService as l,IResourceManagerService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LocaleService as h,ObjectMatrix as g,Plugin as _,Range as v,Rectangle as y,TextX as b,Tools as x,UniverInstanceType as S,generateRandomId as C,getBodySlice as w,isValidRange as T,merge as E,registerDependencies as D,sequenceExecute as O,sequenceExecuteAsync as k,toDisposable as A,touchDependencies as j}from"@univerjs/core";import{addCustomRangeBySelectionFactory as M,deleteCustomRangeFactory as N,replaceSelectionFactory as ee}from"@univerjs/docs";import{AFTER_CELL_EDIT as P,ClearSelectionAllCommand as F,ClearSelectionContentCommand as I,ClearSelectionFormatCommand as te,RefRangeService as L,RemoveSheetCommand as R,SetRangeValuesCommand as z,SetRangeValuesMutation as B,SetRangeValuesUndoMutationFactory as ne,SheetInterceptorService as re,SheetsSelectionsService as ie,UniverSheetsPlugin as ae,getSheetCommandTarget as V,handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests as oe,handleDefaultRangeChangeWithEffectRefCommands as H,handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests as se}from"@univerjs/sheets";import{Subject as ce}from"rxjs";import{IDefinedNamesService as le,deserializeRangeWithSheet as ue,serializeRange as U,serializeRangeWithSheet as de}from"@univerjs/engine-formula";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 fe(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 pe(e){var t=fe(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=pe(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){super(),this._univerInstanceService=e,G(this,`_linkUpdate$`,new ce),G(this,`linkUpdate$`,this._linkUpdate$.asObservable()),G(this,`_linkMap`,new Map),G(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,t){let n=this._linkMap.get(e);n||(n=new Map,this._linkMap.set(e,n));let r=n.get(t);r||(r=new g,n.set(t,r));let i=this._linkPositionMap.get(e);i||(i=new Map,this._linkPositionMap.set(e,i));let a=i.get(t);return a||(a=new Map,i.set(t,a)),{matrix:r,positionMap:a}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,t,n,r){var i,a,o,s;let{matrix:c}=this._ensureMap(e,t),l=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET),u=l==null||(i=l.getSheetBySheetId(t))==null?void 0:i.getCellRaw(n,r),d=((a=(o=u==null?void 0:u.v)==null?u==null||(s=u.p)==null||(s=s.body)==null?void 0:s.dataStream.slice(0,-2):o)==null?``:a).toString(),f=c.getValue(n,r);if(f)return{...f,display:d}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};J=q([K(0,f)],J);const Y={type:n.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},X={type:n.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},me={type:n.COMMAND,id:`sheets.command.add-hyper-link`,async handler(n,i){if(!i)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=n.get(re),p=V(s,i);if(!p)return!1;let{unitId:m,subUnitId:h,workbook:g,worksheet:_}=p,{link:v}=i,{payload:y,display:S,row:C,column:w,id:T}=v,E=_.getCell(C,w),D=_.getBlankCellDocumentModel(E,C,w),k=D.documentModel.getSnapshot(),A=x.deepClone(k.body);if(!A)return!1;let j;if(j=S?e.selection.replace({selection:{startOffset:0,endOffset:A.dataStream.length-2,collapsed:A.dataStream.length-2==0},body:{dataStream:`${S}`,customRanges:[{startIndex:0,endIndex:S.length-1,rangeType:r.HYPERLINK,rangeId:T,properties:{url:y}}]},doc:D.documentModel}):e.customRange.add({body:A,ranges:[{startOffset:0,endOffset:A.dataStream.length-2,collapsed:!1}],rangeId:T,rangeType:r.HYPERLINK,properties:{url:y,refId:T}}),!j)return!1;let M=b.apply(A,j.serialize()),N={p:{...k,body:M},t:t.STRING},ee=u.onWriteCell(g,_,C,w,N),P={unitId:m,subUnitId:h,cellValue:{[v.row]:{[v.column]:ee}}},F={id:B.id,params:P},I=ne(n,P),te={id:B.id,params:I},L=[F],R=[te],z=l.getHyperLinkByLocation(m,h,C,w);return z&&(L.push({id:X.id,params:{unitId:m,subUnitId:h,id:z.id}}),R.push({id:Y.id,params:{unitId:m,subUnitId:h,link:z}})),await O(L,a)?await u.onValidateCell(g,_,C,w)===!1?(O(R,a),!1):(o.pushUndoRedo({redoMutations:L,undoMutations:R,unitID:m}),!0):!1}},he={id:`sheets.command.add-rich-hyper-link`,type:n.COMMAND,handler:async(e,t)=>{if(!t)return!1;let{documentId:n,link:i}=t,a=e.get(c),o=C(),{payload:s}=i,l=M(e,{unitId:n,rangeId:o,rangeType:r.HYPERLINK,properties:{url:s,refId:o}});return l?a.syncExecuteCommand(l.id,l.params):!1}},ge={type:n.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(n,r){var i;if(!r)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=V(s,r);if(!u)return!1;let{row:p,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=u,y=v.getCell(p,m);if(!y)return!1;let S=v.getCellDocumentModelWithFormula(y,p,m);if(!(S!=null&&S.documentModel))return!1;let C=x.deepClone(S.documentModel.getSnapshot()),w=(i=C.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!w)return!1;let T=e.customRange.delete({documentDataModel:S.documentModel,rangeId:w.rangeId});if(!T)return!1;let E=b.apply(C.body,T.serialize()),D=[],k=[],A={unitId:g,subUnitId:_,cellValue:{[p]:{[m]:{p:{...C,body:E},t:t.STRING}}}};D.push({id:B.id,params:A});let j=ne(n,A);k.push({id:B.id,params:j});let M=l.getHyperLinkByLocation(g,_,p,m);return M&&(D.push({id:X.id,params:{unitId:g,subUnitId:_,id:h}}),k.push({id:Y.id,params:{unitId:g,subUnitId:_,link:{...M}}})),O(D,a).result?(o.pushUndoRedo({redoMutations:D,undoMutations:k,unitID:g}),!0):!1}},_e={type:n.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{id:r,documentId:i}=t,a=e.get(c),o=e.get(f).getUnit(i,S.UNIVER_DOC),s=o==null||(n=o.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===r),l=null;s&&s.endIndex===o.getBody().dataStream.length-3&&(l={dataStream:` `});let u=N(e,{unitId:i,rangeId:r,insert:l});return u?a.syncExecuteCommand(u.id,u.params):!1}},ve={type:n.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,n){var i,a;if(!n)return!1;let o=e.get(c),s=e.get(d),l=e.get(f),u=e.get(J),p=e.get(re),m=V(l,{unitId:n.unitId,subUnitId:n.subUnitId});if(!m)return!1;let{payload:h,row:g,column:_,id:v}=n,{workbook:y,worksheet:S,unitId:T,subUnitId:E}=m,{payload:D,display:k=``}=h,A=S.getCell(g,_);if(!A)return!1;let j=S.getCellDocumentModelWithFormula(A,g,_);if(!(j!=null&&j.documentModel))return!1;let M=j.documentModel.getSnapshot(),N=(i=M.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===v);if(!N)return!1;let P=C(),F=(a=w(j.documentModel.getBody(),N.startIndex,N.endIndex+1).textRuns)==null?void 0:a[0];F&&(F.ed=k.length+1);let I=ee(e,{unitId:T,body:{dataStream:`${k}`,customRanges:[{rangeId:P,rangeType:r.HYPERLINK,startIndex:0,endIndex:k.length-1,properties:{url:D}}],textRuns:F?[F]:void 0},selection:{startOffset:N.startIndex,endOffset:N.endIndex+1,collapsed:!1},doc:j.documentModel});if(!I)return!1;let te=b.apply(x.deepClone(M.body),I.textX.serialize()),L={p:{...M,body:te},t:t.STRING},R=p.onWriteCell(y,S,g,_,L),z={id:B.id,params:{unitId:T,subUnitId:E,cellValue:{[g]:{[_]:R}}}},ie=ne(e,z.params),ae={id:B.id,params:ie},oe=[z],H=[ae],se=u.getHyperLinkByLocation(T,E,g,_);return se&&(oe.push({id:X.id,params:{unitId:T,subUnitId:E,id:se.id}}),H.push({id:Y.id,params:{unitId:T,subUnitId:E,link:se}})),O(oe,o)?await p.onValidateCell(y,S,g,_)===!1?(O(H,o),!1):(s.pushUndoRedo({redoMutations:oe,undoMutations:H,unitID:T}),!0):!1}},ye={type:n.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,t)=>{var n,i,a;if(!t)return!1;let{documentId:o,payload:s,id:l}=t,u=e.get(f),d=e.get(c),p=u.getUnit(o,S.UNIVER_DOC);if(!p)return!1;let m=(n=p.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===l);if(!m)return!1;let h=(i=t.payload.display)==null?``:i,g=C(),_=(a=w(p.getBody(),m.startIndex,m.endIndex+1).textRuns)==null?void 0:a[0];_&&(_.ed=h.length+1);let v=ee(e,{unitId:o,body:{dataStream:`${h}`,customRanges:[{rangeId:g,rangeType:r.HYPERLINK,startIndex:0,endIndex:h.length-1,properties:{url:s.payload}}],textRuns:_?[_]:void 0},selection:{startOffset:m.startIndex,endOffset:m.endIndex+1,collapsed:!1},doc:p});return v?d.syncExecuteCommand(v.id,v.params):!1}},be={type:n.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},xe={type:n.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},Se={type:n.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{unitId:i,subUnitId:a,row:o,col:s,id:c,url:l}=t,u=V(e.get(f),{unitId:i,subUnitId:a});if(!u)return!1;let{worksheet:d}=u,p=d.getCellRaw(o,s),m=p==null||(n=p.p)==null||(n=n.body)==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeType===r.HYPERLINK&&e.rangeId===c);return m&&(m.properties.url=l),!0}};var Ce=`@univerjs/sheets-hyper-link`,we=`0.18.0`;const Te=`sheets-hyper-link.config`;Symbol(Te);const Ee={},De=`SHEET_HYPER_LINK_PLUGIN`,Oe=`err`;let ke=class extends o{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,G(this,`_disposableMap`,new Map),G(this,`_watchDisposableMap`,new Map),G(this,`_rangeDisableMap`,new Map),G(this,`_rangeWatcherMap`,new Map),G(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:X.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:Y.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(r,this._refRangeService.registerRefRange(i,r=>{let a=oe(i,r,{selectionManagerService:this._selectionManagerService}),o=Array.isArray(a)?a[0]:a;return o&&o.startColumn===i.startColumn&&o.startRow===i.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,o,!1)},e,t))}_watchPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._watchDisposableMap.set(r,this._refRangeService.watchRange(e,t,i,(r,i)=>{let{redos:a}=this._handlePositionChange(e,t,n,i,!0);k(a,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,t,n,r=!1){if(n.startsWith(`#`)){var i,a,o;let s=new URLSearchParams(n.slice(1)),c={gid:(i=s.get(`gid`))==null?``:i,range:(a=s.get(`range`))==null?``:a,rangeid:(o=s.get(`rangeid`))==null?``:o};if(c.range&&c.gid){let i=c.gid,a=ue(c.range).range;T(a)&&c.range!==`err`&&(this._rangeDisableMap.set(t,this._refRangeService.registerRefRange(a,r=>{let o=se(a,r,{selectionManagerService:this._selectionManagerService});return o&&U(o)===U(a)?{redos:[],undos:[]}:{redos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:`#gid=${i}&range=${o?U(o):`err`}`}}}],undos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:n}}}]}},e,i)),r||this._rangeWatcherMap.set(t,this._refRangeService.watchRange(e,i,a,(n,r)=>{this._hyperLinkModel.updateHyperLink(e,i,t,{payload:`#gid=${i}&range=${r?U(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe(A(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ke=q([K(0,p(L)),K(1,p(J)),K(2,p(ie)),K(3,c)],ke);let Z=class extends o{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===R.id){var t;let n=e.params,r=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET);if(!r)return{redos:[],undos:[]};let i=r.getUnitId(),a=n.subUnitId||((t=r.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._hyperLinkModel.getSubUnit(i,a);return{redos:o.map(e=>({id:X.id,params:{unitId:i,subUnitId:a,id:e.id}})),undos:o.map(e=>({id:Y.id,params:{unitId:i,subUnitId:a,link:e}}))}}return{redos:[],undos:[]}}}))}};Z=q([K(0,p(re)),K(1,f),K(2,p(J))],Z);let Ae=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,G(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,t){let n=this._refRangeMap.get(e);n||(n=new Map,this._refRangeMap.set(e,n));let r=n.get(t);return r||(r=new g,n.set(t,r)),r}_isLegalRangeUrl(e,t){let n=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET);if(!n)return null;if(t&&t.startsWith(`#`)){var r,i,a;let e=new URLSearchParams(t.slice(1)),o={gid:(r=e.get(`gid`))==null?``:r,range:(i=e.get(`range`))==null?``:i,rangeid:(a=e.get(`rangeid`))==null?``:a};if(o.range&&o.gid){let e=o.gid,t=n.getSheetBySheetId(e);if(!t)return null;let r=ue(o.range).range;if(T(r,t)&&o.range!==`err`)return{range:r,worksheet:t}}}return null}_registerRange(e,t,n,i,a){var o;let c=this._enusreMap(e,t);if(!((o=a.body)==null||(o=o.customRanges)==null)&&o.some(t=>{var n;return t.rangeType===r.HYPERLINK&&this._isLegalRangeUrl(e,(n=t.properties)==null?void 0:n.url)})){var l;let o=new s,u=!1;(l=a.body)==null||(l=l.customRanges)==null||l.forEach(a=>{if(a.rangeType===r.HYPERLINK){var s;let r=(s=a.properties)==null?void 0:s.url,c=this._isLegalRangeUrl(e,r);if(c){let{range:s,worksheet:l}=c;u=!0,o.add(this._refRangeService.registerRefRange(s,o=>{let c=H(s,o);return c&&y.equals(c,s)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:`#gid=${t}&range=${c?U(c):`err`}`}}],undos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:r}}],redos:[]}},l.getUnitId(),l.getSheetId()))}}}),u&&c.setValue(n,i,o)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(S.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(t=>{t.type===S.UNIVER_SHEET&&e(t)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===S.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===B.id){let{unitId:t,subUnitId:n,cellValue:r}=e.params,i=this._enusreMap(t,n);r&&new g(r).forValue((e,r,a)=>{let o=i.getValue(e,r);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,r,a.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===Se.id){let{unitId:t,subUnitId:n,row:r,col:i}=e.params,a=V(this._univerInstanceService,{unitId:t,subUnitId:n}),o=this._enusreMap(t,n).getValue(r,i);if(o&&o.dispose(),a){let{worksheet:e}=a,o=e.getCellRaw(r,i);o&&o.p&&this._registerRange(t,n,r,i,o.p)}}}))}};Ae=q([K(0,c),K(1,f),K(2,p(L))],Ae);let je=class extends o{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===z.id){let t=e.params,{unitId:n,subUnitId:r}=t,i=[],a=[];return t.cellValue&&new g(t.cellValue).forValue((e,t)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(n,r,e,t);o&&(i.push({id:X.id,params:{unitId:n,subUnitId:r,id:o.id}}),a.push({id:Y.id,params:{unitId:n,subUnitId:r,link:o}}))}),{undos:a,redos:i}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===I.id||e.id===F.id||e.id===te.id){let t=[],n=[],r=this._selectionManagerService.getCurrentLastSelection(),i=V(this._univerInstanceService,e.params);if(r&&i){let{unitId:e,subUnitId:a}=i;v.foreach(r.range,(r,i)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,a,r,i);o&&(t.push({id:X.id,params:{unitId:e,subUnitId:a,id:o.id}}),n.push({id:Y.id,params:{unitId:e,subUnitId:a,link:o}}))})}return{redos:t,undos:n}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(P,{handler:(t,n,a)=>{if(!t||t.p)return a(t);if(typeof t.v==`string`&&x.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:o,subUnitId:s,row:c,col:l}=n,u=x.normalizeUrl(t.v),d=this._univerInstanceService.getUnit(o,S.UNIVER_SHEET),f=d==null?void 0:d.getSheetBySheetId(s);if(!f)return a(t);let p=f.getBlankCellDocumentModel(t,c,l);if(!p.documentModel)return a(t);let m=e.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:C(),rangeType:r.HYPERLINK,properties:{url:u}}]},doc:p.documentModel});if(!m)return a(t);let h=p.documentModel.getBody();return b.apply(h,m.serialize()),a({...t,p:{id:i,body:h,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return a(t)}}))}};je=q([K(0,p(re)),K(1,p(J)),K(2,p(ie)),K(3,f)],je);let Me=class extends o{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:De,businesses:[S.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>t(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};Me=q([K(0,u),K(1,p(J))],Me);let Ne=class extends o{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[me,ve,ge,ye,_e,he,Y,be,X,xe,Se].forEach(e=>{this._commandService.registerCommand(e)})}};Ne=q([K(0,c)],Ne);let Q=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),Pe=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${Q.SHEET}=${t}${n?`&${typeof n==`string`?Q.DEFINE_NAME:Q.RANGE}=${typeof n==`string`?n:U(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:Q.URL,name:e,url:e,searchObj:null}}_getURLName(e){var t;let{gid:n,range:r,rangeid:i,unitid:a}=e,o=a?this._univerInstanceService.getUnit(a,S.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET),s={type:Q.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!o)return s;let c=n?o.getSheetBySheetId(n):o.getActiveSheet(),l=(t=c==null?void 0:c.getName())==null?``:t;if(r){if(!c)return s;let e=ue(r).range;return T(e,c)&&r!==`err`?{type:Q.RANGE,name:de(l,e)}:s}if(i){let e=this._definedNamesService.getValueById(o.getUnitId(),i);return e?{type:Q.DEFINE_NAME,name:e.formulaOrRefString}:s}if(n){let e=o.getSheetBySheetId(n);return e?{type:Q.SHEET,name:e.getName()}:s}return s}};Pe=q([K(0,f),K(1,p(h)),K(2,le)],Pe);let $=class extends _{constructor(e=Ee,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=E({},Ee,this._config);this._configService.setConfig(Te,r)}onStarting(){D(this._injector,[[J],[Pe],[Me],[Ne],[ke],[je],[Z],[Ae]]),j(this._injector,[[ke],[Me],[Ne],[je],[Z],[Ae]])}};G($,`pluginName`,De),G($,`packageName`,Ce),G($,`version`,we),G($,`type`,S.UNIVER_SHEET),$=q([a(ae),K(1,p(m)),K(2,l)],$);export{me as AddHyperLinkCommand,Y as AddHyperLinkMutation,he as AddRichHyperLinkCommand,ge as CancelHyperLinkCommand,_e as CancelRichHyperLinkCommand,Oe as ERROR_RANGE,J as HyperLinkModel,X as RemoveHyperLinkMutation,Q as SheetHyperLinkType,Pe as SheetsHyperLinkParserService,$ as UniverSheetsHyperLinkPlugin,ve as UpdateHyperLinkCommand,be as UpdateHyperLinkMutation,xe as UpdateHyperLinkRefMutation,ye as UpdateRichHyperLinkCommand};
|
|
1
|
+
import{BuildTextUtils as e,CellValueType as t,CommandType as n,CustomRangeType as r,DOCS_NORMAL_EDITOR_UNIT_ID_KEY as i,DependentOn as a,Disposable as o,DisposableCollection as s,ICommandService as c,IConfigService as l,IResourceManagerService as u,IUndoRedoService as d,IUniverInstanceService as f,Inject as p,Injector as m,LocaleService as h,ObjectMatrix as g,Plugin as _,Range as v,Rectangle as y,TextX as b,Tools as x,UniverInstanceType as S,generateRandomId as C,getBodySlice as w,isValidRange as T,merge as E,registerDependencies as D,sequenceExecute as O,sequenceExecuteAsync as k,toDisposable as A,touchDependencies as j}from"@univerjs/core";import{addCustomRangeBySelectionFactory as M,deleteCustomRangeFactory as N,replaceSelectionFactory as ee}from"@univerjs/docs";import{AFTER_CELL_EDIT as P,ClearSelectionAllCommand as F,ClearSelectionContentCommand as I,ClearSelectionFormatCommand as te,RefRangeService as L,RemoveSheetCommand as R,SetRangeValuesCommand as z,SetRangeValuesMutation as B,SetRangeValuesUndoMutationFactory as ne,SheetInterceptorService as re,SheetsSelectionsService as ie,UniverSheetsPlugin as ae,getSheetCommandTarget as V,handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests as oe,handleDefaultRangeChangeWithEffectRefCommands as H,handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests as se}from"@univerjs/sheets";import{Subject as ce}from"rxjs";import{IDefinedNamesService as le,deserializeRangeWithSheet as ue,serializeRange as U,serializeRangeWithSheet as de}from"@univerjs/engine-formula";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 fe(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 pe(e){var t=fe(e,`string`);return W(t)==`symbol`?t:t+``}function G(e,t,n){return(t=pe(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){super(),this._univerInstanceService=e,G(this,`_linkUpdate$`,new ce),G(this,`linkUpdate$`,this._linkUpdate$.asObservable()),G(this,`_linkMap`,new Map),G(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,t){let n=this._linkMap.get(e);n||(n=new Map,this._linkMap.set(e,n));let r=n.get(t);r||(r=new g,n.set(t,r));let i=this._linkPositionMap.get(e);i||(i=new Map,this._linkPositionMap.set(e,i));let a=i.get(t);return a||(a=new Map,i.set(t,a)),{matrix:r,positionMap:a}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,t,n,r){var i,a,o,s;let{matrix:c}=this._ensureMap(e,t),l=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET),u=l==null||(i=l.getSheetBySheetId(t))==null?void 0:i.getCellRaw(n,r),d=((a=(o=u==null?void 0:u.v)==null?u==null||(s=u.p)==null||(s=s.body)==null?void 0:s.dataStream.slice(0,-2):o)==null?``:a).toString(),f=c.getValue(n,r);if(f)return{...f,display:d}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};J=q([K(0,f)],J);const Y={type:n.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},X={type:n.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},me={type:n.COMMAND,id:`sheets.command.add-hyper-link`,async handler(n,i){if(!i)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=n.get(re),p=V(s,i);if(!p)return!1;let{unitId:m,subUnitId:h,workbook:g,worksheet:_}=p,{link:v}=i,{payload:y,display:S,row:C,column:w,id:T}=v,E=_.getCell(C,w),D=_.getBlankCellDocumentModel(E,C,w),k=D.documentModel.getSnapshot(),A=x.deepClone(k.body);if(!A)return!1;let j;if(j=S?e.selection.replace({selection:{startOffset:0,endOffset:A.dataStream.length-2,collapsed:A.dataStream.length-2==0},body:{dataStream:`${S}`,customRanges:[{startIndex:0,endIndex:S.length-1,rangeType:r.HYPERLINK,rangeId:T,properties:{url:y}}]},doc:D.documentModel}):e.customRange.add({body:A,ranges:[{startOffset:0,endOffset:A.dataStream.length-2,collapsed:!1}],rangeId:T,rangeType:r.HYPERLINK,properties:{url:y,refId:T}}),!j)return!1;let M=b.apply(A,j.serialize()),N={p:{...k,body:M},t:t.STRING},ee=u.onWriteCell(g,_,C,w,N),P={unitId:m,subUnitId:h,cellValue:{[v.row]:{[v.column]:ee}}},F={id:B.id,params:P},I=ne(n,P),te={id:B.id,params:I},L=[F],R=[te],z=l.getHyperLinkByLocation(m,h,C,w);return z&&(L.push({id:X.id,params:{unitId:m,subUnitId:h,id:z.id}}),R.push({id:Y.id,params:{unitId:m,subUnitId:h,link:z}})),await O(L,a)?await u.onValidateCell(g,_,C,w)===!1?(O(R,a),!1):(o.pushUndoRedo({redoMutations:L,undoMutations:R,unitID:m}),!0):!1}},he={id:`sheets.command.add-rich-hyper-link`,type:n.COMMAND,handler:async(e,t)=>{if(!t)return!1;let{documentId:n,link:i}=t,a=e.get(c),o=C(),{payload:s}=i,l=M(e,{unitId:n,rangeId:o,rangeType:r.HYPERLINK,properties:{url:s,refId:o}});return l?a.syncExecuteCommand(l.id,l.params):!1}},ge={type:n.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(n,r){var i;if(!r)return!1;let a=n.get(c),o=n.get(d),s=n.get(f),l=n.get(J),u=V(s,r);if(!u)return!1;let{row:p,column:m,id:h}=r,{unitId:g,subUnitId:_,worksheet:v}=u,y=v.getCell(p,m);if(!y)return!1;let S=v.getCellDocumentModelWithFormula(y,p,m);if(!(S!=null&&S.documentModel))return!1;let C=x.deepClone(S.documentModel.getSnapshot()),w=(i=C.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!w)return!1;let T=e.customRange.delete({documentDataModel:S.documentModel,rangeId:w.rangeId});if(!T)return!1;let E=b.apply(C.body,T.serialize()),D=[],k=[],A={unitId:g,subUnitId:_,cellValue:{[p]:{[m]:{p:{...C,body:E},t:t.STRING}}}};D.push({id:B.id,params:A});let j=ne(n,A);k.push({id:B.id,params:j});let M=l.getHyperLinkByLocation(g,_,p,m);return M&&(D.push({id:X.id,params:{unitId:g,subUnitId:_,id:h}}),k.push({id:Y.id,params:{unitId:g,subUnitId:_,link:{...M}}})),O(D,a).result?(o.pushUndoRedo({redoMutations:D,undoMutations:k,unitID:g}),!0):!1}},_e={type:n.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{id:r,documentId:i}=t,a=e.get(c),o=e.get(f).getUnit(i,S.UNIVER_DOC),s=o==null||(n=o.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===r),l=null;s&&s.endIndex===o.getBody().dataStream.length-3&&(l={dataStream:` `});let u=N(e,{unitId:i,rangeId:r,insert:l});return u?a.syncExecuteCommand(u.id,u.params):!1}},ve={type:n.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,n){var i,a;if(!n)return!1;let o=e.get(c),s=e.get(d),l=e.get(f),u=e.get(J),p=e.get(re),m=V(l,{unitId:n.unitId,subUnitId:n.subUnitId});if(!m)return!1;let{payload:h,row:g,column:_,id:v}=n,{workbook:y,worksheet:S,unitId:T,subUnitId:E}=m,{payload:D,display:k=``}=h,A=S.getCell(g,_);if(!A)return!1;let j=S.getCellDocumentModelWithFormula(A,g,_);if(!(j!=null&&j.documentModel))return!1;let M=j.documentModel.getSnapshot(),N=(i=M.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===v);if(!N)return!1;let P=C(),F=(a=w(j.documentModel.getBody(),N.startIndex,N.endIndex+1).textRuns)==null?void 0:a[0];F&&(F.ed=k.length+1);let I=ee(e,{unitId:T,body:{dataStream:`${k}`,customRanges:[{rangeId:P,rangeType:r.HYPERLINK,startIndex:0,endIndex:k.length-1,properties:{url:D}}],textRuns:F?[F]:void 0},selection:{startOffset:N.startIndex,endOffset:N.endIndex+1,collapsed:!1},doc:j.documentModel});if(!I)return!1;let te=b.apply(x.deepClone(M.body),I.textX.serialize()),L={p:{...M,body:te},t:t.STRING},R=p.onWriteCell(y,S,g,_,L),z={id:B.id,params:{unitId:T,subUnitId:E,cellValue:{[g]:{[_]:R}}}},ie=ne(e,z.params),ae={id:B.id,params:ie},oe=[z],H=[ae],se=u.getHyperLinkByLocation(T,E,g,_);return se&&(oe.push({id:X.id,params:{unitId:T,subUnitId:E,id:se.id}}),H.push({id:Y.id,params:{unitId:T,subUnitId:E,link:se}})),O(oe,o)?await p.onValidateCell(y,S,g,_)===!1?(O(H,o),!1):(s.pushUndoRedo({redoMutations:oe,undoMutations:H,unitID:T}),!0):!1}},ye={type:n.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,t)=>{var n,i,a;if(!t)return!1;let{documentId:o,payload:s,id:l}=t,u=e.get(f),d=e.get(c),p=u.getUnit(o,S.UNIVER_DOC);if(!p)return!1;let m=(n=p.getBody())==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeId===l);if(!m)return!1;let h=(i=t.payload.display)==null?``:i,g=C(),_=(a=w(p.getBody(),m.startIndex,m.endIndex+1).textRuns)==null?void 0:a[0];_&&(_.ed=h.length+1);let v=ee(e,{unitId:o,body:{dataStream:`${h}`,customRanges:[{rangeId:g,rangeType:r.HYPERLINK,startIndex:0,endIndex:h.length-1,properties:{url:s.payload}}],textRuns:_?[_]:void 0},selection:{startOffset:m.startIndex,endOffset:m.endIndex+1,collapsed:!1},doc:p});return v?d.syncExecuteCommand(v.id,v.params):!1}},be={type:n.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},xe={type:n.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(J),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},Se={type:n.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,t){var n;if(!t)return!1;let{unitId:i,subUnitId:a,row:o,col:s,id:c,url:l}=t,u=V(e.get(f),{unitId:i,subUnitId:a});if(!u)return!1;let{worksheet:d}=u,p=d.getCellRaw(o,s),m=p==null||(n=p.p)==null||(n=n.body)==null||(n=n.customRanges)==null?void 0:n.find(e=>e.rangeType===r.HYPERLINK&&e.rangeId===c);return m&&(m.properties.url=l),!0}};var Ce=`@univerjs/sheets-hyper-link`,we=`0.19.0`;const Te=`sheets-hyper-link.config`;Symbol(Te);const Ee={},De=`SHEET_HYPER_LINK_PLUGIN`,Oe=`err`;let ke=class extends o{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,G(this,`_disposableMap`,new Map),G(this,`_watchDisposableMap`,new Map),G(this,`_rangeDisableMap`,new Map),G(this,`_rangeWatcherMap`,new Map),G(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:xe.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:X.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:Y.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(r,this._refRangeService.registerRefRange(i,r=>{let a=oe(i,r,{selectionManagerService:this._selectionManagerService}),o=Array.isArray(a)?a[0]:a;return o&&o.startColumn===i.startColumn&&o.startRow===i.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,o,!1)},e,t))}_watchPosition(e,t,n){let r=n.id,i={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._watchDisposableMap.set(r,this._refRangeService.watchRange(e,t,i,(r,i)=>{let{redos:a}=this._handlePositionChange(e,t,n,i,!0);k(a,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,t,n,r=!1){if(n.startsWith(`#`)){var i,a,o;let s=new URLSearchParams(n.slice(1)),c={gid:(i=s.get(`gid`))==null?``:i,range:(a=s.get(`range`))==null?``:a,rangeid:(o=s.get(`rangeid`))==null?``:o};if(c.range&&c.gid){let i=c.gid,a=ue(c.range).range;T(a)&&c.range!==`err`&&(this._rangeDisableMap.set(t,this._refRangeService.registerRefRange(a,r=>{let o=se(a,r,{selectionManagerService:this._selectionManagerService});return o&&U(o)===U(a)?{redos:[],undos:[]}:{redos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:`#gid=${i}&range=${o?U(o):`err`}`}}}],undos:[{id:be.id,params:{unitId:e,subUnitId:i,id:t,payload:{payload:n}}}]}},e,i)),r||this._rangeWatcherMap.set(t,this._refRangeService.watchRange(e,i,a,(n,r)=>{this._hyperLinkModel.updateHyperLink(e,i,t,{payload:`#gid=${i}&range=${r?U(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe(A(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};ke=q([K(0,p(L)),K(1,p(J)),K(2,p(ie)),K(3,c)],ke);let Z=class extends o{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===R.id){var t;let n=e.params,r=n.unitId?this._univerInstanceService.getUnit(n.unitId):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET);if(!r)return{redos:[],undos:[]};let i=r.getUnitId(),a=n.subUnitId||((t=r.getActiveSheet())==null?void 0:t.getSheetId());if(!a)return{redos:[],undos:[]};let o=this._hyperLinkModel.getSubUnit(i,a);return{redos:o.map(e=>({id:X.id,params:{unitId:i,subUnitId:a,id:e.id}})),undos:o.map(e=>({id:Y.id,params:{unitId:i,subUnitId:a,link:e}}))}}return{redos:[],undos:[]}}}))}};Z=q([K(0,p(re)),K(1,f),K(2,p(J))],Z);let Ae=class extends o{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,G(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,t){let n=this._refRangeMap.get(e);n||(n=new Map,this._refRangeMap.set(e,n));let r=n.get(t);return r||(r=new g,n.set(t,r)),r}_isLegalRangeUrl(e,t){let n=this._univerInstanceService.getUnit(e,S.UNIVER_SHEET);if(!n)return null;if(t&&t.startsWith(`#`)){var r,i,a;let e=new URLSearchParams(t.slice(1)),o={gid:(r=e.get(`gid`))==null?``:r,range:(i=e.get(`range`))==null?``:i,rangeid:(a=e.get(`rangeid`))==null?``:a};if(o.range&&o.gid){let e=o.gid,t=n.getSheetBySheetId(e);if(!t)return null;let r=ue(o.range).range;if(T(r,t)&&o.range!==`err`)return{range:r,worksheet:t}}}return null}_registerRange(e,t,n,i,a){var o;let c=this._enusreMap(e,t);if(!((o=a.body)==null||(o=o.customRanges)==null)&&o.some(t=>{var n;return t.rangeType===r.HYPERLINK&&this._isLegalRangeUrl(e,(n=t.properties)==null?void 0:n.url)})){var l;let o=new s,u=!1;(l=a.body)==null||(l=l.customRanges)==null||l.forEach(a=>{if(a.rangeType===r.HYPERLINK){var s;let r=(s=a.properties)==null?void 0:s.url,c=this._isLegalRangeUrl(e,r);if(c){let{range:s,worksheet:l}=c;u=!0,o.add(this._refRangeService.registerRefRange(s,o=>{let c=H(s,o);return c&&y.equals(c,s)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:`#gid=${t}&range=${c?U(c):`err`}`}}],undos:[{id:Se.id,params:{unitId:e,subUnitId:t,row:n,col:i,id:a.rangeId,url:r}}],redos:[]}},l.getUnitId(),l.getSheetId()))}}}),u&&c.setValue(n,i,o)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(S.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(t=>{t.type===S.UNIVER_SHEET&&e(t)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===S.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===B.id){let{unitId:t,subUnitId:n,cellValue:r}=e.params,i=this._enusreMap(t,n);r&&new g(r).forValue((e,r,a)=>{let o=i.getValue(e,r);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,r,a.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===Se.id){let{unitId:t,subUnitId:n,row:r,col:i}=e.params,a=V(this._univerInstanceService,{unitId:t,subUnitId:n}),o=this._enusreMap(t,n).getValue(r,i);if(o&&o.dispose(),a){let{worksheet:e}=a,o=e.getCellRaw(r,i);o&&o.p&&this._registerRange(t,n,r,i,o.p)}}}))}};Ae=q([K(0,c),K(1,f),K(2,p(L))],Ae);let je=class extends o{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===z.id){let t=e.params,{unitId:n,subUnitId:r}=t,i=[],a=[];return t.cellValue&&new g(t.cellValue).forValue((e,t)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(n,r,e,t);o&&(i.push({id:X.id,params:{unitId:n,subUnitId:r,id:o.id}}),a.push({id:Y.id,params:{unitId:n,subUnitId:r,link:o}}))}),{undos:a,redos:i}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===I.id||e.id===F.id||e.id===te.id){let t=[],n=[],r=this._selectionManagerService.getCurrentLastSelection(),i=V(this._univerInstanceService,e.params);if(r&&i){let{unitId:e,subUnitId:a}=i;v.foreach(r.range,(r,i)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,a,r,i);o&&(t.push({id:X.id,params:{unitId:e,subUnitId:a,id:o.id}}),n.push({id:Y.id,params:{unitId:e,subUnitId:a,link:o}}))})}return{redos:t,undos:n}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(P,{handler:(t,n,a)=>{if(!t||t.p)return a(t);if(typeof t.v==`string`&&x.isLegalUrl(t.v)&&t.v[t.v.length-1]!==` `){let{unitId:o,subUnitId:s,row:c,col:l}=n,u=x.normalizeUrl(t.v),d=this._univerInstanceService.getUnit(o,S.UNIVER_SHEET),f=d==null?void 0:d.getSheetBySheetId(s);if(!f)return a(t);let p=f.getBlankCellDocumentModel(t,c,l);if(!p.documentModel)return a(t);let m=e.selection.replace({selection:{startOffset:0,endOffset:t.v.length,collapsed:!1},body:{dataStream:`${t.v}`,customRanges:[{startIndex:0,endIndex:t.v.length-1,rangeId:C(),rangeType:r.HYPERLINK,properties:{url:u}}]},doc:p.documentModel});if(!m)return a(t);let h=p.documentModel.getBody();return b.apply(h,m.serialize()),a({...t,p:{id:i,body:h,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return a(t)}}))}};je=q([K(0,p(re)),K(1,p(J)),K(2,p(ie)),K(3,f)],je);let Me=class extends o{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},t=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:De,businesses:[S.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>t(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};Me=q([K(0,u),K(1,p(J))],Me);let Ne=class extends o{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[me,ve,ge,ye,_e,he,Y,be,X,xe,Se].forEach(e=>{this._commandService.registerCommand(e)})}};Ne=q([K(0,c)],Ne);let Q=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),Pe=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${Q.SHEET}=${t}${n?`&${typeof n==`string`?Q.DEFINE_NAME:Q.RANGE}=${typeof n==`string`?n:U(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:Q.URL,name:e,url:e,searchObj:null}}_getURLName(e){var t;let{gid:n,range:r,rangeid:i,unitid:a}=e,o=a?this._univerInstanceService.getUnit(a,S.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(S.UNIVER_SHEET),s={type:Q.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!o)return s;let c=n?o.getSheetBySheetId(n):o.getActiveSheet(),l=(t=c==null?void 0:c.getName())==null?``:t;if(r){if(!c)return s;let e=ue(r).range;return T(e,c)&&r!==`err`?{type:Q.RANGE,name:de(l,e)}:s}if(i){let e=this._definedNamesService.getValueById(o.getUnitId(),i);return e?{type:Q.DEFINE_NAME,name:e.formulaOrRefString}:s}if(n){let e=o.getSheetBySheetId(n);return e?{type:Q.SHEET,name:e.getName()}:s}return s}};Pe=q([K(0,f),K(1,p(h)),K(2,le)],Pe);let $=class extends _{constructor(e=Ee,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=E({},Ee,this._config);this._configService.setConfig(Te,r)}onStarting(){D(this._injector,[[J],[Pe],[Me],[Ne],[ke],[je],[Z],[Ae]]),j(this._injector,[[ke],[Me],[Ne],[je],[Z],[Ae]])}};G($,`pluginName`,De),G($,`packageName`,Ce),G($,`version`,we),G($,`type`,S.UNIVER_SHEET),$=q([a(ae),K(1,p(m)),K(2,l)],$);export{me as AddHyperLinkCommand,Y as AddHyperLinkMutation,he as AddRichHyperLinkCommand,ge as CancelHyperLinkCommand,_e as CancelRichHyperLinkCommand,Oe as ERROR_RANGE,J as HyperLinkModel,X as RemoveHyperLinkMutation,Q as SheetHyperLinkType,Pe as SheetsHyperLinkParserService,$ as UniverSheetsHyperLinkPlugin,ve as UpdateHyperLinkCommand,be as UpdateHyperLinkMutation,xe as UpdateHyperLinkRefMutation,ye as UpdateRichHyperLinkCommand};
|
package/lib/umd/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/docs`),require(`@univerjs/sheets`),require(`rxjs`),require(`@univerjs/engine-formula`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/sheets`,`rxjs`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsHyperLink={},e.UniverCore,e.UniverDocs,e.UniverSheets,e.rxjs,e.UniverEngineFormula))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function o(e){"@babel/helpers - typeof";return o=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},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){return function(n,r){t(n,r,e)}}function d(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 f=class extends t.Disposable{constructor(e){super(),this._univerInstanceService=e,l(this,`_linkUpdate$`,new i.Subject),l(this,`linkUpdate$`,this._linkUpdate$.asObservable()),l(this,`_linkMap`,new Map),l(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,n){let r=this._linkMap.get(e);r||(r=new Map,this._linkMap.set(e,r));let i=r.get(n);i||(i=new t.ObjectMatrix,r.set(n,i));let a=this._linkPositionMap.get(e);a||(a=new Map,this._linkPositionMap.set(e,a));let o=a.get(n);return o||(o=new Map,a.set(n,o)),{matrix:i,positionMap:o}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,n,r,i){var a,o,s,c;let{matrix:l}=this._ensureMap(e,n),u=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),d=u==null||(a=u.getSheetBySheetId(n))==null?void 0:a.getCellRaw(r,i),f=((o=(s=d==null?void 0:d.v)==null?d==null||(c=d.p)==null||(c=c.body)==null?void 0:c.dataStream.slice(0,-2):s)==null?``:o).toString(),p=l.getValue(r,i);if(p)return{...p,display:f}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};f=d([u(0,t.IUniverInstanceService)],f);let p={type:t.CommandType.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},m={type:t.CommandType.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},h={type:t.CommandType.COMMAND,id:`sheets.command.add-hyper-link`,async handler(e,n){if(!n)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUndoRedoService),o=e.get(t.IUniverInstanceService),s=e.get(f),c=e.get(r.SheetInterceptorService),l=(0,r.getSheetCommandTarget)(o,n);if(!l)return!1;let{unitId:u,subUnitId:d,workbook:h,worksheet:g}=l,{link:_}=n,{payload:v,display:y,row:b,column:x,id:S}=_,C=g.getCell(b,x),w=g.getBlankCellDocumentModel(C,b,x),T=w.documentModel.getSnapshot(),E=t.Tools.deepClone(T.body);if(!E)return!1;let D;if(D=y?t.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:E.dataStream.length-2,collapsed:E.dataStream.length-2==0},body:{dataStream:`${y}`,customRanges:[{startIndex:0,endIndex:y.length-1,rangeType:t.CustomRangeType.HYPERLINK,rangeId:S,properties:{url:v}}]},doc:w.documentModel}):t.BuildTextUtils.customRange.add({body:E,ranges:[{startOffset:0,endOffset:E.dataStream.length-2,collapsed:!1}],rangeId:S,rangeType:t.CustomRangeType.HYPERLINK,properties:{url:v,refId:S}}),!D)return!1;let O=t.TextX.apply(E,D.serialize()),k={p:{...T,body:O},t:t.CellValueType.STRING},A=c.onWriteCell(h,g,b,x,k),j={unitId:u,subUnitId:d,cellValue:{[_.row]:{[_.column]:A}}},M={id:r.SetRangeValuesMutation.id,params:j},N=(0,r.SetRangeValuesUndoMutationFactory)(e,j),P={id:r.SetRangeValuesMutation.id,params:N},F=[M],I=[P],L=s.getHyperLinkByLocation(u,d,b,x);return L&&(F.push({id:m.id,params:{unitId:u,subUnitId:d,id:L.id}}),I.push({id:p.id,params:{unitId:u,subUnitId:d,link:L}})),await(0,t.sequenceExecute)(F,i)?await c.onValidateCell(h,g,b,x)===!1?((0,t.sequenceExecute)(I,i),!1):(a.pushUndoRedo({redoMutations:F,undoMutations:I,unitID:u}),!0):!1}},g={id:`sheets.command.add-rich-hyper-link`,type:t.CommandType.COMMAND,handler:async(e,r)=>{if(!r)return!1;let{documentId:i,link:a}=r,o=e.get(t.ICommandService),s=(0,t.generateRandomId)(),{payload:c}=a,l=(0,n.addCustomRangeBySelectionFactory)(e,{unitId:i,rangeId:s,rangeType:t.CustomRangeType.HYPERLINK,properties:{url:c,refId:s}});return l?o.syncExecuteCommand(l.id,l.params):!1}},_={type:t.CommandType.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(e,n){var i;if(!n)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(t.IUniverInstanceService),c=e.get(f),l=(0,r.getSheetCommandTarget)(s,n);if(!l)return!1;let{row:u,column:d,id:h}=n,{unitId:g,subUnitId:_,worksheet:v}=l,y=v.getCell(u,d);if(!y)return!1;let b=v.getCellDocumentModelWithFormula(y,u,d);if(!(b!=null&&b.documentModel))return!1;let x=t.Tools.deepClone(b.documentModel.getSnapshot()),S=(i=x.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!S)return!1;let C=t.BuildTextUtils.customRange.delete({documentDataModel:b.documentModel,rangeId:S.rangeId});if(!C)return!1;let w=t.TextX.apply(x.body,C.serialize()),T=[],E=[],D={unitId:g,subUnitId:_,cellValue:{[u]:{[d]:{p:{...x,body:w},t:t.CellValueType.STRING}}}};T.push({id:r.SetRangeValuesMutation.id,params:D});let O=(0,r.SetRangeValuesUndoMutationFactory)(e,D);E.push({id:r.SetRangeValuesMutation.id,params:O});let k=c.getHyperLinkByLocation(g,_,u,d);return k&&(T.push({id:m.id,params:{unitId:g,subUnitId:_,id:h}}),E.push({id:p.id,params:{unitId:g,subUnitId:_,link:{...k}}})),(0,t.sequenceExecute)(T,a).result?(o.pushUndoRedo({redoMutations:T,undoMutations:E,unitID:g}),!0):!1}},v={type:t.CommandType.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,r){var i;if(!r)return!1;let{id:a,documentId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUniverInstanceService).getUnit(o,t.UniverInstanceType.UNIVER_DOC),l=c==null||(i=c.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===a),u=null;l&&l.endIndex===c.getBody().dataStream.length-3&&(u={dataStream:` `});let d=(0,n.deleteCustomRangeFactory)(e,{unitId:o,rangeId:a,insert:u});return d?s.syncExecuteCommand(d.id,d.params):!1}},y={type:t.CommandType.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,i){var a,o;if(!i)return!1;let s=e.get(t.ICommandService),c=e.get(t.IUndoRedoService),l=e.get(t.IUniverInstanceService),u=e.get(f),d=e.get(r.SheetInterceptorService),h=(0,r.getSheetCommandTarget)(l,{unitId:i.unitId,subUnitId:i.subUnitId});if(!h)return!1;let{payload:g,row:_,column:v,id:y}=i,{workbook:b,worksheet:x,unitId:S,subUnitId:C}=h,{payload:w,display:T=``}=g,E=x.getCell(_,v);if(!E)return!1;let D=x.getCellDocumentModelWithFormula(E,_,v);if(!(D!=null&&D.documentModel))return!1;let O=D.documentModel.getSnapshot(),k=(a=O.body)==null||(a=a.customRanges)==null?void 0:a.find(e=>`${e.rangeId}`===y);if(!k)return!1;let A=(0,t.generateRandomId)(),j=(o=(0,t.getBodySlice)(D.documentModel.getBody(),k.startIndex,k.endIndex+1).textRuns)==null?void 0:o[0];j&&(j.ed=T.length+1);let M=(0,n.replaceSelectionFactory)(e,{unitId:S,body:{dataStream:`${T}`,customRanges:[{rangeId:A,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:T.length-1,properties:{url:w}}],textRuns:j?[j]:void 0},selection:{startOffset:k.startIndex,endOffset:k.endIndex+1,collapsed:!1},doc:D.documentModel});if(!M)return!1;let N=t.TextX.apply(t.Tools.deepClone(O.body),M.textX.serialize()),P={p:{...O,body:N},t:t.CellValueType.STRING},F=d.onWriteCell(b,x,_,v,P),I={id:r.SetRangeValuesMutation.id,params:{unitId:S,subUnitId:C,cellValue:{[_]:{[v]:F}}}},L=(0,r.SetRangeValuesUndoMutationFactory)(e,I.params),R={id:r.SetRangeValuesMutation.id,params:L},z=[I],B=[R],V=u.getHyperLinkByLocation(S,C,_,v);return V&&(z.push({id:m.id,params:{unitId:S,subUnitId:C,id:V.id}}),B.push({id:p.id,params:{unitId:S,subUnitId:C,link:V}})),(0,t.sequenceExecute)(z,s)?await d.onValidateCell(b,x,_,v)===!1?((0,t.sequenceExecute)(B,s),!1):(c.pushUndoRedo({redoMutations:z,undoMutations:B,unitID:S}),!0):!1}},b={type:t.CommandType.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,r)=>{var i,a,o;if(!r)return!1;let{documentId:s,payload:c,id:l}=r,u=e.get(t.IUniverInstanceService),d=e.get(t.ICommandService),f=u.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!f)return!1;let p=(i=f.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===l);if(!p)return!1;let m=(a=r.payload.display)==null?``:a,h=(0,t.generateRandomId)(),g=(o=(0,t.getBodySlice)(f.getBody(),p.startIndex,p.endIndex+1).textRuns)==null?void 0:o[0];g&&(g.ed=m.length+1);let _=(0,n.replaceSelectionFactory)(e,{unitId:s,body:{dataStream:`${m}`,customRanges:[{rangeId:h,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:m.length-1,properties:{url:c.payload}}],textRuns:g?[g]:void 0},selection:{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},doc:f});return _?d.syncExecuteCommand(_.id,_.params):!1}},x={type:t.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},S={type:t.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},C={type:t.CommandType.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,n){var i;if(!n)return!1;let{unitId:a,subUnitId:o,row:s,col:c,id:l,url:u}=n,d=(0,r.getSheetCommandTarget)(e.get(t.IUniverInstanceService),{unitId:a,subUnitId:o});if(!d)return!1;let{worksheet:f}=d,p=f.getCellRaw(s,c),m=p==null||(i=p.p)==null||(i=i.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeType===t.CustomRangeType.HYPERLINK&&e.rangeId===l);return m&&(m.properties.url=u),!0}};var w=`@univerjs/sheets-hyper-link`,T=`0.18.0`;let E=`sheets-hyper-link.config`;Symbol(E);let D={},O=`SHEET_HYPER_LINK_PLUGIN`,k=class extends t.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,l(this,`_disposableMap`,new Map),l(this,`_watchDisposableMap`,new Map),l(this,`_rangeDisableMap`,new Map),l(this,`_rangeWatcherMap`,new Map),l(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:S.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:S.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:m.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:p.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let i=n.id,a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(i,this._refRangeService.registerRefRange(a,i=>{let o=(0,r.handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests)(a,i,{selectionManagerService:this._selectionManagerService}),s=Array.isArray(o)?o[0]:o;return s&&s.startColumn===a.startColumn&&s.startRow===a.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,s,!1)},e,t))}_watchPosition(e,n,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._watchDisposableMap.set(i,this._refRangeService.watchRange(e,n,a,(i,a)=>{let{redos:o}=this._handlePositionChange(e,n,r,a,!0);(0,t.sequenceExecuteAsync)(o,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,n,i,o=!1){if(i.startsWith(`#`)){var s,c,l;let u=new URLSearchParams(i.slice(1)),d={gid:(s=u.get(`gid`))==null?``:s,range:(c=u.get(`range`))==null?``:c,rangeid:(l=u.get(`rangeid`))==null?``:l};if(d.range&&d.gid){let s=d.gid,c=(0,a.deserializeRangeWithSheet)(d.range).range;(0,t.isValidRange)(c)&&d.range!==`err`&&(this._rangeDisableMap.set(n,this._refRangeService.registerRefRange(c,t=>{let o=(0,r.handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests)(c,t,{selectionManagerService:this._selectionManagerService});return o&&(0,a.serializeRange)(o)===(0,a.serializeRange)(c)?{redos:[],undos:[]}:{redos:[{id:x.id,params:{unitId:e,subUnitId:s,id:n,payload:{payload:`#gid=${s}&range=${o?(0,a.serializeRange)(o):`err`}`}}}],undos:[{id:x.id,params:{unitId:e,subUnitId:s,id:n,payload:{payload:i}}}]}},e,s)),o||this._rangeWatcherMap.set(n,this._refRangeService.watchRange(e,s,c,(t,r)=>{this._hyperLinkModel.updateHyperLink(e,s,n,{payload:`#gid=${s}&range=${r?(0,a.serializeRange)(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe((0,t.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};k=d([u(0,(0,t.Inject)(r.RefRangeService)),u(1,(0,t.Inject)(f)),u(2,(0,t.Inject)(r.SheetsSelectionsService)),u(3,t.ICommandService)],k);let A=class extends t.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.RemoveSheetCommand.id){var n;let r=e.params,i=r.unitId?this._univerInstanceService.getUnit(r.unitId):this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET);if(!i)return{redos:[],undos:[]};let a=i.getUnitId(),o=r.subUnitId||((n=i.getActiveSheet())==null?void 0:n.getSheetId());if(!o)return{redos:[],undos:[]};let s=this._hyperLinkModel.getSubUnit(a,o);return{redos:s.map(e=>({id:m.id,params:{unitId:a,subUnitId:o,id:e.id}})),undos:s.map(e=>({id:p.id,params:{unitId:a,subUnitId:o,link:e}}))}}return{redos:[],undos:[]}}}))}};A=d([u(0,(0,t.Inject)(r.SheetInterceptorService)),u(1,t.IUniverInstanceService),u(2,(0,t.Inject)(f))],A);let j=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,l(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,n){let r=this._refRangeMap.get(e);r||(r=new Map,this._refRangeMap.set(e,r));let i=r.get(n);return i||(i=new t.ObjectMatrix,r.set(n,i)),i}_isLegalRangeUrl(e,n){let r=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!r)return null;if(n&&n.startsWith(`#`)){var i,o,s;let e=new URLSearchParams(n.slice(1)),c={gid:(i=e.get(`gid`))==null?``:i,range:(o=e.get(`range`))==null?``:o,rangeid:(s=e.get(`rangeid`))==null?``:s};if(c.range&&c.gid){let e=c.gid,n=r.getSheetBySheetId(e);if(!n)return null;let i=(0,a.deserializeRangeWithSheet)(c.range).range;if((0,t.isValidRange)(i,n)&&c.range!==`err`)return{range:i,worksheet:n}}}return null}_registerRange(e,n,i,o,s){var c;let l=this._enusreMap(e,n);if(!((c=s.body)==null||(c=c.customRanges)==null)&&c.some(n=>{var r;return n.rangeType===t.CustomRangeType.HYPERLINK&&this._isLegalRangeUrl(e,(r=n.properties)==null?void 0:r.url)})){var u;let c=new t.DisposableCollection,d=!1;(u=s.body)==null||(u=u.customRanges)==null||u.forEach(s=>{if(s.rangeType===t.CustomRangeType.HYPERLINK){var l;let u=(l=s.properties)==null?void 0:l.url,f=this._isLegalRangeUrl(e,u);if(f){let{range:l,worksheet:p}=f;d=!0,c.add(this._refRangeService.registerRefRange(l,c=>{let d=(0,r.handleDefaultRangeChangeWithEffectRefCommands)(l,c);return d&&t.Rectangle.equals(d,l)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:C.id,params:{unitId:e,subUnitId:n,row:i,col:o,id:s.rangeId,url:`#gid=${n}&range=${d?(0,a.serializeRange)(d):`err`}`}}],undos:[{id:C.id,params:{unitId:e,subUnitId:n,row:i,col:o,id:s.rangeId,url:u}}],redos:[]}},p.getUnitId(),p.getSheetId()))}}}),d&&l.setValue(i,o,c)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(n=>{n.type===t.UniverInstanceType.UNIVER_SHEET&&e(n)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===t.UniverInstanceType.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.SetRangeValuesMutation.id){let{unitId:n,subUnitId:r,cellValue:i}=e.params,a=this._enusreMap(n,r);i&&new t.ObjectMatrix(i).forValue((e,t,i)=>{let o=a.getValue(e,t);o&&o.dispose(),i&&i.p&&this._registerRange(n,r,e,t,i.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===C.id){let{unitId:t,subUnitId:n,row:i,col:a}=e.params,o=(0,r.getSheetCommandTarget)(this._univerInstanceService,{unitId:t,subUnitId:n}),s=this._enusreMap(t,n).getValue(i,a);if(s&&s.dispose(),o){let{worksheet:e}=o,r=e.getCellRaw(i,a);r&&r.p&&this._registerRange(t,n,i,a,r.p)}}}))}};j=d([u(0,t.ICommandService),u(1,t.IUniverInstanceService),u(2,(0,t.Inject)(r.RefRangeService))],j);let M=class extends t.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.SetRangeValuesCommand.id){let n=e.params,{unitId:r,subUnitId:i}=n,a=[],o=[];return n.cellValue&&new t.ObjectMatrix(n.cellValue).forValue((e,t)=>{let n=this._hyperLinkModel.getHyperLinkByLocation(r,i,e,t);n&&(a.push({id:m.id,params:{unitId:r,subUnitId:i,id:n.id}}),o.push({id:p.id,params:{unitId:r,subUnitId:i,link:n}}))}),{undos:o,redos:a}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.ClearSelectionContentCommand.id||e.id===r.ClearSelectionAllCommand.id||e.id===r.ClearSelectionFormatCommand.id){let n=[],i=[],a=this._selectionManagerService.getCurrentLastSelection(),o=(0,r.getSheetCommandTarget)(this._univerInstanceService,e.params);if(a&&o){let{unitId:e,subUnitId:r}=o;t.Range.foreach(a.range,(t,a)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,r,t,a);o&&(n.push({id:m.id,params:{unitId:e,subUnitId:r,id:o.id}}),i.push({id:p.id,params:{unitId:e,subUnitId:r,link:o}}))})}return{redos:n,undos:i}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(r.AFTER_CELL_EDIT,{handler:(e,n,r)=>{if(!e||e.p)return r(e);if(typeof e.v==`string`&&t.Tools.isLegalUrl(e.v)&&e.v[e.v.length-1]!==` `){let{unitId:i,subUnitId:a,row:o,col:s}=n,c=t.Tools.normalizeUrl(e.v),l=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return r(e);let d=u.getBlankCellDocumentModel(e,o,s);if(!d.documentModel)return r(e);let f=t.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:e.v.length,collapsed:!1},body:{dataStream:`${e.v}`,customRanges:[{startIndex:0,endIndex:e.v.length-1,rangeId:(0,t.generateRandomId)(),rangeType:t.CustomRangeType.HYPERLINK,properties:{url:c}}]},doc:d.documentModel});if(!f)return r(e);let p=d.documentModel.getBody();return t.TextX.apply(p,f.serialize()),r({...e,p:{id:t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,body:p,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return r(e)}}))}};M=d([u(0,(0,t.Inject)(r.SheetInterceptorService)),u(1,(0,t.Inject)(f)),u(2,(0,t.Inject)(r.SheetsSelectionsService)),u(3,t.IUniverInstanceService)],M);let N=class extends t.Disposable{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},n=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:O,businesses:[t.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};N=d([u(0,t.IResourceManagerService),u(1,(0,t.Inject)(f))],N);let P=class extends t.Disposable{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[h,y,_,b,v,g,p,x,m,S,C].forEach(e=>{this._commandService.registerCommand(e)})}};P=d([u(0,t.ICommandService)],P);let F=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),I=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${F.SHEET}=${t}${n?`&${typeof n==`string`?F.DEFINE_NAME:F.RANGE}=${typeof n==`string`?n:(0,a.serializeRange)(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:F.URL,name:e,url:e,searchObj:null}}_getURLName(e){var n;let{gid:r,range:i,rangeid:o,unitid:s}=e,c=s?this._univerInstanceService.getUnit(s,t.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET),l={type:F.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!c)return l;let u=r?c.getSheetBySheetId(r):c.getActiveSheet(),d=(n=u==null?void 0:u.getName())==null?``:n;if(i){if(!u)return l;let e=(0,a.deserializeRangeWithSheet)(i).range;return(0,t.isValidRange)(e,u)&&i!==`err`?{type:F.RANGE,name:(0,a.serializeRangeWithSheet)(d,e)}:l}if(o){let e=this._definedNamesService.getValueById(c.getUnitId(),o);return e?{type:F.DEFINE_NAME,name:e.formulaOrRefString}:l}if(r){let e=c.getSheetBySheetId(r);return e?{type:F.SHEET,name:e.getName()}:l}return l}};I=d([u(0,t.IUniverInstanceService),u(1,(0,t.Inject)(t.LocaleService)),u(2,a.IDefinedNamesService)],I);let L=class extends t.Plugin{constructor(e=D,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},D,this._config);this._configService.setConfig(E,i)}onStarting(){(0,t.registerDependencies)(this._injector,[[f],[I],[N],[P],[k],[M],[A],[j]]),(0,t.touchDependencies)(this._injector,[[k],[N],[P],[M],[A],[j]])}};l(L,`pluginName`,O),l(L,`packageName`,w),l(L,`version`,T),l(L,`type`,t.UniverInstanceType.UNIVER_SHEET),L=d([(0,t.DependentOn)(r.UniverSheetsPlugin),u(1,(0,t.Inject)(t.Injector)),u(2,t.IConfigService)],L),e.AddHyperLinkCommand=h,e.AddHyperLinkMutation=p,e.AddRichHyperLinkCommand=g,e.CancelHyperLinkCommand=_,e.CancelRichHyperLinkCommand=v,e.ERROR_RANGE=`err`,Object.defineProperty(e,`HyperLinkModel`,{enumerable:!0,get:function(){return f}}),e.RemoveHyperLinkMutation=m,e.SheetHyperLinkType=F,Object.defineProperty(e,`SheetsHyperLinkParserService`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,`UniverSheetsHyperLinkPlugin`,{enumerable:!0,get:function(){return L}}),e.UpdateHyperLinkCommand=y,e.UpdateHyperLinkMutation=x,e.UpdateHyperLinkRefMutation=S,e.UpdateRichHyperLinkCommand=b});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/docs`),require(`@univerjs/sheets`),require(`rxjs`),require(`@univerjs/engine-formula`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/sheets`,`rxjs`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsHyperLink={},e.UniverCore,e.UniverDocs,e.UniverSheets,e.rxjs,e.UniverEngineFormula))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function o(e){"@babel/helpers - typeof";return o=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},o(e)}function s(e,t){if(o(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(o(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function c(e){var t=s(e,`string`);return o(t)==`symbol`?t:t+``}function l(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(e,t){return function(n,r){t(n,r,e)}}function d(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 f=class extends t.Disposable{constructor(e){super(),this._univerInstanceService=e,l(this,`_linkUpdate$`,new i.Subject),l(this,`linkUpdate$`,this._linkUpdate$.asObservable()),l(this,`_linkMap`,new Map),l(this,`_linkPositionMap`,new Map),this.disposeWithMe({dispose:()=>{this._linkUpdate$.complete()}})}_ensureMap(e,n){let r=this._linkMap.get(e);r||(r=new Map,this._linkMap.set(e,r));let i=r.get(n);i||(i=new t.ObjectMatrix,r.set(n,i));let a=this._linkPositionMap.get(e);a||(a=new Map,this._linkPositionMap.set(e,a));let o=a.get(n);return o||(o=new Map,a.set(n,o)),{matrix:i,positionMap:o}}addHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t);return r.setValue(n.row,n.column,n),i.set(n.id,{row:n.row,column:n.column,link:n}),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:n,type:`add`}),!0}updateHyperLink(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return c?(Object.assign(c,r),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:{display:c.display,payload:c.payload},id:n,type:`update`,silent:i}),!0):!0}updateHyperLinkRef(e,t,n,r,i=!1){let{matrix:a,positionMap:o}=this._ensureMap(e,t),s=o.get(n);if(!s)return!0;let c=a.getValue(s.row,s.column);return!c||c.id!==n?c=s.link:a.realDeleteValue(s.row,s.column),Object.assign(c,r),o.set(n,{...r,link:c}),a.setValue(r.row,r.column,c),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:r,id:n,type:`updateRef`,silent:i}),!0}removeHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(!a)return!1;i.delete(n);let o=r.getValue(a.row,a.column);return o&&o.id===n&&r.realDeleteValue(a.row,a.column),this._linkUpdate$.next({unitId:e,subUnitId:t,payload:a.link,type:`remove`}),!0}getHyperLink(e,t,n){let{matrix:r,positionMap:i}=this._ensureMap(e,t),a=i.get(n);if(a)return r.getValue(a.row,a.column)}getHyperLinkByLocation(e,t,n,r){let{matrix:i}=this._ensureMap(e,t);return i.getValue(n,r)}getHyperLinkByLocationSync(e,n,r,i){var a,o,s,c;let{matrix:l}=this._ensureMap(e,n),u=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET),d=u==null||(a=u.getSheetBySheetId(n))==null?void 0:a.getCellRaw(r,i),f=((o=(s=d==null?void 0:d.v)==null?d==null||(c=d.p)==null||(c=c.body)==null?void 0:c.dataStream.slice(0,-2):s)==null?``:o).toString(),p=l.getValue(r,i);if(p)return{...p,display:f}}getSubUnit(e,t){let{matrix:n}=this._ensureMap(e,t),r=[];return n.forValue((e,t,n)=>{n&&r.push(n)}),r}getUnit(e){let t=this._linkMap.get(e);return t?Array.from(t.keys()).map(t=>({unitId:e,subUnitId:t,links:this.getSubUnit(e,t)})):[]}deleteUnit(e){let t=this.getUnit(e);this._linkMap.delete(e),this._linkPositionMap.delete(e),this._linkUpdate$.next({type:`unload`,unitId:e,unitLinks:t})}getAll(){return Array.from(this._linkMap.keys()).map(e=>this.getUnit(e))}};f=d([u(0,t.IUniverInstanceService)],f);let p={type:t.CommandType.MUTATION,id:`sheets.mutation.add-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,link:a}=t;return n.addHyperLink(r,i,a)}},m={type:t.CommandType.MUTATION,id:`sheets.mutation.remove-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,id:a}=t;return n.removeHyperLink(r,i,a)}},h={type:t.CommandType.COMMAND,id:`sheets.command.add-hyper-link`,async handler(e,n){if(!n)return!1;let i=e.get(t.ICommandService),a=e.get(t.IUndoRedoService),o=e.get(t.IUniverInstanceService),s=e.get(f),c=e.get(r.SheetInterceptorService),l=(0,r.getSheetCommandTarget)(o,n);if(!l)return!1;let{unitId:u,subUnitId:d,workbook:h,worksheet:g}=l,{link:_}=n,{payload:v,display:y,row:b,column:x,id:S}=_,C=g.getCell(b,x),w=g.getBlankCellDocumentModel(C,b,x),T=w.documentModel.getSnapshot(),E=t.Tools.deepClone(T.body);if(!E)return!1;let D;if(D=y?t.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:E.dataStream.length-2,collapsed:E.dataStream.length-2==0},body:{dataStream:`${y}`,customRanges:[{startIndex:0,endIndex:y.length-1,rangeType:t.CustomRangeType.HYPERLINK,rangeId:S,properties:{url:v}}]},doc:w.documentModel}):t.BuildTextUtils.customRange.add({body:E,ranges:[{startOffset:0,endOffset:E.dataStream.length-2,collapsed:!1}],rangeId:S,rangeType:t.CustomRangeType.HYPERLINK,properties:{url:v,refId:S}}),!D)return!1;let O=t.TextX.apply(E,D.serialize()),k={p:{...T,body:O},t:t.CellValueType.STRING},A=c.onWriteCell(h,g,b,x,k),j={unitId:u,subUnitId:d,cellValue:{[_.row]:{[_.column]:A}}},M={id:r.SetRangeValuesMutation.id,params:j},N=(0,r.SetRangeValuesUndoMutationFactory)(e,j),P={id:r.SetRangeValuesMutation.id,params:N},F=[M],I=[P],L=s.getHyperLinkByLocation(u,d,b,x);return L&&(F.push({id:m.id,params:{unitId:u,subUnitId:d,id:L.id}}),I.push({id:p.id,params:{unitId:u,subUnitId:d,link:L}})),await(0,t.sequenceExecute)(F,i)?await c.onValidateCell(h,g,b,x)===!1?((0,t.sequenceExecute)(I,i),!1):(a.pushUndoRedo({redoMutations:F,undoMutations:I,unitID:u}),!0):!1}},g={id:`sheets.command.add-rich-hyper-link`,type:t.CommandType.COMMAND,handler:async(e,r)=>{if(!r)return!1;let{documentId:i,link:a}=r,o=e.get(t.ICommandService),s=(0,t.generateRandomId)(),{payload:c}=a,l=(0,n.addCustomRangeBySelectionFactory)(e,{unitId:i,rangeId:s,rangeType:t.CustomRangeType.HYPERLINK,properties:{url:c,refId:s}});return l?o.syncExecuteCommand(l.id,l.params):!1}},_={type:t.CommandType.COMMAND,id:`sheets.command.cancel-hyper-link`,handler(e,n){var i;if(!n)return!1;let a=e.get(t.ICommandService),o=e.get(t.IUndoRedoService),s=e.get(t.IUniverInstanceService),c=e.get(f),l=(0,r.getSheetCommandTarget)(s,n);if(!l)return!1;let{row:u,column:d,id:h}=n,{unitId:g,subUnitId:_,worksheet:v}=l,y=v.getCell(u,d);if(!y)return!1;let b=v.getCellDocumentModelWithFormula(y,u,d);if(!(b!=null&&b.documentModel))return!1;let x=t.Tools.deepClone(b.documentModel.getSnapshot()),S=(i=x.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>`${e.rangeId}`===h);if(!S)return!1;let C=t.BuildTextUtils.customRange.delete({documentDataModel:b.documentModel,rangeId:S.rangeId});if(!C)return!1;let w=t.TextX.apply(x.body,C.serialize()),T=[],E=[],D={unitId:g,subUnitId:_,cellValue:{[u]:{[d]:{p:{...x,body:w},t:t.CellValueType.STRING}}}};T.push({id:r.SetRangeValuesMutation.id,params:D});let O=(0,r.SetRangeValuesUndoMutationFactory)(e,D);E.push({id:r.SetRangeValuesMutation.id,params:O});let k=c.getHyperLinkByLocation(g,_,u,d);return k&&(T.push({id:m.id,params:{unitId:g,subUnitId:_,id:h}}),E.push({id:p.id,params:{unitId:g,subUnitId:_,link:{...k}}})),(0,t.sequenceExecute)(T,a).result?(o.pushUndoRedo({redoMutations:T,undoMutations:E,unitID:g}),!0):!1}},v={type:t.CommandType.COMMAND,id:`sheets.command.cancel-rich-hyper-link`,handler(e,r){var i;if(!r)return!1;let{id:a,documentId:o}=r,s=e.get(t.ICommandService),c=e.get(t.IUniverInstanceService).getUnit(o,t.UniverInstanceType.UNIVER_DOC),l=c==null||(i=c.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===a),u=null;l&&l.endIndex===c.getBody().dataStream.length-3&&(u={dataStream:` `});let d=(0,n.deleteCustomRangeFactory)(e,{unitId:o,rangeId:a,insert:u});return d?s.syncExecuteCommand(d.id,d.params):!1}},y={type:t.CommandType.COMMAND,id:`sheets.command.update-hyper-link`,async handler(e,i){var a,o;if(!i)return!1;let s=e.get(t.ICommandService),c=e.get(t.IUndoRedoService),l=e.get(t.IUniverInstanceService),u=e.get(f),d=e.get(r.SheetInterceptorService),h=(0,r.getSheetCommandTarget)(l,{unitId:i.unitId,subUnitId:i.subUnitId});if(!h)return!1;let{payload:g,row:_,column:v,id:y}=i,{workbook:b,worksheet:x,unitId:S,subUnitId:C}=h,{payload:w,display:T=``}=g,E=x.getCell(_,v);if(!E)return!1;let D=x.getCellDocumentModelWithFormula(E,_,v);if(!(D!=null&&D.documentModel))return!1;let O=D.documentModel.getSnapshot(),k=(a=O.body)==null||(a=a.customRanges)==null?void 0:a.find(e=>`${e.rangeId}`===y);if(!k)return!1;let A=(0,t.generateRandomId)(),j=(o=(0,t.getBodySlice)(D.documentModel.getBody(),k.startIndex,k.endIndex+1).textRuns)==null?void 0:o[0];j&&(j.ed=T.length+1);let M=(0,n.replaceSelectionFactory)(e,{unitId:S,body:{dataStream:`${T}`,customRanges:[{rangeId:A,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:T.length-1,properties:{url:w}}],textRuns:j?[j]:void 0},selection:{startOffset:k.startIndex,endOffset:k.endIndex+1,collapsed:!1},doc:D.documentModel});if(!M)return!1;let N=t.TextX.apply(t.Tools.deepClone(O.body),M.textX.serialize()),P={p:{...O,body:N},t:t.CellValueType.STRING},F=d.onWriteCell(b,x,_,v,P),I={id:r.SetRangeValuesMutation.id,params:{unitId:S,subUnitId:C,cellValue:{[_]:{[v]:F}}}},L=(0,r.SetRangeValuesUndoMutationFactory)(e,I.params),R={id:r.SetRangeValuesMutation.id,params:L},z=[I],B=[R],V=u.getHyperLinkByLocation(S,C,_,v);return V&&(z.push({id:m.id,params:{unitId:S,subUnitId:C,id:V.id}}),B.push({id:p.id,params:{unitId:S,subUnitId:C,link:V}})),(0,t.sequenceExecute)(z,s)?await d.onValidateCell(b,x,_,v)===!1?((0,t.sequenceExecute)(B,s),!1):(c.pushUndoRedo({redoMutations:z,undoMutations:B,unitID:S}),!0):!1}},b={type:t.CommandType.COMMAND,id:`sheets.command.update-rich-hyper-link`,handler:(e,r)=>{var i,a,o;if(!r)return!1;let{documentId:s,payload:c,id:l}=r,u=e.get(t.IUniverInstanceService),d=e.get(t.ICommandService),f=u.getUnit(s,t.UniverInstanceType.UNIVER_DOC);if(!f)return!1;let p=(i=f.getBody())==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeId===l);if(!p)return!1;let m=(a=r.payload.display)==null?``:a,h=(0,t.generateRandomId)(),g=(o=(0,t.getBodySlice)(f.getBody(),p.startIndex,p.endIndex+1).textRuns)==null?void 0:o[0];g&&(g.ed=m.length+1);let _=(0,n.replaceSelectionFactory)(e,{unitId:s,body:{dataStream:`${m}`,customRanges:[{rangeId:h,rangeType:t.CustomRangeType.HYPERLINK,startIndex:0,endIndex:m.length-1,properties:{url:c.payload}}],textRuns:g?[g]:void 0},selection:{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},doc:f});return _?d.syncExecuteCommand(_.id,_.params):!1}},x={type:t.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,payload:a,id:o}=t;return n.updateHyperLink(r,i,o,a,!1)}},S={type:t.CommandType.MUTATION,id:`sheets.mutation.update-hyper-link-ref`,handler(e,t){if(!t)return!1;let n=e.get(f),{unitId:r,subUnitId:i,id:a,row:o,column:s,silent:c}=t;return n.updateHyperLinkRef(r,i,a,{row:o,column:s},c)}},C={type:t.CommandType.MUTATION,id:`sheets.mutation.update-rich-hyper-link`,handler(e,n){var i;if(!n)return!1;let{unitId:a,subUnitId:o,row:s,col:c,id:l,url:u}=n,d=(0,r.getSheetCommandTarget)(e.get(t.IUniverInstanceService),{unitId:a,subUnitId:o});if(!d)return!1;let{worksheet:f}=d,p=f.getCellRaw(s,c),m=p==null||(i=p.p)==null||(i=i.body)==null||(i=i.customRanges)==null?void 0:i.find(e=>e.rangeType===t.CustomRangeType.HYPERLINK&&e.rangeId===l);return m&&(m.properties.url=u),!0}};var w=`@univerjs/sheets-hyper-link`,T=`0.19.0`;let E=`sheets-hyper-link.config`;Symbol(E);let D={},O=`SHEET_HYPER_LINK_PLUGIN`,k=class extends t.Disposable{constructor(e,t,n,r){super(),this._refRangeService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._commandService=r,l(this,`_disposableMap`,new Map),l(this,`_watchDisposableMap`,new Map),l(this,`_rangeDisableMap`,new Map),l(this,`_rangeWatcherMap`,new Map),l(this,`_handlePositionChange`,(e,t,n,r,i)=>{let a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};return r?{redos:[{id:S.id,params:{unitId:e,subUnitId:t,id:n.id,row:r.startRow,column:r.startColumn,silent:i}}],undos:[{id:S.id,params:{unitId:e,subUnitId:t,id:n.id,row:a.startRow,column:a.startColumn,silent:i}}]}:{redos:[{id:m.id,params:{unitId:e,subUnitId:t,id:n.id}}],undos:[{id:p.id,params:{unitId:e,subUnitId:t,link:n}}]}}),this._initData(),this._initRefRange()}_registerPosition(e,t,n){let i=n.id,a={startColumn:n.column,endColumn:n.column,startRow:n.row,endRow:n.row};this._disposableMap.set(i,this._refRangeService.registerRefRange(a,i=>{let o=(0,r.handleCommonRangeChangeWithEffectRefCommandsSkipNoInterests)(a,i,{selectionManagerService:this._selectionManagerService}),s=Array.isArray(o)?o[0]:o;return s&&s.startColumn===a.startColumn&&s.startRow===a.startRow?{undos:[],redos:[]}:this._handlePositionChange(e,t,n,s,!1)},e,t))}_watchPosition(e,n,r){let i=r.id,a={startColumn:r.column,endColumn:r.column,startRow:r.row,endRow:r.row};this._watchDisposableMap.set(i,this._refRangeService.watchRange(e,n,a,(i,a)=>{let{redos:o}=this._handlePositionChange(e,n,r,a,!0);(0,t.sequenceExecuteAsync)(o,this._commandService,{onlyLocal:!0})},!0))}_unregisterPosition(e){let t=this._disposableMap.get(e);t==null||t.dispose(),this._disposableMap.delete(e)}_unwatchPosition(e){let t=this._watchDisposableMap.get(e);t==null||t.dispose(),this._watchDisposableMap.delete(e)}_registerRange(e,n,i,o=!1){if(i.startsWith(`#`)){var s,c,l;let u=new URLSearchParams(i.slice(1)),d={gid:(s=u.get(`gid`))==null?``:s,range:(c=u.get(`range`))==null?``:c,rangeid:(l=u.get(`rangeid`))==null?``:l};if(d.range&&d.gid){let s=d.gid,c=(0,a.deserializeRangeWithSheet)(d.range).range;(0,t.isValidRange)(c)&&d.range!==`err`&&(this._rangeDisableMap.set(n,this._refRangeService.registerRefRange(c,t=>{let o=(0,r.handleDefaultRangeChangeWithEffectRefCommandsSkipNoInterests)(c,t,{selectionManagerService:this._selectionManagerService});return o&&(0,a.serializeRange)(o)===(0,a.serializeRange)(c)?{redos:[],undos:[]}:{redos:[{id:x.id,params:{unitId:e,subUnitId:s,id:n,payload:{payload:`#gid=${s}&range=${o?(0,a.serializeRange)(o):`err`}`}}}],undos:[{id:x.id,params:{unitId:e,subUnitId:s,id:n,payload:{payload:i}}}]}},e,s)),o||this._rangeWatcherMap.set(n,this._refRangeService.watchRange(e,s,c,(t,r)=>{this._hyperLinkModel.updateHyperLink(e,s,n,{payload:`#gid=${s}&range=${r?(0,a.serializeRange)(r):`err`}`},!0)},!0)))}}}_unregisterRange(e){let t=this._rangeDisableMap.get(e);t==null||t.dispose(),this._rangeDisableMap.delete(e)}_unwatchRange(e){let t=this._rangeWatcherMap.get(e);t==null||t.dispose(),this._rangeWatcherMap.delete(e)}_initData(){this._hyperLinkModel.getAll().forEach(e=>{e.forEach(e=>{let{unitId:t,subUnitId:n,links:r}=e;r.forEach(e=>{this._registerPosition(t,n,e),this._watchPosition(t,n,e),this._registerRange(t,e.id,e.payload)})})})}_initRefRange(){this.disposeWithMe(this._hyperLinkModel.linkUpdate$.subscribe(e=>{switch(e.type){case`add`:this._registerPosition(e.unitId,e.subUnitId,e.payload),this._watchPosition(e.unitId,e.subUnitId,e.payload),this._registerRange(e.unitId,e.payload.id,e.payload.payload);break;case`remove`:this._unregisterPosition(e.payload.id),this._unwatchPosition(e.payload.id),this._unregisterRange(e.payload.id),this._unwatchRange(e.payload.id);break;case`updateRef`:{let{unitId:t,subUnitId:n,id:r,silent:i}=e,a=this._hyperLinkModel.getHyperLink(t,n,r);if(!a)return;this._unregisterPosition(r),this._registerPosition(t,n,a),i||(this._unwatchPosition(r),this._watchPosition(t,n,a));break}case`unload`:{let{unitLinks:t}=e;t.forEach(e=>{let{links:t}=e;t.forEach(e=>{this._unregisterPosition(e.id),this._unwatchPosition(e.id),this._unregisterRange(e.id),this._unwatchRange(e.id)})});break}case`update`:e.silent||this._unwatchRange(e.id),this._unregisterRange(e.id),this._registerRange(e.unitId,e.id,e.payload.payload,e.silent);break}})),this.disposeWithMe((0,t.toDisposable)(()=>{this._disposableMap.forEach(e=>{e.dispose()}),this._disposableMap.clear()}))}};k=d([u(0,(0,t.Inject)(r.RefRangeService)),u(1,(0,t.Inject)(f)),u(2,(0,t.Inject)(r.SheetsSelectionsService)),u(3,t.ICommandService)],k);let A=class extends t.Disposable{constructor(e,t,n){super(),this._sheetInterceptorService=e,this._univerInstanceService=t,this._hyperLinkModel=n,this._initSheetChange()}_initSheetChange(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.RemoveSheetCommand.id){var n;let r=e.params,i=r.unitId?this._univerInstanceService.getUnit(r.unitId):this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET);if(!i)return{redos:[],undos:[]};let a=i.getUnitId(),o=r.subUnitId||((n=i.getActiveSheet())==null?void 0:n.getSheetId());if(!o)return{redos:[],undos:[]};let s=this._hyperLinkModel.getSubUnit(a,o);return{redos:s.map(e=>({id:m.id,params:{unitId:a,subUnitId:o,id:e.id}})),undos:s.map(e=>({id:p.id,params:{unitId:a,subUnitId:o,link:e}}))}}return{redos:[],undos:[]}}}))}};A=d([u(0,(0,t.Inject)(r.SheetInterceptorService)),u(1,t.IUniverInstanceService),u(2,(0,t.Inject)(f))],A);let j=class extends t.Disposable{constructor(e,t,n){super(),this._commandService=e,this._univerInstanceService=t,this._refRangeService=n,l(this,`_refRangeMap`,new Map),this._initWorkbookLoad(),this._initWorkbookUnload(),this._initSetRangesListener()}_enusreMap(e,n){let r=this._refRangeMap.get(e);r||(r=new Map,this._refRangeMap.set(e,r));let i=r.get(n);return i||(i=new t.ObjectMatrix,r.set(n,i)),i}_isLegalRangeUrl(e,n){let r=this._univerInstanceService.getUnit(e,t.UniverInstanceType.UNIVER_SHEET);if(!r)return null;if(n&&n.startsWith(`#`)){var i,o,s;let e=new URLSearchParams(n.slice(1)),c={gid:(i=e.get(`gid`))==null?``:i,range:(o=e.get(`range`))==null?``:o,rangeid:(s=e.get(`rangeid`))==null?``:s};if(c.range&&c.gid){let e=c.gid,n=r.getSheetBySheetId(e);if(!n)return null;let i=(0,a.deserializeRangeWithSheet)(c.range).range;if((0,t.isValidRange)(i,n)&&c.range!==`err`)return{range:i,worksheet:n}}}return null}_registerRange(e,n,i,o,s){var c;let l=this._enusreMap(e,n);if(!((c=s.body)==null||(c=c.customRanges)==null)&&c.some(n=>{var r;return n.rangeType===t.CustomRangeType.HYPERLINK&&this._isLegalRangeUrl(e,(r=n.properties)==null?void 0:r.url)})){var u;let c=new t.DisposableCollection,d=!1;(u=s.body)==null||(u=u.customRanges)==null||u.forEach(s=>{if(s.rangeType===t.CustomRangeType.HYPERLINK){var l;let u=(l=s.properties)==null?void 0:l.url,f=this._isLegalRangeUrl(e,u);if(f){let{range:l,worksheet:p}=f;d=!0,c.add(this._refRangeService.registerRefRange(l,c=>{let d=(0,r.handleDefaultRangeChangeWithEffectRefCommands)(l,c);return d&&t.Rectangle.equals(d,l)?{preRedos:[],preUndos:[],redos:[],undos:[]}:{preRedos:[{id:C.id,params:{unitId:e,subUnitId:n,row:i,col:o,id:s.rangeId,url:`#gid=${n}&range=${d?(0,a.serializeRange)(d):`err`}`}}],undos:[{id:C.id,params:{unitId:e,subUnitId:n,row:i,col:o,id:s.rangeId,url:u}}],redos:[]}},p.getUnitId(),p.getSheetId()))}}}),d&&l.setValue(i,o,c)}}_initWorkbookLoad(){let e=e=>{let t=e.getUnitId();e.getSheets().forEach(e=>{let n=e.getSheetId(),r=this._enusreMap(t,n);e.getCellMatrix().forValue((e,i,a)=>{let o=r.getValue(e,i);o&&o.dispose(),a&&a.p&&this._registerRange(t,n,e,i,a.p)})})};this._univerInstanceService.getAllUnitsForType(t.UniverInstanceType.UNIVER_SHEET).forEach(t=>{e(t)}),this.disposeWithMe(this._univerInstanceService.unitAdded$.subscribe(n=>{n.type===t.UniverInstanceType.UNIVER_SHEET&&e(n)}))}_initWorkbookUnload(){this.disposeWithMe(this._univerInstanceService.unitDisposed$.subscribe(e=>{if(e.type===t.UniverInstanceType.UNIVER_SHEET){let t=e,n=t.getUnitId();t.getSheets().forEach(e=>{let t=e.getSheetId();this._enusreMap(n,t).forValue((e,t,n)=>{n&&n.dispose()})}),this._refRangeMap.delete(n)}}))}_initSetRangesListener(){this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===r.SetRangeValuesMutation.id){let{unitId:n,subUnitId:r,cellValue:i}=e.params,a=this._enusreMap(n,r);i&&new t.ObjectMatrix(i).forValue((e,t,i)=>{let o=a.getValue(e,t);o&&o.dispose(),i&&i.p&&this._registerRange(n,r,e,t,i.p)})}})),this.disposeWithMe(this._commandService.onCommandExecuted(e=>{if(e.id===C.id){let{unitId:t,subUnitId:n,row:i,col:a}=e.params,o=(0,r.getSheetCommandTarget)(this._univerInstanceService,{unitId:t,subUnitId:n}),s=this._enusreMap(t,n).getValue(i,a);if(s&&s.dispose(),o){let{worksheet:e}=o,r=e.getCellRaw(i,a);r&&r.p&&this._registerRange(t,n,i,a,r.p)}}}))}};j=d([u(0,t.ICommandService),u(1,t.IUniverInstanceService),u(2,(0,t.Inject)(r.RefRangeService))],j);let M=class extends t.Disposable{constructor(e,t,n,r){super(),this._sheetInterceptorService=e,this._hyperLinkModel=t,this._selectionManagerService=n,this._univerInstanceService=r,this._initCommandInterceptor(),this._initAfterEditor()}_initCommandInterceptor(){this._initSetRangeValuesCommandInterceptor(),this._initClearSelectionCommandInterceptor()}_initSetRangeValuesCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.SetRangeValuesCommand.id){let n=e.params,{unitId:r,subUnitId:i}=n,a=[],o=[];return n.cellValue&&new t.ObjectMatrix(n.cellValue).forValue((e,t)=>{let n=this._hyperLinkModel.getHyperLinkByLocation(r,i,e,t);n&&(a.push({id:m.id,params:{unitId:r,subUnitId:i,id:n.id}}),o.push({id:p.id,params:{unitId:r,subUnitId:i,link:n}}))}),{undos:o,redos:a}}return{redos:[],undos:[]}}}))}_initClearSelectionCommandInterceptor(){this.disposeWithMe(this._sheetInterceptorService.interceptCommand({getMutations:e=>{if(e.id===r.ClearSelectionContentCommand.id||e.id===r.ClearSelectionAllCommand.id||e.id===r.ClearSelectionFormatCommand.id){let n=[],i=[],a=this._selectionManagerService.getCurrentLastSelection(),o=(0,r.getSheetCommandTarget)(this._univerInstanceService,e.params);if(a&&o){let{unitId:e,subUnitId:r}=o;t.Range.foreach(a.range,(t,a)=>{let o=this._hyperLinkModel.getHyperLinkByLocation(e,r,t,a);o&&(n.push({id:m.id,params:{unitId:e,subUnitId:r,id:o.id}}),i.push({id:p.id,params:{unitId:e,subUnitId:r,link:o}}))})}return{redos:n,undos:i}}return{redos:[],undos:[]}}}))}_initAfterEditor(){this.disposeWithMe(this._sheetInterceptorService.writeCellInterceptor.intercept(r.AFTER_CELL_EDIT,{handler:(e,n,r)=>{if(!e||e.p)return r(e);if(typeof e.v==`string`&&t.Tools.isLegalUrl(e.v)&&e.v[e.v.length-1]!==` `){let{unitId:i,subUnitId:a,row:o,col:s}=n,c=t.Tools.normalizeUrl(e.v),l=this._univerInstanceService.getUnit(i,t.UniverInstanceType.UNIVER_SHEET),u=l==null?void 0:l.getSheetBySheetId(a);if(!u)return r(e);let d=u.getBlankCellDocumentModel(e,o,s);if(!d.documentModel)return r(e);let f=t.BuildTextUtils.selection.replace({selection:{startOffset:0,endOffset:e.v.length,collapsed:!1},body:{dataStream:`${e.v}`,customRanges:[{startIndex:0,endIndex:e.v.length-1,rangeId:(0,t.generateRandomId)(),rangeType:t.CustomRangeType.HYPERLINK,properties:{url:c}}]},doc:d.documentModel});if(!f)return r(e);let p=d.documentModel.getBody();return t.TextX.apply(p,f.serialize()),r({...e,p:{id:t.DOCS_NORMAL_EDITOR_UNIT_ID_KEY,body:p,documentStyle:{pageSize:{width:1/0,height:1/0}}}})}return r(e)}}))}};M=d([u(0,(0,t.Inject)(r.SheetInterceptorService)),u(1,(0,t.Inject)(f)),u(2,(0,t.Inject)(r.SheetsSelectionsService)),u(3,t.IUniverInstanceService)],M);let N=class extends t.Disposable{constructor(e,t){super(),this._resourceManagerService=e,this._hyperLinkModel=t,this._initSnapshot()}_initSnapshot(){let e=e=>{let t=this._hyperLinkModel.getUnit(e),n={};return t?(t.forEach(e=>{n[e.subUnitId]=e.links.map(({display:e,...t})=>t)}),JSON.stringify(n)):``},n=e=>{if(!e)return{};try{return JSON.parse(e)}catch{return{}}};this.disposeWithMe(this._resourceManagerService.registerPluginResource({pluginName:O,businesses:[t.UniverInstanceType.UNIVER_SHEET],toJson:t=>e(t),parseJson:e=>n(e),onUnLoad:e=>{this._hyperLinkModel.deleteUnit(e)},onLoad:async(e,t)=>{Object.keys(t).forEach(n=>{t[n].forEach(t=>{this._hyperLinkModel.addHyperLink(e,n,t)})})}}))}};N=d([u(0,t.IResourceManagerService),u(1,(0,t.Inject)(f))],N);let P=class extends t.Disposable{constructor(e){super(),this._commandService=e,this._registerCommands()}_registerCommands(){[h,y,_,b,v,g,p,x,m,S,C].forEach(e=>{this._commandService.registerCommand(e)})}};P=d([u(0,t.ICommandService)],P);let F=function(e){return e.SHEET=`gid`,e.RANGE=`range`,e.DEFINE_NAME=`rangeid`,e.INVALID=`invalid`,e.URL=`url`,e}({}),I=class{constructor(e,t,n){this._univerInstanceService=e,this._localeService=t,this._definedNamesService=n}buildHyperLink(e,t,n){return`#${F.SHEET}=${t}${n?`&${typeof n==`string`?F.DEFINE_NAME:F.RANGE}=${typeof n==`string`?n:(0,a.serializeRange)(n)}`:``}`}parseHyperLink(e){if(e.startsWith(`#`)){var t,n,r,i;let a=new URLSearchParams(e.slice(1)),o={gid:(t=a.get(`gid`))==null?``:t,range:(n=a.get(`range`))==null?``:n,rangeid:(r=a.get(`rangeid`))==null?``:r,unitid:(i=a.get(`unitid`))==null?``:i},s=this._getURLName(o);return{type:s.type,name:s.name,url:e,searchObj:o}}else return{type:F.URL,name:e,url:e,searchObj:null}}_getURLName(e){var n;let{gid:r,range:i,rangeid:o,unitid:s}=e,c=s?this._univerInstanceService.getUnit(s,t.UniverInstanceType.UNIVER_SHEET):this._univerInstanceService.getCurrentUnitForType(t.UniverInstanceType.UNIVER_SHEET),l={type:F.INVALID,name:this._localeService.t(`hyperLink.message.refError`)};if(!c)return l;let u=r?c.getSheetBySheetId(r):c.getActiveSheet(),d=(n=u==null?void 0:u.getName())==null?``:n;if(i){if(!u)return l;let e=(0,a.deserializeRangeWithSheet)(i).range;return(0,t.isValidRange)(e,u)&&i!==`err`?{type:F.RANGE,name:(0,a.serializeRangeWithSheet)(d,e)}:l}if(o){let e=this._definedNamesService.getValueById(c.getUnitId(),o);return e?{type:F.DEFINE_NAME,name:e.formulaOrRefString}:l}if(r){let e=c.getSheetBySheetId(r);return e?{type:F.SHEET,name:e.getName()}:l}return l}};I=d([u(0,t.IUniverInstanceService),u(1,(0,t.Inject)(t.LocaleService)),u(2,a.IDefinedNamesService)],I);let L=class extends t.Plugin{constructor(e=D,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},D,this._config);this._configService.setConfig(E,i)}onStarting(){(0,t.registerDependencies)(this._injector,[[f],[I],[N],[P],[k],[M],[A],[j]]),(0,t.touchDependencies)(this._injector,[[k],[N],[P],[M],[A],[j]])}};l(L,`pluginName`,O),l(L,`packageName`,w),l(L,`version`,T),l(L,`type`,t.UniverInstanceType.UNIVER_SHEET),L=d([(0,t.DependentOn)(r.UniverSheetsPlugin),u(1,(0,t.Inject)(t.Injector)),u(2,t.IConfigService)],L),e.AddHyperLinkCommand=h,e.AddHyperLinkMutation=p,e.AddRichHyperLinkCommand=g,e.CancelHyperLinkCommand=_,e.CancelRichHyperLinkCommand=v,e.ERROR_RANGE=`err`,Object.defineProperty(e,`HyperLinkModel`,{enumerable:!0,get:function(){return f}}),e.RemoveHyperLinkMutation=m,e.SheetHyperLinkType=F,Object.defineProperty(e,`SheetsHyperLinkParserService`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(e,`UniverSheetsHyperLinkPlugin`,{enumerable:!0,get:function(){return L}}),e.UpdateHyperLinkCommand=y,e.UpdateHyperLinkMutation=x,e.UpdateHyperLinkRefMutation=S,e.UpdateRichHyperLinkCommand=b});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-hyper-link",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -56,16 +56,16 @@
|
|
|
56
56
|
"rxjs": ">=7.0.0"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@univerjs/
|
|
60
|
-
"@univerjs/
|
|
61
|
-
"@univerjs/
|
|
62
|
-
"@univerjs/
|
|
59
|
+
"@univerjs/engine-formula": "0.19.0",
|
|
60
|
+
"@univerjs/sheets": "0.19.0",
|
|
61
|
+
"@univerjs/docs": "0.19.0",
|
|
62
|
+
"@univerjs/core": "0.19.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"rxjs": "^7.8.2",
|
|
66
|
-
"typescript": "^
|
|
67
|
-
"vitest": "^4.1.
|
|
68
|
-
"@univerjs-infra/shared": "0.
|
|
66
|
+
"typescript": "^6.0.2",
|
|
67
|
+
"vitest": "^4.1.1",
|
|
68
|
+
"@univerjs-infra/shared": "0.19.0"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"test": "vitest run",
|