@univerjs/sheets-sort 0.19.0 → 0.20.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/facade.js +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/es/facade.js +1 -1
- package/lib/es/index.js +1 -1
- package/lib/facade.js +1 -1
- package/lib/index.js +1 -1
- package/lib/types/facade/f-event.d.ts +8 -8
- package/lib/types/facade/f-range.d.ts +3 -3
- package/lib/types/facade/f-univer.d.ts +25 -0
- package/lib/types/facade/f-worksheet.d.ts +3 -3
- package/lib/types/facade/index.d.ts +2 -0
- package/lib/umd/facade.js +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +5 -5
package/lib/cjs/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
let e=require(`@univerjs/
|
|
1
|
+
let e=require(`@univerjs/core`),t=require(`@univerjs/core/facade`),n=require(`@univerjs/sheets-sort`),r=require(`@univerjs/sheets/facade`);var i=class extends t.FUniver{_initialize(t){let r=t.get(e.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.SheetBeforeRangeSort,()=>r.beforeCommandExecuted(e=>{e.id===n.SortRangeCommand.id&&this._beforeRangeSort(e)}))),this.disposeWithMe(this.registerEventHandler(this.Event.SheetRangeSorted,()=>r.onCommandExecuted(e=>{e.id===n.SortRangeCommand.id&&this._onRangeSorted(e)})))}_beforeRangeSort(e){let t=e.params,r=this.getUniverSheet(t.unitId),i=r.getSheetBySheetId(t.subUnitId),{startColumn:a,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:r,worksheet:i,range:i.getRange(s,a,c-s+1,o-a+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-a,ascending:e.type===n.SortType.ASC}))};if(this.fireEvent(this.Event.SheetBeforeRangeSort,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}_onRangeSorted(e){let t=e.params,r=this.getUniverSheet(t.unitId),i=r.getSheetBySheetId(t.subUnitId),{startColumn:a,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:r,worksheet:i,range:i.getRange(s,a,c-s+1,o-a+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-a,ascending:e.type===n.SortType.ASC}))};if(this.fireEvent(this.Event.SheetRangeSorted,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}};t.FUniver.extend(i);var a=class extends r.FRange{sort(e){let t=this._range.startColumn,r=(Array.isArray(e)?e:[e]).map(e=>typeof e==`number`?{colIndex:e+t,type:n.SortType.ASC}:{colIndex:e.column+t,type:e.ascending?n.SortType.ASC:n.SortType.DESC});return this._commandService.syncExecuteCommand(n.SortRangeCommand.id,{orderRules:r,range:this._range,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};r.FRange.extend(a);var o=class extends r.FWorksheet{sort(t,r=!0){let i=[{colIndex:t,type:r?n.SortType.ASC:n.SortType.DESC}],a={startRow:0,startColumn:0,endRow:this._worksheet.getRowCount()-1,endColumn:this._worksheet.getColumnCount()-1,rangeType:e.RANGE_TYPE.ALL};return this._commandService.syncExecuteCommand(n.SortRangeCommand.id,{orderRules:i,range:a,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};r.FWorksheet.extend(o);var s=class{get SheetRangeSorted(){return`SheetRangeSorted`}get SheetBeforeRangeSort(){return`SheetBeforeRangeSort`}};t.FEventName.extend(s);
|
package/lib/cjs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets`),n=require(`@univerjs/engine-formula`),r=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),i=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const a=e=>e.replace(/-/gi,``).replace(/'/gi,``),o=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?i.ZERO:n?i.POSITIVE:r?i.NEGATIVE:null},s=(e,t,n)=>{let a=typeof e==`number`,o=typeof t==`number`;return a&&o?e<t?n===r.ASC?i.NEGATIVE:i.POSITIVE:e>t?n===r.ASC?i.POSITIVE:i.NEGATIVE:i.ZERO:a?n===r.ASC?i.POSITIVE:i.NEGATIVE:o?n===r.ASC?i.NEGATIVE:i.POSITIVE:null},c=(e,t,n)=>{let o=typeof e==`string`,s=typeof t==`string`;if(o&&(e=a(e.toLocaleLowerCase())),s&&(t=a(t.toLocaleLowerCase())),!o&&!s)return null;if(o&&s){let a=e,o=t;return a<o?n===r.ASC?i.NEGATIVE:i.POSITIVE:a>o?n===r.ASC?i.POSITIVE:i.NEGATIVE:i.ZERO}return o?n===r.ASC?i.POSITIVE:i.NEGATIVE:s?n===r.ASC?i.NEGATIVE:i.POSITIVE:null},l=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function u(e){"@babel/helpers - typeof";return u=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},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){return function(n,r){t(n,r,e)}}function h(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 g=class extends e.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,p(this,`_compareFns`,[])}mergeCheck(t){var n;let{unitId:r,subUnitId:i,range:a}=t,o=(n=this._univerInstanceService.getUnit(r))==null?void 0:n.getSheetBySheetId(i);if(!o)return!1;let s=o.getMergeData().filter(t=>e.Rectangle.contains(a,t));return s.length===0?!0:_(a,s)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!l(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(t){var n;let{unitId:r,subUnitId:i,range:a}=t,o=(n=this._formulaDataModel.getArrayFormulaRange())==null||(n=n[r])==null?void 0:n[i];for(let t in o){let n=o[Number(t)];for(let t in n){let r=n[Number(t)];if(r&&e.Rectangle.intersects(a,r))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,n,r){var i;let{unitId:a,subUnitId:o}=(0,t.getSheetCommandTarget)(this._univerInstanceService)||{};this._commandService.executeCommand(v.id,{orderRules:e.orderRules,range:e.range,hasTitle:(i=e.hasTitle)==null?!1:i,unitId:n||a,subUnitId:r||o})}};g=h([m(0,e.IUniverInstanceService),m(1,e.ICommandService),m(2,(0,e.Inject)(n.FormulaDataModel))],g);function _(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const v={id:`sheet.command.sort-range`,type:e.CommandType.COMMAND,handler:(n,r)=>{let{range:i,orderRules:a,hasTitle:o,unitId:s,subUnitId:c}=r,l=n.get(g),{worksheet:u}=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r)||{};if(!u)return!1;let d=u.getMergeData().filter(t=>e.Rectangle.contains(i,t)),f=d.map(e=>e.startRow),{startRow:p,endRow:m}=i,h=o?p+1:p,_=[],v=[];for(let e=h;e<=m;e++)u.getRowFiltered(e)||u.getRowRawVisible(e)!==!1&&(d.length&&!f.includes(e)||(_.push({index:e,value:y(u,e,a)}),v.push(e)));let S=l.getAllCompareFns();_.sort(x(a,b(S)));let C={};_.forEach(({index:e,value:t},n)=>{C[v[n]]=e});let w={id:t.ReorderRangeCommand.id,params:{unitId:s,subUnitId:c,range:i,order:C}},T=n.get(e.ICommandService);return(0,e.sequenceExecute)([w],T).result}};function y(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function b(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function x(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var S=`@univerjs/sheets-sort`,C=`0.
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`@univerjs/core`),t=require(`@univerjs/sheets`),n=require(`@univerjs/engine-formula`),r=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),i=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const a=e=>e.replace(/-/gi,``).replace(/'/gi,``),o=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?i.ZERO:n?i.POSITIVE:r?i.NEGATIVE:null},s=(e,t,n)=>{let a=typeof e==`number`,o=typeof t==`number`;return a&&o?e<t?n===r.ASC?i.NEGATIVE:i.POSITIVE:e>t?n===r.ASC?i.POSITIVE:i.NEGATIVE:i.ZERO:a?n===r.ASC?i.POSITIVE:i.NEGATIVE:o?n===r.ASC?i.NEGATIVE:i.POSITIVE:null},c=(e,t,n)=>{let o=typeof e==`string`,s=typeof t==`string`;if(o&&(e=a(e.toLocaleLowerCase())),s&&(t=a(t.toLocaleLowerCase())),!o&&!s)return null;if(o&&s){let a=e,o=t;return a<o?n===r.ASC?i.NEGATIVE:i.POSITIVE:a>o?n===r.ASC?i.POSITIVE:i.NEGATIVE:i.ZERO}return o?n===r.ASC?i.POSITIVE:i.NEGATIVE:s?n===r.ASC?i.NEGATIVE:i.POSITIVE:null},l=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function u(e){"@babel/helpers - typeof";return u=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},u(e)}function d(e,t){if(u(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(u(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function f(e){var t=d(e,`string`);return u(t)==`symbol`?t:t+``}function p(e,t,n){return(t=f(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e,t){return function(n,r){t(n,r,e)}}function h(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 g=class extends e.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,p(this,`_compareFns`,[])}mergeCheck(t){var n;let{unitId:r,subUnitId:i,range:a}=t,o=(n=this._univerInstanceService.getUnit(r))==null?void 0:n.getSheetBySheetId(i);if(!o)return!1;let s=o.getMergeData().filter(t=>e.Rectangle.contains(a,t));return s.length===0?!0:_(a,s)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!l(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(t){var n;let{unitId:r,subUnitId:i,range:a}=t,o=(n=this._formulaDataModel.getArrayFormulaRange())==null||(n=n[r])==null?void 0:n[i];for(let t in o){let n=o[Number(t)];for(let t in n){let r=n[Number(t)];if(r&&e.Rectangle.intersects(a,r))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,n,r){var i;let{unitId:a,subUnitId:o}=(0,t.getSheetCommandTarget)(this._univerInstanceService)||{};this._commandService.executeCommand(v.id,{orderRules:e.orderRules,range:e.range,hasTitle:(i=e.hasTitle)==null?!1:i,unitId:n||a,subUnitId:r||o})}};g=h([m(0,e.IUniverInstanceService),m(1,e.ICommandService),m(2,(0,e.Inject)(n.FormulaDataModel))],g);function _(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const v={id:`sheet.command.sort-range`,type:e.CommandType.COMMAND,handler:(n,r)=>{let{range:i,orderRules:a,hasTitle:o,unitId:s,subUnitId:c}=r,l=n.get(g),{worksheet:u}=(0,t.getSheetCommandTarget)(n.get(e.IUniverInstanceService),r)||{};if(!u)return!1;let d=u.getMergeData().filter(t=>e.Rectangle.contains(i,t)),f=d.map(e=>e.startRow),{startRow:p,endRow:m}=i,h=o?p+1:p,_=[],v=[];for(let e=h;e<=m;e++)u.getRowFiltered(e)||u.getRowRawVisible(e)!==!1&&(d.length&&!f.includes(e)||(_.push({index:e,value:y(u,e,a)}),v.push(e)));let S=l.getAllCompareFns();_.sort(x(a,b(S)));let C={};_.forEach(({index:e,value:t},n)=>{C[v[n]]=e});let w={id:t.ReorderRangeCommand.id,params:{unitId:s,subUnitId:c,range:i,order:C}},T=n.get(e.ICommandService);return(0,e.sequenceExecute)([w],T).result}};function y(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function b(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function x(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var S=`@univerjs/sheets-sort`,C=`0.20.0`;const w=`sheets-sort.config`;Symbol(w);const T={};let E=class extends e.Disposable{constructor(e,t){super(),this._commandService=e,this._sortService=t,this._initCommands(),this._registerCompareFns()}_initCommands(){[v].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerCompareFns(){this._sortService.registerCompareFn((e,t,n)=>{let r=this._getCommonValue(t),i=this._getCommonValue(n),a=[o,c,s];for(let t=0;t<a.length;t++){let n=a[t](r,i,e);if(n!==null)return n}return null})}_getCommonValue(t){var n;return l(t)?null:(t==null||(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream)||((t==null?void 0:t.t)===e.CellValueType.NUMBER?Number.parseFloat(`${t.v}`):(t==null?void 0:t.t)===e.CellValueType.STRING?typeof t.v==`number`?t.v:`${t.v}`:(t==null?void 0:t.t)===e.CellValueType.BOOLEAN?`${t.v}`:(t==null?void 0:t.t)===e.CellValueType.FORCE_STRING?Number.parseFloat(`${t.v}`):`${t==null?void 0:t.v}`)}};E=h([m(0,e.ICommandService),m(1,(0,e.Inject)(g))],E);let D=class extends e.Plugin{constructor(t=T,n,r){super(),this._config=t,this._injector=n,this._configService=r;let{...i}=(0,e.merge)({},T,this._config);this._configService.setConfig(w,i)}onStarting(){[[E],[g]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(E)}};p(D,`type`,e.UniverInstanceType.UNIVER_SHEET),p(D,`pluginName`,`SHEET_SORT_PLUGIN`),p(D,`packageName`,S),p(D,`version`,C),D=h([(0,e.DependentOn)(t.UniverSheetsPlugin,n.UniverFormulaEnginePlugin),m(1,(0,e.Inject)(e.Injector)),m(2,e.IConfigService)],D),Object.defineProperty(exports,`SheetsSortService`,{enumerable:!0,get:function(){return g}}),exports.SortRangeCommand=v,exports.SortType=r,Object.defineProperty(exports,`UniverSheetsSortPlugin`,{enumerable:!0,get:function(){return D}});
|
package/lib/es/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ICommandService as e,RANGE_TYPE as t}from"@univerjs/core";import{FEventName as n,FUniver as r}from"@univerjs/core/facade";import{SortRangeCommand as i,SortType as a}from"@univerjs/sheets-sort";import{FRange as o,FWorksheet as s}from"@univerjs/sheets/facade";var c=class extends r{_initialize(t){let n=t.get(e);this.disposeWithMe(this.registerEventHandler(this.Event.SheetBeforeRangeSort,()=>n.beforeCommandExecuted(e=>{e.id===i.id&&this._beforeRangeSort(e)}))),this.disposeWithMe(this.registerEventHandler(this.Event.SheetRangeSorted,()=>n.onCommandExecuted(e=>{e.id===i.id&&this._onRangeSorted(e)})))}_beforeRangeSort(e){let t=e.params,n=this.getUniverSheet(t.unitId),r=n.getSheetBySheetId(t.subUnitId),{startColumn:i,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:n,worksheet:r,range:r.getRange(s,i,c-s+1,o-i+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-i,ascending:e.type===a.ASC}))};if(this.fireEvent(this.Event.SheetBeforeRangeSort,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}_onRangeSorted(e){let t=e.params,n=this.getUniverSheet(t.unitId),r=n.getSheetBySheetId(t.subUnitId),{startColumn:i,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:n,worksheet:r,range:r.getRange(s,i,c-s+1,o-i+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-i,ascending:e.type===a.ASC}))};if(this.fireEvent(this.Event.SheetRangeSorted,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}};r.extend(c);var l=class extends o{sort(e){let t=this._range.startColumn,n=(Array.isArray(e)?e:[e]).map(e=>typeof e==`number`?{colIndex:e+t,type:a.ASC}:{colIndex:e.column+t,type:e.ascending?a.ASC:a.DESC});return this._commandService.syncExecuteCommand(i.id,{orderRules:n,range:this._range,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};o.extend(l);var u=class extends s{sort(e,n=!0){let r=[{colIndex:e,type:n?a.ASC:a.DESC}],o={startRow:0,startColumn:0,endRow:this._worksheet.getRowCount()-1,endColumn:this._worksheet.getColumnCount()-1,rangeType:t.ALL};return this._commandService.syncExecuteCommand(i.id,{orderRules:r,range:o,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};s.extend(u);var d=class{get SheetRangeSorted(){return`SheetRangeSorted`}get SheetBeforeRangeSort(){return`SheetBeforeRangeSort`}};n.extend(d);export{};
|
package/lib/es/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CellValueType as e,CommandType as t,DependentOn as n,Disposable as r,ICommandService as i,IConfigService as a,IUniverInstanceService as o,Inject as s,Injector as c,Plugin as l,Rectangle as u,UniverInstanceType as d,merge as f,sequenceExecute as p}from"@univerjs/core";import{ReorderRangeCommand as m,UniverSheetsPlugin as h,getSheetCommandTarget as g}from"@univerjs/sheets";import{FormulaDataModel as _,UniverFormulaEnginePlugin as v}from"@univerjs/engine-formula";let y=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),b=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const x=e=>e.replace(/-/gi,``).replace(/'/gi,``),S=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?b.ZERO:n?b.POSITIVE:r?b.NEGATIVE:null},C=(e,t,n)=>{let r=typeof e==`number`,i=typeof t==`number`;return r&&i?e<t?n===y.ASC?b.NEGATIVE:b.POSITIVE:e>t?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO:r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},w=(e,t,n)=>{let r=typeof e==`string`,i=typeof t==`string`;if(r&&(e=x(e.toLocaleLowerCase())),i&&(t=x(t.toLocaleLowerCase())),!r&&!i)return null;if(r&&i){let r=e,i=t;return r<i?n===y.ASC?b.NEGATIVE:b.POSITIVE:r>i?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO}return r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},T=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function E(e){"@babel/helpers - typeof";return E=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},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function O(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function k(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends r{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,k(this,`_compareFns`,[])}mergeCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;let o=a.getMergeData().filter(e=>u.contains(i,e));return o.length===0?!0:N(i,o)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!T(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._formulaDataModel.getArrayFormulaRange())==null||(t=t[n])==null?void 0:t[r];for(let e in a){let t=a[Number(e)];for(let e in t){let n=t[Number(e)];if(n&&u.intersects(i,n))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,n){var r;let{unitId:i,subUnitId:a}=g(this._univerInstanceService)||{};this._commandService.executeCommand(P.id,{orderRules:e.orderRules,range:e.range,hasTitle:(r=e.hasTitle)==null?!1:r,unitId:t||i,subUnitId:n||a})}};M=j([A(0,o),A(1,i),A(2,s(_))],M);function N(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const P={id:`sheet.command.sort-range`,type:t.COMMAND,handler:(e,t)=>{let{range:n,orderRules:r,hasTitle:a,unitId:s,subUnitId:c}=t,l=e.get(M),{worksheet:d}=g(e.get(o),t)||{};if(!d)return!1;let f=d.getMergeData().filter(e=>u.contains(n,e)),h=f.map(e=>e.startRow),{startRow:_,endRow:v}=n,y=a?_+1:_,b=[],x=[];for(let e=y;e<=v;e++)d.getRowFiltered(e)||d.getRowRawVisible(e)!==!1&&(f.length&&!h.includes(e)||(b.push({index:e,value:F(d,e,r)}),x.push(e)));let S=l.getAllCompareFns();b.sort(L(r,I(S)));let C={};b.forEach(({index:e,value:t},n)=>{C[x[n]]=e});let w={id:m.id,params:{unitId:s,subUnitId:c,range:n,order:C}},T=e.get(i);return p([w],T).result}};function F(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function I(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function L(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var R=`@univerjs/sheets-sort`,z=`0.
|
|
1
|
+
import{CellValueType as e,CommandType as t,DependentOn as n,Disposable as r,ICommandService as i,IConfigService as a,IUniverInstanceService as o,Inject as s,Injector as c,Plugin as l,Rectangle as u,UniverInstanceType as d,merge as f,sequenceExecute as p}from"@univerjs/core";import{ReorderRangeCommand as m,UniverSheetsPlugin as h,getSheetCommandTarget as g}from"@univerjs/sheets";import{FormulaDataModel as _,UniverFormulaEnginePlugin as v}from"@univerjs/engine-formula";let y=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),b=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const x=e=>e.replace(/-/gi,``).replace(/'/gi,``),S=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?b.ZERO:n?b.POSITIVE:r?b.NEGATIVE:null},C=(e,t,n)=>{let r=typeof e==`number`,i=typeof t==`number`;return r&&i?e<t?n===y.ASC?b.NEGATIVE:b.POSITIVE:e>t?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO:r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},w=(e,t,n)=>{let r=typeof e==`string`,i=typeof t==`string`;if(r&&(e=x(e.toLocaleLowerCase())),i&&(t=x(t.toLocaleLowerCase())),!r&&!i)return null;if(r&&i){let r=e,i=t;return r<i?n===y.ASC?b.NEGATIVE:b.POSITIVE:r>i?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO}return r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},T=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function E(e){"@babel/helpers - typeof";return E=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},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function O(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function k(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends r{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,k(this,`_compareFns`,[])}mergeCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;let o=a.getMergeData().filter(e=>u.contains(i,e));return o.length===0?!0:N(i,o)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!T(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._formulaDataModel.getArrayFormulaRange())==null||(t=t[n])==null?void 0:t[r];for(let e in a){let t=a[Number(e)];for(let e in t){let n=t[Number(e)];if(n&&u.intersects(i,n))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,n){var r;let{unitId:i,subUnitId:a}=g(this._univerInstanceService)||{};this._commandService.executeCommand(P.id,{orderRules:e.orderRules,range:e.range,hasTitle:(r=e.hasTitle)==null?!1:r,unitId:t||i,subUnitId:n||a})}};M=j([A(0,o),A(1,i),A(2,s(_))],M);function N(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const P={id:`sheet.command.sort-range`,type:t.COMMAND,handler:(e,t)=>{let{range:n,orderRules:r,hasTitle:a,unitId:s,subUnitId:c}=t,l=e.get(M),{worksheet:d}=g(e.get(o),t)||{};if(!d)return!1;let f=d.getMergeData().filter(e=>u.contains(n,e)),h=f.map(e=>e.startRow),{startRow:_,endRow:v}=n,y=a?_+1:_,b=[],x=[];for(let e=y;e<=v;e++)d.getRowFiltered(e)||d.getRowRawVisible(e)!==!1&&(f.length&&!h.includes(e)||(b.push({index:e,value:F(d,e,r)}),x.push(e)));let S=l.getAllCompareFns();b.sort(L(r,I(S)));let C={};b.forEach(({index:e,value:t},n)=>{C[x[n]]=e});let w={id:m.id,params:{unitId:s,subUnitId:c,range:n,order:C}},T=e.get(i);return p([w],T).result}};function F(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function I(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function L(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var R=`@univerjs/sheets-sort`,z=`0.20.0`;const B=`sheets-sort.config`;Symbol(B);const V={};let H=class extends r{constructor(e,t){super(),this._commandService=e,this._sortService=t,this._initCommands(),this._registerCompareFns()}_initCommands(){[P].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerCompareFns(){this._sortService.registerCompareFn((e,t,n)=>{let r=this._getCommonValue(t),i=this._getCommonValue(n),a=[S,w,C];for(let t=0;t<a.length;t++){let n=a[t](r,i,e);if(n!==null)return n}return null})}_getCommonValue(t){var n;return T(t)?null:(t==null||(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream)||((t==null?void 0:t.t)===e.NUMBER?Number.parseFloat(`${t.v}`):(t==null?void 0:t.t)===e.STRING?typeof t.v==`number`?t.v:`${t.v}`:(t==null?void 0:t.t)===e.BOOLEAN?`${t.v}`:(t==null?void 0:t.t)===e.FORCE_STRING?Number.parseFloat(`${t.v}`):`${t==null?void 0:t.v}`)}};H=j([A(0,i),A(1,s(M))],H);let U=class extends l{constructor(e=V,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=f({},V,this._config);this._configService.setConfig(B,r)}onStarting(){[[H],[M]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(H)}};k(U,`type`,d.UNIVER_SHEET),k(U,`pluginName`,`SHEET_SORT_PLUGIN`),k(U,`packageName`,R),k(U,`version`,z),U=j([n(h,v),A(1,s(c)),A(2,a)],U);export{M as SheetsSortService,P as SortRangeCommand,y as SortType,U as UniverSheetsSortPlugin};
|
package/lib/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ICommandService as e,RANGE_TYPE as t}from"@univerjs/core";import{FEventName as n,FUniver as r}from"@univerjs/core/facade";import{SortRangeCommand as i,SortType as a}from"@univerjs/sheets-sort";import{FRange as o,FWorksheet as s}from"@univerjs/sheets/facade";var c=class extends r{_initialize(t){let n=t.get(e);this.disposeWithMe(this.registerEventHandler(this.Event.SheetBeforeRangeSort,()=>n.beforeCommandExecuted(e=>{e.id===i.id&&this._beforeRangeSort(e)}))),this.disposeWithMe(this.registerEventHandler(this.Event.SheetRangeSorted,()=>n.onCommandExecuted(e=>{e.id===i.id&&this._onRangeSorted(e)})))}_beforeRangeSort(e){let t=e.params,n=this.getUniverSheet(t.unitId),r=n.getSheetBySheetId(t.subUnitId),{startColumn:i,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:n,worksheet:r,range:r.getRange(s,i,c-s+1,o-i+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-i,ascending:e.type===a.ASC}))};if(this.fireEvent(this.Event.SheetBeforeRangeSort,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}_onRangeSorted(e){let t=e.params,n=this.getUniverSheet(t.unitId),r=n.getSheetBySheetId(t.subUnitId),{startColumn:i,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:n,worksheet:r,range:r.getRange(s,i,c-s+1,o-i+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-i,ascending:e.type===a.ASC}))};if(this.fireEvent(this.Event.SheetRangeSorted,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}};r.extend(c);var l=class extends o{sort(e){let t=this._range.startColumn,n=(Array.isArray(e)?e:[e]).map(e=>typeof e==`number`?{colIndex:e+t,type:a.ASC}:{colIndex:e.column+t,type:e.ascending?a.ASC:a.DESC});return this._commandService.syncExecuteCommand(i.id,{orderRules:n,range:this._range,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};o.extend(l);var u=class extends s{sort(e,n=!0){let r=[{colIndex:e,type:n?a.ASC:a.DESC}],o={startRow:0,startColumn:0,endRow:this._worksheet.getRowCount()-1,endColumn:this._worksheet.getColumnCount()-1,rangeType:t.ALL};return this._commandService.syncExecuteCommand(i.id,{orderRules:r,range:o,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};s.extend(u);var d=class{get SheetRangeSorted(){return`SheetRangeSorted`}get SheetBeforeRangeSort(){return`SheetBeforeRangeSort`}};n.extend(d);export{};
|
package/lib/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CellValueType as e,CommandType as t,DependentOn as n,Disposable as r,ICommandService as i,IConfigService as a,IUniverInstanceService as o,Inject as s,Injector as c,Plugin as l,Rectangle as u,UniverInstanceType as d,merge as f,sequenceExecute as p}from"@univerjs/core";import{ReorderRangeCommand as m,UniverSheetsPlugin as h,getSheetCommandTarget as g}from"@univerjs/sheets";import{FormulaDataModel as _,UniverFormulaEnginePlugin as v}from"@univerjs/engine-formula";let y=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),b=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const x=e=>e.replace(/-/gi,``).replace(/'/gi,``),S=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?b.ZERO:n?b.POSITIVE:r?b.NEGATIVE:null},C=(e,t,n)=>{let r=typeof e==`number`,i=typeof t==`number`;return r&&i?e<t?n===y.ASC?b.NEGATIVE:b.POSITIVE:e>t?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO:r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},w=(e,t,n)=>{let r=typeof e==`string`,i=typeof t==`string`;if(r&&(e=x(e.toLocaleLowerCase())),i&&(t=x(t.toLocaleLowerCase())),!r&&!i)return null;if(r&&i){let r=e,i=t;return r<i?n===y.ASC?b.NEGATIVE:b.POSITIVE:r>i?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO}return r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},T=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function E(e){"@babel/helpers - typeof";return E=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},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function O(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function k(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends r{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,k(this,`_compareFns`,[])}mergeCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;let o=a.getMergeData().filter(e=>u.contains(i,e));return o.length===0?!0:N(i,o)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!T(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._formulaDataModel.getArrayFormulaRange())==null||(t=t[n])==null?void 0:t[r];for(let e in a){let t=a[Number(e)];for(let e in t){let n=t[Number(e)];if(n&&u.intersects(i,n))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,n){var r;let{unitId:i,subUnitId:a}=g(this._univerInstanceService)||{};this._commandService.executeCommand(P.id,{orderRules:e.orderRules,range:e.range,hasTitle:(r=e.hasTitle)==null?!1:r,unitId:t||i,subUnitId:n||a})}};M=j([A(0,o),A(1,i),A(2,s(_))],M);function N(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const P={id:`sheet.command.sort-range`,type:t.COMMAND,handler:(e,t)=>{let{range:n,orderRules:r,hasTitle:a,unitId:s,subUnitId:c}=t,l=e.get(M),{worksheet:d}=g(e.get(o),t)||{};if(!d)return!1;let f=d.getMergeData().filter(e=>u.contains(n,e)),h=f.map(e=>e.startRow),{startRow:_,endRow:v}=n,y=a?_+1:_,b=[],x=[];for(let e=y;e<=v;e++)d.getRowFiltered(e)||d.getRowRawVisible(e)!==!1&&(f.length&&!h.includes(e)||(b.push({index:e,value:F(d,e,r)}),x.push(e)));let S=l.getAllCompareFns();b.sort(L(r,I(S)));let C={};b.forEach(({index:e,value:t},n)=>{C[x[n]]=e});let w={id:m.id,params:{unitId:s,subUnitId:c,range:n,order:C}},T=e.get(i);return p([w],T).result}};function F(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function I(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function L(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var R=`@univerjs/sheets-sort`,z=`0.
|
|
1
|
+
import{CellValueType as e,CommandType as t,DependentOn as n,Disposable as r,ICommandService as i,IConfigService as a,IUniverInstanceService as o,Inject as s,Injector as c,Plugin as l,Rectangle as u,UniverInstanceType as d,merge as f,sequenceExecute as p}from"@univerjs/core";import{ReorderRangeCommand as m,UniverSheetsPlugin as h,getSheetCommandTarget as g}from"@univerjs/sheets";import{FormulaDataModel as _,UniverFormulaEnginePlugin as v}from"@univerjs/engine-formula";let y=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),b=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({});const x=e=>e.replace(/-/gi,``).replace(/'/gi,``),S=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?b.ZERO:n?b.POSITIVE:r?b.NEGATIVE:null},C=(e,t,n)=>{let r=typeof e==`number`,i=typeof t==`number`;return r&&i?e<t?n===y.ASC?b.NEGATIVE:b.POSITIVE:e>t?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO:r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},w=(e,t,n)=>{let r=typeof e==`string`,i=typeof t==`string`;if(r&&(e=x(e.toLocaleLowerCase())),i&&(t=x(t.toLocaleLowerCase())),!r&&!i)return null;if(r&&i){let r=e,i=t;return r<i?n===y.ASC?b.NEGATIVE:b.POSITIVE:r>i?n===y.ASC?b.POSITIVE:b.NEGATIVE:b.ZERO}return r?n===y.ASC?b.POSITIVE:b.NEGATIVE:i?n===y.ASC?b.NEGATIVE:b.POSITIVE:null},T=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function E(e){"@babel/helpers - typeof";return E=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},E(e)}function D(e,t){if(E(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(E(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function O(e){var t=D(e,`string`);return E(t)==`symbol`?t:t+``}function k(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function A(e,t){return function(n,r){t(n,r,e)}}function j(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 M=class extends r{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,k(this,`_compareFns`,[])}mergeCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;let o=a.getMergeData().filter(e=>u.contains(i,e));return o.length===0?!0:N(i,o)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!T(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._formulaDataModel.getArrayFormulaRange())==null||(t=t[n])==null?void 0:t[r];for(let e in a){let t=a[Number(e)];for(let e in t){let n=t[Number(e)];if(n&&u.intersects(i,n))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,n){var r;let{unitId:i,subUnitId:a}=g(this._univerInstanceService)||{};this._commandService.executeCommand(P.id,{orderRules:e.orderRules,range:e.range,hasTitle:(r=e.hasTitle)==null?!1:r,unitId:t||i,subUnitId:n||a})}};M=j([A(0,o),A(1,i),A(2,s(_))],M);function N(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}const P={id:`sheet.command.sort-range`,type:t.COMMAND,handler:(e,t)=>{let{range:n,orderRules:r,hasTitle:a,unitId:s,subUnitId:c}=t,l=e.get(M),{worksheet:d}=g(e.get(o),t)||{};if(!d)return!1;let f=d.getMergeData().filter(e=>u.contains(n,e)),h=f.map(e=>e.startRow),{startRow:_,endRow:v}=n,y=a?_+1:_,b=[],x=[];for(let e=y;e<=v;e++)d.getRowFiltered(e)||d.getRowRawVisible(e)!==!1&&(f.length&&!h.includes(e)||(b.push({index:e,value:F(d,e,r)}),x.push(e)));let S=l.getAllCompareFns();b.sort(L(r,I(S)));let C={};b.forEach(({index:e,value:t},n)=>{C[x[n]]=e});let w={id:m.id,params:{unitId:s,subUnitId:c,range:n,order:C}},T=e.get(i);return p([w],T).result}};function F(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function I(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function L(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var R=`@univerjs/sheets-sort`,z=`0.20.0`;const B=`sheets-sort.config`;Symbol(B);const V={};let H=class extends r{constructor(e,t){super(),this._commandService=e,this._sortService=t,this._initCommands(),this._registerCompareFns()}_initCommands(){[P].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerCompareFns(){this._sortService.registerCompareFn((e,t,n)=>{let r=this._getCommonValue(t),i=this._getCommonValue(n),a=[S,w,C];for(let t=0;t<a.length;t++){let n=a[t](r,i,e);if(n!==null)return n}return null})}_getCommonValue(t){var n;return T(t)?null:(t==null||(n=t.p)==null||(n=n.body)==null?void 0:n.dataStream)||((t==null?void 0:t.t)===e.NUMBER?Number.parseFloat(`${t.v}`):(t==null?void 0:t.t)===e.STRING?typeof t.v==`number`?t.v:`${t.v}`:(t==null?void 0:t.t)===e.BOOLEAN?`${t.v}`:(t==null?void 0:t.t)===e.FORCE_STRING?Number.parseFloat(`${t.v}`):`${t==null?void 0:t.v}`)}};H=j([A(0,i),A(1,s(M))],H);let U=class extends l{constructor(e=V,t,n){super(),this._config=e,this._injector=t,this._configService=n;let{...r}=f({},V,this._config);this._configService.setConfig(B,r)}onStarting(){[[H],[M]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(H)}};k(U,`type`,d.UNIVER_SHEET),k(U,`pluginName`,`SHEET_SORT_PLUGIN`),k(U,`packageName`,R),k(U,`version`,z),U=j([n(h,v),A(1,s(c)),A(2,a)],U);export{M as SheetsSortService,P as SortRangeCommand,y as SortType,U as UniverSheetsSortPlugin};
|
|
@@ -18,7 +18,7 @@ import type { FRange, FWorkbook, FWorksheet } from '@univerjs/sheets/facade';
|
|
|
18
18
|
/**
|
|
19
19
|
* @ignore
|
|
20
20
|
*/
|
|
21
|
-
export interface
|
|
21
|
+
export interface IFSheetsSortEventNameMixin {
|
|
22
22
|
/**
|
|
23
23
|
* This event will be emitted when a range on a worksheet is sorted.
|
|
24
24
|
* @see {@link ISheetRangeSortParams}
|
|
@@ -51,7 +51,7 @@ export interface IFSheetSortEventMixin {
|
|
|
51
51
|
*/
|
|
52
52
|
SheetBeforeRangeSort: 'SheetBeforeRangeSort';
|
|
53
53
|
}
|
|
54
|
-
export declare class
|
|
54
|
+
export declare class FSheetsSortEventNameMixin implements IFSheetsSortEventNameMixin {
|
|
55
55
|
get SheetRangeSorted(): 'SheetRangeSorted';
|
|
56
56
|
get SheetBeforeRangeSort(): 'SheetBeforeRangeSort';
|
|
57
57
|
}
|
|
@@ -59,7 +59,7 @@ interface ISortColumn {
|
|
|
59
59
|
column: number;
|
|
60
60
|
ascending: boolean;
|
|
61
61
|
}
|
|
62
|
-
export interface
|
|
62
|
+
export interface ISheetsRangeSortEventParams extends IEventBase {
|
|
63
63
|
workbook: FWorkbook;
|
|
64
64
|
worksheet: FWorksheet;
|
|
65
65
|
range: FRange;
|
|
@@ -68,14 +68,14 @@ export interface ISheetRangeSortParams extends IEventBase {
|
|
|
68
68
|
/**
|
|
69
69
|
* @ignore
|
|
70
70
|
*/
|
|
71
|
-
export interface
|
|
72
|
-
SheetBeforeRangeSort:
|
|
73
|
-
SheetRangeSorted:
|
|
71
|
+
export interface ISheetsSortEventParamConfig {
|
|
72
|
+
SheetBeforeRangeSort: ISheetsRangeSortEventParams;
|
|
73
|
+
SheetRangeSorted: ISheetsRangeSortEventParams;
|
|
74
74
|
}
|
|
75
75
|
declare module '@univerjs/core/facade' {
|
|
76
|
-
interface FEventName extends
|
|
76
|
+
interface FEventName extends IFSheetsSortEventNameMixin {
|
|
77
77
|
}
|
|
78
|
-
interface IEventParamConfig extends
|
|
78
|
+
interface IEventParamConfig extends ISheetsSortEventParamConfig {
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
export {};
|
|
@@ -21,7 +21,7 @@ export type SortColumnSpec = {
|
|
|
21
21
|
/**
|
|
22
22
|
* @ignore
|
|
23
23
|
*/
|
|
24
|
-
export interface
|
|
24
|
+
export interface IFRangeSheetsSortMixin {
|
|
25
25
|
/**
|
|
26
26
|
* Sorts the cells in the given range, by column(s) and order specified.
|
|
27
27
|
* @param {SortColumnSpec | SortColumnSpec[]} column The column index with order or an array of column indexes with order. The range first column index is 0.
|
|
@@ -44,10 +44,10 @@ export interface IFRangeSort {
|
|
|
44
44
|
*/
|
|
45
45
|
sort(column: SortColumnSpec | SortColumnSpec[]): FRange;
|
|
46
46
|
}
|
|
47
|
-
export declare class
|
|
47
|
+
export declare class FRangeSheetsSortMixin extends FRange implements IFRangeSheetsSortMixin {
|
|
48
48
|
sort(column: SortColumnSpec | SortColumnSpec[]): FRange;
|
|
49
49
|
}
|
|
50
50
|
declare module '@univerjs/sheets/facade' {
|
|
51
|
-
interface FRange extends
|
|
51
|
+
interface FRange extends IFRangeSheetsSortMixin {
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import type { Injector } from '@univerjs/core';
|
|
17
|
+
import { FUniver } from '@univerjs/core/facade';
|
|
18
|
+
export declare class FUniverSheetsSortMixin extends FUniver {
|
|
19
|
+
/**
|
|
20
|
+
* @ignore
|
|
21
|
+
*/
|
|
22
|
+
_initialize(injector: Injector): void;
|
|
23
|
+
private _beforeRangeSort;
|
|
24
|
+
private _onRangeSorted;
|
|
25
|
+
}
|
|
@@ -17,7 +17,7 @@ import { FWorksheet } from '@univerjs/sheets/facade';
|
|
|
17
17
|
/**
|
|
18
18
|
* @ignore
|
|
19
19
|
*/
|
|
20
|
-
export interface
|
|
20
|
+
export interface IFWorksheetSortMixin {
|
|
21
21
|
/**
|
|
22
22
|
* Sort the worksheet by the specified column.
|
|
23
23
|
* @param {number} colIndex The column index to sort by.
|
|
@@ -37,10 +37,10 @@ export interface IFWorksheetSort {
|
|
|
37
37
|
*/
|
|
38
38
|
sort(colIndex: number, asc?: boolean): FWorksheet;
|
|
39
39
|
}
|
|
40
|
-
export declare class
|
|
40
|
+
export declare class FWorksheetSortMixin extends FWorksheet implements IFWorksheetSortMixin {
|
|
41
41
|
sort(colIndex: number, asc?: boolean): FWorksheet;
|
|
42
42
|
}
|
|
43
43
|
declare module '@univerjs/sheets/facade' {
|
|
44
|
-
interface FWorksheet extends
|
|
44
|
+
interface FWorksheet extends IFWorksheetSortMixin {
|
|
45
45
|
}
|
|
46
46
|
}
|
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
import './f-univer';
|
|
16
17
|
import './f-range';
|
|
17
18
|
import './f-worksheet';
|
|
18
19
|
import './f-event';
|
|
19
20
|
export type * from './f-event';
|
|
20
21
|
export type * from './f-range';
|
|
22
|
+
export type * from './f-univer';
|
|
21
23
|
export type * from './f-worksheet';
|
package/lib/umd/facade.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(require(`@univerjs/
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(require(`@univerjs/core`),require(`@univerjs/core/facade`),require(`@univerjs/sheets-sort`),require(`@univerjs/sheets/facade`)):typeof define==`function`&&define.amd?define([`@univerjs/core`,`@univerjs/core/facade`,`@univerjs/sheets-sort`,`@univerjs/sheets/facade`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverCore,e.UniverCoreFacade,e.UniverSheetsSort,e.UniverSheetsFacade))})(this,function(e,t,n,r){var i=class extends t.FUniver{_initialize(t){let r=t.get(e.ICommandService);this.disposeWithMe(this.registerEventHandler(this.Event.SheetBeforeRangeSort,()=>r.beforeCommandExecuted(e=>{e.id===n.SortRangeCommand.id&&this._beforeRangeSort(e)}))),this.disposeWithMe(this.registerEventHandler(this.Event.SheetRangeSorted,()=>r.onCommandExecuted(e=>{e.id===n.SortRangeCommand.id&&this._onRangeSorted(e)})))}_beforeRangeSort(e){let t=e.params,r=this.getUniverSheet(t.unitId),i=r.getSheetBySheetId(t.subUnitId),{startColumn:a,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:r,worksheet:i,range:i.getRange(s,a,c-s+1,o-a+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-a,ascending:e.type===n.SortType.ASC}))};if(this.fireEvent(this.Event.SheetBeforeRangeSort,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}_onRangeSorted(e){let t=e.params,r=this.getUniverSheet(t.unitId),i=r.getSheetBySheetId(t.subUnitId),{startColumn:a,endColumn:o,startRow:s,endRow:c}=t.range,l={workbook:r,worksheet:i,range:i.getRange(s,a,c-s+1,o-a+1),sortColumn:t.orderRules.map(e=>({column:e.colIndex-a,ascending:e.type===n.SortType.ASC}))};if(this.fireEvent(this.Event.SheetRangeSorted,l),l.cancel)throw Error(`SortRangeCommand canceled.`)}};t.FUniver.extend(i);var a=class extends r.FRange{sort(e){let t=this._range.startColumn,r=(Array.isArray(e)?e:[e]).map(e=>typeof e==`number`?{colIndex:e+t,type:n.SortType.ASC}:{colIndex:e.column+t,type:e.ascending?n.SortType.ASC:n.SortType.DESC});return this._commandService.syncExecuteCommand(n.SortRangeCommand.id,{orderRules:r,range:this._range,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};r.FRange.extend(a);var o=class extends r.FWorksheet{sort(t,r=!0){let i=[{colIndex:t,type:r?n.SortType.ASC:n.SortType.DESC}],a={startRow:0,startColumn:0,endRow:this._worksheet.getRowCount()-1,endColumn:this._worksheet.getColumnCount()-1,rangeType:e.RANGE_TYPE.ALL};return this._commandService.syncExecuteCommand(n.SortRangeCommand.id,{orderRules:i,range:a,hasTitle:!1,unitId:this._workbook.getUnitId(),subUnitId:this._worksheet.getSheetId()}),this}};r.FWorksheet.extend(o);var s=class{get SheetRangeSorted(){return`SheetRangeSorted`}get SheetBeforeRangeSort(){return`SheetBeforeRangeSort`}};t.FEventName.extend(s)});
|
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/sheets`),require(`@univerjs/engine-formula`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsSort={},e.UniverCore,e.UniverSheets,e.UniverEngineFormula))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),a=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({}),o=e=>e.replace(/-/gi,``).replace(/'/gi,``),s=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?a.ZERO:n?a.POSITIVE:r?a.NEGATIVE:null},c=(e,t,n)=>{let r=typeof e==`number`,o=typeof t==`number`;return r&&o?e<t?n===i.ASC?a.NEGATIVE:a.POSITIVE:e>t?n===i.ASC?a.POSITIVE:a.NEGATIVE:a.ZERO:r?n===i.ASC?a.POSITIVE:a.NEGATIVE:o?n===i.ASC?a.NEGATIVE:a.POSITIVE:null},l=(e,t,n)=>{let r=typeof e==`string`,s=typeof t==`string`;if(r&&(e=o(e.toLocaleLowerCase())),s&&(t=o(t.toLocaleLowerCase())),!r&&!s)return null;if(r&&s){let r=e,o=t;return r<o?n===i.ASC?a.NEGATIVE:a.POSITIVE:r>o?n===i.ASC?a.POSITIVE:a.NEGATIVE:a.ZERO}return r?n===i.ASC?a.POSITIVE:a.NEGATIVE:s?n===i.ASC?a.NEGATIVE:a.POSITIVE:null},u=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function d(e){"@babel/helpers - typeof";return d=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},d(e)}function f(e,t){if(d(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(d(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function p(e){var t=f(e,`string`);return d(t)==`symbol`?t:t+``}function m(e,t,n){return(t=p(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){return function(n,r){t(n,r,e)}}function g(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let _=class extends t.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,m(this,`_compareFns`,[])}mergeCheck(e){var n;let{unitId:r,subUnitId:i,range:a}=e,o=(n=this._univerInstanceService.getUnit(r))==null?void 0:n.getSheetBySheetId(i);if(!o)return!1;let s=o.getMergeData().filter(e=>t.Rectangle.contains(a,e));return s.length===0?!0:v(a,s)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!u(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var n;let{unitId:r,subUnitId:i,range:a}=e,o=(n=this._formulaDataModel.getArrayFormulaRange())==null||(n=n[r])==null?void 0:n[i];for(let e in o){let n=o[Number(e)];for(let e in n){let r=n[Number(e)];if(r&&t.Rectangle.intersects(a,r))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,r){var i;let{unitId:a,subUnitId:o}=(0,n.getSheetCommandTarget)(this._univerInstanceService)||{};this._commandService.executeCommand(y.id,{orderRules:e.orderRules,range:e.range,hasTitle:(i=e.hasTitle)==null?!1:i,unitId:t||a,subUnitId:r||o})}};_=g([h(0,t.IUniverInstanceService),h(1,t.ICommandService),h(2,(0,t.Inject)(r.FormulaDataModel))],_);function v(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}let y={id:`sheet.command.sort-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let{range:i,orderRules:a,hasTitle:o,unitId:s,subUnitId:c}=r,l=e.get(_),{worksheet:u}=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r)||{};if(!u)return!1;let d=u.getMergeData().filter(e=>t.Rectangle.contains(i,e)),f=d.map(e=>e.startRow),{startRow:p,endRow:m}=i,h=o?p+1:p,g=[],v=[];for(let e=h;e<=m;e++)u.getRowFiltered(e)||u.getRowRawVisible(e)!==!1&&(d.length&&!f.includes(e)||(g.push({index:e,value:b(u,e,a)}),v.push(e)));let y=l.getAllCompareFns();g.sort(S(a,x(y)));let C={};g.forEach(({index:e,value:t},n)=>{C[v[n]]=e});let w={id:n.ReorderRangeCommand.id,params:{unitId:s,subUnitId:c,range:i,order:C}},T=e.get(t.ICommandService);return(0,t.sequenceExecute)([w],T).result}};function b(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function x(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function S(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var C=`@univerjs/sheets-sort`,w=`0.
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`@univerjs/core`),require(`@univerjs/sheets`),require(`@univerjs/engine-formula`)):typeof define==`function`&&define.amd?define([`exports`,`@univerjs/core`,`@univerjs/sheets`,`@univerjs/engine-formula`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.UniverSheetsSort={},e.UniverCore,e.UniverSheets,e.UniverEngineFormula))})(this,function(e,t,n,r){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});let i=function(e){return e.DESC=`desc`,e.ASC=`asc`,e}({}),a=function(e){return e[e.POSITIVE=1]=`POSITIVE`,e[e.NEGATIVE=-1]=`NEGATIVE`,e[e.ZERO=0]=`ZERO`,e}({}),o=e=>e.replace(/-/gi,``).replace(/'/gi,``),s=(e,t)=>{let n=e===null||e===``,r=t===null||t===``;return n&&r?a.ZERO:n?a.POSITIVE:r?a.NEGATIVE:null},c=(e,t,n)=>{let r=typeof e==`number`,o=typeof t==`number`;return r&&o?e<t?n===i.ASC?a.NEGATIVE:a.POSITIVE:e>t?n===i.ASC?a.POSITIVE:a.NEGATIVE:a.ZERO:r?n===i.ASC?a.POSITIVE:a.NEGATIVE:o?n===i.ASC?a.NEGATIVE:a.POSITIVE:null},l=(e,t,n)=>{let r=typeof e==`string`,s=typeof t==`string`;if(r&&(e=o(e.toLocaleLowerCase())),s&&(t=o(t.toLocaleLowerCase())),!r&&!s)return null;if(r&&s){let r=e,o=t;return r<o?n===i.ASC?a.NEGATIVE:a.POSITIVE:r>o?n===i.ASC?a.POSITIVE:a.NEGATIVE:a.ZERO}return r?n===i.ASC?a.POSITIVE:a.NEGATIVE:s?n===i.ASC?a.NEGATIVE:a.POSITIVE:null},u=e=>!e||Object.keys(e).length===0||(e==null?void 0:e.v)==null&&(e==null?void 0:e.p)==null;function d(e){"@babel/helpers - typeof";return d=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},d(e)}function f(e,t){if(d(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(d(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function p(e){var t=f(e,`string`);return d(t)==`symbol`?t:t+``}function m(e,t,n){return(t=p(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){return function(n,r){t(n,r,e)}}function g(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}let _=class extends t.Disposable{constructor(e,t,n){super(),this._univerInstanceService=e,this._commandService=t,this._formulaDataModel=n,m(this,`_compareFns`,[])}mergeCheck(e){var n;let{unitId:r,subUnitId:i,range:a}=e,o=(n=this._univerInstanceService.getUnit(r))==null?void 0:n.getSheetBySheetId(i);if(!o)return!1;let s=o.getMergeData().filter(e=>t.Rectangle.contains(a,e));return s.length===0?!0:v(a,s)}emptyCheck(e){var t;let{unitId:n,subUnitId:r,range:i}=e,a=(t=this._univerInstanceService.getUnit(n))==null?void 0:t.getSheetBySheetId(r);if(!a)return!1;for(let e=i.startRow;e<=i.endRow;e++)for(let t=i.startColumn;t<=i.endColumn;t++)if(!u(a.getCellRaw(e,t)))return!0;return!1}singleCheck(e){return e.range.startRow!==e.range.endRow}formulaCheck(e){var n;let{unitId:r,subUnitId:i,range:a}=e,o=(n=this._formulaDataModel.getArrayFormulaRange())==null||(n=n[r])==null?void 0:n[i];for(let e in o){let n=o[Number(e)];for(let e in n){let r=n[Number(e)];if(r&&t.Rectangle.intersects(a,r))return!1}}return!0}registerCompareFn(e){this._compareFns.unshift(e)}getAllCompareFns(){return this._compareFns}applySort(e,t,r){var i;let{unitId:a,subUnitId:o}=(0,n.getSheetCommandTarget)(this._univerInstanceService)||{};this._commandService.executeCommand(y.id,{orderRules:e.orderRules,range:e.range,hasTitle:(i=e.hasTitle)==null?!1:i,unitId:t||a,subUnitId:r||o})}};_=g([h(0,t.IUniverInstanceService),h(1,t.ICommandService),h(2,(0,t.Inject)(r.FormulaDataModel))],_);function v(e,t){let n=e.endRow-e.startRow+1,r=e.endColumn-e.startColumn+1,i=null,a=null,o=n*r,s=0;for(let n of t)if(n.startRow>=e.startRow&&n.endRow<=e.endRow&&n.startColumn>=e.startColumn&&n.endColumn<=e.endColumn){let e=n.endRow-n.startRow+1,t=n.endColumn-n.startColumn+1;if(i===null&&a===null)i=e,a=t;else if(e!==i||t!==a)return!1;s+=e*t}return s===o}let y={id:`sheet.command.sort-range`,type:t.CommandType.COMMAND,handler:(e,r)=>{let{range:i,orderRules:a,hasTitle:o,unitId:s,subUnitId:c}=r,l=e.get(_),{worksheet:u}=(0,n.getSheetCommandTarget)(e.get(t.IUniverInstanceService),r)||{};if(!u)return!1;let d=u.getMergeData().filter(e=>t.Rectangle.contains(i,e)),f=d.map(e=>e.startRow),{startRow:p,endRow:m}=i,h=o?p+1:p,g=[],v=[];for(let e=h;e<=m;e++)u.getRowFiltered(e)||u.getRowRawVisible(e)!==!1&&(d.length&&!f.includes(e)||(g.push({index:e,value:b(u,e,a)}),v.push(e)));let y=l.getAllCompareFns();g.sort(S(a,x(y)));let C={};g.forEach(({index:e,value:t},n)=>{C[v[n]]=e});let w={id:n.ReorderRangeCommand.id,params:{unitId:s,subUnitId:c,range:i,order:C}},T=e.get(t.ICommandService);return(0,t.sequenceExecute)([w],T).result}};function b(e,t,n){let r=[];return n.forEach(({colIndex:n})=>{r.push(e.getCellRaw(t,n))}),r}function x(e){return(t,n,r)=>{for(let i=0;i<e.length;i++){let a=e[i](t,n,r);if(a!=null)return a}return 0}}function S(e,t){return function(n,r){let i=null;for(let a=0;a<e.length;a++){let o=n.value[a],s=r.value[a];if(i=t(e[a].type,o,s),i!==0&&i!=null)return i}return 0}}var C=`@univerjs/sheets-sort`,w=`0.20.0`;let T=`sheets-sort.config`;Symbol(T);let E={},D=class extends t.Disposable{constructor(e,t){super(),this._commandService=e,this._sortService=t,this._initCommands(),this._registerCompareFns()}_initCommands(){[y].forEach(e=>this.disposeWithMe(this._commandService.registerCommand(e)))}_registerCompareFns(){this._sortService.registerCompareFn((e,t,n)=>{let r=this._getCommonValue(t),i=this._getCommonValue(n),a=[s,l,c];for(let t=0;t<a.length;t++){let n=a[t](r,i,e);if(n!==null)return n}return null})}_getCommonValue(e){var n;return u(e)?null:(e==null||(n=e.p)==null||(n=n.body)==null?void 0:n.dataStream)||((e==null?void 0:e.t)===t.CellValueType.NUMBER?Number.parseFloat(`${e.v}`):(e==null?void 0:e.t)===t.CellValueType.STRING?typeof e.v==`number`?e.v:`${e.v}`:(e==null?void 0:e.t)===t.CellValueType.BOOLEAN?`${e.v}`:(e==null?void 0:e.t)===t.CellValueType.FORCE_STRING?Number.parseFloat(`${e.v}`):`${e==null?void 0:e.v}`)}};D=g([h(0,t.ICommandService),h(1,(0,t.Inject)(_))],D);let O=class extends t.Plugin{constructor(e=E,n,r){super(),this._config=e,this._injector=n,this._configService=r;let{...i}=(0,t.merge)({},E,this._config);this._configService.setConfig(T,i)}onStarting(){[[D],[_]].forEach(e=>this._injector.add(e))}onReady(){this._injector.get(D)}};m(O,`type`,t.UniverInstanceType.UNIVER_SHEET),m(O,`pluginName`,`SHEET_SORT_PLUGIN`),m(O,`packageName`,C),m(O,`version`,w),O=g([(0,t.DependentOn)(n.UniverSheetsPlugin,r.UniverFormulaEnginePlugin),h(1,(0,t.Inject)(t.Injector)),h(2,t.IConfigService)],O),Object.defineProperty(e,`SheetsSortService`,{enumerable:!0,get:function(){return _}}),e.SortRangeCommand=y,e.SortType=i,Object.defineProperty(e,`UniverSheetsSortPlugin`,{enumerable:!0,get:function(){return O}})});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@univerjs/sheets-sort",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A library for sorting data in Univer Sheet",
|
|
6
6
|
"author": "DreamNum <developer@univer.ai>",
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"lib"
|
|
59
59
|
],
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@univerjs/core": "0.
|
|
62
|
-
"@univerjs/engine-formula": "0.
|
|
63
|
-
"@univerjs/sheets": "0.
|
|
61
|
+
"@univerjs/core": "0.20.0",
|
|
62
|
+
"@univerjs/engine-formula": "0.20.0",
|
|
63
|
+
"@univerjs/sheets": "0.20.0"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"typescript": "^6.0.2",
|
|
67
67
|
"vitest": "^4.1.1",
|
|
68
|
-
"@univerjs-infra/shared": "0.
|
|
68
|
+
"@univerjs-infra/shared": "0.20.0"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"test": "vitest run",
|