@sl-material/sl-table-sheet 1.0.0-beta0 → 1.0.0-beta1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sl-material/sl-table-sheet",
3
- "version": "1.0.0-beta0",
3
+ "version": "1.0.0-beta1",
4
4
  "description": "VTable 组件库 - 支持 npm 和 UMD",
5
5
  "main": "./sl-table-sheet.cjs.js",
6
6
  "module": "./sl-table-sheet.es.js",
@@ -10,8 +10,7 @@
10
10
  "import": "./sl-table-sheet.es.js",
11
11
  "require": "./sl-table-sheet.cjs.js",
12
12
  "types": "./index.d.ts"
13
- },
14
- "./style.css": "./style.css"
13
+ }
15
14
  },
16
15
  "keywords": [
17
16
  "spreadsheet",
@@ -1,3 +1,4 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('@charset "UTF-8";:root{--sl-color-white: #ffffff;--sl-color-black: #000000;--sl-color-primary-rgb: 40, 120, 255;--sl-color-success-rgb: 0, 180, 42;--sl-color-warning-rgb: 255, 105, 0;--sl-color-danger-rgb: 255, 77, 80;--sl-color-error-rgb: 255, 77, 80;--sl-color-info-rgb: 136, 141, 154;--sl-font-size-extra-large: 20px;--sl-font-size-large: 18px;--sl-font-size-medium: 16px;--sl-font-size-base: 14px;--sl-font-size-small: 13px;--sl-font-size-extra-small: 12px;--sl-font-size-extra-smaller: 11px;--sl-font-size-last-small: 10px;--sl-font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, "Hiragino Sans GB", "微软雅黑", Arial, sans-serif;--sl-font-weight-primary: 400;--sl-font-weight-500: 500;--sl-font-line-height-primary: 24px;--sl-index-normal: 1;--sl-index-top: 1000;--sl-index-popper: 2000;--sl-border-radius-base: 4px;--sl-border-radius-small: 2px;--sl-border-radius-round: 20px;--sl-border-radius-circle: 100%;--sl-transition-duration: .3s;--sl-transition-duration-fast: .2s;--sl-transition-function-ease-in-out-bezier: cubic-bezier(.645, .045, .355, 1);--sl-transition-function-fast-bezier: cubic-bezier(.23, 1, .32, 1);--sl-transition-all: all var(--sl-transition-duration) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-fade: opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-md-fade: transform var(--sl-transition-duration) var(--sl-transition-function-fast-bezier), opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-fade-linear: opacity var(--sl-transition-duration-fast) linear;--sl-transition-border: border-color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-box-shadow: box-shadow var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-color: color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-component-size-large: 40px;--sl-component-size: 32px;--sl-component-size-small: 24px;color-scheme:light;--sl-color-primary: #2878ff;--sl-color-primary-light-3: #5594ff;--sl-color-primary-light-5: #9FC3FF;--sl-color-primary-light-7: #bfd7ff;--sl-color-primary-light-8: #d4e4ff;--sl-color-primary-light-9: #E8F3FF;--sl-color-primary-dark-2: #0A59DF;--sl-color-success: #00B42A;--sl-color-success-light-3: rgb(77, 203, 106);--sl-color-success-light-5: rgb(128, 218, 149);--sl-color-success-light-7: rgb(179, 233, 191);--sl-color-success-light-8: rgb(204, 240, 212);--sl-color-success-light-9: #E8FFEA;--sl-color-success-dark-2: rgb(0, 144, 34);--sl-color-warning: #FF6900;--sl-color-warning-light-3: rgb(255, 150, 77);--sl-color-warning-light-5: rgb(255, 180, 128);--sl-color-warning-light-7: rgb(255, 210, 179);--sl-color-warning-light-8: rgb(255, 225, 204);--sl-color-warning-light-9: #FFF3E4;--sl-color-warning-dark-2: rgb(204, 84, 0);--sl-color-danger: #FF4D50;--sl-color-danger-light-3: rgb(255, 130, 133);--sl-color-danger-light-5: rgb(255, 166, 168);--sl-color-danger-light-7: rgb(255, 202, 203);--sl-color-danger-light-8: rgb(255, 219, 220);--sl-color-danger-light-9: #FFEBEB;--sl-color-danger-dark-2: rgb(204, 62, 64);--sl-color-error: #FF4D50;--sl-color-error-light-3: rgb(255, 130, 133);--sl-color-error-light-5: rgb(255, 166, 168);--sl-color-error-light-7: rgb(255, 202, 203);--sl-color-error-light-8: rgb(255, 219, 220);--sl-color-error-light-9: rgb(255, 237, 238);--sl-color-error-dark-2: rgb(204, 62, 64);--sl-color-info: #888d9a;--sl-color-info-light-3: #b1b3b8;--sl-color-info-light-5: #c8c9cc;--sl-color-info-light-7: #dedfe0;--sl-color-info-light-8: #e9e9eb;--sl-color-info-light-9: #f4f5f6;--sl-color-info-dark-2: rgb(109, 113, 123);--sl-color-rest: #955609;--sl-color-rest-light-1: #ffeac9;--sl-color-success-light-4: #23C343;--sl-color-success-light-6: #7BE188;--sl-color-warning-light-4: #FD7E14;--sl-color-warning-light-6: #FFC078;--sl-color-danger-light-4: #FC7274;--sl-color-danger-light-6: #FFB9BA;--sl-bg-color: #ffffff;--sl-bg-color-page: #f2f3f5;--sl-bg-color-overlay: #ffffff;--sl-bg-color-rest: rgba(253, 192, 45, .03);--sl-bg-color-container: #f2f4f6;--sl-text-color: #1D2129;--sl-text-color-primary: #1D2129;--sl-text-color-regular: #1D2129;--sl-text-color-secondary: #4E5969;--sl-text-color-thridary: #86909C;--sl-text-color-four: #C9CDD4;--sl-text-color-fifth: #FFFFFF;--sl-text-color-placeholder: #86909C;--sl-text-color-disabled: #C9CDD4;--sl-text-color-icon: #afb1b4;--sl-border-color: #E5E6EB;--sl-border-color-light: #F2F3F5;--sl-border-color-dark: #C9CDD4;--sl-border-color-darker: #86909C;--sl-border-color-checkbox: #C9CDD4;--sl-border-color-switch: #C9CDD4;--sl-fill-color: #F2F3F5;--sl-fill-color-light: #F7F8FA;--sl-fill-color-dark: #E5E6EB;--sl-fill-color-darker: #C9CDD4;--sl-fill-color-extra-darker: #4E5969;--sl-fill-color-blank: #ffffff;--sl-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .04), 0px 8px 20px rgba(0, 0, 0, .08);--sl-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .12);--sl-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .12);--sl-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .08), 0px 12px 32px rgba(0, 0, 0, .12), 0px 8px 16px -8px rgba(0, 0, 0, .16);--sl-disabled-bg-color: var(--sl-fill-color-light);--sl-disabled-text-color: var(--sl-text-color-thridary);--sl-disabled-border-color: var(--sl-border-color-dark);--sl-overlay-color: rgba(0, 0, 0, .8);--sl-overlay-color-light: rgba(0, 0, 0, .7);--sl-overlay-color-lighter: rgba(0, 0, 0, .5);--sl-mask-color: rgba(255, 255, 255, .9);--sl-mask-color-extra-light: rgba(255, 255, 255, .3);--sl-border-width: 1px;--sl-border-style: solid;--sl-border-color-hover: var(--sl-text-color-disabled);--sl-border: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color);--sl-checkbox-input-border-custom: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color-checkbox);--sl-svg-monochrome-grey: var(--sl-border-color);--sl-form-item-tooltip-width: 240px }:root{--sl-vtable-primary-color: #2878FF;--sl-vtable-card-bg-color:#f6f6f6;--sl-vtable-content-color:#1D2129;--sl-vtable-bg-color1:#ECECEC;--sl-error-color:#FF4D50;--sl-btn-bg-color-gray:#ECECEC}')),document.head.appendChild(r)}}catch(l){console.error("vite-plugin-css-injected-by-js",l)}})();
1
2
  "use strict";var B=Object.defineProperty;var V=(c,e,t)=>e in c?B(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var u=(c,e,t)=>V(c,typeof e!="symbol"?e+"":e,t);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const j=require("xlsx"),_=require("@visactor/vtable-sheet"),H=require("@visactor/vtable-editors");function I(c){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const t in c)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(c,t);Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:()=>c[t]})}}return e.default=c,Object.freeze(e)}const b=I(j),y=I(_),k=I(H);class T{static detectHeaderRows(e,t){let n=1;t!==void 0?n=t:n=this.autoDetectHeaderRows(e);const o=e.slice(0,n),s=this.filterTitleRows(o);return{headerRows:n,dataStartRow:n,effectiveHeaderRows:s}}static autoDetectHeaderRows(e){const t=Math.min(5,e.length);let n=1;const o=e[0]||[],s=e[1]||[],l=this.getNonEmptyCells(o),i=this.getNonEmptyCells(s),a=this.isTitleRow(l),d=this.isHeaderRow(i);if(a&&d)return 2;if(d&&!a)return 1;for(let r=0;r<t-1;r++){const h=e[r]||[],p=this.getNonEmptyCells(h),f=this.isTitleRow(p),m=this.isHeaderRow(p),g=this.isDataRow(p);if(f&&m)n=Math.max(n,r+2);else if(m&&!g&&r<t-2){const w=e[r+2]||[],S=this.getNonEmptyCells(w);this.isDataRow(S)||(n=Math.max(n,r+2))}}return n}static filterTitleRows(e){for(let t=0;t<e.length;t++){const n=e[t],o=this.getNonEmptyCells(n);if(o.length===1&&o[0].length>20)return e.slice(t+1)}return e}static getNonEmptyCells(e){return e.filter(t=>String(t||"").trim()!=="")}static isTitleRow(e){return e.length===1&&e[0].length>20}static isHeaderRow(e){return e.length>3}static isDataRow(e){return e.length>0&&e.some(t=>{const n=String(t||"").trim();return/^\d+$/.test(n)||/^\d{4}-\d{1,2}-\d{1,2}/.test(n)||n.length<=10})}static mergeHeaders(e,t){const n=[];for(let o=0;o<t;o++){const s=[];let l=!1;for(let i=e.length-1;i>=0;i--){const a=e[i][o],d=String(a||"").trim();d!==""?l||s.unshift(d):l=!0}n.push(s.length>0?s.join(" - "):`列${o+1}`)}return n}}function R(c){if(c){if(c.length===8)return"#"+c.substring(2);if(c.length===6)return"#"+c}}function P(c,e){return{0:"#FFFFFF",1:"#000000",2:"#E7E6E6",3:"#44546A",4:"#4472C4",5:"#ED7D31",6:"#A5A5A5",7:"#FFC000",8:"#5B9BD5",9:"#70AD47"}[c]}function C(c){if(c){if(c.rgb)return R(c.rgb);if(c.argb)return R(c.argb);if(c.theme!==void 0)return P(c.theme,c.tint);if(c.indexed!==void 0)return{64:"#000000",65:"#FFFFFF",8:"#000000",9:"#FFFFFF",10:"#FF0000",11:"#00FF00",12:"#0000FF",13:"#FFFF00",14:"#FF00FF",15:"#00FFFF"}[c.indexed]}}class q{static extractStyles(e,t,n){const o=new Map,s=t.Styles;if(!s)return;const l=s.Fonts||[],i=s.Fills||[],a=s.CellXf||[],d=b.utils.decode_range(e["!ref"]||"A1");for(let r=n;r<=d.e.r;r++)for(let h=d.s.c;h<=d.e.c;h++){const p=b.utils.encode_cell({r,c:h}),f=e[p];if((f==null?void 0:f.s)!==void 0){const m=this.extractCellStyle(f,l,i,a);if(m&&this.hasNonDefaultStyle(m)){const g=r-n;o.set(`${g}-${h}`,m)}}}return o.size>0?o:void 0}static extractCellStyle(e,t,n,o){var d;const s={};let l=null,i,a;if(typeof e.s=="number")l=o[e.s],i=(l==null?void 0:l.fontId)??(l==null?void 0:l.fontid),a=(l==null?void 0:l.fillId)??(l==null?void 0:l.fillid);else if(typeof e.s=="object"&&(l=e.s,i=l.fontId??l.fontid,a=l.fillId??l.fillid,l.patternType==="solid")){if(l.fgColor&&Object.keys(l.fgColor).length>0){const r=C(l.fgColor);r&&(s.bgColor=r)}if(!s.bgColor&&((d=l.bgColor)==null?void 0:d.indexed)!==void 0){const r=C(l.bgColor);r&&(s.bgColor=r)}}return l&&(this.extractFontStyle(s,i,t),this.extractFillStyle(s,a,n)),s}static extractFontStyle(e,t,n){if(t!==void 0&&n[t]){const o=n[t];if(o.color){const s=C(o.color);s&&s!=="#000000"&&(e.fontColor=s)}o.bold&&(e.bold=!0),o.italic&&(e.italic=!0)}}static extractFillStyle(e,t,n){if(t!==void 0&&n[t]){const o=n[t];if(o.patternType==="solid"&&o.fgColor){const s=C(o.fgColor);s&&(e.bgColor=s)}}}static hasNonDefaultStyle(e){return!!(e.fontColor||e.bgColor||e.bold||e.italic)}}class U{static extractComments(e,t){const n=new Map;return this.collectComments(e).forEach(s=>{const l=b.utils.decode_cell(s.r),i=l.r-t,a=l.c;if(i>=0){const d=`${i}-${a}`,r=this.cleanCommentText(s.t,s.a);n.set(d,{text:r,author:s.a})}}),n.size>0?n:void 0}static collectComments(e){let t=[];return e["!comments"]&&(t=e["!comments"]),t.length===0&&(t=this.extractCommentsFromCells(e)),t}static extractCommentsFromCells(e){const t=[];return Object.keys(e).forEach(n=>{if(!n.startsWith("!")){const o=e[n];o!=null&&o.c&&Array.isArray(o.c)&&o.c.forEach(s=>{const l=s.t||(s.r&&typeof s.r=="string"?s.r:"");l&&t.push({r:n,t:l,a:s.a})})}}),t}static cleanCommentText(e,t){let n=e;return t&&n.startsWith(t+":")&&(n=n.substring(t.length+1).trim(),n.startsWith(`
2
3
  `)&&(n=n.substring(1))),n}}class K{static parseBuffer(e,t={}){const{sheetIndex:n=0,headerRow:o=0,headerRows:s,mergeHeaders:l=!0,extractStyles:i=!0,extractComments:a=!0}=t,d=b.read(e,{type:"array",cellStyles:!0,cellNF:!0}),r=d.SheetNames;if(n>=r.length)throw new Error(`Sheet index ${n} out of range. Available sheets: ${r.length}`);const h=d.Sheets[r[n]],p=b.utils.sheet_to_json(h,{header:1,defval:""});if(p.length===0)return{columns:[],records:[]};const{headerRows:f,dataStartRow:m,effectiveHeaderRows:g}=T.detectHeaderRows(p.slice(o),s),w=this.buildColumns(p,o,f,g,l),S=p.slice(o+m),E=i?q.extractStyles(h,d,o+m):void 0,A=a?U.extractComments(h,o+m):void 0;return{columns:w,records:S,cellStyles:E,cellComments:A}}static buildColumns(e,t,n,o,s){if(s&&n>1){const i=e.slice(t,t+n),a=Math.max(...i.map(r=>r.length));return T.mergeHeaders(o,a).map((r,h)=>({key:`col_${h}`,field:`col_${h}`,title:r,width:120,sort:!1,filter:!1}))}return(e[t]||[]).map((i,a)=>({key:`col_${a}`,field:`col_${a}`,title:String(i||`Column ${a+1}`),width:120,sort:!1,filter:!1}))}}class O{static exportToStream(e,t,n){const{filterEmptyColumns:o=!0}=n||{},s=o?this.filterEmptyColumns(e):e,l=s.map(h=>h.title||h.field||""),i=this.buildDataRows(t,e,s),a=[l,...i],d=b.utils.aoa_to_sheet(a),r=b.utils.book_new();return b.utils.book_append_sheet(r,d,"Sheet1"),b.write(r,{bookType:"xlsx",type:"array"})}static download(e,t="export"){const n=new Blob([e],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),o=URL.createObjectURL(n),s=document.createElement("a");s.href=o,s.download=`${t}.xlsx`,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(o)}static filterEmptyColumns(e){return e.filter(t=>{const n=t.title||t.field||"";return n&&typeof n=="string"&&n.trim()!==""})}static buildDataRows(e,t,n){return e.map(o=>Array.isArray(o)?n.map(s=>{const l=t.indexOf(s);if(l>=0&&l<o.length){const i=o[l];return this.extractCellValue(i)}return""}):n.map(s=>{const l=s.field||s.key,i=l?o[l]:void 0;return this.extractCellValue(i)}))}static extractCellValue(e){return e&&typeof e=="object"&&"value"in e?e.value:e}}async function N(c){const e=await fetch(c);if(!e.ok)throw new Error(`Failed to fetch Excel file: ${e.statusText}`);return e.arrayBuffer()}function v(c,e={}){return K.parseBuffer(c,e)}async function L(c,e={}){const t=await N(c);return v(t,e)}async function $(c,e={}){const t=await Y(c);return v(t,e)}function X(c,e,t){return O.exportToStream(c,e,t)}function W(c,e="export"){O.download(c,e)}function Y(c){return new Promise((e,t)=>{const n=new FileReader;n.onload=o=>{var l;const s=(l=o.target)==null?void 0:l.result;e(s)},n.onerror=()=>t(new Error("Failed to read file")),n.readAsArrayBuffer(c)})}class G{constructor(e,t){u(this,"customComponentContainers",new Map);u(this,"activeComponentKey",null);u(this,"justCreatedComponent",!1);u(this,"tableInstance",null);u(this,"container",null);u(this,"handleOutsideClick",e=>{if(this.justCreatedComponent||!this.activeComponentKey)return;const t=this.customComponentContainers.get(this.activeComponentKey);t&&!t.contains(e.target)&&this.closeActiveComponent()});this.tableInstance=e,this.container=t,this.bindOutsideClickHandler()}showComponent(e,t,n){var m;const{col:o,row:s}=n,l=this.tableInstance.getCellRect(o,s),i=this.tableInstance.getCellValue(o,s),a=(m=this.container)==null?void 0:m.getBoundingClientRect(),d=((a==null?void 0:a.left)||0)+l.left,r=((a==null?void 0:a.top)||0)+l.bottom,h=this.createComponentContainer(d,r,t),p={table:this.tableInstance,row:s,col:o,value:i,dataValue:n.dataValue,rect:l,setValue:g=>{this.tableInstance.changeCellValue(o,s,g),this.closeActiveComponent()},close:()=>{this.closeActiveComponent()}};try{const g=t.render(p);h.appendChild(g),document.body.appendChild(h)}catch(g){console.error("❌ 渲染组件时出错:",g);return}const f=`${e}-${o}-${s}`;this.customComponentContainers.set(f,h),this.activeComponentKey=f,t.onMount&&t.onMount(h,p),h.addEventListener("click",g=>{g.stopPropagation()}),this.justCreatedComponent=!0,setTimeout(()=>{this.justCreatedComponent=!1},100)}createComponentContainer(e,t,n){const o=document.createElement("div");return o.className="vtable-custom-component",o.style.position="fixed",o.style.zIndex="9999",o.style.left=`${e}px`,o.style.top=`${t}px`,o.style.backgroundColor="white",o.style.borderRadius="4px",o.style.boxShadow="0 2px 12px rgba(0, 0, 0, 0.15)",n.containerStyle&&Object.assign(o.style,n.containerStyle),o}closeActiveComponent(){if(!this.activeComponentKey)return;const e=this.customComponentContainers.get(this.activeComponentKey);e&&(e.remove(),this.customComponentContainers.delete(this.activeComponentKey)),this.activeComponentKey=null}bindOutsideClickHandler(){document.addEventListener("click",this.handleOutsideClick)}destroy(){this.closeActiveComponent(),this.customComponentContainers.clear(),document.removeEventListener("click",this.handleOutsideClick)}}class M{constructor(e,t){u(this,"markedMap",null);u(this,"tableInstance",null);this.tableInstance=e,this.markedMap=t||null}handleCellMouseEnter(e){const{col:t,row:n}=e,o=this.tableInstance.columnHeaderLevelCount||1,s=n-o,l=`${s}-${t}`;this.markedMap&&this.markedMap.has(l)&&s>=0&&this.showTooltip(t,n,l)}showTooltip(e,t,n){const o=this.tableInstance.getVisibleCellRangeRelativeRect({col:e,row:t}),s=this.markedMap.get(n),l=this.tableInstance.getCellValue(e,t);let i=`${l}`;if(s&&typeof s=="object"&&"comment"in s){const a=s.comment;a&&(i=`${l}: ${a}`)}this.tableInstance.showTooltip(e,t,{content:i,referencePosition:{rect:o,placement:"right"},className:"defineTooltip",disappearDelay:100,style:{bgColor:"black",color:"white",font:"normal bold normal 14px/1 STKaiti",arrowMark:!0,padding:[12]}})}getMarkedMap(){return this.markedMap}setMarkedMap(e){this.markedMap=e}}class J{static registerEditors(e){if(e){if(e.dateEditor!==!1){const t=new k.DateInputEditor(e.dateEditor||{});y.VTable.register.editor("dateEditor",t)}if(e.listEditor){const t=new k.ListEditor(e.listEditor||{values:["技术中心","财务部"]});y.VTable.register.editor("listEditor",t)}e.customEditors&&Object.entries(e.customEditors).forEach(([t,n])=>{y.VTable.register.editor(t,n)})}}}class Q{constructor(e,t,n){u(this,"tableInstance");u(this,"config");u(this,"customComponentManager",null);u(this,"cellMarkManager",null);this.config=e,this.tableInstance=e.tableInstance,this.customComponentManager=t,this.cellMarkManager=n}bindEvents(){this.tableInstance&&(this.tableInstance.on("click_cell",e=>{var t,n;this.handleCellClick(e),(n=(t=this.config).onCellClick)==null||n.call(t,e)}),this.config.onCellChange&&this.tableInstance.on("change_cell_value",this.config.onCellChange),this.tableInstance.on("mouseenter_cell",e=>{var t;(t=this.cellMarkManager)==null||t.handleCellMouseEnter(e)}))}handleCellClick(e){var i,a,d;const{col:t}=e,o=(this.config.columns||[])[t];if(!(o!=null&&o.customComponent))return;const s=o.customComponent,l=(i=this.config.customComponents)==null?void 0:i[s];l!=null&&l.showOnClick&&((a=this.customComponentManager)==null||a.closeActiveComponent(),(d=this.customComponentManager)==null||d.showComponent(s,l,e))}on(e,t){var n;(n=this.tableInstance)==null||n.on(e,t)}off(e,t){var n;(n=this.tableInstance)==null||n.off(e,t)}}class F{constructor(e,t){u(this,"sheetInstance",null);u(this,"tableInstance",null);u(this,"container",null);u(this,"config");u(this,"customComponentManager",null);u(this,"cellMarkManager",null);u(this,"eventManager",null);this.config=e,this.cellMarkManager=new M(null,t||void 0),this.init()}init(){if(this.container=this.getContainer(this.config.container),!this.container)throw new Error("Container not found");J.registerEditors(this.config.editors),this.createSheet()}getContainer(e){return typeof e=="string"?document.getElementById(e)||document.querySelector(e):e}createSheet(){var i,a;const{columns:e=[],records:t=[],showFormulaBar:n=!0,showSheetTab:o=!0,sheets:s,options:l}=this.config;this.sheetInstance=new y.VTableSheet(this.container,{showFormulaBar:n,showSheetTab:o,sheets:s||[{sheetKey:"sheet1",sheetTitle:"Sheet1",dragOrder:{dragHeaderMode:"all"},columns:e,data:t}],tooltip:{isShowOverflowTextTooltip:!0},...l}),this.tableInstance=(i=this.sheetInstance.getActiveSheet())==null?void 0:i.tableInstance,this.customComponentManager=new G(this.tableInstance,this.container),this.cellMarkManager=new M(this.tableInstance,((a=this.cellMarkManager)==null?void 0:a.getMarkedMap())||void 0),this.eventManager=new Q({tableInstance:this.tableInstance,columns:this.config.columns,customComponents:this.config.customComponents,onCellClick:this.config.onCellClick,onCellChange:this.config.onCellChange},this.customComponentManager,this.cellMarkManager),this.eventManager.bindEvents()}changeCellValue(e,t,n){this.tableInstance&&this.tableInstance.changeCellValue(e,t,n)}getCellValue(e,t){var n;return(n=this.tableInstance)==null?void 0:n.getCellValue(e,t)}getSelectedCells(){var e;return(e=this.tableInstance)==null?void 0:e.getSelectedCellInfos()}updateData(e){var n;console.log("updateData 调用:",e.length,"条记录");const t=(n=this.sheetInstance)==null?void 0:n.getActiveSheet();if(t)if(typeof t.updateRecords=="function")console.log("使用 updateRecords 方法"),t.updateRecords(e);else if(typeof t.setData=="function")console.log("使用 setData 方法"),t.setData(e);else if(this.tableInstance)if(typeof this.tableInstance.updateOption=="function"){console.log("使用 tableInstance.updateOption 方法");const o=this.tableInstance.option||{};this.tableInstance.updateOption({...o,records:e})}else console.warn("无法更新数据:找不到合适的方法");else console.warn("无法更新数据:找不到合适的方法");else console.warn("无法获取活动工作表")}updateColumns(e){var n;console.log("updateColumns 调用:",e.length,"列");const t=(n=this.sheetInstance)==null?void 0:n.getActiveSheet();if(t)if(typeof t.updateColumns=="function")console.log("使用 activeSheet.updateColumns 方法"),t.updateColumns(e);else if(typeof t.setColumns=="function")console.log("使用 setColumns 方法"),t.setColumns(e);else if(this.tableInstance)if(typeof this.tableInstance.updateOption=="function"){console.log("使用 tableInstance.updateOption 方法更新列");const o=this.tableInstance.option||{};this.tableInstance.updateOption({...o,columns:e})}else console.warn("无法更新列配置:找不到合适的方法");else console.warn("无法更新列配置:找不到合适的方法");else console.warn("无法获取活动工作表")}addRow(e,t){var o;const n=(o=this.sheetInstance)==null?void 0:o.getActiveSheet();n&&n.addRecord(e,t)}deleteRow(e){var n;const t=(n=this.sheetInstance)==null?void 0:n.getActiveSheet();t&&t.deleteRecord(e)}exportData(e="csv"){var t,n;return(n=(t=this.sheetInstance)==null?void 0:t.exportData)==null?void 0:n.call(t,e)}switchSheet(e){var t,n;(t=this.sheetInstance)==null||t.switchSheet(e),this.tableInstance=(n=this.sheetInstance.getActiveSheet())==null?void 0:n.tableInstance}getActiveSheet(){var e;return(e=this.sheetInstance)==null?void 0:e.getActiveSheet()}getAllSheets(){var e;return(e=this.sheetInstance)==null?void 0:e.getAllSheets()}refresh(){if(this.tableInstance&&this.tableInstance.option)try{this.tableInstance.updateOption(this.tableInstance.option)}catch(e){console.warn("刷新表格失败:",e);const t=this.tableInstance.container;t&&(t.style.display="none",setTimeout(()=>{t.style.display=""},0))}}getSheetInstance(){return this.sheetInstance}getTableInstance(){return this.tableInstance}setColumnCustomRender(e,t){var o;const n=(o=this.sheetInstance)==null?void 0:o.getActiveSheet();if(n){const s=n.columns||[],l=s.find(i=>i.field===e);l&&(l.customRender=t,n.updateColumns(s))}}getMarkedMap(){var e;return((e=this.cellMarkManager)==null?void 0:e.getMarkedMap())||null}on(e,t){var n;(n=this.eventManager)==null||n.on(e,t)}off(e,t){var n;(n=this.eventManager)==null||n.off(e,t)}destroy(){var e,t,n;(e=this.customComponentManager)==null||e.destroy(),this.customComponentManager=null,this.cellMarkManager=null,this.eventManager=null,this.sheetInstance&&((n=(t=this.sheetInstance).destroy)==null||n.call(t),this.sheetInstance=null,this.tableInstance=null)}}class Z{constructor(e={}){u(this,"dialog",null);u(this,"tableInstance",null);u(this,"elements",{});u(this,"state",{findText:"",replaceText:"",matches:[],currentIndex:0});u(this,"options");this.options=e,this.tableInstance=e.tableInstance,this.init()}init(){this.createDialog(),this.bindEvents(),this.injectStyles()}createDialog(){this.dialog=document.createElement("div"),this.dialog.className="find-replace-dialog",this.dialog.style.display="none",this.dialog.innerHTML=`
3
4
  <div class="find-replace-container">
@@ -1,3 +1,4 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('@charset "UTF-8";:root{--sl-color-white: #ffffff;--sl-color-black: #000000;--sl-color-primary-rgb: 40, 120, 255;--sl-color-success-rgb: 0, 180, 42;--sl-color-warning-rgb: 255, 105, 0;--sl-color-danger-rgb: 255, 77, 80;--sl-color-error-rgb: 255, 77, 80;--sl-color-info-rgb: 136, 141, 154;--sl-font-size-extra-large: 20px;--sl-font-size-large: 18px;--sl-font-size-medium: 16px;--sl-font-size-base: 14px;--sl-font-size-small: 13px;--sl-font-size-extra-small: 12px;--sl-font-size-extra-smaller: 11px;--sl-font-size-last-small: 10px;--sl-font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, "Hiragino Sans GB", "微软雅黑", Arial, sans-serif;--sl-font-weight-primary: 400;--sl-font-weight-500: 500;--sl-font-line-height-primary: 24px;--sl-index-normal: 1;--sl-index-top: 1000;--sl-index-popper: 2000;--sl-border-radius-base: 4px;--sl-border-radius-small: 2px;--sl-border-radius-round: 20px;--sl-border-radius-circle: 100%;--sl-transition-duration: .3s;--sl-transition-duration-fast: .2s;--sl-transition-function-ease-in-out-bezier: cubic-bezier(.645, .045, .355, 1);--sl-transition-function-fast-bezier: cubic-bezier(.23, 1, .32, 1);--sl-transition-all: all var(--sl-transition-duration) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-fade: opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-md-fade: transform var(--sl-transition-duration) var(--sl-transition-function-fast-bezier), opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-fade-linear: opacity var(--sl-transition-duration-fast) linear;--sl-transition-border: border-color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-box-shadow: box-shadow var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-color: color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-component-size-large: 40px;--sl-component-size: 32px;--sl-component-size-small: 24px;color-scheme:light;--sl-color-primary: #2878ff;--sl-color-primary-light-3: #5594ff;--sl-color-primary-light-5: #9FC3FF;--sl-color-primary-light-7: #bfd7ff;--sl-color-primary-light-8: #d4e4ff;--sl-color-primary-light-9: #E8F3FF;--sl-color-primary-dark-2: #0A59DF;--sl-color-success: #00B42A;--sl-color-success-light-3: rgb(77, 203, 106);--sl-color-success-light-5: rgb(128, 218, 149);--sl-color-success-light-7: rgb(179, 233, 191);--sl-color-success-light-8: rgb(204, 240, 212);--sl-color-success-light-9: #E8FFEA;--sl-color-success-dark-2: rgb(0, 144, 34);--sl-color-warning: #FF6900;--sl-color-warning-light-3: rgb(255, 150, 77);--sl-color-warning-light-5: rgb(255, 180, 128);--sl-color-warning-light-7: rgb(255, 210, 179);--sl-color-warning-light-8: rgb(255, 225, 204);--sl-color-warning-light-9: #FFF3E4;--sl-color-warning-dark-2: rgb(204, 84, 0);--sl-color-danger: #FF4D50;--sl-color-danger-light-3: rgb(255, 130, 133);--sl-color-danger-light-5: rgb(255, 166, 168);--sl-color-danger-light-7: rgb(255, 202, 203);--sl-color-danger-light-8: rgb(255, 219, 220);--sl-color-danger-light-9: #FFEBEB;--sl-color-danger-dark-2: rgb(204, 62, 64);--sl-color-error: #FF4D50;--sl-color-error-light-3: rgb(255, 130, 133);--sl-color-error-light-5: rgb(255, 166, 168);--sl-color-error-light-7: rgb(255, 202, 203);--sl-color-error-light-8: rgb(255, 219, 220);--sl-color-error-light-9: rgb(255, 237, 238);--sl-color-error-dark-2: rgb(204, 62, 64);--sl-color-info: #888d9a;--sl-color-info-light-3: #b1b3b8;--sl-color-info-light-5: #c8c9cc;--sl-color-info-light-7: #dedfe0;--sl-color-info-light-8: #e9e9eb;--sl-color-info-light-9: #f4f5f6;--sl-color-info-dark-2: rgb(109, 113, 123);--sl-color-rest: #955609;--sl-color-rest-light-1: #ffeac9;--sl-color-success-light-4: #23C343;--sl-color-success-light-6: #7BE188;--sl-color-warning-light-4: #FD7E14;--sl-color-warning-light-6: #FFC078;--sl-color-danger-light-4: #FC7274;--sl-color-danger-light-6: #FFB9BA;--sl-bg-color: #ffffff;--sl-bg-color-page: #f2f3f5;--sl-bg-color-overlay: #ffffff;--sl-bg-color-rest: rgba(253, 192, 45, .03);--sl-bg-color-container: #f2f4f6;--sl-text-color: #1D2129;--sl-text-color-primary: #1D2129;--sl-text-color-regular: #1D2129;--sl-text-color-secondary: #4E5969;--sl-text-color-thridary: #86909C;--sl-text-color-four: #C9CDD4;--sl-text-color-fifth: #FFFFFF;--sl-text-color-placeholder: #86909C;--sl-text-color-disabled: #C9CDD4;--sl-text-color-icon: #afb1b4;--sl-border-color: #E5E6EB;--sl-border-color-light: #F2F3F5;--sl-border-color-dark: #C9CDD4;--sl-border-color-darker: #86909C;--sl-border-color-checkbox: #C9CDD4;--sl-border-color-switch: #C9CDD4;--sl-fill-color: #F2F3F5;--sl-fill-color-light: #F7F8FA;--sl-fill-color-dark: #E5E6EB;--sl-fill-color-darker: #C9CDD4;--sl-fill-color-extra-darker: #4E5969;--sl-fill-color-blank: #ffffff;--sl-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .04), 0px 8px 20px rgba(0, 0, 0, .08);--sl-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .12);--sl-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .12);--sl-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .08), 0px 12px 32px rgba(0, 0, 0, .12), 0px 8px 16px -8px rgba(0, 0, 0, .16);--sl-disabled-bg-color: var(--sl-fill-color-light);--sl-disabled-text-color: var(--sl-text-color-thridary);--sl-disabled-border-color: var(--sl-border-color-dark);--sl-overlay-color: rgba(0, 0, 0, .8);--sl-overlay-color-light: rgba(0, 0, 0, .7);--sl-overlay-color-lighter: rgba(0, 0, 0, .5);--sl-mask-color: rgba(255, 255, 255, .9);--sl-mask-color-extra-light: rgba(255, 255, 255, .3);--sl-border-width: 1px;--sl-border-style: solid;--sl-border-color-hover: var(--sl-text-color-disabled);--sl-border: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color);--sl-checkbox-input-border-custom: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color-checkbox);--sl-svg-monochrome-grey: var(--sl-border-color);--sl-form-item-tooltip-width: 240px }:root{--sl-vtable-primary-color: #2878FF;--sl-vtable-card-bg-color:#f6f6f6;--sl-vtable-content-color:#1D2129;--sl-vtable-bg-color1:#ECECEC;--sl-error-color:#FF4D50;--sl-btn-bg-color-gray:#ECECEC}')),document.head.appendChild(r)}}catch(l){console.error("vite-plugin-css-injected-by-js",l)}})();
1
2
  var O = Object.defineProperty;
2
3
  var L = (c, e, t) => e in c ? O(c, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[e] = t;
3
4
  var u = (c, e, t) => L(c, typeof e != "symbol" ? e + "" : e, t);
package/style.css DELETED
@@ -1 +0,0 @@
1
- @charset "UTF-8";:root{--sl-color-white: #ffffff;--sl-color-black: #000000;--sl-color-primary-rgb: 40, 120, 255;--sl-color-success-rgb: 0, 180, 42;--sl-color-warning-rgb: 255, 105, 0;--sl-color-danger-rgb: 255, 77, 80;--sl-color-error-rgb: 255, 77, 80;--sl-color-info-rgb: 136, 141, 154;--sl-font-size-extra-large: 20px;--sl-font-size-large: 18px;--sl-font-size-medium: 16px;--sl-font-size-base: 14px;--sl-font-size-small: 13px;--sl-font-size-extra-small: 12px;--sl-font-size-extra-smaller: 11px;--sl-font-size-last-small: 10px;--sl-font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Helvetica, "Hiragino Sans GB", "微软雅黑", Arial, sans-serif;--sl-font-weight-primary: 400;--sl-font-weight-500: 500;--sl-font-line-height-primary: 24px;--sl-index-normal: 1;--sl-index-top: 1000;--sl-index-popper: 2000;--sl-border-radius-base: 4px;--sl-border-radius-small: 2px;--sl-border-radius-round: 20px;--sl-border-radius-circle: 100%;--sl-transition-duration: .3s;--sl-transition-duration-fast: .2s;--sl-transition-function-ease-in-out-bezier: cubic-bezier(.645, .045, .355, 1);--sl-transition-function-fast-bezier: cubic-bezier(.23, 1, .32, 1);--sl-transition-all: all var(--sl-transition-duration) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-fade: opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-md-fade: transform var(--sl-transition-duration) var(--sl-transition-function-fast-bezier), opacity var(--sl-transition-duration) var(--sl-transition-function-fast-bezier);--sl-transition-fade-linear: opacity var(--sl-transition-duration-fast) linear;--sl-transition-border: border-color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-box-shadow: box-shadow var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-transition-color: color var(--sl-transition-duration-fast) var(--sl-transition-function-ease-in-out-bezier);--sl-component-size-large: 40px;--sl-component-size: 32px;--sl-component-size-small: 24px;color-scheme:light;--sl-color-primary: #2878ff;--sl-color-primary-light-3: #5594ff;--sl-color-primary-light-5: #9FC3FF;--sl-color-primary-light-7: #bfd7ff;--sl-color-primary-light-8: #d4e4ff;--sl-color-primary-light-9: #E8F3FF;--sl-color-primary-dark-2: #0A59DF;--sl-color-success: #00B42A;--sl-color-success-light-3: rgb(77, 203, 106);--sl-color-success-light-5: rgb(128, 218, 149);--sl-color-success-light-7: rgb(179, 233, 191);--sl-color-success-light-8: rgb(204, 240, 212);--sl-color-success-light-9: #E8FFEA;--sl-color-success-dark-2: rgb(0, 144, 34);--sl-color-warning: #FF6900;--sl-color-warning-light-3: rgb(255, 150, 77);--sl-color-warning-light-5: rgb(255, 180, 128);--sl-color-warning-light-7: rgb(255, 210, 179);--sl-color-warning-light-8: rgb(255, 225, 204);--sl-color-warning-light-9: #FFF3E4;--sl-color-warning-dark-2: rgb(204, 84, 0);--sl-color-danger: #FF4D50;--sl-color-danger-light-3: rgb(255, 130, 133);--sl-color-danger-light-5: rgb(255, 166, 168);--sl-color-danger-light-7: rgb(255, 202, 203);--sl-color-danger-light-8: rgb(255, 219, 220);--sl-color-danger-light-9: #FFEBEB;--sl-color-danger-dark-2: rgb(204, 62, 64);--sl-color-error: #FF4D50;--sl-color-error-light-3: rgb(255, 130, 133);--sl-color-error-light-5: rgb(255, 166, 168);--sl-color-error-light-7: rgb(255, 202, 203);--sl-color-error-light-8: rgb(255, 219, 220);--sl-color-error-light-9: rgb(255, 237, 238);--sl-color-error-dark-2: rgb(204, 62, 64);--sl-color-info: #888d9a;--sl-color-info-light-3: #b1b3b8;--sl-color-info-light-5: #c8c9cc;--sl-color-info-light-7: #dedfe0;--sl-color-info-light-8: #e9e9eb;--sl-color-info-light-9: #f4f5f6;--sl-color-info-dark-2: rgb(109, 113, 123);--sl-color-rest: #955609;--sl-color-rest-light-1: #ffeac9;--sl-color-success-light-4: #23C343;--sl-color-success-light-6: #7BE188;--sl-color-warning-light-4: #FD7E14;--sl-color-warning-light-6: #FFC078;--sl-color-danger-light-4: #FC7274;--sl-color-danger-light-6: #FFB9BA;--sl-bg-color: #ffffff;--sl-bg-color-page: #f2f3f5;--sl-bg-color-overlay: #ffffff;--sl-bg-color-rest: rgba(253, 192, 45, .03);--sl-bg-color-container: #f2f4f6;--sl-text-color: #1D2129;--sl-text-color-primary: #1D2129;--sl-text-color-regular: #1D2129;--sl-text-color-secondary: #4E5969;--sl-text-color-thridary: #86909C;--sl-text-color-four: #C9CDD4;--sl-text-color-fifth: #FFFFFF;--sl-text-color-placeholder: #86909C;--sl-text-color-disabled: #C9CDD4;--sl-text-color-icon: #afb1b4;--sl-border-color: #E5E6EB;--sl-border-color-light: #F2F3F5;--sl-border-color-dark: #C9CDD4;--sl-border-color-darker: #86909C;--sl-border-color-checkbox: #C9CDD4;--sl-border-color-switch: #C9CDD4;--sl-fill-color: #F2F3F5;--sl-fill-color-light: #F7F8FA;--sl-fill-color-dark: #E5E6EB;--sl-fill-color-darker: #C9CDD4;--sl-fill-color-extra-darker: #4E5969;--sl-fill-color-blank: #ffffff;--sl-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .04), 0px 8px 20px rgba(0, 0, 0, .08);--sl-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .12);--sl-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .12);--sl-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .08), 0px 12px 32px rgba(0, 0, 0, .12), 0px 8px 16px -8px rgba(0, 0, 0, .16);--sl-disabled-bg-color: var(--sl-fill-color-light);--sl-disabled-text-color: var(--sl-text-color-thridary);--sl-disabled-border-color: var(--sl-border-color-dark);--sl-overlay-color: rgba(0, 0, 0, .8);--sl-overlay-color-light: rgba(0, 0, 0, .7);--sl-overlay-color-lighter: rgba(0, 0, 0, .5);--sl-mask-color: rgba(255, 255, 255, .9);--sl-mask-color-extra-light: rgba(255, 255, 255, .3);--sl-border-width: 1px;--sl-border-style: solid;--sl-border-color-hover: var(--sl-text-color-disabled);--sl-border: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color);--sl-checkbox-input-border-custom: var(--sl-border-width) var(--sl-border-style) var(--sl-border-color-checkbox);--sl-svg-monochrome-grey: var(--sl-border-color);--sl-form-item-tooltip-width: 240px }:root{--sl-vtable-primary-color: #2878FF;--sl-vtable-card-bg-color:#f6f6f6;--sl-vtable-content-color:#1D2129;--sl-vtable-bg-color1:#ECECEC;--sl-error-color:#FF4D50;--sl-btn-bg-color-gray:#ECECEC}