ooxml-excel-editor 1.1.0 → 1.2.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +148 -4
  3. package/dist/chunks/plugin-overlay-BBrNby8v.js +8965 -0
  4. package/dist/chunks/worker-client.stub-CJlmpAgJ.js +190 -0
  5. package/dist/components/ExcelViewer.vue.d.ts +170 -19
  6. package/dist/components/ExportProgressOverlay.vue.d.ts +11 -0
  7. package/dist/components/FilterPopup.vue.d.ts +4 -4
  8. package/dist/components/ViewerToolbar.vue.d.ts +2 -0
  9. package/dist/composables/useExcelDocument.d.ts +1 -0
  10. package/dist/core/edit/clipboard-html.d.ts +24 -0
  11. package/dist/core/edit/commands.d.ts +45 -1
  12. package/dist/core/edit/context-menu.d.ts +19 -0
  13. package/dist/core/edit/edit-controller.d.ts +70 -2
  14. package/dist/core/edit/permissions.d.ts +41 -2
  15. package/dist/core/edit/types.d.ts +62 -0
  16. package/dist/core/export/abort.d.ts +21 -0
  17. package/dist/core/export/exporter.d.ts +2 -1
  18. package/dist/core/export/types.d.ts +8 -0
  19. package/dist/core/export/wps-cellimages.d.ts +6 -0
  20. package/dist/core/export/xlsx-writer.d.ts +9 -0
  21. package/dist/core/format/color.d.ts +5 -0
  22. package/dist/core/format/number-format.d.ts +3 -0
  23. package/dist/core/layout/autofit.d.ts +3 -0
  24. package/dist/core/layout/grid-metrics.d.ts +14 -2
  25. package/dist/core/loader-json.d.ts +23 -0
  26. package/dist/core/model/clone.d.ts +3 -4
  27. package/dist/core/model/inspect.d.ts +43 -0
  28. package/dist/core/model/mutations.d.ts +16 -1
  29. package/dist/core/model/types.d.ts +44 -2
  30. package/dist/core/parser/cell-image-parser.d.ts +9 -0
  31. package/dist/core/parser/row-meta-parser.d.ts +3 -0
  32. package/dist/core/plugin.d.ts +144 -6
  33. package/dist/core/progress.d.ts +23 -0
  34. package/dist/core/render/canvas-renderer.d.ts +56 -2
  35. package/dist/core/render/conditional.d.ts +7 -0
  36. package/dist/core/template/style-overlay.d.ts +9 -0
  37. package/dist/core/viewer/controller.d.ts +209 -6
  38. package/dist/core/viewer/lightbox-host.d.ts +16 -0
  39. package/dist/core.js +1 -1
  40. package/dist/index.js +1169 -821
  41. package/dist/react/ExcelViewer.d.ts +134 -3
  42. package/dist/react/ExportProgressOverlay.d.ts +6 -0
  43. package/dist/react/use-excel-document.d.ts +2 -0
  44. package/dist/react.js +718 -281
  45. package/dist/style.css +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunks/plugin-overlay-Cfnn9EOi.js +0 -7144
  48. package/dist/chunks/worker-client.stub-BQVZfaLd.js +0 -7
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .rxl{display:flex;flex-direction:column;height:100%;width:100%;background:#fff;overflow:hidden}.rxl-toolbar{display:flex;align-items:center;gap:4px;flex:0 0 auto;height:34px;padding:0 8px;border-bottom:1px solid #e2e4e7;background:#fafafa}.rxl-toolbar button{height:24px;padding:0 10px;border:1px solid transparent;border-radius:4px;background:transparent;color:#333;font-size:13px;cursor:pointer}.rxl-toolbar button:hover:not(:disabled){background:#eceef0}.rxl-toolbar button.active{background:#d6e9d9;border-color:#21a366;color:#1b7a4d}.rxl-toolbar button:disabled{color:#bbb;cursor:default}.rxl-formula-bar{display:flex;align-items:center;height:28px;flex:0 0 auto;border-bottom:1px solid #e2e4e7;background:#fff;font-size:13px}.rxl-formula-bar .addr{width:72px;text-align:center;border-right:1px solid #e2e4e7;color:#444;font-weight:600;flex:0 0 auto}.rxl-formula-bar .fx{width:34px;text-align:center;color:#999;font-style:italic;flex:0 0 auto}.rxl-formula-bar .content{flex:1;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222;font-family:Consolas,Courier New,monospace}.rxl-render-area{position:relative;flex:1 1 auto;overflow:hidden;min-height:0}.rxl-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.rxl-ov{position:absolute;z-index:2;overflow:hidden;pointer-events:none}.rxl-scroller{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:auto;cursor:cell;outline:none}.rxl-spacer{pointer-events:none}.rxl-ov-slot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;overflow:hidden;pointer-events:none}.rxl-ov-slot>div>*{pointer-events:auto}.rxl-editor-slot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;overflow:hidden;pointer-events:none}.rxl-editor-slot>*{pointer-events:auto}.rxl-tooltip{position:absolute;z-index:6;max-width:380px;padding:5px 9px;background:#2b2f33;color:#fff;font-size:12px;line-height:1.4;border-radius:4px;box-shadow:0 2px 8px #00000040;pointer-events:none;white-space:pre-wrap;word-break:break-all}.rxl-tooltip.comment{background:#fdfcdc;color:#333;border:1px solid #d9d27e;max-width:300px}.rxl-findbar{position:absolute;top:8px;right:16px;z-index:7;display:flex;align-items:center;gap:6px;padding:6px 8px;background:#fff;border:1px solid #d0d3d6;border-radius:6px;box-shadow:0 2px 10px #00000026}.rxl-findbar input{height:24px;border:1px solid #d0d3d6;border-radius:4px;padding:0 6px;font-size:13px}.rxl-findbar .count{font-size:12px;color:#888;min-width:46px;text-align:center}.rxl-filterpop{position:absolute;z-index:8;width:220px;max-height:300px;display:flex;flex-direction:column;background:#fff;border:1px solid #c8ccd0;border-radius:6px;box-shadow:0 4px 16px #0000002e;font-size:13px}.rxl-filterpop .sort{display:flex;gap:6px;padding:8px 8px 0}.rxl-filterpop .sort button{flex:1;height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;cursor:pointer;font-size:12px}.rxl-filterpop .sort button.on{background:#d6e9d9;border-color:#21a366;color:#1b7a4d;font-weight:600}.rxl-filterpop .list{overflow:auto;padding:6px 8px}.rxl-filterpop label{display:flex;align-items:center;gap:6px;padding:2px 0}.rxl-filterpop .foot{display:flex;gap:8px;justify-content:flex-end;padding:6px 8px;border-top:1px solid #eceef0}.rxl-status-bar{display:flex;align-items:center;gap:16px;height:24px;flex:0 0 auto;padding:0 12px;border-top:1px solid #e2e4e7;background:#fbfbfb;font-size:12px;color:#555}.rxl-status-bar .grow{flex:1}.rxl-tabs{display:flex;align-items:center;gap:2px;height:30px;flex:0 0 auto;padding:0 8px;border-top:1px solid #e2e4e7;background:#f3f4f6;overflow-x:auto}.rxl-tabs button{height:24px;padding:0 12px;border:1px solid transparent;border-bottom:none;border-radius:4px 4px 0 0;background:transparent;font-size:13px;cursor:pointer;white-space:nowrap}.rxl-tabs button.active{background:#fff;border-color:#d6d8da;font-weight:600}.rxl-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:5;background:#fff;color:#888;font-size:14px}.rxl-state.error{color:#c0392b}.toolbar[data-v-0495df21]{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;background:#fbfbfb;border-bottom:1px solid #e2e4e7;font-size:13px;color:#444;flex:0 0 auto}.file[data-v-0495df21]{font-weight:600;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[data-v-0495df21]{color:#888}.spacer[data-v-0495df21]{flex:1}.export-wrap[data-v-0495df21]{position:relative}.export-btn[data-v-0495df21]{height:24px;padding:0 10px;border:1px solid #d0d3d6;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#444;display:flex;align-items:center;gap:4px}.export-btn[data-v-0495df21]:hover{background:#f0f2f4}.export-btn .caret[data-v-0495df21]{font-size:10px;color:#888}.menu[data-v-0495df21]{position:absolute;right:0;top:28px;z-index:20;min-width:160px;background:#fff;border:1px solid #d8dbde;border-radius:6px;box-shadow:0 4px 16px #00000024;padding:4px;display:flex;flex-direction:column}.menu button[data-v-0495df21]{text-align:left;padding:7px 10px;border:none;background:none;border-radius:4px;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.menu button[data-v-0495df21]:hover{background:#f0f4ff}.menu .sep[data-v-0495df21]{height:1px;background:#eef0f2;margin:4px 2px}.zoom[data-v-0495df21]{display:flex;align-items:center;gap:4px}.zoom button[data-v-0495df21]{width:24px;height:24px;border:1px solid #d0d3d6;background:#fff;border-radius:4px;cursor:pointer;font-size:15px;line-height:1}.zoom button[data-v-0495df21]:hover{background:#f0f2f4}.zoom select[data-v-0495df21]{height:24px;border:1px solid #d0d3d6;border-radius:4px;background:#fff}.sheet-tabs[data-v-431b6f9c]{display:flex;align-items:stretch;height:30px;background:#f3f4f6;border-top:1px solid #d8dadd;overflow-x:auto;flex:0 0 auto}.tab[data-v-431b6f9c]{border:none;background:transparent;border-right:1px solid #e0e2e5;padding:0 16px;font-size:12.5px;color:#555;cursor:pointer;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}.tab[data-v-431b6f9c]:hover{background:#e9ebee}.tab.active[data-v-431b6f9c]{background:#fff;color:#166534;font-weight:600;box-shadow:inset 0 2px #21a366}.dlg-mask[data-v-544df24f]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;background:#00000052;display:flex;align-items:center;justify-content:center}.dlg[data-v-544df24f]{width:420px;max-width:92%;background:#fff;border-radius:10px;box-shadow:0 12px 40px #00000040;font-size:13px;color:#333;overflow:hidden}.dlg-head[data-v-544df24f]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-weight:600;border-bottom:1px solid #eef0f2}.dlg-head .x[data-v-544df24f]{border:none;background:none;font-size:20px;line-height:1;cursor:pointer;color:#999}.dlg-head .x[data-v-544df24f]:hover{color:#444}.dlg-body[data-v-544df24f]{padding:8px 16px 4px}.field[data-v-544df24f]{display:flex;align-items:flex-start;gap:12px;padding:9px 0;border-bottom:1px solid #f4f5f6}.field[data-v-544df24f]:last-child{border-bottom:none}.lbl[data-v-544df24f]{width:72px;flex:0 0 auto;color:#666;padding-top:3px}.opts[data-v-544df24f]{display:flex;flex-direction:column;gap:6px}.opts.inline[data-v-544df24f]{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px}.opts label[data-v-544df24f]{display:inline-flex;align-items:center;gap:5px;cursor:pointer}.opts label.disabled[data-v-544df24f]{color:#bbb;cursor:not-allowed}.hint[data-v-544df24f]{color:#99a;font-size:12px}select[data-v-544df24f]{height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;padding:0 6px}.dlg-foot[data-v-544df24f]{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid #eef0f2;background:#fafbfc}.dlg-foot .grow[data-v-544df24f]{flex:1}.dlg-foot button[data-v-544df24f]{height:30px;padding:0 14px;border:1px solid #d0d3d6;border-radius:5px;background:#fff;cursor:pointer;font-size:13px;color:#333}.dlg-foot button[data-v-544df24f]:hover{background:#f0f2f4}.dlg-foot button.ghost[data-v-544df24f]{border-color:transparent;color:#888}.dlg-foot button.primary[data-v-544df24f]{background:#21a366;border-color:#21a366;color:#fff}.dlg-foot button.primary[data-v-544df24f]:hover{background:#1c8f59}.find-bar[data-v-36abc020]{position:absolute;top:8px;right:16px;z-index:12;display:flex;align-items:center;gap:4px;padding:5px 7px;background:#fff;border:1px solid #d4d7da;border-radius:7px;box-shadow:0 3px 12px #00000029;font-size:13px}.q[data-v-36abc020]{width:160px;height:26px;border:1px solid #d0d3d6;border-radius:4px;padding:0 8px;outline:none}.q[data-v-36abc020]:focus{border-color:#1a73e8}.count[data-v-36abc020]{min-width:46px;text-align:center;color:#888;font-variant-numeric:tabular-nums}.count.none[data-v-36abc020]{color:#d23}.opt[data-v-36abc020],.nav[data-v-36abc020],.close[data-v-36abc020]{height:24px;min-width:24px;border:1px solid transparent;background:none;border-radius:4px;cursor:pointer;color:#555;font-size:13px;line-height:1}.opt.on[data-v-36abc020]{background:#e8f0fe;color:#1a73e8;border-color:#c5d9fb}.opt[data-v-36abc020]:hover,.nav[data-v-36abc020]:hover:not(:disabled),.close[data-v-36abc020]:hover{background:#f0f2f4}.nav[data-v-36abc020]:disabled{color:#ccc;cursor:default}.close[data-v-36abc020]{font-size:18px;color:#999}.filter-pop[data-v-4b0bc283]{position:absolute;z-index:14;width:220px;background:#fff;border:1px solid #cfd3d7;border-radius:7px;box-shadow:0 6px 22px #0003;padding:8px;font-size:13px;display:flex;flex-direction:column;gap:6px}.sort[data-v-4b0bc283]{display:flex;gap:6px}.sort button[data-v-4b0bc283]{flex:1;height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:#444}.sort button[data-v-4b0bc283]:hover{background:#f0f2f4}.sort button.on[data-v-4b0bc283]{background:#d6e9d9;border-color:#21a366;color:#1b7a4d;font-weight:600}.search[data-v-4b0bc283]{height:26px;border:1px solid #d0d3d6;border-radius:4px;padding:0 8px;outline:none}.search[data-v-4b0bc283]:focus{border-color:#1a73e8}.all[data-v-4b0bc283]{display:flex;align-items:center;gap:6px;padding:2px;color:#444;font-weight:600;cursor:pointer}.list[data-v-4b0bc283]{max-height:220px;overflow:auto;border:1px solid #eceef0;border-radius:4px;padding:2px}.row[data-v-4b0bc283]{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:3px;cursor:pointer}.row[data-v-4b0bc283]:hover{background:#f3f6fb}.val[data-v-4b0bc283]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty[data-v-4b0bc283]{color:#aaa;text-align:center;padding:10px}.foot[data-v-4b0bc283]{display:flex;align-items:center;gap:6px}.foot .grow[data-v-4b0bc283]{flex:1}.foot button[data-v-4b0bc283]{height:27px;padding:0 12px;border:1px solid #d0d3d6;border-radius:5px;background:#fff;cursor:pointer;font-size:13px}.foot button[data-v-4b0bc283]:hover{background:#f0f2f4}.foot button.primary[data-v-4b0bc283]{background:#21a366;border-color:#21a366;color:#fff}.foot button.primary[data-v-4b0bc283]:hover{background:#1c8f59}.foot button.link[data-v-4b0bc283]{border-color:transparent;color:#1a73e8;padding:0 4px}.tb-menu[data-v-322e2c67]{position:absolute;top:30px;left:0;z-index:20;min-width:160px;background:#fff;border:1px solid #d8dbde;border-radius:6px;box-shadow:0 4px 16px #00000024;padding:4px;display:flex;flex-direction:column}.mi[data-v-322e2c67]{display:flex;align-items:center;gap:8px;text-align:left;padding:7px 10px;border:none;background:none;border-radius:4px;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.mi[data-v-322e2c67]:hover:not(:disabled){background:#f0f4ff}.mi[data-v-322e2c67]:disabled{color:#bbb;cursor:default}.mi.active[data-v-322e2c67]{color:#1a73e8}.mi .ic[data-v-322e2c67]{display:inline-flex;width:16px}.mi .ic-e[data-v-322e2c67]{width:16px;text-align:center}.sep[data-v-322e2c67]{height:1px;background:#eef0f2;margin:4px 2px}.action-toolbar[data-v-0a4aa655]{position:relative;display:flex;align-items:center;gap:4px;height:34px;flex:0 0 auto;padding:0 10px;background:#fff;border-bottom:1px solid #e2e4e7;overflow:visible}.measure[data-v-0a4aa655]{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none;height:0;overflow:hidden;display:flex;gap:4px}.dd[data-v-0a4aa655]{position:relative;display:inline-flex}.tool[data-v-0a4aa655]{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border:1px solid transparent;border-radius:5px;background:none;cursor:pointer;font-size:13px;color:#444;white-space:nowrap}.tool[data-v-0a4aa655]:hover:not(:disabled){background:#f0f2f4}.tool[data-v-0a4aa655]:disabled{color:#bbb;cursor:default}.tool.active[data-v-0a4aa655]{background:#e8f0fe;color:#1a73e8;border-color:#c5d9fb}.tool.open[data-v-0a4aa655]{background:#eef0f2}.tool .ic[data-v-0a4aa655]{display:inline-flex}.tool .ic-e[data-v-0a4aa655]{font-size:13px;line-height:1}.tool .caret[data-v-0a4aa655]{display:inline-flex;opacity:.6;margin-left:-2px}.tool .caret[data-v-0a4aa655] svg{width:12px;height:12px}.divider[data-v-0a4aa655]{width:1px;align-self:stretch;margin:6px 4px;background:#e2e4e7}.excel-viewer[data-v-3a1333cc]{display:flex;flex-direction:column;height:100%;width:100%;background:#fff;overflow:hidden}.render-area[data-v-3a1333cc]{position:relative;flex:1 1 auto;overflow:hidden;min-height:0}.grid-canvas[data-v-3a1333cc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.ov[data-v-3a1333cc]{position:absolute;z-index:2;overflow:hidden;pointer-events:none}.ov-slot[data-v-3a1333cc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;overflow:hidden;pointer-events:none}.ov-slot[data-v-3a1333cc] *{pointer-events:auto}.editor-slot[data-v-3a1333cc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;overflow:hidden;pointer-events:none}.editor-slot[data-v-3a1333cc] *{pointer-events:auto}.scroller[data-v-3a1333cc]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:auto;cursor:cell;outline:none}.spacer[data-v-3a1333cc]{pointer-events:none}.formula-bar[data-v-3a1333cc]{display:flex;align-items:center;height:28px;flex:0 0 auto;border-bottom:1px solid #e2e4e7;background:#fff;font-size:13px}.formula-bar .addr[data-v-3a1333cc]{width:72px;text-align:center;border-right:1px solid #e2e4e7;color:#444;font-weight:600;flex:0 0 auto}.formula-bar .fx[data-v-3a1333cc]{width:34px;text-align:center;color:#999;font-style:italic;flex:0 0 auto}.formula-bar .content[data-v-3a1333cc]{flex:1;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222;font-family:Consolas,Courier New,monospace}.status-bar[data-v-3a1333cc]{display:flex;align-items:center;gap:16px;height:24px;flex:0 0 auto;padding:0 12px;border-top:1px solid #e2e4e7;background:#fbfbfb;font-size:12px;color:#555}.status-bar .grow[data-v-3a1333cc]{flex:1}.status-bar .sel[data-v-3a1333cc]{color:#888}.cell-tooltip[data-v-3a1333cc]{position:absolute;z-index:6;max-width:380px;padding:5px 9px;background:#2b2f33;color:#fff;font-size:12px;line-height:1.4;border-radius:4px;box-shadow:0 2px 8px #00000040;pointer-events:none;white-space:pre-wrap;word-break:break-all}.cell-tooltip.comment[data-v-3a1333cc]{background:#fdfcdc;color:#333;border:1px solid #d9d27e;box-shadow:0 2px 10px #0000002e;max-width:300px}.state[data-v-3a1333cc]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:5;background:#fff;color:#888;font-size:14px}.state.error[data-v-3a1333cc]{color:#c0392b}.state.hint[data-v-3a1333cc]{color:#aaa}.loader[data-v-3a1333cc]{width:260px;max-width:60%}.loader-label[data-v-3a1333cc]{font-size:13px;color:#555;margin-bottom:8px;text-align:center}.loader-track[data-v-3a1333cc]{height:6px;border-radius:3px;background:#eceef0;overflow:hidden}.loader-fill[data-v-3a1333cc]{height:100%;background:#21a366;border-radius:3px;transition:width .15s ease}.loader-fill.indeterminate[data-v-3a1333cc]{width:40%;transition:none;animation:loader-pulse-3a1333cc 1.1s ease-in-out infinite}@keyframes loader-pulse-3a1333cc{0%{margin-left:-40%}to{margin-left:100%}}
1
+ .rxl{display:flex;flex-direction:column;height:100%;width:100%;background:#fff;overflow:hidden}.rxl-toolbar{display:flex;align-items:center;gap:4px;flex:0 0 auto;height:34px;padding:0 8px;border-bottom:1px solid #e2e4e7;background:#fafafa}.rxl-toolbar button{height:24px;padding:0 10px;border:1px solid transparent;border-radius:4px;background:transparent;color:#333;font-size:13px;cursor:pointer}.rxl-toolbar button:hover:not(:disabled){background:#eceef0}.rxl-toolbar button.active{background:#d6e9d9;border-color:#21a366;color:#1b7a4d}.rxl-toolbar button:disabled{color:#bbb;cursor:default}.rxl-formula-bar{display:flex;align-items:center;height:28px;flex:0 0 auto;border-bottom:1px solid #e2e4e7;background:#fff;font-size:13px}.rxl-formula-bar .addr{width:72px;text-align:center;border-right:1px solid #e2e4e7;color:#444;font-weight:600;flex:0 0 auto}.rxl-formula-bar .fx{width:34px;text-align:center;color:#999;font-style:italic;flex:0 0 auto}.rxl-formula-bar .content{flex:1;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222;font-family:Consolas,Courier New,monospace}.rxl-formula-bar .content-input{border:none;outline:none;height:100%;background:transparent;font-size:13px}.rxl-formula-bar .content-input:focus{background:#f5fbf7;box-shadow:inset 0 0 0 1px #21a366}.rxl-render-area{position:relative;flex:1 1 auto;overflow:hidden;min-height:0}.rxl-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.rxl-ov{position:absolute;z-index:2;overflow:hidden;pointer-events:none}.rxl-scroller{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:auto;cursor:cell;outline:none}.rxl-spacer{pointer-events:none}.rxl-ov-slot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;overflow:hidden;pointer-events:none}.rxl-ov-slot>div>*{pointer-events:auto}.rxl-editor-slot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;overflow:hidden;pointer-events:none}.rxl-editor-slot>*{pointer-events:auto}.rxl-tooltip{position:absolute;z-index:6;max-width:380px;padding:5px 9px;background:#2b2f33;color:#fff;font-size:12px;line-height:1.4;border-radius:4px;box-shadow:0 2px 8px #00000040;pointer-events:none;white-space:pre-wrap;word-break:break-all}.rxl-tooltip.comment{background:#fdfcdc;color:#333;border:1px solid #d9d27e;max-width:300px}.rxl-findbar{position:absolute;top:8px;right:16px;z-index:7;display:flex;align-items:center;gap:6px;padding:6px 8px;background:#fff;border:1px solid #d0d3d6;border-radius:6px;box-shadow:0 2px 10px #00000026}.rxl-findbar input{height:24px;border:1px solid #d0d3d6;border-radius:4px;padding:0 6px;font-size:13px}.rxl-findbar .count{font-size:12px;color:#888;min-width:46px;text-align:center}.rxl-filterpop{position:absolute;z-index:8;width:220px;max-height:300px;display:flex;flex-direction:column;background:#fff;border:1px solid #c8ccd0;border-radius:6px;box-shadow:0 4px 16px #0000002e;font-size:13px}.rxl-filterpop .sort{display:flex;gap:6px;padding:8px 8px 0}.rxl-filterpop .sort button{flex:1;height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;cursor:pointer;font-size:12px}.rxl-filterpop .sort button.on{background:#d6e9d9;border-color:#21a366;color:#1b7a4d;font-weight:600}.rxl-filterpop .list{overflow:auto;padding:6px 8px}.rxl-filterpop label{display:flex;align-items:center;gap:6px;padding:2px 0}.rxl-filterpop .foot{display:flex;gap:8px;justify-content:flex-end;padding:6px 8px;border-top:1px solid #eceef0}.rxl-status-bar{display:flex;align-items:center;gap:16px;height:24px;flex:0 0 auto;padding:0 12px;border-top:1px solid #e2e4e7;background:#fbfbfb;font-size:12px;color:#555}.rxl-status-bar .grow{flex:1}.rxl-tabs{display:flex;align-items:center;gap:2px;height:30px;flex:0 0 auto;padding:0 8px;border-top:1px solid #e2e4e7;background:#f3f4f6;overflow-x:auto}.rxl-tabs button{height:24px;padding:0 12px;border:1px solid transparent;border-bottom:none;border-radius:4px 4px 0 0;background:transparent;font-size:13px;cursor:pointer;white-space:nowrap}.rxl-tabs button.active{background:#fff;border-color:#d6d8da;font-weight:600}.rxl-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:5;background:#fff;color:#888;font-size:14px}.rxl-state.error{color:#c0392b}.rxl .rxl-title{padding:6px 12px;background:#fbfbfb;border-bottom:1px solid #eceef1;font:600 13px/1 -apple-system,Segoe UI,sans-serif;color:#1f2329;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rxl .rxl-title .tpl{font-weight:400;color:#6b7280;font-size:12px}.rxl-export-progress{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0000006b;display:flex;align-items:center;justify-content:center;font:13px/1.5 -apple-system,Segoe UI,sans-serif}.rxl-export-progress .card{min-width:320px;max-width:480px;background:#fff;border-radius:10px;box-shadow:0 10px 32px #00000047;padding:18px 20px}.rxl-export-progress .title{font-size:14px;font-weight:600;color:#1f2329;margin-bottom:12px}.rxl-export-progress .bar{position:relative;height:6px;background:#eceef1;border-radius:3px;overflow:hidden;margin-bottom:10px}.rxl-export-progress .bar .fill{height:100%;background:#21a366;transition:width .12s linear}.rxl-export-progress .bar.indeterminate:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,#21a366 40%,#21a366 60%,transparent);animation:rxl-export-ind 1.2s infinite}@keyframes rxl-export-ind{0%{transform:translate(-100%)}to{transform:translate(100%)}}.rxl-export-progress .row{display:flex;align-items:center;justify-content:space-between}.rxl-export-progress .pct{color:#6b7280;font-size:12px}.rxl-export-progress .cancel{border:1px solid #d8dbde;background:#fff;color:#1f2329;padding:5px 14px;border-radius:5px;cursor:pointer;font-size:13px}.rxl-export-progress .cancel:hover{background:#f5f6f7}.toolbar[data-v-eafc1f94]{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;background:#fbfbfb;border-bottom:1px solid #e2e4e7;font-size:13px;color:#444;flex:0 0 auto}.file[data-v-eafc1f94]{font-weight:600;max-width:460px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file .tpl[data-v-eafc1f94]{font-weight:400;color:#6b7280;font-size:12px;margin-left:4px;white-space:nowrap}.meta[data-v-eafc1f94]{color:#888}.spacer[data-v-eafc1f94]{flex:1}.export-wrap[data-v-eafc1f94]{position:relative}.export-btn[data-v-eafc1f94]{height:24px;padding:0 10px;border:1px solid #d0d3d6;background:#fff;border-radius:4px;cursor:pointer;font-size:13px;color:#444;display:flex;align-items:center;gap:4px}.export-btn[data-v-eafc1f94]:hover{background:#f0f2f4}.export-btn .caret[data-v-eafc1f94]{font-size:10px;color:#888}.menu[data-v-eafc1f94]{position:absolute;right:0;top:28px;z-index:20;min-width:160px;background:#fff;border:1px solid #d8dbde;border-radius:6px;box-shadow:0 4px 16px #00000024;padding:4px;display:flex;flex-direction:column}.menu button[data-v-eafc1f94]{text-align:left;padding:7px 10px;border:none;background:none;border-radius:4px;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.menu button[data-v-eafc1f94]:hover{background:#f0f4ff}.menu .sep[data-v-eafc1f94]{height:1px;background:#eef0f2;margin:4px 2px}.zoom[data-v-eafc1f94]{display:flex;align-items:center;gap:4px}.zoom button[data-v-eafc1f94]{width:24px;height:24px;border:1px solid #d0d3d6;background:#fff;border-radius:4px;cursor:pointer;font-size:15px;line-height:1}.zoom button[data-v-eafc1f94]:hover{background:#f0f2f4}.zoom select[data-v-eafc1f94]{height:24px;border:1px solid #d0d3d6;border-radius:4px;background:#fff}.sheet-tabs[data-v-431b6f9c]{display:flex;align-items:stretch;height:30px;background:#f3f4f6;border-top:1px solid #d8dadd;overflow-x:auto;flex:0 0 auto}.tab[data-v-431b6f9c]{border:none;background:transparent;border-right:1px solid #e0e2e5;padding:0 16px;font-size:12.5px;color:#555;cursor:pointer;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}.tab[data-v-431b6f9c]:hover{background:#e9ebee}.tab.active[data-v-431b6f9c]{background:#fff;color:#166534;font-weight:600;box-shadow:inset 0 2px #21a366}.dlg-mask[data-v-544df24f]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;background:#00000052;display:flex;align-items:center;justify-content:center}.dlg[data-v-544df24f]{width:420px;max-width:92%;background:#fff;border-radius:10px;box-shadow:0 12px 40px #00000040;font-size:13px;color:#333;overflow:hidden}.dlg-head[data-v-544df24f]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-weight:600;border-bottom:1px solid #eef0f2}.dlg-head .x[data-v-544df24f]{border:none;background:none;font-size:20px;line-height:1;cursor:pointer;color:#999}.dlg-head .x[data-v-544df24f]:hover{color:#444}.dlg-body[data-v-544df24f]{padding:8px 16px 4px}.field[data-v-544df24f]{display:flex;align-items:flex-start;gap:12px;padding:9px 0;border-bottom:1px solid #f4f5f6}.field[data-v-544df24f]:last-child{border-bottom:none}.lbl[data-v-544df24f]{width:72px;flex:0 0 auto;color:#666;padding-top:3px}.opts[data-v-544df24f]{display:flex;flex-direction:column;gap:6px}.opts.inline[data-v-544df24f]{flex-direction:row;flex-wrap:wrap;align-items:center;gap:10px}.opts label[data-v-544df24f]{display:inline-flex;align-items:center;gap:5px;cursor:pointer}.opts label.disabled[data-v-544df24f]{color:#bbb;cursor:not-allowed}.hint[data-v-544df24f]{color:#99a;font-size:12px}select[data-v-544df24f]{height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;padding:0 6px}.dlg-foot[data-v-544df24f]{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid #eef0f2;background:#fafbfc}.dlg-foot .grow[data-v-544df24f]{flex:1}.dlg-foot button[data-v-544df24f]{height:30px;padding:0 14px;border:1px solid #d0d3d6;border-radius:5px;background:#fff;cursor:pointer;font-size:13px;color:#333}.dlg-foot button[data-v-544df24f]:hover{background:#f0f2f4}.dlg-foot button.ghost[data-v-544df24f]{border-color:transparent;color:#888}.dlg-foot button.primary[data-v-544df24f]{background:#21a366;border-color:#21a366;color:#fff}.dlg-foot button.primary[data-v-544df24f]:hover{background:#1c8f59}.find-bar[data-v-36abc020]{position:absolute;top:8px;right:16px;z-index:12;display:flex;align-items:center;gap:4px;padding:5px 7px;background:#fff;border:1px solid #d4d7da;border-radius:7px;box-shadow:0 3px 12px #00000029;font-size:13px}.q[data-v-36abc020]{width:160px;height:26px;border:1px solid #d0d3d6;border-radius:4px;padding:0 8px;outline:none}.q[data-v-36abc020]:focus{border-color:#1a73e8}.count[data-v-36abc020]{min-width:46px;text-align:center;color:#888;font-variant-numeric:tabular-nums}.count.none[data-v-36abc020]{color:#d23}.opt[data-v-36abc020],.nav[data-v-36abc020],.close[data-v-36abc020]{height:24px;min-width:24px;border:1px solid transparent;background:none;border-radius:4px;cursor:pointer;color:#555;font-size:13px;line-height:1}.opt.on[data-v-36abc020]{background:#e8f0fe;color:#1a73e8;border-color:#c5d9fb}.opt[data-v-36abc020]:hover,.nav[data-v-36abc020]:hover:not(:disabled),.close[data-v-36abc020]:hover{background:#f0f2f4}.nav[data-v-36abc020]:disabled{color:#ccc;cursor:default}.close[data-v-36abc020]{font-size:18px;color:#999}.filter-pop[data-v-4b0bc283]{position:absolute;z-index:14;width:220px;background:#fff;border:1px solid #cfd3d7;border-radius:7px;box-shadow:0 6px 22px #0003;padding:8px;font-size:13px;display:flex;flex-direction:column;gap:6px}.sort[data-v-4b0bc283]{display:flex;gap:6px}.sort button[data-v-4b0bc283]{flex:1;height:26px;border:1px solid #d0d3d6;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;color:#444}.sort button[data-v-4b0bc283]:hover{background:#f0f2f4}.sort button.on[data-v-4b0bc283]{background:#d6e9d9;border-color:#21a366;color:#1b7a4d;font-weight:600}.search[data-v-4b0bc283]{height:26px;border:1px solid #d0d3d6;border-radius:4px;padding:0 8px;outline:none}.search[data-v-4b0bc283]:focus{border-color:#1a73e8}.all[data-v-4b0bc283]{display:flex;align-items:center;gap:6px;padding:2px;color:#444;font-weight:600;cursor:pointer}.list[data-v-4b0bc283]{max-height:220px;overflow:auto;border:1px solid #eceef0;border-radius:4px;padding:2px}.row[data-v-4b0bc283]{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:3px;cursor:pointer}.row[data-v-4b0bc283]:hover{background:#f3f6fb}.val[data-v-4b0bc283]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty[data-v-4b0bc283]{color:#aaa;text-align:center;padding:10px}.foot[data-v-4b0bc283]{display:flex;align-items:center;gap:6px}.foot .grow[data-v-4b0bc283]{flex:1}.foot button[data-v-4b0bc283]{height:27px;padding:0 12px;border:1px solid #d0d3d6;border-radius:5px;background:#fff;cursor:pointer;font-size:13px}.foot button[data-v-4b0bc283]:hover{background:#f0f2f4}.foot button.primary[data-v-4b0bc283]{background:#21a366;border-color:#21a366;color:#fff}.foot button.primary[data-v-4b0bc283]:hover{background:#1c8f59}.foot button.link[data-v-4b0bc283]{border-color:transparent;color:#1a73e8;padding:0 4px}.tb-menu[data-v-322e2c67]{position:absolute;top:30px;left:0;z-index:20;min-width:160px;background:#fff;border:1px solid #d8dbde;border-radius:6px;box-shadow:0 4px 16px #00000024;padding:4px;display:flex;flex-direction:column}.mi[data-v-322e2c67]{display:flex;align-items:center;gap:8px;text-align:left;padding:7px 10px;border:none;background:none;border-radius:4px;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.mi[data-v-322e2c67]:hover:not(:disabled){background:#f0f4ff}.mi[data-v-322e2c67]:disabled{color:#bbb;cursor:default}.mi.active[data-v-322e2c67]{color:#1a73e8}.mi .ic[data-v-322e2c67]{display:inline-flex;width:16px}.mi .ic-e[data-v-322e2c67]{width:16px;text-align:center}.sep[data-v-322e2c67]{height:1px;background:#eef0f2;margin:4px 2px}.action-toolbar[data-v-0a4aa655]{position:relative;display:flex;align-items:center;gap:4px;height:34px;flex:0 0 auto;padding:0 10px;background:#fff;border-bottom:1px solid #e2e4e7;overflow:visible}.measure[data-v-0a4aa655]{position:absolute;left:0;top:0;visibility:hidden;pointer-events:none;height:0;overflow:hidden;display:flex;gap:4px}.dd[data-v-0a4aa655]{position:relative;display:inline-flex}.tool[data-v-0a4aa655]{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border:1px solid transparent;border-radius:5px;background:none;cursor:pointer;font-size:13px;color:#444;white-space:nowrap}.tool[data-v-0a4aa655]:hover:not(:disabled){background:#f0f2f4}.tool[data-v-0a4aa655]:disabled{color:#bbb;cursor:default}.tool.active[data-v-0a4aa655]{background:#e8f0fe;color:#1a73e8;border-color:#c5d9fb}.tool.open[data-v-0a4aa655]{background:#eef0f2}.tool .ic[data-v-0a4aa655]{display:inline-flex}.tool .ic-e[data-v-0a4aa655]{font-size:13px;line-height:1}.tool .caret[data-v-0a4aa655]{display:inline-flex;opacity:.6;margin-left:-2px}.tool .caret[data-v-0a4aa655] svg{width:12px;height:12px}.divider[data-v-0a4aa655]{width:1px;align-self:stretch;margin:6px 4px;background:#e2e4e7}.export-progress-overlay[data-v-629027ad]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0000006b;display:flex;align-items:center;justify-content:center;font:13px/1.5 -apple-system,Segoe UI,sans-serif}.card[data-v-629027ad]{min-width:320px;max-width:480px;background:#fff;border-radius:10px;box-shadow:0 10px 32px #00000047;padding:18px 20px}.title[data-v-629027ad]{font-size:14px;font-weight:600;color:#1f2329;margin-bottom:12px}.bar[data-v-629027ad]{position:relative;height:6px;background:#eceef1;border-radius:3px;overflow:hidden;margin-bottom:10px}.bar .fill[data-v-629027ad]{height:100%;background:#21a366;transition:width .12s linear}.bar.indeterminate[data-v-629027ad]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,#21a366 40%,#21a366 60%,transparent);animation:ind-629027ad 1.2s infinite}@keyframes ind-629027ad{0%{transform:translate(-100%)}to{transform:translate(100%)}}.row[data-v-629027ad]{display:flex;align-items:center;justify-content:space-between}.pct[data-v-629027ad]{color:#6b7280;font-size:12px}.cancel[data-v-629027ad]{border:1px solid #d8dbde;background:#fff;color:#1f2329;padding:5px 14px;border-radius:5px;cursor:pointer;font-size:13px}.cancel[data-v-629027ad]:hover{background:#f5f6f7}.excel-viewer[data-v-96e040f0]{display:flex;flex-direction:column;height:100%;width:100%;background:#fff;overflow:hidden}.render-area[data-v-96e040f0]{position:relative;flex:1 1 auto;overflow:hidden;min-height:0}.grid-canvas[data-v-96e040f0]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.ov[data-v-96e040f0]{position:absolute;z-index:2;overflow:hidden;pointer-events:none}.ov-slot[data-v-96e040f0]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;overflow:hidden;pointer-events:none}.ov-slot[data-v-96e040f0] *{pointer-events:auto}.editor-slot[data-v-96e040f0]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;overflow:hidden;pointer-events:none}.editor-slot[data-v-96e040f0] *{pointer-events:auto}.scroller[data-v-96e040f0]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:auto;cursor:cell;outline:none}.spacer[data-v-96e040f0]{pointer-events:none}.formula-bar[data-v-96e040f0]{display:flex;align-items:center;height:28px;flex:0 0 auto;border-bottom:1px solid #e2e4e7;background:#fff;font-size:13px}.formula-bar .addr[data-v-96e040f0]{width:72px;text-align:center;border-right:1px solid #e2e4e7;color:#444;font-weight:600;flex:0 0 auto}.formula-bar .fx[data-v-96e040f0]{width:34px;text-align:center;color:#999;font-style:italic;flex:0 0 auto}.formula-bar .content[data-v-96e040f0]{flex:1;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#222;font-family:Consolas,Courier New,monospace}.formula-bar .content-input[data-v-96e040f0]{border:none;outline:none;height:100%;background:transparent;font-size:13px}.formula-bar .content-input[data-v-96e040f0]:focus{background:#f5fbf7;box-shadow:inset 0 0 0 1px #21a366}.status-bar[data-v-96e040f0]{display:flex;align-items:center;gap:16px;height:24px;flex:0 0 auto;padding:0 12px;border-top:1px solid #e2e4e7;background:#fbfbfb;font-size:12px;color:#555}.status-bar .grow[data-v-96e040f0]{flex:1}.status-bar .sel[data-v-96e040f0]{color:#888}.cell-tooltip[data-v-96e040f0]{position:absolute;z-index:6;max-width:380px;padding:5px 9px;background:#2b2f33;color:#fff;font-size:12px;line-height:1.4;border-radius:4px;box-shadow:0 2px 8px #00000040;pointer-events:none;white-space:pre-wrap;word-break:break-all}.cell-tooltip.comment[data-v-96e040f0]{background:#fdfcdc;color:#333;border:1px solid #d9d27e;box-shadow:0 2px 10px #0000002e;max-width:300px}.state[data-v-96e040f0]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:5;background:#fff;color:#888;font-size:14px}.state.error[data-v-96e040f0]{color:#c0392b}.state.hint[data-v-96e040f0]{color:#aaa}.loader[data-v-96e040f0]{width:260px;max-width:60%}.loader-label[data-v-96e040f0]{font-size:13px;color:#555;margin-bottom:8px;text-align:center}.loader-track[data-v-96e040f0]{height:6px;border-radius:3px;background:#eceef0;overflow:hidden}.loader-fill[data-v-96e040f0]{height:100%;background:#21a366;border-radius:3px;transition:width .15s ease}.loader-fill.indeterminate[data-v-96e040f0]{width:40%;transition:none;animation:loader-pulse-96e040f0 1.1s ease-in-out infinite}@keyframes loader-pulse-96e040f0{0%{margin-left:-40%}to{margin-left:100%}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ooxml-excel-editor",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "High-fidelity OOXML (.xlsx) preview & editor — canvas renderer, framework-agnostic core with Vue 3 and React shells. Read-only by default; opt-in editing with undo/redo, formula recalc, and export back to .xlsx/JSON/CSV.",
5
5
  "type": "module",
6
6
  "license": "MIT",