@univerjs/docs-toc 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/cjs/index.js CHANGED
@@ -467,7 +467,7 @@ function getFormatIndent(format) {
467
467
  //#endregion
468
468
  //#region package.json
469
469
  var name = "@univerjs/docs-toc";
470
- var version = "1.0.2";
470
+ var version = "1.0.3";
471
471
 
472
472
  //#endregion
473
473
  //#region src/config/config.ts
package/lib/es/index.js CHANGED
@@ -466,7 +466,7 @@ function getFormatIndent(format) {
466
466
  //#endregion
467
467
  //#region package.json
468
468
  var name = "@univerjs/docs-toc";
469
- var version = "1.0.2";
469
+ var version = "1.0.3";
470
470
 
471
471
  //#endregion
472
472
  //#region src/config/config.ts
package/lib/index.js CHANGED
@@ -466,7 +466,7 @@ function getFormatIndent(format) {
466
466
  //#endregion
467
467
  //#region package.json
468
468
  var name = "@univerjs/docs-toc";
469
- var version = "1.0.2";
469
+ var version = "1.0.3";
470
470
 
471
471
  //#endregion
472
472
  //#region src/config/config.ts
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/engine-render"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/engine-render`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsToc={},e.UniverCore,e.UniverDocs,e.UniverEngineRender,e.rxjs))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});async function a(e,r,i,a,o,s,c=(0,t.generateRandomId)()){let l=new t.TextX;l.push(...t.BuildTextUtils.selection.delete([a],r.getBody(),0,o));let u=a.startOffset+o.dataStream.length;e.get(n.DocStateChangeManagerService).flushPendingChanges(i);let d=e.get(t.IUndoRedoService).beginUndoRedoGroup(i,c,`append`);try{return!!e.get(t.ICommandService).syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:i,historyAction:s,actions:t.JSONX.getInstance().editOp(l.serialize(),(0,t.getRichTextEditPath)(r)),textRanges:[{startOffset:u,endOffset:u,collapsed:!0}],debounce:!1,trigger:s})}finally{d.dispose()}}let o={id:`doc.command.update-table-of-contents`,type:t.CommandType.COMMAND,handler:(e,t)=>s(e,t)};async function s(e,i,s=(0,t.generateRandomId)()){var c,l,u;let g=e.get(t.IUniverInstanceService),_=i!=null&&i.unitId?g.getUnit(i.unitId,t.UniverInstanceType.UNIVER_DOC):g.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),v=_==null?void 0:_.getBody(),b=e.get(n.DocSelectionManagerService).getActiveTextRange(),x=i!=null&&i.rangeId?v==null||(c=v.customRanges)==null?void 0:c.find(e=>e.rangeId===i.rangeId&&d(e)):f(v,b==null?void 0:b.startOffset),S=_==null?void 0:_.getUnitId();if(!_||!v||!x||((l=x.properties)==null?void 0:l.locked)===t.BooleanNumber.TRUE||!S)return!1;let C=e.get(r.IRenderManagerService).getRenderUnitById(S),w=C==null||(u=C.getInjector)==null?void 0:u.call(C);if(!C||!(w!=null&&w.has(n.DocSkeletonManagerService)))return!1;let T=C.with(n.DocSkeletonManagerService).getSkeleton();if(!await p(T))return!1;let E=!1;for(let n=0;n<3;n+=1){var D,O,k;let r=_.getBody(),c=r==null||(D=r.customRanges)==null?void 0:D.find(e=>e.rangeId===x.rangeId&&d(e));if(!r||!c||((O=c.properties)==null?void 0:O.locked)===t.BooleanNumber.TRUE)return!1;let l=e=>{var t;let n=T.findBodyPageIndexByCharIndex(e);return(t=T.getSkeletonData())==null||(t=t.pages[n])==null?void 0:t.pageNumber},u=(i==null?void 0:i.mode)===`pageNumbersOnly`?h(r,c,l):y(r,c,l);if(!u)return!1;if((i==null?void 0:i.mode)===`pageNumbersOnly`&&t.Tools.diffValue((0,t.getBodySlice)(r,c.startIndex,c.endIndex+1,!0,t.SliceBodyType.cut),u)||E&&r.dataStream.slice(c.startIndex,c.endIndex+1)===u.dataStream)return!0;let f=((k=T.getLayoutProgress())==null?void 0:k.generation)??-1;if(E=await a(e,_,S,{startOffset:c.startIndex,endOffset:c.endIndex+1,collapsed:!1},u,o.id,s),!E||n===2)return E;if(!await m(T,f))return!1}return E}let c={id:`doc.command.delete-table-of-contents`,type:t.CommandType.COMMAND,async handler(e,r){var i;let o=e.get(t.IUniverInstanceService),s=r!=null&&r.unitId?o.getUnit(r.unitId,t.UniverInstanceType.UNIVER_DOC):o.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),l=s==null?void 0:s.getBody(),u=e.get(n.DocSelectionManagerService).getActiveTextRange(),p=r!=null&&r.rangeId?l==null||(i=l.customRanges)==null?void 0:i.find(e=>e.rangeId===r.rangeId&&d(e)):f(l,u==null?void 0:u.startOffset),m=s==null?void 0:s.getUnitId();return!p||!m?!1:a(e,s,m,{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},{dataStream:``},c.id)}},l={id:`doc.command.insert-table-of-contents`,type:t.CommandType.COMMAND,async handler(e,i){var o;let c=e.get(t.IUniverInstanceService),d=i!=null&&i.unitId?c.getUnit(i.unitId,t.UniverInstanceType.UNIVER_DOC):c.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),m=e.get(n.DocSelectionManagerService).getActiveTextRange(),h=d==null?void 0:d.getBody(),g=d==null?void 0:d.getUnitId(),_=g?e.get(r.IRenderManagerService).getRenderUnitById(g):void 0,v=_==null||(o=_.getInjector)==null?void 0:o.call(_);if(!d||!h||!g||!m||m.segmentId||m.startOffset!==m.endOffset||f(h,m.startOffset)||!_||!(v!=null&&v.has(n.DocSkeletonManagerService)))return!1;let b=_.with(n.DocSkeletonManagerService).getSkeleton();if(!await p(b))return!1;let x=Math.min(9,Math.max(1,Math.trunc((i==null?void 0:i.levels)??3))),S=(i==null?void 0:i.showPageNumbers)??!0,C=S&&((i==null?void 0:i.rightAlignPageNumbers)??!0),w=(i==null?void 0:i.tabLeader)??`dots`,T=(i==null?void 0:i.format)??`fromTemplate`,E=(0,t.generateRandomId)(),D={rangeId:E,rangeType:t.CustomRangeType.FIELD,startIndex:m.startOffset,endIndex:m.startOffset,wholeEntity:!1,properties:{fieldType:`TOC`,instruction:u({levels:x,showPageNumbers:S,rightAlignPageNumbers:C}),sourceKind:`complex`,showPageNumbers:S,rightAlignPageNumbers:C,tabLeader:w,format:T,title:i==null?void 0:i.title}},{pageSize:O,marginLeft:k=0,marginRight:A=0}=d.getDocumentStyle(),j=y(h,D,e=>{var t;let n=b.findBodyPageIndexByCharIndex(e);return(t=b.getSkeletonData())==null||(t=t.pages[n])==null?void 0:t.pageNumber},t.generateRandomId,{tabStopOffset:Math.max(72,((O==null?void 0:O.width)??594.3)-k-A)});if(!j)return!1;let M=(0,t.generateRandomId)();return await a(e,d,g,{startOffset:m.startOffset,endOffset:m.startOffset,collapsed:!0},j,l.id,M)?(await s(e,{unitId:g,rangeId:E,mode:`entireTable`},M),!0):!1}};function u(e={}){let t=Math.min(9,Math.max(1,Math.trunc(e.levels??3))),n=e.showPageNumbers??!0,r=n&&(e.rightAlignPageNumbers??!0);return`TOC ${[`\\o "1-${t}"`,`\\h`,`\\z`,`\\u`,...n?[]:[`\\n`],...n&&!r?[`\\p " "`]:[]].join(` `)}`}function d(e){var n;return e.rangeType===t.CustomRangeType.FIELD&&((n=e.properties)==null?void 0:n.fieldType)===`TOC`}function f(e,t){var n;if(t!=null)return e==null||(n=e.customRanges)==null?void 0:n.filter(e=>d(e)&&e.startIndex<=t&&t<=e.endIndex).sort((e,t)=>e.endIndex-e.startIndex-(t.endIndex-t.startIndex))[0]}async function p(e){let t=e.getLayoutProgress();if(t==null||t.complete)return!0;try{return await(0,i.firstValueFrom)(e.layoutProgress$.pipe((0,i.filter)(e=>e.complete),(0,i.take)(1),(0,i.timeout)({first:3e4}))),!0}catch{return!1}}async function m(e,t){try{return await(0,i.firstValueFrom)(e.layoutProgress$.pipe((0,i.filter)(e=>e.generation>t&&e.complete),(0,i.take)(1),(0,i.timeout)({first:3e4}))),!0}catch{return!1}}function h(e,n,r){var i,a,o;if(((i=n.properties)==null?void 0:i.locked)===t.BooleanNumber.TRUE)return null;let s=t.Tools.deepClone((0,t.getBodySlice)(e,n.startIndex,n.endIndex+1,!0,t.SliceBodyType.cut)),c=((a=s.customRanges)==null?void 0:a.filter(e=>{var n,r;return e.rangeType===t.CustomRangeType.FIELD&&((n=e.properties)==null?void 0:n.fieldType)===`PAGEREF`&&((r=e.properties)==null?void 0:r.locked)!==t.BooleanNumber.TRUE}).sort((e,t)=>t.startIndex-e.startIndex))??[];for(let t of c){var l;let n=(l=e.customRanges)==null?void 0:l.find(e=>e.rangeId===t.rangeId),i=n&&g(e,n),a=i==null?void 0:r(i);if(a==null)return null;_(s,t,String(a))}let u=(o=s.customRanges)==null?void 0:o.find(e=>e.rangeId===n.rangeId);return u!=null&&u.properties&&(u.properties.cachedResult=(0,t.getPlainText)(s.dataStream.slice(1,-1)).replaceAll(``,``).replaceAll(``,``)),s}function g(e,n){var r,i,a,o,s;let c=(r=String(((i=n.properties)==null?void 0:i.instruction)??``).match(/PAGEREF\s+"?([^"\s\\]+)"?/i))==null?void 0:r[1];if(c){var l;let n=(l=e.customRanges)==null?void 0:l.find(e=>{var n;return e.rangeType===t.CustomRangeType.BOOKMARK&&((n=e.properties)==null?void 0:n.bookmarkId)===c});if(n)return n.startIndex}let u=(a=e.customRanges)==null?void 0:a.find(e=>e.rangeType===t.CustomRangeType.HYPERLINK&&e.startIndex<=n.startIndex&&n.endIndex<=e.endIndex),d=u==null||(o=u.properties)==null?void 0:o.headingId;return(s=e.paragraphs)==null||(s=s.find(e=>{var t;return((t=e.paragraphStyle)==null?void 0:t.headingId)===d}))==null?void 0:s.startIndex}function _(e,t,n){var r,i;let a=t.startIndex+1,o=t.endIndex;if(t.properties&&(t.properties.cachedResult=n),e.dataStream.slice(a,o)===n)return;let s=n.length-(o-a);e.dataStream=`${e.dataStream.slice(0,a)}${n}${e.dataStream.slice(o)}`,v(e.textRuns,a,o,s),(r=e.paragraphs)==null||r.forEach(e=>{e.startIndex>=o&&(e.startIndex+=s)}),(i=e.customRanges)==null||i.forEach(e=>{e.startIndex>=o?(e.startIndex+=s,e.endIndex+=s):e.endIndex>=o&&(e.endIndex+=s)})}function v(e,t,n,r){e==null||e.forEach(e=>{e.st>=n?(e.st+=r,e.ed+=r):e.ed>t&&(e.ed+=r)})}function y(e,n,r,i=t.generateRandomId,a){var o,s,c,l,u,d,f,p,m;if(((o=n.properties)==null?void 0:o.locked)===t.BooleanNumber.TRUE)return null;let h=String(((s=n.properties)==null?void 0:s.instruction)??``);if(/\\c\s+/i.test(h))return null;let[g,_]=S(h),v=C(e,n,g,_);if(v.length===0)return null;let y=((c=n.properties)==null?void 0:c.showPageNumbers)!==!1&&!/\\n(?:\s|$)/i.test(h),x=y&&((l=n.properties)==null?void 0:l.rightAlignPageNumbers)!==!1&&!/\\p\s+/i.test(h),w=E((u=n.properties)==null?void 0:u.tabLeader),D=O((d=n.properties)==null?void 0:d.format),k=((f=e.customRanges)==null?void 0:f.some(e=>e.rangeId===n.rangeId))??!1?((p=e.paragraphs)==null?void 0:p.filter(e=>e.startIndex>=n.startIndex&&e.startIndex<=n.endIndex))??[]:[],A=typeof((m=n.properties)==null?void 0:m.title)==`string`?n.properties.title.trim():b(e,k),j={dataStream:``,paragraphs:[],customRanges:[]},M=j.customRanges,N=k.find(e=>{var t;return((t=e.styleId)==null?void 0:t.toLowerCase())===`tocheading`}),P=k.filter(e=>e!==N),F=new Set,I=``;A&&(j.dataStream+=`${A}\r`,I+=`${A}\r`,j.paragraphs.push((0,t.cloneParagraphWithId)({startIndex:j.dataStream.length-1,paragraphId:(N==null?void 0:N.paragraphId)??``,styleId:`TOCHeading`},F)));for(let[e,n]of v.entries()){let o=y?r(n.startOffset):void 0;if(y&&o==null)return null;let s=j.dataStream.length,c=y?x?` `:` `:``,l=`${n.text}${c}${o??``}`;j.dataStream+=`${n.text}${c}`;let u=n.bookmarkId??n.headingId,d={startIndex:s,endIndex:j.dataStream.length-1,rangeId:i(),rangeType:t.CustomRangeType.HYPERLINK,wholeEntity:!1,properties:{...n.bookmarkId?{bookmarkId:u}:{headingId:u},textStyleMode:`text`}};if(M.push(d),y){let e=j.dataStream.length;j.dataStream+=`${o}`;let n=j.dataStream.length-1;d.endIndex=n,M.push({startIndex:e,endIndex:n,rangeId:i(),rangeType:t.CustomRangeType.FIELD,wholeEntity:!1,properties:{fieldType:`PAGEREF`,instruction:`PAGEREF ${u} \\h`,cachedResult:String(o),sourceKind:`complex`}})}j.dataStream+=`\r`,I+=`${l}\r`,j.paragraphs.push(T(P,e,n.level,j.dataStream.length-1,F,x?a==null?void 0:a.tabStopOffset:void 0,w,D))}return j.dataStream+=``,M.push({startIndex:0,endIndex:j.dataStream.length-1,rangeId:n.rangeId,rangeType:t.CustomRangeType.FIELD,wholeEntity:!1,properties:{...t.Tools.deepClone(n.properties??{}),fieldType:`TOC`,instruction:h,cachedResult:I}}),M.sort((e,t)=>e.startIndex-t.startIndex||t.endIndex-e.endIndex),j}function b(e,n){let r=n.find(e=>{var t;return((t=e.styleId)==null?void 0:t.toLowerCase())===`tocheading`});if(!r)return``;let i=[...e.paragraphs??[]].sort((e,t)=>e.startIndex-t.startIndex),a=i.findIndex(e=>e===r||e.paragraphId===r.paragraphId),o=a>0?i[a-1].startIndex+1:0;for(;e.dataStream[o]===``||e.dataStream[o]===``;)o+=1;return(0,t.getPlainText)(e.dataStream.slice(o,r.startIndex)).trim()}function x(e,t=3){return e?C(e,void 0,1,Math.min(9,Math.max(1,Math.trunc(t)))).length:0}function S(e){let t=e.match(/\\o\s+"(\d+)\s*-\s*(\d+)"/i),n=Math.max(1,Number((t==null?void 0:t[1])??1));return[n,Math.min(9,Math.max(n,Number((t==null?void 0:t[2])??3)))]}function C(e,n,r,i){let a=[...e.paragraphs??[]].sort((e,t)=>e.startIndex-t.startIndex),o=0;return a.flatMap(a=>{var s,c,l;let u=o;for(;e.dataStream[u]===``||e.dataStream[u]===``;)u+=1;o=a.startIndex+1;let d=w(a),f=(s=a.paragraphStyle)==null?void 0:s.headingId;if(!f||d==null||d<r||d>i||n&&u>=n.startIndex&&a.startIndex<=n.endIndex)return[];let p=(0,t.getPlainText)(e.dataStream.slice(u,a.startIndex)).trim();if(!p)return[];let m=(c=e.customRanges)==null?void 0:c.find(e=>{var n;return e.rangeType===t.CustomRangeType.BOOKMARK&&e.startIndex<=a.startIndex&&e.endIndex>=u&&((n=e.properties)==null?void 0:n.bookmarkId)});return[{bookmarkId:m==null||(l=m.properties)==null?void 0:l.bookmarkId,headingId:f,level:d,paragraph:a,startOffset:u,text:p}]})}function w(e){var n,r;let i=(n=e.paragraphStyle)==null?void 0:n.outlineLevel;if(i!=null&&i>=0&&i<=8)return i+1;let a=(r=e.paragraphStyle)==null?void 0:r.namedStyleType;if(a!=null&&a>=t.NamedStyleType.HEADING_1&&a<=t.NamedStyleType.HEADING_5)return a-t.NamedStyleType.HEADING_1+1}function T(e,n,r,i,a,o,s=`dots`,c=`fromTemplate`){let l=e.find(e=>{var t;return((t=e.styleId)==null||(t=t.match(/TOC(\d+)/i))==null?void 0:t[1])===String(r)})??e[Math.min(n,e.length-1)];if(l){var u;return(0,t.cloneParagraphWithId)({...l,startIndex:i,paragraphId:((u=e[n])==null?void 0:u.paragraphId)??``},a)}return{startIndex:i,paragraphId:(0,t.createParagraphId)(a),styleId:`TOC${r}`,paragraphStyle:{indentStart:{v:Math.max(0,r-1)*k(c)},spaceBelow:c===`modern`?{v:4}:c===`classic`?{v:2}:void 0,tabStops:o==null?void 0:[{offset:o,alignment:t.TabStopAlignment.END,leader:D(s)}]}}}function E(e){return e===`none`||e===`dashes`||e===`underline`?e:`dots`}function D(e){return{none:t.TabStopLeader.NONE,dots:t.TabStopLeader.DOT,dashes:t.TabStopLeader.HYPHEN,underline:t.TabStopLeader.UNDERSCORE}[e]}function O(e){return e===`classic`||e===`modern`||e===`simple`?e:`fromTemplate`}function k(e){return{fromTemplate:18,classic:14,modern:20,simple:12}[e]}var A=`@univerjs/docs-toc`,j=`1.0.2`;let M={};function N(e,t){return function(n,r){t(n,r,e)}}function P(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}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function I(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function L(e){var t=I(e,`string`);return F(t)==`symbol`?t:t+``}function R(e,t,n){return(t=L(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let z=class extends t.Plugin{constructor(e=M,n,r,i){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=i;let{...a}=(0,t.merge)({},M,this._config);this._configService.setConfig(`docs-toc.config`,a)}onStarting(){[l,o,c].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};R(z,`pluginName`,`DOCS_TOC_PLUGIN`),R(z,`packageName`,A),R(z,`version`,j),R(z,`type`,t.UniverInstanceType.UNIVER_DOC),z=P([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverRenderEnginePlugin),N(1,(0,t.Inject)(t.Injector)),N(2,t.IConfigService),N(3,t.ICommandService)],z),e.DeleteTableOfContentsCommand=c,e.InsertTableOfContentsCommand=l,Object.defineProperty(e,"UniverDocsTocPlugin",{enumerable:!0,get:function(){return z}}),e.UpdateTableOfContentsCommand=o,e.buildPageNumberOnlyTableOfContentsBody=h,e.buildTableOfContentsBody=y,e.buildTableOfContentsInstruction=u,e.countTableOfContentsHeadings=x,e.findTableOfContentsAtOffset=f});
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@univerjs/core"),require("@univerjs/docs"),require("@univerjs/engine-render"),require("rxjs")):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/docs`,`@univerjs/engine-render`,`rxjs`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverDocsToc={},e.UniverCore,e.UniverDocs,e.UniverEngineRender,e.rxjs))})(this,function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});async function a(e,r,i,a,o,s,c=(0,t.generateRandomId)()){let l=new t.TextX;l.push(...t.BuildTextUtils.selection.delete([a],r.getBody(),0,o));let u=a.startOffset+o.dataStream.length;e.get(n.DocStateChangeManagerService).flushPendingChanges(i);let d=e.get(t.IUndoRedoService).beginUndoRedoGroup(i,c,`append`);try{return!!e.get(t.ICommandService).syncExecuteCommand(n.RichTextEditingMutation.id,{unitId:i,historyAction:s,actions:t.JSONX.getInstance().editOp(l.serialize(),(0,t.getRichTextEditPath)(r)),textRanges:[{startOffset:u,endOffset:u,collapsed:!0}],debounce:!1,trigger:s})}finally{d.dispose()}}let o={id:`doc.command.update-table-of-contents`,type:t.CommandType.COMMAND,handler:(e,t)=>s(e,t)};async function s(e,i,s=(0,t.generateRandomId)()){var c,l,u;let g=e.get(t.IUniverInstanceService),_=i!=null&&i.unitId?g.getUnit(i.unitId,t.UniverInstanceType.UNIVER_DOC):g.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),v=_==null?void 0:_.getBody(),b=e.get(n.DocSelectionManagerService).getActiveTextRange(),x=i!=null&&i.rangeId?v==null||(c=v.customRanges)==null?void 0:c.find(e=>e.rangeId===i.rangeId&&d(e)):f(v,b==null?void 0:b.startOffset),S=_==null?void 0:_.getUnitId();if(!_||!v||!x||((l=x.properties)==null?void 0:l.locked)===t.BooleanNumber.TRUE||!S)return!1;let C=e.get(r.IRenderManagerService).getRenderUnitById(S),w=C==null||(u=C.getInjector)==null?void 0:u.call(C);if(!C||!(w!=null&&w.has(n.DocSkeletonManagerService)))return!1;let T=C.with(n.DocSkeletonManagerService).getSkeleton();if(!await p(T))return!1;let E=!1;for(let n=0;n<3;n+=1){var D,O,k;let r=_.getBody(),c=r==null||(D=r.customRanges)==null?void 0:D.find(e=>e.rangeId===x.rangeId&&d(e));if(!r||!c||((O=c.properties)==null?void 0:O.locked)===t.BooleanNumber.TRUE)return!1;let l=e=>{var t;let n=T.findBodyPageIndexByCharIndex(e);return(t=T.getSkeletonData())==null||(t=t.pages[n])==null?void 0:t.pageNumber},u=(i==null?void 0:i.mode)===`pageNumbersOnly`?h(r,c,l):y(r,c,l);if(!u)return!1;if((i==null?void 0:i.mode)===`pageNumbersOnly`&&t.Tools.diffValue((0,t.getBodySlice)(r,c.startIndex,c.endIndex+1,!0,t.SliceBodyType.cut),u)||E&&r.dataStream.slice(c.startIndex,c.endIndex+1)===u.dataStream)return!0;let f=((k=T.getLayoutProgress())==null?void 0:k.generation)??-1;if(E=await a(e,_,S,{startOffset:c.startIndex,endOffset:c.endIndex+1,collapsed:!1},u,o.id,s),!E||n===2)return E;if(!await m(T,f))return!1}return E}let c={id:`doc.command.delete-table-of-contents`,type:t.CommandType.COMMAND,async handler(e,r){var i;let o=e.get(t.IUniverInstanceService),s=r!=null&&r.unitId?o.getUnit(r.unitId,t.UniverInstanceType.UNIVER_DOC):o.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),l=s==null?void 0:s.getBody(),u=e.get(n.DocSelectionManagerService).getActiveTextRange(),p=r!=null&&r.rangeId?l==null||(i=l.customRanges)==null?void 0:i.find(e=>e.rangeId===r.rangeId&&d(e)):f(l,u==null?void 0:u.startOffset),m=s==null?void 0:s.getUnitId();return!p||!m?!1:a(e,s,m,{startOffset:p.startIndex,endOffset:p.endIndex+1,collapsed:!1},{dataStream:``},c.id)}},l={id:`doc.command.insert-table-of-contents`,type:t.CommandType.COMMAND,async handler(e,i){var o;let c=e.get(t.IUniverInstanceService),d=i!=null&&i.unitId?c.getUnit(i.unitId,t.UniverInstanceType.UNIVER_DOC):c.getCurrentUnitOfType(t.UniverInstanceType.UNIVER_DOC),m=e.get(n.DocSelectionManagerService).getActiveTextRange(),h=d==null?void 0:d.getBody(),g=d==null?void 0:d.getUnitId(),_=g?e.get(r.IRenderManagerService).getRenderUnitById(g):void 0,v=_==null||(o=_.getInjector)==null?void 0:o.call(_);if(!d||!h||!g||!m||m.segmentId||m.startOffset!==m.endOffset||f(h,m.startOffset)||!_||!(v!=null&&v.has(n.DocSkeletonManagerService)))return!1;let b=_.with(n.DocSkeletonManagerService).getSkeleton();if(!await p(b))return!1;let x=Math.min(9,Math.max(1,Math.trunc((i==null?void 0:i.levels)??3))),S=(i==null?void 0:i.showPageNumbers)??!0,C=S&&((i==null?void 0:i.rightAlignPageNumbers)??!0),w=(i==null?void 0:i.tabLeader)??`dots`,T=(i==null?void 0:i.format)??`fromTemplate`,E=(0,t.generateRandomId)(),D={rangeId:E,rangeType:t.CustomRangeType.FIELD,startIndex:m.startOffset,endIndex:m.startOffset,wholeEntity:!1,properties:{fieldType:`TOC`,instruction:u({levels:x,showPageNumbers:S,rightAlignPageNumbers:C}),sourceKind:`complex`,showPageNumbers:S,rightAlignPageNumbers:C,tabLeader:w,format:T,title:i==null?void 0:i.title}},{pageSize:O,marginLeft:k=0,marginRight:A=0}=d.getDocumentStyle(),j=y(h,D,e=>{var t;let n=b.findBodyPageIndexByCharIndex(e);return(t=b.getSkeletonData())==null||(t=t.pages[n])==null?void 0:t.pageNumber},t.generateRandomId,{tabStopOffset:Math.max(72,((O==null?void 0:O.width)??594.3)-k-A)});if(!j)return!1;let M=(0,t.generateRandomId)();return await a(e,d,g,{startOffset:m.startOffset,endOffset:m.startOffset,collapsed:!0},j,l.id,M)?(await s(e,{unitId:g,rangeId:E,mode:`entireTable`},M),!0):!1}};function u(e={}){let t=Math.min(9,Math.max(1,Math.trunc(e.levels??3))),n=e.showPageNumbers??!0,r=n&&(e.rightAlignPageNumbers??!0);return`TOC ${[`\\o "1-${t}"`,`\\h`,`\\z`,`\\u`,...n?[]:[`\\n`],...n&&!r?[`\\p " "`]:[]].join(` `)}`}function d(e){var n;return e.rangeType===t.CustomRangeType.FIELD&&((n=e.properties)==null?void 0:n.fieldType)===`TOC`}function f(e,t){var n;if(t!=null)return e==null||(n=e.customRanges)==null?void 0:n.filter(e=>d(e)&&e.startIndex<=t&&t<=e.endIndex).sort((e,t)=>e.endIndex-e.startIndex-(t.endIndex-t.startIndex))[0]}async function p(e){let t=e.getLayoutProgress();if(t==null||t.complete)return!0;try{return await(0,i.firstValueFrom)(e.layoutProgress$.pipe((0,i.filter)(e=>e.complete),(0,i.take)(1),(0,i.timeout)({first:3e4}))),!0}catch{return!1}}async function m(e,t){try{return await(0,i.firstValueFrom)(e.layoutProgress$.pipe((0,i.filter)(e=>e.generation>t&&e.complete),(0,i.take)(1),(0,i.timeout)({first:3e4}))),!0}catch{return!1}}function h(e,n,r){var i,a,o;if(((i=n.properties)==null?void 0:i.locked)===t.BooleanNumber.TRUE)return null;let s=t.Tools.deepClone((0,t.getBodySlice)(e,n.startIndex,n.endIndex+1,!0,t.SliceBodyType.cut)),c=((a=s.customRanges)==null?void 0:a.filter(e=>{var n,r;return e.rangeType===t.CustomRangeType.FIELD&&((n=e.properties)==null?void 0:n.fieldType)===`PAGEREF`&&((r=e.properties)==null?void 0:r.locked)!==t.BooleanNumber.TRUE}).sort((e,t)=>t.startIndex-e.startIndex))??[];for(let t of c){var l;let n=(l=e.customRanges)==null?void 0:l.find(e=>e.rangeId===t.rangeId),i=n&&g(e,n),a=i==null?void 0:r(i);if(a==null)return null;_(s,t,String(a))}let u=(o=s.customRanges)==null?void 0:o.find(e=>e.rangeId===n.rangeId);return u!=null&&u.properties&&(u.properties.cachedResult=(0,t.getPlainText)(s.dataStream.slice(1,-1)).replaceAll(``,``).replaceAll(``,``)),s}function g(e,n){var r,i,a,o,s;let c=(r=String(((i=n.properties)==null?void 0:i.instruction)??``).match(/PAGEREF\s+"?([^"\s\\]+)"?/i))==null?void 0:r[1];if(c){var l;let n=(l=e.customRanges)==null?void 0:l.find(e=>{var n;return e.rangeType===t.CustomRangeType.BOOKMARK&&((n=e.properties)==null?void 0:n.bookmarkId)===c});if(n)return n.startIndex}let u=(a=e.customRanges)==null?void 0:a.find(e=>e.rangeType===t.CustomRangeType.HYPERLINK&&e.startIndex<=n.startIndex&&n.endIndex<=e.endIndex),d=u==null||(o=u.properties)==null?void 0:o.headingId;return(s=e.paragraphs)==null||(s=s.find(e=>{var t;return((t=e.paragraphStyle)==null?void 0:t.headingId)===d}))==null?void 0:s.startIndex}function _(e,t,n){var r,i;let a=t.startIndex+1,o=t.endIndex;if(t.properties&&(t.properties.cachedResult=n),e.dataStream.slice(a,o)===n)return;let s=n.length-(o-a);e.dataStream=`${e.dataStream.slice(0,a)}${n}${e.dataStream.slice(o)}`,v(e.textRuns,a,o,s),(r=e.paragraphs)==null||r.forEach(e=>{e.startIndex>=o&&(e.startIndex+=s)}),(i=e.customRanges)==null||i.forEach(e=>{e.startIndex>=o?(e.startIndex+=s,e.endIndex+=s):e.endIndex>=o&&(e.endIndex+=s)})}function v(e,t,n,r){e==null||e.forEach(e=>{e.st>=n?(e.st+=r,e.ed+=r):e.ed>t&&(e.ed+=r)})}function y(e,n,r,i=t.generateRandomId,a){var o,s,c,l,u,d,f,p,m;if(((o=n.properties)==null?void 0:o.locked)===t.BooleanNumber.TRUE)return null;let h=String(((s=n.properties)==null?void 0:s.instruction)??``);if(/\\c\s+/i.test(h))return null;let[g,_]=S(h),v=C(e,n,g,_);if(v.length===0)return null;let y=((c=n.properties)==null?void 0:c.showPageNumbers)!==!1&&!/\\n(?:\s|$)/i.test(h),x=y&&((l=n.properties)==null?void 0:l.rightAlignPageNumbers)!==!1&&!/\\p\s+/i.test(h),w=E((u=n.properties)==null?void 0:u.tabLeader),D=O((d=n.properties)==null?void 0:d.format),k=((f=e.customRanges)==null?void 0:f.some(e=>e.rangeId===n.rangeId))??!1?((p=e.paragraphs)==null?void 0:p.filter(e=>e.startIndex>=n.startIndex&&e.startIndex<=n.endIndex))??[]:[],A=typeof((m=n.properties)==null?void 0:m.title)==`string`?n.properties.title.trim():b(e,k),j={dataStream:``,paragraphs:[],customRanges:[]},M=j.customRanges,N=k.find(e=>{var t;return((t=e.styleId)==null?void 0:t.toLowerCase())===`tocheading`}),P=k.filter(e=>e!==N),F=new Set,I=``;A&&(j.dataStream+=`${A}\r`,I+=`${A}\r`,j.paragraphs.push((0,t.cloneParagraphWithId)({startIndex:j.dataStream.length-1,paragraphId:(N==null?void 0:N.paragraphId)??``,styleId:`TOCHeading`},F)));for(let[e,n]of v.entries()){let o=y?r(n.startOffset):void 0;if(y&&o==null)return null;let s=j.dataStream.length,c=y?x?` `:` `:``,l=`${n.text}${c}${o??``}`;j.dataStream+=`${n.text}${c}`;let u=n.bookmarkId??n.headingId,d={startIndex:s,endIndex:j.dataStream.length-1,rangeId:i(),rangeType:t.CustomRangeType.HYPERLINK,wholeEntity:!1,properties:{...n.bookmarkId?{bookmarkId:u}:{headingId:u},textStyleMode:`text`}};if(M.push(d),y){let e=j.dataStream.length;j.dataStream+=`${o}`;let n=j.dataStream.length-1;d.endIndex=n,M.push({startIndex:e,endIndex:n,rangeId:i(),rangeType:t.CustomRangeType.FIELD,wholeEntity:!1,properties:{fieldType:`PAGEREF`,instruction:`PAGEREF ${u} \\h`,cachedResult:String(o),sourceKind:`complex`}})}j.dataStream+=`\r`,I+=`${l}\r`,j.paragraphs.push(T(P,e,n.level,j.dataStream.length-1,F,x?a==null?void 0:a.tabStopOffset:void 0,w,D))}return j.dataStream+=``,M.push({startIndex:0,endIndex:j.dataStream.length-1,rangeId:n.rangeId,rangeType:t.CustomRangeType.FIELD,wholeEntity:!1,properties:{...t.Tools.deepClone(n.properties??{}),fieldType:`TOC`,instruction:h,cachedResult:I}}),M.sort((e,t)=>e.startIndex-t.startIndex||t.endIndex-e.endIndex),j}function b(e,n){let r=n.find(e=>{var t;return((t=e.styleId)==null?void 0:t.toLowerCase())===`tocheading`});if(!r)return``;let i=[...e.paragraphs??[]].sort((e,t)=>e.startIndex-t.startIndex),a=i.findIndex(e=>e===r||e.paragraphId===r.paragraphId),o=a>0?i[a-1].startIndex+1:0;for(;e.dataStream[o]===``||e.dataStream[o]===``;)o+=1;return(0,t.getPlainText)(e.dataStream.slice(o,r.startIndex)).trim()}function x(e,t=3){return e?C(e,void 0,1,Math.min(9,Math.max(1,Math.trunc(t)))).length:0}function S(e){let t=e.match(/\\o\s+"(\d+)\s*-\s*(\d+)"/i),n=Math.max(1,Number((t==null?void 0:t[1])??1));return[n,Math.min(9,Math.max(n,Number((t==null?void 0:t[2])??3)))]}function C(e,n,r,i){let a=[...e.paragraphs??[]].sort((e,t)=>e.startIndex-t.startIndex),o=0;return a.flatMap(a=>{var s,c,l;let u=o;for(;e.dataStream[u]===``||e.dataStream[u]===``;)u+=1;o=a.startIndex+1;let d=w(a),f=(s=a.paragraphStyle)==null?void 0:s.headingId;if(!f||d==null||d<r||d>i||n&&u>=n.startIndex&&a.startIndex<=n.endIndex)return[];let p=(0,t.getPlainText)(e.dataStream.slice(u,a.startIndex)).trim();if(!p)return[];let m=(c=e.customRanges)==null?void 0:c.find(e=>{var n;return e.rangeType===t.CustomRangeType.BOOKMARK&&e.startIndex<=a.startIndex&&e.endIndex>=u&&((n=e.properties)==null?void 0:n.bookmarkId)});return[{bookmarkId:m==null||(l=m.properties)==null?void 0:l.bookmarkId,headingId:f,level:d,paragraph:a,startOffset:u,text:p}]})}function w(e){var n,r;let i=(n=e.paragraphStyle)==null?void 0:n.outlineLevel;if(i!=null&&i>=0&&i<=8)return i+1;let a=(r=e.paragraphStyle)==null?void 0:r.namedStyleType;if(a!=null&&a>=t.NamedStyleType.HEADING_1&&a<=t.NamedStyleType.HEADING_5)return a-t.NamedStyleType.HEADING_1+1}function T(e,n,r,i,a,o,s=`dots`,c=`fromTemplate`){let l=e.find(e=>{var t;return((t=e.styleId)==null||(t=t.match(/TOC(\d+)/i))==null?void 0:t[1])===String(r)})??e[Math.min(n,e.length-1)];if(l){var u;return(0,t.cloneParagraphWithId)({...l,startIndex:i,paragraphId:((u=e[n])==null?void 0:u.paragraphId)??``},a)}return{startIndex:i,paragraphId:(0,t.createParagraphId)(a),styleId:`TOC${r}`,paragraphStyle:{indentStart:{v:Math.max(0,r-1)*k(c)},spaceBelow:c===`modern`?{v:4}:c===`classic`?{v:2}:void 0,tabStops:o==null?void 0:[{offset:o,alignment:t.TabStopAlignment.END,leader:D(s)}]}}}function E(e){return e===`none`||e===`dashes`||e===`underline`?e:`dots`}function D(e){return{none:t.TabStopLeader.NONE,dots:t.TabStopLeader.DOT,dashes:t.TabStopLeader.HYPHEN,underline:t.TabStopLeader.UNDERSCORE}[e]}function O(e){return e===`classic`||e===`modern`||e===`simple`?e:`fromTemplate`}function k(e){return{fromTemplate:18,classic:14,modern:20,simple:12}[e]}var A=`@univerjs/docs-toc`,j=`1.0.3`;let M={};function N(e,t){return function(n,r){t(n,r,e)}}function P(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}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function I(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function L(e){var t=I(e,`string`);return F(t)==`symbol`?t:t+``}function R(e,t,n){return(t=L(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let z=class extends t.Plugin{constructor(e=M,n,r,i){super(),this._config=e,this._injector=n,this._configService=r,this._commandService=i;let{...a}=(0,t.merge)({},M,this._config);this._configService.setConfig(`docs-toc.config`,a)}onStarting(){[l,o,c].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}};R(z,`pluginName`,`DOCS_TOC_PLUGIN`),R(z,`packageName`,A),R(z,`version`,j),R(z,`type`,t.UniverInstanceType.UNIVER_DOC),z=P([(0,t.DependentOn)(n.UniverDocsPlugin,r.UniverRenderEnginePlugin),N(1,(0,t.Inject)(t.Injector)),N(2,t.IConfigService),N(3,t.ICommandService)],z),e.DeleteTableOfContentsCommand=c,e.InsertTableOfContentsCommand=l,Object.defineProperty(e,"UniverDocsTocPlugin",{enumerable:!0,get:function(){return z}}),e.UpdateTableOfContentsCommand=o,e.buildPageNumberOnlyTableOfContentsBody=h,e.buildTableOfContentsBody=y,e.buildTableOfContentsInstruction=u,e.countTableOfContentsHeadings=x,e.findTableOfContentsAtOffset=f});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@univerjs/docs-toc",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "private": false,
5
5
  "description": "Table of contents commands for Univer Docs.",
6
6
  "author": "DreamNum Co., Ltd. <developer@univer.ai>",
@@ -52,12 +52,12 @@
52
52
  "rxjs": ">=7.0.0"
53
53
  },
54
54
  "dependencies": {
55
- "@univerjs/core": "1.0.2",
56
- "@univerjs/docs": "1.0.2",
57
- "@univerjs/engine-render": "1.0.2"
55
+ "@univerjs/core": "1.0.3",
56
+ "@univerjs/docs": "1.0.3",
57
+ "@univerjs/engine-render": "1.0.3"
58
58
  },
59
59
  "devDependencies": {
60
- "@univerjs-infra/shared": "1.0.2",
60
+ "@univerjs-infra/shared": "1.0.3",
61
61
  "rxjs": "^7.8.2",
62
62
  "typescript": "^6.0.3",
63
63
  "vitest": "^5.0.0"