@web-ppt/edit-core 0.5.0-beta.2 → 0.5.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/CHANGELOG.md +183 -0
- package/README.md +164 -21
- package/dist/alt-text.d.ts +5 -0
- package/dist/appearance/index.d.ts +12 -0
- package/dist/appearance/materialize.d.ts +4 -0
- package/dist/appearance/types.d.ts +26 -0
- package/dist/appearance/values.d.ts +9 -0
- package/dist/appearance.js +301 -0
- package/dist/cfb/index.d.ts +5 -0
- package/dist/cfb/read.d.ts +16 -0
- package/dist/cfb/write.d.ts +3 -0
- package/dist/cfb.js +208 -0
- package/dist/change-classification.d.ts +3 -3
- package/dist/chart/category-binding.d.ts +4 -0
- package/dist/chart/category-commands.d.ts +23 -0
- package/dist/chart/category-levels.d.ts +14 -0
- package/dist/chart/category-matrix.d.ts +2 -0
- package/dist/chart/category-value.d.ts +2 -0
- package/dist/chart/category-workbook.d.ts +13 -0
- package/dist/chart/commands.d.ts +28 -0
- package/dist/chart/context.d.ts +12 -0
- package/dist/chart/dataset-merge.d.ts +5 -0
- package/dist/chart/formula.d.ts +13 -0
- package/dist/chart/identity-frames.d.ts +4 -0
- package/dist/chart/identity-scopes.d.ts +6 -0
- package/dist/chart/identity.d.ts +24 -0
- package/dist/chart/index.d.ts +8 -0
- package/dist/chart/limits.d.ts +6 -0
- package/dist/chart/locator.d.ts +4 -0
- package/dist/chart/materialize.d.ts +7 -0
- package/dist/chart/ordering.d.ts +9 -0
- package/dist/chart/part-graph.d.ts +5 -0
- package/dist/chart/patch-validation.d.ts +3 -0
- package/dist/chart/plot-kinds.d.ts +2 -0
- package/dist/chart/projection.d.ts +8 -0
- package/dist/chart/save.d.ts +4 -0
- package/dist/chart/shared-added-plan.d.ts +19 -0
- package/dist/chart/shared-added-records.d.ts +8 -0
- package/dist/chart/shared-address.d.ts +5 -0
- package/dist/chart/shared-allocate.d.ts +7 -0
- package/dist/chart/shared-cache-codec.d.ts +5 -0
- package/dist/chart/shared-cache-identities.d.ts +3 -0
- package/dist/chart/shared-cache-migration.d.ts +7 -0
- package/dist/chart/shared-cache-save.d.ts +3 -0
- package/dist/chart/shared-cache-scopes.d.ts +13 -0
- package/dist/chart/shared-cache.d.ts +11 -0
- package/dist/chart/shared-category.d.ts +4 -0
- package/dist/chart/shared-cell.d.ts +9 -0
- package/dist/chart/shared-family.d.ts +26 -0
- package/dist/chart/shared-fields.d.ts +18 -0
- package/dist/chart/shared-graph.d.ts +19 -0
- package/dist/chart/shared-growth-space.d.ts +5 -0
- package/dist/chart/shared-inserted-cells.d.ts +14 -0
- package/dist/chart/shared-inserted-command.d.ts +7 -0
- package/dist/chart/shared-inserted-layout.d.ts +16 -0
- package/dist/chart/shared-inserted-project.d.ts +14 -0
- package/dist/chart/shared-inserted-records.d.ts +16 -0
- package/dist/chart/shared-inserted-save.d.ts +6 -0
- package/dist/chart/shared-joint-command.d.ts +9 -0
- package/dist/chart/shared-joint-records.d.ts +9 -0
- package/dist/chart/shared-record-axis.d.ts +25 -0
- package/dist/chart/shared-record-remove.d.ts +13 -0
- package/dist/chart/shared-record-stage.d.ts +2 -0
- package/dist/chart/shared-records.d.ts +2 -0
- package/dist/chart/shared-rows.d.ts +17 -0
- package/dist/chart/shared-runtime.d.ts +19 -0
- package/dist/chart/shared-save-plan.d.ts +4 -0
- package/dist/chart/shared-save.d.ts +3 -0
- package/dist/chart/shared-series.d.ts +6 -0
- package/dist/chart/shared-source-cache.d.ts +4 -0
- package/dist/chart/shared-topology.d.ts +9 -0
- package/dist/chart/shared-unresolved.d.ts +3 -0
- package/dist/chart/shared-validation.d.ts +6 -0
- package/dist/chart/shared-workbook-source.d.ts +6 -0
- package/dist/chart/shared-xy-command.d.ts +7 -0
- package/dist/chart/shared-xy-family.d.ts +16 -0
- package/dist/chart/shared-xy-project.d.ts +6 -0
- package/dist/chart/shared-xy-records.d.ts +23 -0
- package/dist/chart/shared-xy-save.d.ts +5 -0
- package/dist/chart/shared-xy-source.d.ts +39 -0
- package/dist/chart/shared.d.ts +13 -0
- package/dist/chart/source.d.ts +11 -0
- package/dist/chart/types.d.ts +86 -0
- package/dist/chart/validation.d.ts +24 -0
- package/dist/chart/workbook-range.d.ts +16 -0
- package/dist/chart/workbook-read.d.ts +7 -0
- package/dist/chart/workbook-write.d.ts +9 -0
- package/dist/chart/workbook.d.ts +25 -0
- package/dist/chart/xml-data.d.ts +14 -0
- package/dist/chart/xml-namespaces.d.ts +16 -0
- package/dist/chart-design/index.d.ts +10 -0
- package/dist/chart-design/types.d.ts +11 -0
- package/dist/chart-design/xml.d.ts +2 -0
- package/dist/chart-design.js +361 -0
- package/dist/chart-ex/index.d.ts +15 -0
- package/dist/chart-ex/workbook.d.ts +6 -0
- package/dist/chart-ex/xml.d.ts +14 -0
- package/dist/chart-ex.js +457 -0
- package/dist/chart-shared/index.d.ts +12 -0
- package/dist/chart-shared.js +1 -0
- package/dist/chart.js +1 -0
- package/dist/clipboard-links-GuPtqr1z.js +778 -0
- package/dist/clipboard-package.d.ts +4 -0
- package/dist/clipboard-source.d.ts +6 -2
- package/dist/clipboard-trees.d.ts +9 -0
- package/dist/commands/add-slide-identity.d.ts +2 -0
- package/dist/commands/bullet-image-resource.d.ts +11 -0
- package/dist/commands/clear-format.d.ts +4 -0
- package/dist/commands/common-object-slide-patch.d.ts +4 -0
- package/dist/commands/common-object-slide-types.d.ts +68 -0
- package/dist/commands/direct-format-patches.d.ts +11 -5
- package/dist/commands/distribute-elements.d.ts +4 -0
- package/dist/commands/edit-table-grid.d.ts +10 -0
- package/dist/commands/element-alt-text.d.ts +8 -0
- package/dist/commands/element-arrangement.d.ts +17 -0
- package/dist/commands/element-effects.d.ts +1 -1
- package/dist/commands/element-fill.d.ts +1 -1
- package/dist/commands/element-geometry.d.ts +5 -2
- package/dist/commands/element-image-content.d.ts +2 -2
- package/dist/commands/element-link.d.ts +1 -1
- package/dist/commands/element-name.d.ts +1 -1
- package/dist/commands/element-stroke.d.ts +1 -1
- package/dist/commands/element-text.d.ts +1 -1
- package/dist/commands/element-transform.d.ts +2 -2
- package/dist/commands/geometry-types.d.ts +23 -1
- package/dist/commands/hierarchy-record.d.ts +5 -0
- package/dist/commands/image-resource.d.ts +8 -1
- package/dist/commands/insertion-host.d.ts +14 -1
- package/dist/commands/layout-property.d.ts +7 -0
- package/dist/commands/master-property.d.ts +5 -0
- package/dist/commands/master-text-style-types.d.ts +27 -0
- package/dist/commands/master-text-style.d.ts +7 -0
- package/dist/commands/paste-resources.d.ts +9 -5
- package/dist/commands/patch-apply.d.ts +3 -0
- package/dist/commands/patch-count.d.ts +1 -0
- package/dist/commands/patch-invalidation.d.ts +1 -1
- package/dist/commands/patch-stage.d.ts +4 -0
- package/dist/commands/record-override.d.ts +5 -0
- package/dist/commands/replace-image.d.ts +6 -1
- package/dist/commands/sections.d.ts +10 -0
- package/dist/commands/set-preset.d.ts +5 -0
- package/dist/commands/slide-property-types.d.ts +55 -5
- package/dist/commands/slide-size.d.ts +7 -0
- package/dist/commands/spid.d.ts +1 -1
- package/dist/commands/table-grid-patch.d.ts +12 -0
- package/dist/commands/text-target.d.ts +2 -2
- package/dist/commands/theme-types.d.ts +47 -0
- package/dist/commands/theme.d.ts +9 -0
- package/dist/commands/types.d.ts +194 -17
- package/dist/commands/ungroup-source.d.ts +3 -0
- package/dist/comments/index.d.ts +35 -0
- package/dist/comments/save.d.ts +3 -0
- package/dist/comments/state.d.ts +10 -0
- package/dist/comments/xml.d.ts +12 -0
- package/dist/comments.js +782 -0
- package/dist/common-object-slide-types.d.ts +34 -0
- package/dist/data-validation.d.ts +1 -1
- package/dist/describe/budget.d.ts +3 -0
- package/dist/describe/index.d.ts +5 -0
- package/dist/describe/read.d.ts +4 -0
- package/dist/describe/types.d.ts +103 -0
- package/dist/describe.js +192 -0
- package/dist/design-dependencies.d.ts +8 -0
- package/dist/design-projection-package.d.ts +10 -0
- package/dist/design-target.d.ts +10 -0
- package/dist/design.d.ts +3 -0
- package/dist/document-extensions.d.ts +9 -0
- package/dist/document.d.ts +1 -1
- package/dist/dynamic-projection.d.ts +6 -0
- package/dist/edit-core.js +5420 -4111
- package/dist/editor.d.ts +15 -3
- package/dist/element-source.d.ts +11 -0
- package/dist/element-spids.d.ts +4 -0
- package/dist/extension-address-journal.d.ts +9 -0
- package/dist/extension-address-remap.d.ts +14 -0
- package/dist/extension-addresses.d.ts +20 -0
- package/dist/extension-copy-history.d.ts +7 -0
- package/dist/extension-copy.d.ts +16 -0
- package/dist/extension-migration-receipt.d.ts +34 -0
- package/dist/extension-recovery-context.d.ts +5 -0
- package/dist/extension-runtime.d.ts +64 -0
- package/dist/generate/comments.d.ts +3 -0
- package/dist/generate/compatibility-parts.d.ts +14 -0
- package/dist/generate/compatibility-references.d.ts +3 -0
- package/dist/generate/compatibility.d.ts +4 -0
- package/dist/generate/index.d.ts +1 -0
- package/dist/generate/master-defaults.d.ts +4 -0
- package/dist/generate/materialize.d.ts +2 -2
- package/dist/generate/math.d.ts +3 -0
- package/dist/generate/portable-clipboard.d.ts +4 -0
- package/dist/generate/projection-tree.d.ts +8 -0
- package/dist/generate/template.d.ts +68 -1
- package/dist/generate/text-body.d.ts +2 -0
- package/dist/generate/text-effects.d.ts +5 -0
- package/dist/generate/text-override.d.ts +8 -0
- package/dist/generate/validation.d.ts +3 -0
- package/dist/generate/warp.d.ts +2 -0
- package/dist/generate.js +1232 -512
- package/dist/history.d.ts +11 -1
- package/dist/identities.d.ts +4 -0
- package/dist/image-content.d.ts +5 -2
- package/dist/image-resource-history.d.ts +2 -0
- package/dist/index-C2r7c6G6.js +714 -0
- package/dist/index-CYDvbiwF.js +1 -0
- package/dist/index.d.ts +35 -7
- package/dist/ink/index.d.ts +27 -0
- package/dist/ink/model.d.ts +4 -0
- package/dist/ink/save.d.ts +3 -0
- package/dist/ink/source.d.ts +7 -0
- package/dist/ink.js +324 -0
- package/dist/layout-assets.d.ts +3 -1
- package/dist/layout-projection.d.ts +17 -5
- package/dist/layout-state.d.ts +2 -0
- package/dist/layout-types.d.ts +42 -0
- package/dist/layout.d.ts +5 -0
- package/dist/lint/color.d.ts +5 -0
- package/dist/lint/index.d.ts +7 -0
- package/dist/lint/prompts.d.ts +3 -0
- package/dist/lint/report.d.ts +21 -0
- package/dist/lint/sampler-batch.d.ts +4 -0
- package/dist/lint/sampler-images.d.ts +2 -0
- package/dist/lint/sampler.d.ts +9 -0
- package/dist/lint/snapshot.d.ts +34 -0
- package/dist/lint/types.d.ts +67 -0
- package/dist/lint-sampler.js +187 -0
- package/dist/lint.js +659 -0
- package/dist/master-state.d.ts +3 -0
- package/dist/master-text-style-state.d.ts +3 -0
- package/dist/master-types.d.ts +55 -0
- package/dist/master.d.ts +5 -0
- package/dist/media/audio-icon.d.ts +2 -0
- package/dist/media/commands.d.ts +3 -0
- package/dist/media/index.d.ts +10 -0
- package/dist/media/markup.d.ts +10 -0
- package/dist/media/mp4-boxes.d.ts +12 -0
- package/dist/media/mp4-fragments.d.ts +8 -0
- package/dist/media/mp4-samples.d.ts +4 -0
- package/dist/media/mp4.d.ts +2 -0
- package/dist/media/poster.d.ts +2 -0
- package/dist/media/replace-poster.d.ts +3 -0
- package/dist/media/resource.d.ts +4 -0
- package/dist/media/source.d.ts +14 -0
- package/dist/media/types.d.ts +33 -0
- package/dist/media-properties.d.ts +4 -0
- package/dist/media.js +1630 -0
- package/dist/model-invariants-BM19JVxy.js +8980 -0
- package/dist/object-source.d.ts +11 -0
- package/dist/ole/container.d.ts +14 -0
- package/dist/ole/content.d.ts +94 -0
- package/dist/ole/index.d.ts +20 -0
- package/dist/ole/preview.d.ts +3 -0
- package/dist/ole/save.d.ts +2 -0
- package/dist/ole/state.d.ts +16 -0
- package/dist/ole.js +870 -0
- package/dist/opc.js +1 -1
- package/dist/paragraph-level.d.ts +2 -2
- package/dist/paragraph-property-schema.d.ts +4 -1
- package/dist/{patch-D7lZelRa.js → patch-BwhfBbYE.js} +10 -10
- package/dist/patch-events.d.ts +5 -1
- package/dist/ppt/appearance.d.ts +11 -0
- package/dist/ppt/binary.d.ts +20 -0
- package/dist/ppt/drawing.d.ts +18 -0
- package/dist/ppt/geometry.d.ts +4 -0
- package/dist/ppt/index.d.ts +12 -0
- package/dist/ppt/pictures.d.ts +11 -0
- package/dist/ppt/text.d.ts +9 -0
- package/dist/ppt.js +774 -0
- package/dist/preset-geometry.d.ts +6 -0
- package/dist/projection.d.ts +2 -0
- package/dist/query-BHLjWjnu.js +903 -0
- package/dist/recovery-identity.d.ts +1 -0
- package/dist/recovery-migrations.d.ts +3 -0
- package/dist/recovery.d.ts +3 -0
- package/dist/resize/index.d.ts +6 -0
- package/dist/resize/text.d.ts +4 -0
- package/dist/resize.js +5090 -0
- package/dist/retained-element-origins.d.ts +6 -0
- package/dist/run-property-fields.d.ts +12 -0
- package/dist/run-property-schema.d.ts +3 -1
- package/dist/run-style.d.ts +15 -0
- package/dist/save/alt-text.d.ts +4 -0
- package/dist/save/comments.d.ts +3 -0
- package/dist/save/effects.d.ts +2 -1
- package/dist/save/extension-availability.d.ts +3 -0
- package/dist/save/extension-elements.d.ts +26 -0
- package/dist/save/index.d.ts +6 -1
- package/dist/save/insertion.d.ts +6 -5
- package/dist/save/layout-properties.d.ts +4 -0
- package/dist/save/master-properties.d.ts +5 -0
- package/dist/save/paragraph-overrides.d.ts +3 -0
- package/dist/save/slide-parts.d.ts +1 -0
- package/dist/save/table.d.ts +2 -0
- package/dist/save/xfrm.d.ts +8 -2
- package/dist/save.js +493 -498
- package/dist/sections.d.ts +8 -0
- package/dist/session-assets.d.ts +4 -0
- package/dist/slide-parts-D0o_DDhi.js +1331 -0
- package/dist/slide-size.d.ts +6 -0
- package/dist/smartart/drawing.d.ts +3 -0
- package/dist/smartart/index.d.ts +16 -0
- package/dist/smartart/model.d.ts +18 -0
- package/dist/smartart/save.d.ts +3 -0
- package/dist/smartart.js +604 -0
- package/dist/source-retention.d.ts +7 -0
- package/dist/space.d.ts +37 -0
- package/dist/table-cell.d.ts +7 -1
- package/dist/table-grid-projection.d.ts +6 -0
- package/dist/table-grid.d.ts +45 -0
- package/dist/table-invariants.d.ts +4 -0
- package/dist/table-rows.d.ts +2 -1
- package/dist/table-scale.d.ts +4 -0
- package/dist/table-style.d.ts +5 -4
- package/dist/templates/index.d.ts +4 -0
- package/dist/templates/recipes.d.ts +5 -0
- package/dist/templates/types.d.ts +17 -0
- package/dist/templates.js +543 -0
- package/dist/text-flatten.d.ts +6 -0
- package/dist/text-fragment.d.ts +5 -0
- package/dist/text-model.d.ts +8 -8
- package/dist/text-override-validation.d.ts +6 -2
- package/dist/text-selection.d.ts +4 -0
- package/dist/theme-projection.d.ts +8 -0
- package/dist/theme-xml.d.ts +3 -0
- package/dist/theme.d.ts +14 -0
- package/dist/types.d.ts +174 -8
- package/dist/xml/index.d.ts +1 -1
- package/dist/xml/nodes.d.ts +2 -2
- package/dist/xml/shape-ids.d.ts +3 -0
- package/dist/xml.js +19 -16
- package/package.json +79 -5
- package/schemas/describe.schema.json +479 -0
- package/schemas/lint.schema.json +145 -0
- package/dist/document-B1jjN-QB.js +0 -274
- package/dist/image-resource-DbgJS9n-.js +0 -24
- package/dist/index-D2JizcOQ.js +0 -706
- package/dist/insertion-CGpb504L.js +0 -6152
- package/dist/table-style-part-DBtpxmuo.js +0 -1042
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{x as e,a as t,w as n,o as r,p as o,r as s,c as i,b as a,M as l,d as c,e as d,f as u,g as f,h,i as p,j as v,k as w,N as g,v as m,l as b,m as y,n as k,q as O,s as E,t as S,u as j,y as x,z as M,A as C,B as $,C as z,D as P,E as R,F as N,G as A,H as X,I as Y,J as I,K as J,L as W,O as K,P as _,Q as U,R as D,S as F,T,U as q,V as L,W as B}from"./index-CYDvbiwF.js";import{parseXmlTree as G,serializeXmlTreeBytes as H}from"@web-ppt/edit-core/xml";import{fractionalIndexBetween as Q}from"@web-ppt/edit-core";const{child:V,children:Z}=n,ee=(e,t)=>`${encodeURIComponent(e)}!${t}`;function te(n,r){var o;const s=r.sharedStrings?Z(G(n[r.sharedStrings]).root,"si").map(e):[],i=/* @__PURE__ */new Map;for(const[a,l]of r.sheets){const r=G(n[l]).root;for(const n of Z(V(r,"sheetData"),"row"))for(const r of Z(n,"c")){const n=t(r,"t"),l=e(V(r,"v"));let c={kind:"unsupported",value:null};V(r,"f")?c={kind:"unsupported",value:null}:!V(r,"v")&&!V(r,"is")?c={kind:"blank",value:null}:n==="inlineStr"?c={kind:"string",value:e(V(r,"is"))}:n==="s"&&/^\d+$/.test(l)&&Number(l)<s.length?c={kind:"string",value:s[Number(l)]}:(n===null||n==="n")&&l.trim()&&Number.isFinite(Number(l))&&(c={kind:"number",value:Number(l)}),i.set(ee(a,((o=t(r,"r"))==null?void 0:o.toUpperCase())??""),c)}}return i}function ne(e,t=oe(e)){return t.filter(t=>{if(t.path[0]==="categories")return!0;const n=e.series[t.path[1]];return t.path[2]==="points"&&n&&n.plotKind!=="scatter"&&n.plotKind!=="bubble"})}function re(e){return Object.values(e.series).flatMap(e=>Object.values(e.bindings).flatMap(e=>{const t=o((e==null?void 0:e.formula)??null);return t?a(e.formula).map(e=>ee(t.sheet,e)):[]}))}function oe(e){var t,n;const l=[],c=(e,t,n,r)=>{const s=o(e);s&&a(e).forEach((e,o)=>{t[o]&&l.push({key:ee(s.sheet,e),path:t[o],value:n[o],kind:r})})},d=r(Object.values(e.series).filter(e=>!e.removed));for(const e of d){c(e.bindings.name.formula,[["series",e.id,"name"]],[e.name],"text");const n=r(Object.values(e.points).filter(e=>!e.removed));for(const[r,o]of[["values","value"],["y","value"],["x","x"],["size","size"]])c(((t=e.bindings[r])==null?void 0:t.formula)??null,n.map(t=>["series",e.id,"points",t.id,o]),n.map(e=>e[o]??null),"number")}const u=(n=d.find(e=>e.bindings.categories))==null?void 0:n.bindings.categories,f=r(Object.values(e.categories).filter(e=>!e.removed)),h=o((u==null?void 0:u.formula)??null);if(h&&(u!=null&&u.hierarchy)){const e=u.hierarchy.levels,t=u.hierarchy.orientation==="columns",n=s(f,e),r=`${ee(h.sheet,`${i(h.startColumn)}${h.startRow}`)}:${e}:${u.hierarchy.orientation}`;f.forEach((o,s)=>{var a,c;for(let d=0;d<e;d++)l.push({key:ee(h.sheet,`${i(h.startColumn+(t?s:d))}${h.startRow+(t?d:s)}`),path:["categories",o.id,"levels",String(d)],value:d<e-1?n[s][d]:((a=o.levels)==null?void 0:a[d])??null,kind:"text",nullable:!0,...d<e-1?{parent:{level:d,raw:((c=o.levels)==null?void 0:c[d])??null,family:r}}:{}})})}else c((u==null?void 0:u.formula)??null,f.map(e=>["categories",e.id,"label"]),f.map(e=>e.label),"text");return l}function se(e){if(typeof e!="string"||e.length>l*6+64)throw new Error("共享单元格覆盖无效");let t;try{t=JSON.parse(e)}catch{throw new Error("共享单元格覆盖无效")}if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).length!==1)throw new Error("共享单元格覆盖无效");if("parent"in t&&typeof t.parent=="string"&&t.parent.length<=1024)return{parent:t.parent};if("value"in t&&(t.value===null||typeof t.value=="string"&&t.value.length<=l||typeof t.value=="number"&&Number.isFinite(t.value)))return{value:t.value};throw new Error("共享单元格覆盖无效")}function ie(e,t,n){var r;const o=/* @__PURE__ */new Set;for(;Object.prototype.hasOwnProperty.call(t,e);){if(o.has(e)||o.size>=c)throw new Error("共享类别分组引用循环或超限");o.add(e);const n=se(t[e]);if("value"in n)return n.value;e=n.parent}return((r=n.get(e))==null?void 0:r.value)??null}function ae(e){const t=/* @__PURE__ */new Map,n=[];for(const r of e)if(r.parent){const{raw:e,level:o}=r.parent;e!==null&&(n.fill(void 0,o+1),n[o]=r.key),t.set(r.key,n[o])}return t}function le(e,t,n,r,o,s){const i=/* @__PURE__ */new Map,a=d(e,t,r,o),l=d(e,n,r,o);if(!l)return i;const c=oe(t),u=oe(n),f=ae(c),h=ae(u),p=new Set(u.filter(e=>e.parent).map(e=>e.key));for(const[e,t]of l.cells){const n=ee(l.sheet,e),r=h.get(n);(p.has(n)&&(r!==f.get(n)||r!==void 0&&s.has(r))||JSON.stringify(t)!==JSON.stringify(a==null?void 0:a.cells.get(e)))&&i.set(n,t.value!==null&&p.has(n)&&r&&r!==n?{parent:r}:{value:t.value})}return i}function ce(e){const t=e.lastIndexOf("!"),n=decodeURIComponent(e.slice(0,t)),r=e.slice(t+1);if(t<1||!/^[A-Z]{1,3}[1-9]\d*$/.test(r))throw new Error("共享单元格地址无效");return{sheet:n,...u(r)}}const de=/* @__PURE__ */new WeakMap;function ue(e){let t=de.get(e);return t||(t=e.charts.flatMap(e=>Object.values(e.state.series).filter(e=>!e.removed&&(e.plotKind==="scatter"||e.plotKind==="bubble")).map(t=>({chart:e,seriesId:t.id,references:new Set(["x","y","size"].flatMap(e=>{var n;const r=(n=t.bindings[e])==null?void 0:n.formula,s=o(r??null);return s?a(r).map(e=>ee(s.sheet,e)):[]}))}))),de.set(e,t),t)}function fe(e){const t=Object.entries(e.bindings).filter(([e])=>["x","y","size"].includes(e)).map(([,e])=>o((e==null?void 0:e.formula)??null));if(!t.length||t.some(e=>!e))throw new Error("共享 XY 缺少可解释的数值向量");const n=t.filter(e=>!!e),r=n[0],s=n.some(e=>e.startColumn<e.endColumn)||!n.some(e=>e.startRow<e.endRow)&&n.every(e=>e.startColumn===r.startColumn)&&n.some(e=>e.startRow!==r.startRow);if(!s&&!n.some(e=>e.startRow<e.endRow)&&!(n.every(e=>e.startRow===r.startRow)&&n.some(e=>e.startColumn!==r.startColumn)))throw new Error("共享 XY 记录方向不明确");return{sheet:r.sheet,horizontal:s}}function he(e,t,n){const r=ue(e),o=r.find(e=>e.chart.id===t&&e.seriesId===n);if(!o)throw new Error("共享 XY 缺少来源系列");const s=/* @__PURE__ */new Set([o]),i=new Set(o.references);for(let e=!0;e;){e=!1;for(const t of r)!s.has(t)&&[...t.references].some(e=>i.has(e))&&(s.add(t),t.references.forEach(e=>i.add(e)),e=!0)}return{target:o,selected:s,references:i}}function pe(e,t,n){const r=/* @__PURE__ */new Set,s=/* @__PURE__ */new Set,i=/* @__PURE__ */new Set,a=/* @__PURE__ */new Set;return{members:e.map(e=>{const l=e.chart.state.series[e.seriesId],c=/* @__PURE__ */new Map,d=/* @__PURE__ */new Map;let u=1/0,f=0;for(const[e,r]of[["x","x"],["y","value"],["size","size"]]){if(!l.bindings[e])continue;const i=o(l.bindings[e].formula);if(!i||i.sheet!==t||(n?i.startRow!==i.endRow:i.startColumn!==i.endColumn))throw new Error("共享 XY 的各维度不在同一工作表记录轴上");const a=n?i.startColumn:i.startRow,c=n?i.startRow:i.startColumn;if(u!==1/0&&u!==a)throw new Error("共享 XY 的各维度记录起点不一致");u=a,d.set(r,c),s.add(c)}for(const t of e.chart.fields.filter(t=>t.path[1]===e.seriesId&&t.path[2]==="points")){const e=ce(t.key),o=n?e.column:e.row,s=t.path[3];if(c.has(s)&&c.get(s)!==o)throw new Error("共享 XY 的数据点不在同一记录轴上");c.set(s,o),r.add(t.key),i.add(o),a.add(o),f=Math.max(f,o)}return c.size||(f=u-1,a.add(f)),{...e,positions:c,lanes:d,start:u,end:f}}),keys:r,lanes:s,axes:i,anchors:a}}const ve=/* @__PURE__ */new WeakMap,we=e=>ne(e.state,e.fields),ge=/* @__PURE__ */new WeakMap,me=e=>{const t=ge.get(e);if(t)return t;const n=Object.values(e.state.series).flatMap(e=>e.removed||!e.bindings.categories?[]:[e.bindings.categories,e.bindings.values].flatMap(e=>{const t=o((e==null?void 0:e.formula)??null);return t?a(e.formula).map(e=>ee(t.sheet,e)):[]}));return ge.set(e,n),n};function be(e){var t;const n=Object.values(e.state.series).filter(e=>!e.removed&&e.bindings.categories),r=(t=n[0])==null?void 0:t.bindings.categories;if(r!=null&&r.hierarchy)return r.hierarchy.orientation==="columns";const s=n.flatMap(e=>[e.bindings.categories,e.bindings.values]).map(e=>o((e==null?void 0:e.formula)??null)).filter(e=>!!e);return s.some(e=>e.startColumn<e.endColumn)?!0:s.some(e=>e.startRow<e.endRow)?!1:s.length>1&&s.every(e=>e.startColumn===s[0].startColumn)&&s.some(e=>e.startRow!==s[0].startRow)}function ye(e,t){var n,r,s;let i=ve.get(e);i||(i=/* @__PURE__ */new Map,ve.set(e,i));const a=i.get(t);if(a)return a;const l=e.charts.find(e=>e.id===t);if(!l)throw new Error("共享类别缺少来源图表");const c=/* @__PURE__ */new Set([t]),d=new Set(me(l)),u=/* @__PURE__ */new Set;for(let t=!0;t;){t=!1;for(const n of e.charts)!c.has(n.id)&&me(n).some(e=>d.has(e))&&(c.add(n.id),me(n).forEach(e=>d.add(e)),t=!0);for(const n of ue(e))!u.has(n)&&[...n.references].some(e=>d.has(e))&&(u.add(n),n.references.forEach(e=>d.add(e)),t=!0)}const f=e.charts.filter(e=>c.has(e.id));for(const t of e.charts){const e=new Set(we(t));if(t.fields.some(n=>d.has(n.key)&&!e.has(n)&&![...u].some(e=>e.chart===t&&n.path[1]===e.seriesId&&n.path[2]==="points")))throw new Error("共享类别记录与 XY 或名称区域重叠,不能无歧义增删")}const h=(n=Object.values(l.state.series).find(e=>e.bindings.categories))==null?void 0:n.bindings.categories,p=o((h==null?void 0:h.formula)??null);if(!p)throw new Error("共享类别没有可解释的行绑定");const v=be(l),w=/* @__PURE__ */new Set,g=/* @__PURE__ */new Map,m=/* @__PURE__ */new Map,b=/* @__PURE__ */new Set,y=/* @__PURE__ */new Set;let k=1/0,O=0;for(const e of f){const t=/* @__PURE__ */new Map;g.set(e.id,t);const n=(r=Object.values(e.state.series).find(e=>e.bindings.categories))==null?void 0:r.bindings.categories,i=o((n==null?void 0:n.formula)??null),a=v?i.startColumn:i.startRow;if(be(e)!==v)throw new Error("共享类别与数值不在同一工作表记录轴上");for(const t of Object.values(e.state.series))if(!t.removed&&t.bindings.categories){const e=o(((s=t.bindings.values)==null?void 0:s.formula)??null);if(e&&(v?e.startRow!==e.endRow||e.startColumn!==a:e.startColumn!==e.endColumn||e.startRow!==a))throw new Error("共享类别与数值不在同一工作表记录轴上");e&&y.add(v?e.startRow:e.startColumn)}for(const t of me(e)){const e=ce(t);if(e.sheet!==p.sheet)throw new Error("共享类别与数值不在同一工作表记录轴上");w.add(v?e.row:e.column)}for(const n of we(e)){const e=ce(n.key),r=v?e.column:e.row,o=n.path[0]==="categories"?n.path[1]:n.path[3];if(e.sheet!==p.sheet||t.has(o)&&t.get(o)!==r)throw new Error("共享类别与数值不在同一工作表记录轴上");t.set(o,r),w.add(v?e.row:e.column),k=Math.min(k,r),O=Math.max(O,r),b.add(r)}const l={start:t.size?Math.min(...t.values()):a,end:t.size?Math.max(...t.values()):a-1};m.set(e.id,l),k=Math.min(k,l.start),O=Math.max(O,l.end),t.size||b.add(l.end)}const E=pe([...u],p.sheet,v);E.lanes.forEach(e=>w.add(e)),E.lanes.forEach(e=>y.add(e)),E.anchors.forEach(e=>b.add(e));for(const e of E.members)k=Math.min(k,e.start),O=Math.max(O,e.end);if(!Number.isFinite(k)||!w.size)throw new Error("共享类别没有可作为插入锚点的来源记录");const S={key:[...d].sort()[0],sheet:p.sheet,horizontal:v,start:k,end:O,lanes:w,keys:d,charts:f,positions:g,ranges:m,anchors:b,numericLanes:y,xyOwners:E.members};for(const e of f)i.set(e.id,S);return S}function ke(e,t,n){const r=he(e,t,n),o=e.charts.find(e=>me(e).some(e=>r.references.has(e)));return o?ye(e,o.id):void 0}function Oe(e,t){const n=e.charts.find(e=>e.state.binding.chartPart===t.binding.chartPart&&Object.keys(e.state.categories).every(e=>t.categories[e]));if(!n)throw new Error("共享类别没有对应的来源身份");return ye(e,n.id)}function Ee(e,t){const n=e.charts.find(e=>me(e).includes(t)),r=n?void 0:ue(e).find(e=>e.references.has(t)),o=n?ye(e,n.id):r&&ke(e,r.chart.id,r.seriesId);if((o==null?void 0:o.key)===t)return o;throw new Error("共享新增类别不属于此工作簿记录轴")}function Se(e){if(typeof e!="string"||e.length>64)throw new Error("共享行删除标记无效");const t=JSON.parse(e);if(!t||typeof t.horizontal!="boolean"||!Number.isInteger(t.end)||t.end<1||t.end>(t.horizontal?16384:1048576))throw new Error("共享行删除范围无效");return t}function je(e,t,n){const{sheet:r,horizontal:o,lanes:s,start:a,end:l,keys:d}=e;if(![...e.positions.values(),...e.xyOwners.map(e=>e.positions)].some(e=>[...e.values()].includes(t)))throw new Error("共享删除位置不是来源记录");if((l-a+1)*s.size>c)throw new Error("共享删行区域超过安全上限");const u=/* @__PURE__ */new Map;for(const e of s){for(let t=a;t<=l;t++){const s=ee(r,`${i(o?t:e)}${o?e:t}`),a=n.get(s);if(!d.has(s)&&a&&(a.kind==="unsupported"||a.value!==null))throw new Error(`共享删行区域 ${decodeURIComponent(s)} 被其他内容占用`)}u.set(ee(r,`${i(o?t:e)}${o?e:t}`),{horizontal:o,end:l})}return u}function xe(e,t,n){const r=ce(t);for(const t of e.charts){if(!Object.keys(t.state.categories).length)continue;const o=ye(e,t.id),s=o.horizontal?r.column:r.row,i=o.horizontal?r.row:r.column;if(o.sheet===r.sheet&&o.lanes.has(i)&&s>=o.start&&s<=o.end)return je(o,s,n)}throw new Error("共享行不属于图表来源")}function Me(e,t,n=!1){const r=ce(e);let o=r.row,s=r.column;for(const[e,i]of Object.entries(t)){const t=ce(e),{horizontal:a,end:l}=Se(i),c=a?r.column:r.row,d=a?t.column:t.row;t.sheet!==r.sheet||(a?t.row!==r.row:t.column!==r.column)||c>l||(n?c<d:c<=d)||(a?s--:o--)}return ee(r.sheet,`${i(Math.max(1,s))}${Math.max(1,o)}`)}function Ce(e,t){if(t){for(const n of ne(e))if(Object.prototype.hasOwnProperty.call(t,n.key)){const t=n.path[0]==="categories"?n.path[1]:n.path[3],r=e.categories[t];r&&(r.removed=!0)}f(e);for(const n of Object.values(e.series))for(const[e,r]of Object.entries(n.bindings)){if(e==="name")continue;const s=o((r==null?void 0:r.formula)??null);if(!s)continue;const a=ce(Me(ee(s.sheet,`${i(s.startColumn)}${s.startRow}`),t)),l=ce(Me(ee(s.sheet,`${i(s.endColumn)}${s.endRow}`),t,!0));n.bindings[e]={...r,formula:h({...s,startColumn:a.column,startRow:a.row,endColumn:Math.max(a.column,l.column),endRow:Math.max(a.row,l.row)})}}}}function $e(e,t,n,r,o,s,i){var a,l,c,d,u,h,v;const w=/* @__PURE__ */new Map,g=[],m=(e,n,r)=>{const s=["document","extensions","chart-shared",t.workbook,...e],i=JSON.stringify(s),a=w.get(i);if(a){if(a.op!=="set"||a.value!==n)throw new Error("共享删除的组首提升产生矛盾值");return}w.set(i,{op:"set",path:s,value:n,origin:o}),g.unshift(r===void 0?{op:"del",path:s,origin:o}:{op:"set",path:s,value:r,origin:o})};for(const[e,t]of je(n,r,i))m(["rows",e],JSON.stringify(t),(a=s.rows)==null?void 0:a[e]);for(const t of n.charts){const o=(l=[...n.positions.get(t.id)].find(([,e])=>e===r))==null?void 0:l[0];if(!o)continue;const i=p(e,t.id),a=structuredClone(i);a.categories[o].removed=!0,f(a);for(const e of t.fields)if(e.parent){const n=a.categories[e.path[1]],r=i.categories[n.id],l=e.parent.level,f=(c=n.levels)==null?void 0:c[l];if(n.removed||((d=r.levels)==null?void 0:d[l])!==null||f===null||f===void 0)continue;const p=t.fields.find(e=>{var t;return((t=e.parent)==null?void 0:t.level)===l&&e.path[1]===o});m(["cells",e.key],JSON.stringify(p?{parent:p.key}:{value:f}),(u=s.cells)==null?void 0:u[e.key]),m(["heads",e.parent.family,e.key],!0,(v=(h=s.heads)==null?void 0:h[e.parent.family])==null?void 0:v[e.key])}}return{forward:[...w.values()],inverse:g}}function ze(e){const t=/* @__PURE__ */Object.create(null);return Object.keys(e.categories).forEach((e,n)=>{t[`c${n}`]=e}),Object.values(e.series).forEach((e,n)=>{t[`s${n}`]=e.id,(e.plotKind==="scatter"||e.plotKind==="bubble")&&Object.keys(e.points).forEach((e,r)=>{t[`p${n}_${r}`]=e})}),t}function Pe(e,t){const n=/* @__PURE__ */new Map,r=/* @__PURE__ */new Map,o=(e,t)=>{n.set(e,t),r.set(t,e)};for(const[n,s]of Object.entries(ze(e))){const e=t?t[n]:n;if(!e||r.has(e))throw new Error("共享缓存来源身份映射不完整或重复");o(s,e)}const s=(e,o)=>{if(typeof e!="string")throw new Error("共享缓存身份无效");if(o)return n.get(e)??(t?e:`n:${e}`);const s=r.get(e);if(s)return s;if(!t&&!e.startsWith("n:"))throw new Error("共享缓存来源身份无效");const i=t?e:e.slice(2);if(!i)throw new Error("共享缓存新增身份不能为空");if(v(i,i,"共享缓存新增记录"),n.has(i))throw new Error("共享缓存新增身份与来源记录冲突");return i};return(e,t)=>{const n=[...e.path.slice(5)];n.length>1&&(n[1]=s(n[1],t)),n[2]==="points"&&n.length>3&&(n[3]=s(n[3],t));const r=e.op==="set"?e.value:void 0,o=n[n.length-1],i=e.op==="set"&&r!==null&&(o==="id"||o==="levelParent"||n[0]==="categories"&&n[2]==="levelClears")?s(r,t):r,a=["elements",e.path[1],"ovr","extensions","chart-data",...n];return e.op==="set"?{...e,path:a,value:i}:{...e,path:a}}}const Re="chart-shared";function Ne(e,t,n){const r=/* @__PURE__ */Object.create(null),o=Pe(e,n);let s=0;const i=t=>{const[n,,r]=t,s=t.length===2?[n==="categories"?"label":"name"]:t.length===3&&n==="categories"&&["levels","levelClears"].includes(r)?["0"]:t.length===4&&n==="series"&&r==="points"?["value"]:t.length===4&&n==="series"&&r==="bindings"?["formula"]:void 0;if(s)m(e,o({op:"del",origin:Re,path:["elements",g,"ovr","extensions","chart-data",...t,...s]},!1),0);else if(!(t.length===1&&["categories","series"].includes(n)||t.length===3&&n==="series"&&["points","bindings"].includes(r)))throw new Error("共享缓存字段容器无效")},a=(t,n)=>{if(n.length>5)throw new Error("共享缓存覆盖层级过深");for(const[l,c]of Object.entries(t)){if(++s>1e5)throw new Error("共享缓存覆盖超过安全上限");const t=[...n,l];if(c!==null&&typeof c=="object"){w(c,"共享缓存字段"),i(t),a(c,t);continue}const d=o({op:"set",origin:Re,path:["elements",g,"ovr","extensions","chart-data",...t],value:c},!1);m(e,d,s);let u=r;for(const e of d.path.slice(5,-1))u[e]??(u[e]=/* @__PURE__ */Object.create(null)),u=u[e];u[d.path[d.path.length-1]]=d.op==="set"?d.value:void 0}};return a(t,[]),r}function Ae(e,t,n){if(!n.forward.length||!n.forward.every(t=>t.path[5]==="series"&&!Object.prototype.hasOwnProperty.call(e.series,String(t.path[6]))))return;const r=Pe(e),o=n=>{const o=r(n,!0),s=["document","extensions","chart-shared",t,"addedSeries",e.binding.chartPart,...o.path.slice(6)];return o.op==="set"?{...o,path:s}:{...o,path:s}};return{forward:n.forward.map(o),inverse:n.inverse.map(o)}}function Xe(e,t){const n=t==null?void 0:t[e.binding.chartPart];if(n){if(w(n,"共享新增系列"),Object.keys(n).some(e=>!e.startsWith("n:")))throw new Error("共享新增系列不能覆盖来源身份");return Ne(e,{series:n})}}function Ye(e,t){w(t,"共享新增系列部件");for(const n of Object.keys(t)){const r=e.charts.filter(e=>e.state.binding.chartPart===n);if(!r.length)throw new Error("共享新增系列不属于此工作簿");for(const e of r)Xe(e.state,t)}}function Ie(e,t){const n=e.charts.filter(e=>e.state.binding.chartPart===t.path[5]);if(t.path.length<8||!n.length||!t.path[6].startsWith("n:"))throw new Error("共享新增系列路径或身份无效");for(const{state:e}of n){const n=["elements","shared-native","ovr","extensions","chart-data","series",...t.path.slice(6)];m(e,Pe(e)(t.op==="set"?{...t,path:n}:{...t,path:n},!1),0)}}function Je(e,t,n,r,o){v(t,t,"共享新增类别");const s=[.../* @__PURE__ */new Set([...e.charts,...e.xyOwners.map(e=>e.chart)])];if(s.some(e=>t in e.state.categories||t in e.state.series||Object.values(e.state.series).some(e=>t in e.points)))throw new Error("共享新增类别与来源身份冲突");if(n.length===2&&n[0]==="cells"){const t=Number(n[1]);if(String(t)!==n[1]||!e.lanes.has(t))throw new Error("共享新增类别单元格不属于记录轴");if(o||r===null)return;const i=s.flatMap(e=>e.fields).filter(n=>{if(!e.keys.has(n.key))return!1;const r=ce(n.key);return(e.horizontal?r.row:r.column)===t});if((e.numericLanes.has(t)||i.some(e=>e.kind==="number"))&&(typeof r!="number"||!Number.isFinite(r)))throw new Error("共享新增类别数值必须是有限数字或空值");if(typeof r=="string")b(r,"共享新增类别文本");else if(typeof r!="number"||!Number.isFinite(r))throw new Error("共享新增类别单元格类型无效");return}if(n.length!==1||!["id","anchor","order","parent","removed"].includes(n[0]))throw new Error("共享新增类别字段无效");if(!o){if(n[0]==="id"&&v(r,t,"共享新增类别"),n[0]==="order"&&y(r,"共享新增类别顺序"),n[0]==="parent"&&r!==null&&v(r,r,"共享新增类别父级"),n[0]==="anchor"&&!e.anchors.has(r))throw new Error("共享新增类别锚点不属于来源记录轴");if(n[0]==="removed"&&r!==!0)throw new Error("共享新增类别删除标记无效")}}function We(e,t){if(t.path.length<8)throw new Error("共享新增类别路径无效");Je(Ee(e,t.path[5]),t.path[6],t.path.slice(7),t.op==="set"?t.value:void 0,t.op==="del")}function Ke(e,t){w(t,"共享新增类别区域");let n=0;for(const[r,o]of Object.entries(t)){const t=Ee(e,r);w(o,"共享新增类别记录");for(const[e,r]of Object.entries(o)){w(r,"共享新增类别");for(const[o,s]of Object.entries(r)){const r=o==="cells"?(w(s,"共享新增类别单元格"),Object.entries(s)):[["",s]];for(const[s,i]of r){if(++n>c)throw new Error("共享新增类别覆盖超过安全上限");Je(t,e,o==="cells"?[o,String(s)]:[o],i,!1)}}}}}function _e(e,t){var n;const r=Object.entries((t==null?void 0:t[e.key])??{}).map(([e,t])=>{const n=t;if(n.id!==e||!Number.isInteger(n.anchor)||typeof n.order!="string")throw new Error("共享新增类别字段尚未完整");return n}).sort((e,t)=>e.anchor-t.anchor||k(e,t)),o=/* @__PURE__ */new Map;for(const e of r){if(e.parent&&((n=o.get(e.parent))==null?void 0:n.anchor)!==e.anchor)throw new Error("共享新增类别父级引用尚未完整或顺序无效");o.set(e.id,e)}return r}const Ue=(e,t)=>`@row:${e}:${t}`;function De(e){if(!e.startsWith("@row:"))return;const t=e.lastIndexOf(":"),n=e.slice(5,t),r=e.slice(t+1),o=Number(r);if(v(n,n,"共享新增单元格身份"),!Number.isInteger(o)||o<1||String(o)!==r)throw new Error("共享新增单元格列无效");return{id:n,lane:o}}function Fe(e,t,n,r){const o=De(n);if(!o)return;const s=e.charts.find(e=>e.fields.some(e=>e.key===t&&e.parent));if(!s)throw new Error("新增类别父引用只能用于来源父级单元格");const i=ye(e,s.id),a=ce(t);if((i.horizontal?a.row:a.column)!==o.lane)throw new Error("新增类别父引用必须属于同一层级列");if(r){const e=_e(i,r).find(e=>e.id===o.id);if(!e||e.anchor>=(i.horizontal?a.column:a.row))throw new Error("新增类别父引用必须指向前面的稳定记录")}}function Te(e,t){var n;const r={...t.cells};for(const[n,r]of Object.entries(t.cells??{})){const o=se(r);"parent"in o&&De(o.parent)&&Fe(e,n,o.parent,t.insertions??{})}for(const o of Object.keys(t.insertions??{})){const s=Ee(e,o),a=_e(s,t.insertions),l=/* @__PURE__ */new Map;for(const e of s.charts)for(const t of e.fields){if(!t.parent)continue;const e=ce(t.key),n=s.horizontal?e.row:e.column,r=l.get(n)??/* @__PURE__ */new Set;r.add(t.parent.level),l.set(n,r)}for(const e of a)for(const t of s.lanes){const o=((n=e.cells)==null?void 0:n[String(t)])??null,a=l.get(t),c=[...a??[]].some(n=>Array.from({length:n},(e,r)=>t-n+r).some(t=>{var n;return((n=e.cells)==null?void 0:n[String(t)])!==void 0&&e.cells[String(t)]!==null})),d=ee(s.sheet,`${i(s.horizontal?e.anchor:t)}${s.horizontal?t:e.anchor}`);r[Ue(e.id,t)]=JSON.stringify(o===null&&(a!=null&&a.size)&&!c?{parent:e.parent?Ue(e.parent,t):d}:{value:o})}}return r}const qe=/* @__PURE__ */new WeakMap;function Le(e,t,n){const{target:r,selected:o,references:s}=he(e,t,n);let i=qe.get(e);i||(i=/* @__PURE__ */new Map,qe.set(e,i));const a=i.get(r);if(a)return a;const{sheet:l,horizontal:c}=fe(r.chart.state.series[r.seriesId]),{members:d,keys:u,lanes:f,axes:h,anchors:p}=pe([...o],l,c);for(const t of e.charts)for(const e of t.fields)if(s.has(e.key)&&!d.some(n=>n.chart===t&&e.path[1]===n.seriesId&&e.path[2]==="points"))throw new Error("共享 XY 记录与类别或名称区域重叠,不能无歧义增删");const v=new Set(e.charts.flatMap(e=>[...Object.keys(e.state.categories),...Object.keys(e.state.series),...Object.values(e.state.series).flatMap(e=>Object.keys(e.points))])),w={key:[...s].sort()[0],sheet:l,horizontal:c,keys:u,references:s,lanes:f,start:Math.min(...d.map(e=>e.start)),end:Math.max(...d.map(e=>e.end)),owners:d,identities:v,positions:h,anchors:p};for(const e of o)i.set(e,w);return w}function Be(e,t){const n=ue(e).find(e=>e.references.has(t));if(!n)throw new Error("共享 XY 记录不属于此工作簿");const r=Le(e,n.chart.id,n.seriesId);if(r.key!==t)throw new Error("共享 XY 记录轴身份无效");return r}const Ge=(e,t,n)=>ee(e.sheet,`${i(e.horizontal?n:t)}${e.horizontal?t:n}`),He=(e,t)=>e.owners.filter(e=>e.chart.state.binding.chartPart===t.binding.chartPart&&e.seriesId in t.series);function Qe(e,t,n){const r=t.filter(e=>!e.removed),o=/* @__PURE__ */new Map,s=/* @__PURE__ */new Map;let i=0,a=0;for(let t=e.start;t<=e.end;t++){for(;i<r.length&&r[i].anchor<t;)i++;o.set(t,t-a+i),n.has(t)&&a++}const l=e=>o.get(e)??e,c=/* @__PURE__ */new Map;for(const e of r){const t=c.get(e.anchor)??0;s.set(e.id,l(e.anchor)+(n.has(e.anchor)?0:1)+t),c.set(e.anchor,t+1)}return{records:t,active:r,deleted:[...n],originalAxis:l,insertedAxis:e=>s.get(e.id),end:e.end-n.size+r.length}}function Ve(e,t,n,r){if(t[0]==="removed"){if(t.length!==2||String(Number(t[1]))!==t[1]||!e.positions.has(Number(t[1]))||!r&&n!==!0)throw new Error("共享 XY 删除位置不是来源记录");return}if(t[0]!=="insertions")throw new Error("共享 XY 记录字段无效");const o=t[1];if(v(o,o,"共享 XY 新增点"),e.identities.has(o))throw new Error("共享 XY 新增点与来源身份冲突");if(t[2]==="cells"){if(t.length!==4||String(Number(t[3]))!==t[3]||!e.lanes.has(Number(t[3])))throw new Error("共享 XY 单元格不属于记录轴");r||O(n,"共享 XY 数值");return}if(t.length!==3||!["id","anchor","order","removed"].includes(t[2]))throw new Error("共享 XY 新增点字段无效");if(!r){if(t[2]==="id"&&v(n,o,"共享 XY 新增点"),t[2]==="order"&&y(n,"共享 XY 顺序"),t[2]==="anchor"&&!e.anchors.has(n))throw new Error("共享 XY 锚点不是来源记录位置");if(t[2]==="removed"&&n!==!0)throw new Error("共享 XY 删除标记无效")}}function Ze(e,t){Ve(Be(e,t.path[5]),t.path.slice(6),t.op==="set"?t.value:void 0,t.op==="del")}function et(e,t){w(t,"共享 XY 记录轴");let n=0;const r=(e,t,o)=>{w(t,"共享 XY 记录");for(const[s,i]of Object.entries(t)){if(++n>c)throw new Error("共享 XY 覆盖超过安全上限");const t=[...o,s];t.length===1&&["removed","insertions"].includes(s)||t[0]==="insertions"&&(t.length===2||t.length===3&&s==="cells")?r(e,i,t):Ve(e,t,i,!1)}};for(const[n,o]of Object.entries(t))r(Be(e,n),o,[])}function tt(e,t){const n=_e(e,{[e.key]:t.insertions??{}});return{...Qe(e,n,new Set(Object.keys(t.removed??{}).map(Number))),key:(t,n)=>Ge(e,t,n)}}function nt(e,t,n){var r;if(t.path[4]==="addedSeries")return Ie(e,t);if(t.path[4]==="insertions")return We(e,t);if(t.path[4]==="xyRecords")return Ze(e,t);if(t.path[4]==="series"){const n=(r=e.charts.find(e=>e.state.binding.chartPart===t.path[5]))==null?void 0:r.state;if(t.path.length!==7||!n||!/^(0|[1-9]\d*)$/.test(t.path[6])||!Object.values(n.series)[Number(t.path[6])]||t.op==="set"&&t.value!==!0)throw new Error("共享系列删除标记无效");return}if(t.path[4]==="rows"){if(t.path.length!==6)throw new Error("共享行删除路径无效");const r=xe(e,t.path[5],n);if(!r.has(t.path[5])||t.op==="set"&&JSON.stringify(r.get(t.path[5]))!==t.value)throw new Error("共享行删除范围与来源依赖不符");return}if(t.path[4]==="heads"){if(t.path.length!==7||!e.charts.some(e=>e.fields.some(e=>{var n;return e.key===t.path[6]&&((n=e.parent)==null?void 0:n.family)===t.path[5]}))||t.op==="set"&&typeof t.value!="boolean")throw new Error("共享类别组首标记无效");return}const o=e.charts.flatMap(e=>e.fields).filter(e=>e.key===t.path[5]);if(t.path.length!==6||t.path[4]!=="cells"||!o.length)throw new Error("共享工作簿单元格不属于此编辑图");if(t.op==="del")return;const s=se(t.value);if("parent"in s){if(De(s.parent))return Fe(e,t.path[5],s.parent);if(!e.charts.some(e=>{var n,r;const o=e.fields.findIndex(e=>e.key===t.path[5]&&e.parent),i=e.fields.findIndex(e=>e.key===s.parent&&e.parent);return i>=0&&o>i&&((n=e.fields[i].parent)==null?void 0:n.level)===((r=e.fields[o].parent)==null?void 0:r.level)}))throw new Error("共享类别延续引用必须指向同一层级的前组");return}if(o.some(e=>e.kind==="number")&&s.value!==null&&(typeof s.value!="number"||!Number.isFinite(s.value)))throw new Error("共享工作簿单元格值类型无效");typeof s.value=="string"&&b(s.value,"共享工作簿文本")}function rt(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("共享覆盖容器无效");return e}function ot(e,t,n){let r=0;const o=(t,o)=>{if(++r>c)throw new Error("共享覆盖单元数量超限");nt(e,{op:"set",origin:"restore",value:o,path:["document","extensions","chart-shared",e.workbook,...t]},n)};for(const[n,r]of Object.entries(rt(t))){if(n==="addedSeries"){Ye(e,r);continue}if(n==="insertions"){Ke(e,r);continue}if(n==="xyRecords"){et(e,r);continue}if(!["cells","heads","rows","series"].includes(n))throw new Error("共享覆盖包含未知字段");for(const[e,t]of Object.entries(rt(r)))if(n==="heads"||n==="series")for(const[r,s]of Object.entries(rt(t)))o([n,e,r],s);else o([n,e],t)}}const st=/* @__PURE__ */new WeakMap;function it(e){let t=st.get(e);t||st.set(e,t=/* @__PURE__ */new WeakMap);let n=t.get(e.elements);n||t.set(e.elements,n=/* @__PURE__ */new WeakMap);const r=e.package??e.saveState.baselines,o=n.get(r),s=E(e,"[Content_Types].xml");if(o&&o.manifest===s)return o.topology;const i=S(e),a=/* @__PURE__ */new Map,l=[];for(const t of Object.values(e.elements)){const n=j(e,t.id);if(!n)continue;let r=a.get(n);r||a.set(n,r=[]),r.push(t.id),l.push([t.id,x(e,t.id),n])}const c={...i,frames:a,signature:JSON.stringify([l,i.parts])};return n.set(r,{manifest:s,topology:c}),c}const at=/* @__PURE__ */new WeakMap;function lt(e){var t;let n=at.get(e);if(n===void 0){try{n=!!((t=P(G(e).root))!=null&&t.scopes)}catch{n=!1}at.set(e,n)}return n}const ct=/* @__PURE__ */new WeakMap;function dt(e){var t;const n=it(e),r=new Set(Object.keys(((t=e.extensions)==null?void 0:t["chart-shared"])??{}).filter(e=>!n.charts.has(e)));for(const t of n.charts)for(const n of Object.values(C(e,t)))!n.external&&n.type.endsWith("/package")&&r.add(n.target);return[...r]}function ut(e,t){var n;const r=it(e),o=E(e,"[Content_Types].xml");if(!o)return ft(e,t,r);let s=ct.get(o);s||(s=/* @__PURE__ */new Map,ct.set(o,s));const i=r.signature,a=Object.prototype.hasOwnProperty.call(((n=e.extensions)==null?void 0:n["chart-shared"])??{},t),l=[E(e,t),...r.parts.flatMap(t=>{var n;return[E(e,t),E(e,M(t)),(n=e.package)==null?void 0:n.parts[t]]})],c=s.get(t);if((c==null?void 0:c.signature)===i&&c.hasResource===a&&l.length===c.dependencies.length&&l.every((e,t)=>e===c.dependencies[t]))return c.group;const d=ft(e,t,r);return s.set(t,{signature:i,hasResource:a,dependencies:l,group:d}),d}function ft(e,t,n){var r,o;const s=[],i=/* @__PURE__ */new Set,a=(n,r)=>{try{return r?$(e,r,!0):z(e,n)}catch(e){return{kind:"category",categories:{},series:{},binding:{chartPart:n,workbookPart:t,mode:"readonly",reason:`无法读取共享图表部件 ${n}:${e instanceof Error?e.message:String(e)}`}}}};for(const r of n.charts)Object.values(C(e,r)).some(e=>!e.external&&e.target===t)&&i.add(r);for(const e of i)for(const t of n.frames.get(e)??[]){const n=a(e,t);s.push({id:t,state:n,fields:oe(n)})}for(const e of i)if(!s.some(t=>t.state.binding.chartPart===e)){const t=a(e);s.push({id:e,native:!0,state:t,fields:oe(t)})}const l=n.parts.find(r=>!n.charts.has(r)&&Object.values(C(e,r)).some(e=>!e.external&&e.target===t)),c=[...i].some(t=>{var n;const r=(n=e.package)==null?void 0:n.parts[t];return r&<(r)}),d=(o=(r=e.extensions)==null?void 0:r["chart-shared"])==null?void 0:o[t];if(!(!s.length||s.length<2&&!d&&!l&&!c))return s.sort((e,t)=>e.id<t.id?-1:e.id>t.id?1:0),{workbook:t,charts:s,...l?{reason:`共享工作簿还被未支持的部件 ${l} 引用`}:{}}}function ht(e,t){const n=$(e,t,!0).binding.workbookPart;return n?ut(e,n):void 0}function pt(e,t){const n=t==null?void 0:t[e.binding.chartPart];Object.values(e.series).forEach((e,t)=>{(n==null?void 0:n[String(t)])===!0&&(e.removed=!0)})}function vt(e,t){const n=/* @__PURE__ */new Set,r=/* @__PURE__ */new Set,o=ut(e,t);if(!o)return n;for(const{state:t}of o.charts){const s=bn(e,o,structuredClone(t)),i=new Set(oe(s).map(e=>JSON.stringify(e.path)));for(const e of oe(t))n.add(e.key),i.has(JSON.stringify(e.path))&&r.add(e.key)}return new Set([...n].filter(e=>!r.has(e)))}const wt=e=>typeof e=="string"&&!!e&&e.length<=1024&&!["__proto__","constructor","prototype"].includes(e);function gt(e){if(e===void 0)return;const t=e;if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).some(e=>!["ids","paths","values","prefix"].includes(e))||!t.ids||typeof t.ids!="object"||Array.isArray(t.ids)||Object.entries(t.ids).some(([e,t])=>!wt(e)||!wt(t))||typeof t.prefix!="string"||t.prefix.length>64||[t.paths,t.values].some(e=>!Array.isArray(e)||e.length>32||e.some(e=>!Array.isArray(e)||!e.length||e.length>16||!e.every(wt))))throw new Error("扩展身份映射无效")}const mt=(e,t)=>t.length<=e.length&&t.every((t,n)=>t==="*"||t===e[n]);function bt(e,t){return Object.prototype.hasOwnProperty.call(e.ids,t)?e.ids[t]:`${e.prefix}${t}`}function yt(e,t,n){if(!e)return{path:t,value:n};const r=[...t];for(const n of e.paths)if(mt(t,n)){const o=n.length-1;if(r[o]=bt(e,t[o]),!wt(r[o]))throw new Error("扩展迁移后的身份路径无效")}return{path:r,value:typeof n=="string"&&e.values.some(e=>e.length===t.length&&mt(t,e))?bt(e,n):n}}function kt(e,t,n){const r=e===void 0?/* @__PURE__ */Object.create(null):structuredClone(e);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("扩展迁移目标不是容器");const o=(e,t)=>{if(!e||typeof e!="object"||Array.isArray(e))throw new Error("扩展迁移来源不是容器");for(const[s,i]of Object.entries(e)){if(i&&typeof i=="object"){o(i,[...t,s]);continue}const e=yt(n,[...t,s],i);let a=r;for(const t of e.path.slice(0,-1)){if(a[t]??(a[t]=/* @__PURE__ */Object.create(null)),!a[t]||typeof a[t]!="object"||Array.isArray(a[t]))throw new Error("扩展迁移字段冲突");a=a[t]}const l=e.path[e.path.length-1];if(a[l]!==void 0&&a[l]!==e.value)throw new Error("扩展迁移字段冲突");a[l]=e.value}};return t!==void 0&&o(t,[]),r}const Ot="edit-addresses",Et=e=>typeof e=="string"&&!!e&&e.length<=1024&&!["__proto__","prototype","constructor"].includes(e),St=/^[a-z][a-z0-9-]{0,63}$/,jt=e=>{var t;return(t=e.extensions)==null?void 0:t[Ot]};function xt(e){if(typeof e!="string")throw new Error("扩展地址必须是序列化的纯数据");const t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t)||Object.keys(t).some(e=>!["target","identities","remap","merge"].includes(e))||!Array.isArray(t.target)||t.target.length<4||t.target.length>12||t.target[0]!=="document"||t.target[1]!=="extensions"||t.target[2]===Ot||t.target[2]==="edit-migrations"||!St.test(t.target[2])||t.target.some(e=>!Et(e))||!t.identities||typeof t.identities!="object"||Array.isArray(t.identities)||Object.entries(t.identities).some(([e,t])=>!Et(e)||!Et(t))||t.merge!==void 0&&t.merge!=="equal")throw new Error("扩展地址映射无效");return gt(t.remap),t}function Mt(e,t){return Object.entries(jt(e)??{}).flatMap(([e,n])=>{if(!n||typeof n!="object"||Array.isArray(n))throw new Error("扩展地址来源必须是命名空间容器");return Object.entries(n).map(([n,r])=>({op:"set",origin:t,path:["document","extensions",Ot,e,n],value:r}))})}function Ct(e,t){var n;for(const r of Mt(e,"chart-shared")){const e=xt(r.op==="set"?r.value:void 0);if(e.target.length===5&&e.target[2]==="chart-shared"&&e.target[3]===t&&e.target[4]==="dataset")return((n=e.remap)==null?void 0:n.prefix)==="n:"&&Object.entries(e.identities).every(([e,t])=>e===t)?void 0:e.identities}}function $t(e,t,n,r){var o;const s=P(G(E(e,t)).root),i=new Map(((o=s==null?void 0:s.scopes)==null?void 0:o.frames)??[]),a=/* @__PURE__ */new Map,l=/* @__PURE__ */new Map;for(const[t,n]of Object.entries(e.retainedElementOrigins??{})){a.set(`${n.part}#${n.spid}`,t);const e=`${n.sourcePart??n.part}#${n.spid}`,r=l.get(e)??[];r.push({id:t,...n}),l.set(e,r)}for(const t of[...Object.values(e.elements),...Object.values(e.removedElements)]){const e=t.meta.origin;e&&t.meta.editable==="frame"&&a.set(`${e.part}#${e.spid}`,t.id)}const c=(e,t)=>{const o=i.get(t)??e;return Object.fromEntries(Object.entries(n).map(([e,t])=>[(!s||s.scopes)&&t.startsWith(`${g}:`)?o+t.slice(g.length):t,r[e]]))},d=(e,t)=>{if(!e)return;const n=`${e}#${t}`,r=a.get(n);if(!r)throw new Error("复制图表的原页身份已不可定位");return{key:n,owner:r,ids:c(r,n)}};return t=>{var n,r,o;const s=t.meta.origin,i=c(t.id,`${s.part}#${s.spid}`);let a=t.parent;for(;e.elements[a];)a=e.elements[a].parent;const u=d((r=(n=e.slides[a])==null?void 0:n.creation)==null?void 0:r.duplicateSourcePart,s.spid);u&&Object.assign(i,u.ids);const f=(o=t.ovr.extensions)==null?void 0:o["chart-data"];if([...Object.values((f==null?void 0:f.categories)??{}),...Object.values((f==null?void 0:f.series)??{}),...Object.values((f==null?void 0:f.series)??{}).flatMap(e=>Object.values(e.points??{}))].some(e=>e.id!==void 0&&Object.prototype.hasOwnProperty.call(i,e.id)))throw new Error("新增记录身份与复制来源身份冲突");const h=(u==null?void 0:u.key)??`${s.part}#${s.spid}`,p=(l.get(h)??[]).map(e=>{var t;return{id:e.id,ids:{...c(e.id,`${e.part}#${e.spid}`),...(t=d(e.sourcePart,e.spid))==null?void 0:t.ids}}});return u&&!e.elements[u.owner]&&!p.some(e=>e.id===u.owner)&&p.push({id:u.owner,ids:u.ids}),l.delete(h),{ids:i,removed:p}}}const zt=/* @__PURE__ */new WeakMap;function Pt(e,t=[],n){var r,o,s,i;const a=/* @__PURE__ */new Map,l=new Set(t.filter(e=>e.path[0]==="elements"&&e.path[2]==="ovr"&&e.path[3]==="extensions"&&e.path[4]==="chart-data").map(e=>e.path[1]));for(const t of Object.values(e.elements)){if(((r=t.ovr.extensions)==null?void 0:r["chart-data"])===void 0&&!l.has(t.id)||(i=(s=(o=e.extensions)==null?void 0:o[Ot])==null?void 0:s[t.id])!=null&&i["chart-data"])continue;const n=j(e,t.id);if(!n)continue;const c=a.get(n)??[];c.push(t.id),a.set(n,c)}const c=[];for(const[t,r]of a){const o=Jt(e,t,!0);if(!o)continue;const s=Rt(e,o,r,n);try{c.push(...s())}catch{continue}}return c}function Rt(e,t,n,r){var o,s;const i=t.binding.chartPart,a=Object.values(e.elements).filter(t=>j(e,t.id)===i),l=["document","extensions","chart-shared",i,"dataset"],c=(s=(o=e.extensions)==null?void 0:o["chart-shared"])==null?void 0:s[i],d=Mt(e,"chart-shared").map(e=>xt(e.op==="set"?e.value:void 0)).find(e=>JSON.stringify(e.target)===JSON.stringify(l)),u=ze(t),f=(d==null?void 0:d.identities)??Object.fromEntries(Object.keys(u).map(e=>[e,e]));if(Object.keys(u).some(e=>!f[e]))throw new Error("扩展迁移目标的来源身份映射不完整");const h=$t(e,i,u,f),p=e=>{var t;return{ids:e,prefix:d?((t=d.remap)==null?void 0:t.prefix)??"":"n:",paths:[["categories","*"],["series","*"],["series","*","points","*"]],values:[["categories","*","id"],["categories","*","levelParent"],["categories","*","levelClears","*"],["series","*","id"],["series","*","points","*","id"]]}};return()=>{var t;const o=/* @__PURE__ */new Map;for(const e of a){const t=h(e);o.set(e.id,p(t.ids));for(const e of t.removed)o.set(e.id,p(e.ids))}const s=[];for(const[e,t]of o)s.push({op:"set",origin:"chart-shared",path:["document","extensions",Ot,e,"chart-data"],value:JSON.stringify({target:l,identities:f,remap:t,merge:"equal"})});const i=r==null?void 0:r(e,s);if(i)return i;let d=c==null?void 0:c.dataset;for(const r of n)d=kt(d,(t=e.elements[r].ovr.extensions)==null?void 0:t["chart-data"],o.get(r));return s.filter(t=>{var n,r,o;return!((o=(r=(n=e.extensions)==null?void 0:n[Ot])==null?void 0:r[t.path[3]])!=null&&o["chart-data"])})}}function Nt(e,t,n){var r,o,s;const i=t.binding.chartPart,a=E(e,i);let l=zt.get(e);l||zt.set(e,l=/* @__PURE__ */new WeakMap);let c=l.get(a);c||l.set(a,c=/* @__PURE__ */new Map);const d=new Set(n),u=[...Object.values(e.elements),...Object.values(e.removedElements)].filter(e=>e.meta.editable==="frame").map(t=>{var n,r,o,s;let i=t.parent;for(;e.elements[i];)i=e.elements[i].parent;return[t.id,t.meta.origin,(r=(n=e.slides[i])==null?void 0:n.creation)==null?void 0:r.duplicateSourcePart,d.has(t.id)?(s=(o=e.elements[t.id])==null?void 0:o.ovr.extensions)==null?void 0:s["chart-data"]:void 0]}),f=JSON.stringify([t,n,u,e.retainedElementOrigins,(r=e.extensions)==null?void 0:r[Ot],(s=(o=e.extensions)==null?void 0:o["chart-shared"])==null?void 0:s[i]]),h=c.get(i);if((h==null?void 0:h.signature)===f)return h.reason;let p="旧图表编辑缺少可验证的合并结果";try{Rt(e,t,n)()}catch(e){p=e instanceof Error?e.message:String(e)}return c.set(i,{signature:f,reason:p}),p}const At="chart-shared",Xt=(e,t)=>{var n,r;return(r=(n=e.extensions)==null?void 0:n[At])==null?void 0:r[t]},Yt=/* @__PURE__ */new WeakMap;function It(e,t){const n=E(e,t.binding.chartPart),r=E(e,t.binding.workbookPart);let o=Yt.get(n);return(!o||o.workbook!==r)&&(o={workbook:r,ok:R(r,t).ok},Yt.set(n,o)),o.ok}function Jt(e,t,n=!1){var r,o,s,i;const a=it(e);if(!a.charts.has(t)||!E(e,t))return;const l=a.frames.get(t)??[];let c=(r=e.elements[l[0]])==null?void 0:r.parent;for(;c&&e.elements[c];)c=e.elements[c].parent;const d=c&&((s=(o=e.slides[c])==null?void 0:o.creation)==null?void 0:s.duplicateSourcePart);if(!n&&l.length===1&&Xt(e,t)===void 0&&!d&&((i=e.elements[l[0]].ovr.extensions)==null?void 0:i["chart-data"])!==void 0)return;const u=z(e,t);if(u.binding.mode==="cache")return u;const f=u.binding.workbookPart;if(!(u.binding.mode!=="workbook"||!f||Xt(e,f)!==void 0)&&!a.parts.some(n=>n!==t&&Object.values(C(e,n)).some(e=>!e.external&&e.target===f))&&It(e,u))return u}function Wt(e,t){const n=j(e,t);return!!(n&&Jt(e,n))}function Kt(e,t){var n,r;const o=j(e,t);return!o||!Jt(e,o)?!1:Xt(e,o)!==void 0||Ct(e,o)!==void 0||(((n=it(e).frames.get(o))==null?void 0:n.length)??0)>1||lt(((r=e.package)==null?void 0:r.parts[o])??E(e,o))}function _t(e,t){if(t.path[4]!=="dataset"||t.path.length<8)throw new Error("共享缓存只接受数据集字段");const n=["elements",e,"ovr","extensions","chart-data",...t.path.slice(5)];return t.op==="set"?{...t,path:n}:{...t,path:n}}function Ut(e,t){const n=Jt(e,t.path[3]);if(!n)throw new Error("图表没有共享缓存绑定");m(n,Pe(n,Ct(e,n.binding.chartPart))(_t(g,t),!1),0)}function Dt(e,t){const n=(it(e).frames.get(t.binding.chartPart)??[]).filter(t=>{var n;return((n=e.elements[t].ovr.extensions)==null?void 0:n["chart-data"])!==void 0});if(n.length)throw new Error(Nt(e,z(e,t.binding.chartPart),n));const r=Xt(e,t.binding.chartPart);if(r!==void 0){if(w(r,"共享缓存覆盖"),Object.keys(r).some(e=>e!=="dataset"))throw new Error("共享缓存覆盖包含未知字段");return w(r.dataset,"共享缓存数据集"),Ne(t,r.dataset,Ct(e,t.binding.chartPart))}}function Ft(e,t){var n,r,o,s;if(!Wt(e,t))return;const i=(r=(n=e.elements[t])==null?void 0:n.ovr.extensions)==null?void 0:r["chart-data"];if(i!==void 0)return i;try{return Dt(e,$(e,t))??{}}catch{return((s=(o=e.elements[t])==null?void 0:o.ovr.extensions)==null?void 0:s["chart-data"])??{}}}function Tt(e,t,n){try{Dt(e,$(e,t))}catch(e){n.binding={...n.binding,mode:"readonly",unresolved:!0,reason:`共享缓存覆盖无效:${e instanceof Error?e.message:String(e)}`},n.categories={},n.series={}}return n}function qt(e,t,n){const r=$(e,t),o=Pe(r,Ct(e,r.binding.chartPart)),s=e=>{const t=o(e,!0),n=["document","extensions",At,r.binding.chartPart,"dataset",...t.path.slice(5)];return t.op==="set"?{...t,path:n}:{...t,path:n}};return{forward:n.forward.map(s),inverse:n.inverse.map(s)}}const Lt=/* @__PURE__ */new WeakMap;function Bt(e){const t=N(e),n=A(t),r=te(t,n),o=X(t,n);for(const[e,t]of o.occupied)for(const n of t){const t=ee(e,n),o=r.get(t);(!o||o.kind==="blank")&&r.set(t,{kind:"unsupported",value:null})}for(const e of[o.merged,o.unsafe])for(const[t,n]of e)for(const e of n)r.set(ee(t,e),{kind:"unsupported",value:null});return{parts:t,map:n,baseline:r}}function Gt(e,t){const n=E(e,t);if(!n)throw new Error(`共享工作簿不存在:${t}`);let r=Lt.get(n);return r||(r=Bt(n),Lt.set(n,r)),r}function Ht(e,t){let n=0;return(r,o,s,a)=>{const l=s>1?s-1:s+a;let d=[...e].map(ce).filter(e=>e.sheet===r).reduce((e,t)=>Math.max(e,o?t.row:t.column),0)+1;const u=e=>ee(r,`${i(o?e:d)}${o?d:e}`),f=[l,...Array.from({length:a},(e,t)=>s+t)],p=()=>{for(const r of f){if(++n>c)throw new Error("共享新增系列区域搜索超过安全上限");const o=u(r),s=t.get(o);if(e.has(o)||s&&(s.kind==="unsupported"||s.value!==null))return!1}return!0};for(;d<=(o?1048576:16384)&&!p();)d++;if(d>(o?1048576:16384))throw new Error("工作簿没有可分配的共享系列区域");for(const t of f)e.add(u(t));const v=(e,t,n)=>{const o=ce(u(e)),s=ce(u(t));return{cache:n,formula:h({sheet:r,startColumn:o.column,startRow:o.row,endColumn:s.column,endRow:s.row})}};return{name:v(l,l,"string"),data:v(s,s+a-1,"number")}}}function Qt(e,t,n={}){const r=_e(e,t),o=/* @__PURE__ */new Map;for(const t of Object.keys(n)){const n=ce(t),r=e.horizontal?n.column:n.row,s=e.horizontal?n.row:n.column;if(n.sheet!==e.sheet||!e.lanes.has(s)||r<e.start||r>e.end)continue;const i=o.get(r)??/* @__PURE__ */new Set;i.add(s),o.set(r,i)}if([...o.values()].some(t=>t.size!==e.lanes.size))throw new Error("共享记录轴的删除字段尚未完整");const s=(t,n)=>ee(e.sheet,`${i(e.horizontal?n:t)}${e.horizontal?t:n}`);return{...Qe(e,r,new Set(o.keys())),key:s}}function Vt(e,t,n,r){if(!n.active.length&&!n.deleted.length)return;const o=Math.max(t.end,n.end);if((o-t.start+1)*t.lanes.size>c)throw new Error("共享记录扩展区域超过安全上限");if(o>(t.horizontal?16384:1048576))throw new Error("共享记录扩展超出工作表边界");const s=t.references??t.keys,i=new Set(e.charts.flatMap(e=>re(e.state)).filter(e=>!s.has(e)));for(const e of t.lanes)for(let s=t.start;s<=o;s++){const o=n.key(e,s),a=r.get(o);if(i.has(o)||!t.keys.has(o)&&a&&(a.kind==="unsupported"||a.value!==null))throw new Error(`共享记录扩展区域 ${decodeURIComponent(o)} 被其他内容占用`)}}function Zt(e,t,n,s,i){var a,l,d;if(!s.insertions||n.kind==="xy")return;const u=Oe(e,n),p=Qt(u,s.insertions,s.rows);if(!p.records.length)return;Vt(e,u,p,i);const v=u.charts.find(e=>e.state===n||e.state.binding.chartPart===n.binding.chartPart&&Object.keys(e.state.categories).every(e=>e in n.categories)),w=u.positions.get(v.id),g=r(Object.values(n.categories)),{start:m,end:b}=u.ranges.get(v.id),y=(a=Object.values(n.series).find(e=>e.bindings.categories))==null?void 0:a.bindings.categories,k=o((y==null?void 0:y.formula)??null),O=(l=y==null?void 0:y.hierarchy)==null?void 0:l.levels,E=u.horizontal?k.startRow:k.startColumn,S=p.records.filter(e=>w.size?e.anchor>=m&&e.anchor<=b:e.anchor===b);if(g.length+S.length>Y||(g.length+S.length)*(O??1)>c)throw new Error("共享类别或层级总量超过安全上限");const j=Te(e,s),x=/* @__PURE__ */new Set,M=/* @__PURE__ */new Map,C=new Set(S.map(e=>e.id));for(const e of S){const t=M.get(e.anchor)??[];t.push(e),M.set(e.anchor,t)}const $=/* @__PURE__ */new Map;for(const e of v.fields)if(e.parent){const t=$.get(e.path[1])??[];t.push(e),$.set(e.path[1],t)}const z=(e,r,s)=>{var a,l,c;const d=M.get(e)??[];let f=r;for(const e of d){const d=e.id,h=Q((f==null?void 0:f.order)??null,(s==null?void 0:s.order)??null),p=O?Array.from({length:O},(t,n)=>{var r;const o=(r=e.cells)==null?void 0:r[String(E+n)];return o==null?null:String(o)}):void 0,v=ie(Ue(e.id,E),j,i),w=p?p[p.length-1]??"":String(v??""),g={id:d,order:h,label:w,...p?{levels:p,levelParent:e.parent??(r==null?void 0:r.id)??null}:{},...e.removed?{removed:!0}:{}};t.categories[d]=g;for(const r of Object.values(t.series)){if(r.plotKind==="scatter"||r.plotKind==="bubble")continue;const t=o(((l=(a=n.series[r.id])==null?void 0:a.bindings.values)==null?void 0:l.formula)??null);if(!t)continue;const s=u.horizontal?t.startRow:t.startColumn,i=(c=e.cells)==null?void 0:c[String(s)];r.points[d]={id:d,order:h,value:typeof i=="number"?i:null,...e.removed?{removed:!0}:{}}}f=g}};g.length||z(b);let P=null;for(let e=0;e<g.length;e++){const n=g[e],r=t.categories[n.id];for(const e of $.get(n.id)??[]){const t=(d=s.cells)==null?void 0:d[e.key];if(t===void 0)continue;const n=se(t),o="parent"in n?De(n.parent):void 0;if(!o||!C.has(o.id))continue;const i=e.parent.level;r.levels=r.levels.map((e,t)=>t===i?null:e),r.levelClears={...r.levelClears,[i]:o.id},x.add(r.id)}r.levelParent=P,P=n.id,z(w.get(n.id),r,g[e+1])}f(t);for(const e of Object.values(t.categories))delete e.levelParent,x.has(e.id)&&(delete e.levelClears,n.categories[e.id].levelClears&&(e.levelClears=n.categories[e.id].levelClears)),!(e.id in n.categories)&&e.removed&&e.levels&&(e.levels=Array(e.levels.length).fill(null));if(!p.active.length)return;const R=g.filter(e=>!t.categories[e.id].removed).map(e=>p.originalAxis(w.get(e.id)));R.push(...S.filter(e=>!e.removed).map(p.insertedAxis));const N=R.length?Math.min(...R):p.originalAxis(m),A=R.length?Math.max(...R):N;for(const e of Object.values(t.series)){if(e.plotKind==="scatter"||e.plotKind==="bubble")continue;const t=n.series[e.id];if(t)for(const[n,r]of Object.entries(t.bindings)){if(n==="name")continue;const t=o((r==null?void 0:r.formula)??null);t&&(e.bindings[n]={...r,formula:h({...t,...u.horizontal?{startColumn:N,endColumn:A}:{startRow:N,endRow:A}})})}}}function en(e,t){const n=ce(t);return String(e.horizontal?n.row:n.column)}function tn(e,t){const n=[],r=(e,t)=>{(t.active.length||t.deleted.length)&&n.push({...e,end:Math.max(e.end,t.end)})};for(const n of Object.keys(t.insertions??{})){const o=Ee(e,n);r(o,Qt(o,t.insertions,t.rows))}for(const[n,o]of Object.entries(t.xyRecords??{})){const t=Be(e,n);r(t,tt(t,o))}n.sort((e,t)=>e.key<t.key?-1:e.key>t.key?1:0);for(let e=0;e<n.length;e++)for(let t=0;t<e;t++){const r=n[e],o=n[t];if(r.sheet!==o.sheet)continue;if(r.horizontal===o.horizontal?r.start<=o.end&&o.start<=r.end&&[...r.lanes].some(e=>o.lanes.has(e)):[...r.lanes].some(e=>e>=o.start&&e<=o.end)&&[...o.lanes].some(e=>e>=r.start&&e<=r.end))throw new Error(`共享记录扩展区域 ${decodeURIComponent(r.key)} 与 ${decodeURIComponent(o.key)} 重叠`)}}function nn(e,t){const n=/* @__PURE__ */new Map,r=e=>{e!=null&&e.xyOwners.length&&n.set(e.key,e)};for(const n of Object.keys(t.insertions??{}))r(Ee(e,n));if(t.rows)for(const n of e.charts){const o=n.fields.filter(e=>Object.prototype.hasOwnProperty.call(t.rows,e.key));o.some(e=>e.path[0]==="categories")&&r(ye(e,n.id));for(const t of o)if(t.path[0]==="series"&&t.path[2]==="points"){const o=n.state.series[t.path[1]];(o.plotKind==="scatter"||o.plotKind==="bubble")&&r(ke(e,n.id,o.id))}}return[...n.values()].map(e=>{var n;const r=Qt(e,t.insertions,t.rows);return{family:{...e,owners:e.xyOwners,identities:/* @__PURE__ */new Set,positions:new Set(e.xyOwners.flatMap(e=>[...e.positions.values()])),anchors:new Set(e.xyOwners.flatMap(e=>[...e.positions.values()]))},record:{insertions:(n=t.insertions)==null?void 0:n[e.key],removed:Object.fromEntries(r.deleted.map(e=>[String(e),!0]))}}})}function rn(e,t,n,s,i){var a;const l=Object.entries(s.xyRecords??{}).map(([t,n])=>({family:Be(e,t),record:n}));if(l.push(...nn(e,s)),!!l.length){for(const{family:s,record:c}of l){const l=tt(s,c);Vt(e,s,l,i);for(const e of He(s,n)){const i=n.series[e.seriesId],d=t.series[e.seriesId],u=r(Object.values(i.points)),f=l.records.filter(t=>e.positions.size?t.anchor>=e.start&&t.anchor<=e.end:t.anchor===e.start-1);if(u.length+f.length>Y)throw new Error("共享 XY 数据点超过安全上限");const p=/* @__PURE__ */new Map;for(const e of f){const t=p.get(e.anchor)??[];t.push(e),p.set(e.anchor,t)}for(const[t,n]of e.positions)(a=c.removed)!=null&&a[String(n)]&&(d.points[t].removed=!0);const v=(t,n,r)=>{let o=(n==null?void 0:n.order)??null;for(const n of p.get(t)??[]){o=Q(o,(r==null?void 0:r.order)??null);const t=t=>{var r;return(r=n.cells)==null?void 0:r[String(e.lanes.get(t))]},s=n.id;d.points[s]={id:s,order:o,x:t("x")??null,value:t("value")??null,...d.plotKind==="bubble"?{size:t("size")??null}:{},...n.removed?{removed:!0}:{}}}};if(u.length||v(e.start-1,void 0,void 0),u.forEach((t,n)=>v(e.positions.get(t.id),t,u[n+1])),!l.active.length&&!l.deleted.length)continue;const w=[...e.positions].filter(([e])=>!d.points[e].removed).map(([,e])=>l.originalAxis(e));w.push(...f.filter(e=>!e.removed).map(l.insertedAxis));const g=w.length?Math.min(...w):l.originalAxis(e.start),m=w.length?Math.max(...w):g;for(const e of["x","y","size"]){const t=i.bindings[e];if(!t)continue;const n=o(t.formula);d.bindings[e]={...t,formula:h({...n,...s.horizontal?{startColumn:g,endColumn:m}:{startRow:g,endRow:m}})}}}}if(f(t),t.binding.mode==="readonly")throw new Error(t.binding.reason??"共享 XY 数据矩阵不可写")}}function on(e,t,n){var r,s,i,a,l;tn(e,t);const c=/* @__PURE__ */new Map;for(const r of e.charts){const o=r.state.binding.chartPart;if(c.has(o))continue;const s=structuredClone(r.state);Ce(s,t.rows),pt(s,t.series),Zt(e,s,r.state,t,n),rn(e,s,r.state,t,n);const i=I(s,Xe(r.state,t.addedSeries));if(i.deferred)throw new Error("共享新增系列字段尚未完整或不满足数据约束");c.set(o,i.state)}const d=[...c].flatMap(([t,n])=>{const r=e.charts.find(e=>e.state.binding.chartPart===t).state;return Object.values(n.series).filter(e=>!r.series[e.id]).map(e=>({part:t,id:e.id,state:n}))}).sort((e,t)=>e.part<t.part?-1:e.part>t.part?1:e.id<t.id?-1:e.id>t.id?1:0),u=new Set(e.charts.flatMap(e=>re(e.state)));for(const e of c.values())for(const t of re(e))u.add(t);const f=Ht(u,n);for(const t of d){const{state:n,id:c}=t,d=n.series[c];if(n.binding.mode==="readonly")throw new Error(n.binding.reason??"共享数据矩阵不可写");const u=d.plotKind==="scatter"||d.plotKind==="bubble",h=e.charts.find(e=>e.state.binding.chartPart===t.part).state,p=Object.values(n.series).find(e=>{var t,n;return h.series[e.id]&&e.plotKind===d.plotKind&&(u?(t=e.bindings.x)==null?void 0:t.formula:(n=e.bindings.values)==null?void 0:n.formula)}),v=o((u?(r=p==null?void 0:p.bindings.x)==null?void 0:r.formula:(s=p==null?void 0:p.bindings.values)==null?void 0:s.formula)??null);if(!v)throw new Error("共享新增系列没有可解释的数据区域");const w=u?fe(h.series[p.id]).horizontal:((a=(i=p==null?void 0:p.bindings.categories)==null?void 0:i.hierarchy)==null?void 0:a.orientation)==="columns"||!((l=p==null?void 0:p.bindings.categories)!=null&&l.hierarchy)&&v.startRow===v.endRow&&v.startColumn<v.endColumn,g=w?v.startColumn:v.startRow,m=Math.max(1,Object.values(u?d.points:n.categories).filter(e=>!e.removed).length),b=f(v.sheet,w,g,m);n.series[c]={...d,bindings:u?{...d.bindings,name:b.name,x:b.data,y:f(v.sheet,w,g,m).data,...d.plotKind==="bubble"?{size:f(v.sheet,w,g,m).data}:{}}:{...d.bindings,name:b.name,values:b.data,categories:p.bindings.categories}}}return d}function sn(e,t){const n=structuredClone(e??{});for(const e of t){let t=n,r=!1;for(const n of e.path.slice(5,-1)){if(t[n]===void 0){if(e.op==="del"){r=!0;break}t[n]=/* @__PURE__ */Object.create(null)}w(t[n],"共享记录字段"),t=t[n]}if(r)continue;const o=e.path[e.path.length-1];e.op==="set"?t[o]=e.value:delete t[o]}return n}function an(e,t,n,s,i,a,l){var c,d,u,f,h,v;const w=t.charts.find(e=>e.id===n).state;if(w.kind==="xy")return;const g=s.forward.find(e=>e.path[5]==="categories"),m=s.forward.find(e=>{var t;return e.path[5]==="series"&&e.path[7]==="points"&&((t=w.series[e.path[6]])==null?void 0:t.bindings.categories)}),b=String((g==null?void 0:g.path[6])??(m==null?void 0:m.path[8])??"");if(!b||b in w.categories)return;const y=ye(t,n),k=_e(y,a.insertions),O=k.find(e=>e.id===b),E=s.forward.some(e=>e.path[5]==="categories"&&e.path[7]==="id"&&e.op==="set");if(!O&&!E)throw new Error("共享类别没有稳定的新增记录");const S=["document","extensions","chart-shared",t.workbook,"insertions",y.key,b],j=[],x=[],M=(e,t,n)=>{const r=[...S,...e];j.push({op:"set",path:r,value:t,origin:i}),x.unshift(n===void 0?{op:"del",path:r,origin:i}:{op:"set",path:r,value:n,origin:i})};if(E){const t=p(e,n),o=r(Object.values(t.categories).filter(e=>!e.removed)),s=o[o.length-1],a=k.find(e=>e.id===(s==null?void 0:s.id)),l=(a==null?void 0:a.anchor)??(s?(c=y.positions.get(n))==null?void 0:c.get(s.id):void 0)??y.ranges.get(n).end,u=k.filter(e=>e.anchor===l),f=Q(((d=u[u.length-1])==null?void 0:d.order)??null,null);M(["id"],b,void 0),M(["anchor"],l,void 0),M(["order"],f,void 0),M(["parent"],(a==null?void 0:a.id)??null,void 0),j.push({op:"del",path:[...S,"removed"],origin:i})}else if((g==null?void 0:g.path[7])==="removed")return M(["removed"],!0,O==null?void 0:O.removed),{forward:j,inverse:x};const C=(u=Object.values(w.series).find(e=>e.bindings.categories))==null?void 0:u.bindings.categories,$=o((C==null?void 0:C.formula)??null),z=y.horizontal?$.startRow:$.startColumn;for(const e of s.forward)if(e.op==="set"){if(e.path[5]==="categories"){const t=e.path[7];if(t==="label"&&!(C!=null&&C.hierarchy)||t==="levels"){const n=String(z+(t==="levels"?Number(e.path[8]):0));M(["cells",n],e.value,(f=O==null?void 0:O.cells)==null?void 0:f[n])}}else if(e.path[7]==="points"&&e.path[9]==="value"&&String(e.path[6])in w.series){const t=w.series[e.path[6]],n=o(((h=t.bindings.values)==null?void 0:h.formula)??null);if(!n)throw new Error("共享系列没有数值记录轴");const r=String(y.horizontal?n.startRow:n.startColumn);M(["cells",r],e.value,(v=O==null?void 0:O.cells)==null?void 0:v[r])}}const P=s.forward.filter(e=>e.path[5]==="series"&&!(String(e.path[6])in w.series)&&e.path[7]==="points"&&e.path[9]==="value");P.length&&j.push(...Ae(w,t.workbook,{forward:P,inverse:[]}).forward);const R={...a,insertions:sn(a.insertions,j.filter(e=>e.path[4]==="insertions")),addedSeries:P.length?sn(a.addedSeries,j.filter(e=>e.path[4]==="addedSeries")):a.addedSeries};for(const e of/* @__PURE__ */new Set([...y.charts,...y.xyOwners.map(e=>e.chart)])){const n=structuredClone(e.state);if(Ce(n,a.rows),Zt(t,n,e.state,R,l),rn(t,n,e.state,R,l),n.binding.mode==="readonly")throw new Error(n.binding.reason??"共享类别矩阵不可写")}return on(t,R,l),{forward:j,inverse:E?[{op:"set",path:[...S,"removed"],value:!0,origin:i}]:x}}function ln(e,t,n,o,s,i,a,l,c,d){var u,f;const h=n.xyOwners.find(e=>e.chart.id===o&&e.seriesId===s),v=h.chart.state.series[s],w=_e(n,c.insertions),g=a.forward.some(e=>e.path[9]==="removed"&&e.op==="set"&&e.value===!0);if(g&&v.points[i])return $e(e,t,n,h.positions.get(i),l,c,d);const m=w.find(e=>e.id===i),b=a.forward.some(e=>e.path[9]==="id");if(!m&&!b)throw new Error("共享 XY 新增点缺少共同记录");const y=["document","extensions","chart-shared",t.workbook,"insertions",n.key,i],k=[],O=[],E=(e,t,n)=>{const r=[...y,...e];k.push({op:"set",path:r,value:t,origin:l}),O.unshift(n===void 0?{op:"del",path:r,origin:l}:{op:"set",path:r,value:n,origin:l})};if(b){const t=p(e,o).series[s],n=r(Object.values(t.points).filter(e=>!e.removed)),a=n[n.length-1],c=w.find(e=>e.id===(a==null?void 0:a.id)),d=(c==null?void 0:c.anchor)??(a?h.positions.get(a.id):void 0)??h.end,f=w.filter(e=>e.anchor===d);E(["id"],i,void 0),E(["anchor"],d,void 0),E(["order"],Q(((u=f[f.length-1])==null?void 0:u.order)??null,null),void 0),E(["parent"],(c==null?void 0:c.id)??null,void 0),k.push({op:"del",path:[...y,"removed"],origin:l})}if(g)E(["removed"],!0,m==null?void 0:m.removed);else{const e=/* @__PURE__ */new Map;for(const t of a.forward){const n=String(t.path[9]);if(t.op!=="set"||!["x","value","size"].includes(n))continue;const r=h.lanes.get(n);if(r===void 0)throw new Error("共享 XY 字段没有来源区域");if(e.has(r)&&e.get(r)!==t.value)throw new Error("同一共享 XY 单元格不能同时写入不同数值");e.set(r,t.value)}for(const[t,n]of e)E(["cells",String(t)],n,(f=m==null?void 0:m.cells)==null?void 0:f[String(t)])}const S={...c,insertions:sn(c.insertions,k)};for(const e of/* @__PURE__ */new Set([...n.charts,...n.xyOwners.map(e=>e.chart)])){const n=structuredClone(e.state);if(Ce(n,S.rows),Zt(t,n,e.state,S,d),rn(t,n,e.state,S,d),n.binding.mode==="readonly")throw new Error(n.binding.reason??"共同记录不可写")}return on(t,S,d),{forward:k,inverse:b?[{op:"set",path:[...y,"removed"],value:!0,origin:l}]:O}}function cn(e,t,n,o,s,i,a){var l,c,d,u;const f=o.forward.find(e=>e.path[5]==="series"&&e.path[7]==="points");if(!f)return;const h=t.charts.find(e=>e.id===n).state,v=f.path[6],w=f.path[8],g=h.series[v];if(!g||g.plotKind!=="scatter"&&g.plotKind!=="bubble")return;const m=f.path[9]==="removed";if(g.points[w]&&!m)return;const b=ke(t,n,v);if(b)return ln(e,t,b,n,v,w,o,s,i,a);const y=Le(t,n,v),k=y.owners.find(e=>e.chart.id===n&&e.seriesId===v),O=((l=i.xyRecords)==null?void 0:l[y.key])??{},E=tt(y,O),S=["document","extensions","chart-shared",t.workbook,"xyRecords",y.key],j=[],x=[],M=(e,t,n)=>{const r=[...S,...e];j.push({op:"set",path:r,value:t,origin:s}),x.unshift(n===void 0?{op:"del",path:r,origin:s}:{op:"set",path:r,value:n,origin:s})},C=E.records.find(e=>e.id===w),$=o.forward.some(e=>e.path[9]==="id");if(m&&g.points[w]){const e=String(k.positions.get(w));M(["removed",e],!0,(c=O.removed)==null?void 0:c[e])}else{if(!C&&!$)throw new Error("共享 XY 新增点缺少稳定记录");if($){const t=p(e,n).series[v],o=r(Object.values(t.points).filter(e=>!e.removed)),i=o[o.length-1],a=E.records.find(e=>e.id===(i==null?void 0:i.id)),l=(a==null?void 0:a.anchor)??(i?k.positions.get(i.id):void 0)??k.end,c=E.records.filter(e=>e.anchor===l);M(["insertions",w,"id"],w,void 0),M(["insertions",w,"anchor"],l,void 0),M(["insertions",w,"order"],Q(((d=c[c.length-1])==null?void 0:d.order)??null,null),void 0),j.push({op:"del",path:[...S,"insertions",w,"removed"],origin:s})}if(m)M(["insertions",w,"removed"],!0,C==null?void 0:C.removed);else{const e=/* @__PURE__ */new Map;for(const t of o.forward){const n=String(t.path[9]);if(!["x","value","size"].includes(n)||t.op!=="set")continue;const r=k.lanes.get(n);if(r===void 0)throw new Error("共享 XY 字段没有来源区域");if(e.has(r)&&e.get(r)!==t.value)throw new Error("同一共享 XY 单元格不能同时写入不同数值");e.set(r,t.value)}for(const[t,n]of e)M(["insertions",w,"cells",String(t)],n,(u=C==null?void 0:C.cells)==null?void 0:u[String(t)])}}const z={...i,xyRecords:sn(i.xyRecords,j)};return et(t,z.xyRecords),on(t,z,a),{forward:j,inverse:$?[{op:"set",path:[...S,"insertions",w,"removed"],value:!0,origin:s}]:x}}const dn="chart-shared";function un(e,t){var n,r;return(r=(n=e.extensions)==null?void 0:n[dn])==null?void 0:r[t]}const fn=(e,t)=>!!ht(e,t);function hn(e,t){var n;return(n=un(e,t))==null?void 0:n.cells}function pn(e,t,n){let r=e;for(const e of t.slice(0,-1))r=r[e];r[t[t.length-1]]=n}const vn=/* @__PURE__ */new WeakMap;function wn(e,t,n){if(vn.has(e))return vn.get(e);const r=gn(e,t,n);return vn.set(e,r),r}function gn(e,t,n){var r;if(e.reason)return e.reason;const o=e.charts.map(e=>e.state);for(const e of o){const t=R(n,e,!0,o);if(!t.ok)return t.reason}for(const n of e.charts)for(const e of n.fields){const n=t.get(e.key)??{kind:"blank",value:null};if(((r=e.parent)==null?void 0:r.raw)===null&&n.value===null&&n.kind!=="unsupported")continue;const o=e.kind==="text"?n.value===null&&e.nullable?null:String(n.value??""):n.value;if(n.kind==="unsupported"||o!==e.value)return`共享单元格 ${decodeURIComponent(e.key)} 缓存与工作簿不一致`}}function mn(e,t,n){const r=ht(e,t);return r?bn(e,r,n):n}function bn(e,t,n){var r,o,s;const i=t.charts.find(e=>e.state.binding.mode!=="workbook");if(i)return n.binding={...n.binding,mode:"readonly",reason:`关联图表 ${i.id} 无法同步:${i.state.binding.reason}`},n;const{baseline:a}=Gt(e,t.workbook),l=wn(t,a,E(e,t.workbook));if(l)return n.binding={...n.binding,mode:"readonly",reason:l},n;const c=un(e,t.workbook);if(!c)return n;const d=structuredClone(n);try{ot(t,c,a),tn(t,c);const i=Te(t,c),l=(r=un(e,t.workbook))==null?void 0:r.heads,u=[];for(const e of oe(n)){if(e.parent){const{level:t,raw:r}=e.parent,s=(o=l==null?void 0:l[e.parent.family])==null?void 0:o[e.key],c=ie(e.key,i,a),d=Object.prototype.hasOwnProperty.call(i,e.key)?c===null?null:String(c):s===!0&&r===null?String(e.value??""):r,f=(s===!1||s===void 0&&r===null)&&(d===null||d===u[t])?null:d;pn(n,e.path,f),f!==null&&(u.fill(null,t+1),u[t]=f);continue}if(!Object.prototype.hasOwnProperty.call(i,e.key))continue;const t=ie(e.key,i,a),r=e.kind==="text"?t===null&&e.nullable?null:String(t??""):t;pn(n,e.path,r),e.path[0]==="categories"&&e.path[2]==="levels"&&pn(n,["categories",e.path[1],"label"],String(r??""))}if(Ce(n,(s=un(e,t.workbook))==null?void 0:s.rows),pt(n,c.series),Zt(t,n,d,c,a),rn(t,n,d,c,a),c.addedSeries){n=I(n,Xe(d,c.addedSeries)).state;for(const e of on(t,c,a))e.part===n.binding.chartPart&&n.series[e.id]&&(n.series[e.id]={...n.series[e.id],bindings:e.state.series[e.id].bindings})}return n}catch(e){return d.binding={...d.binding,mode:"readonly",reason:`共享覆盖无效:${e instanceof Error?e.message:String(e)}`},d}}function yn(e,t,n,r){var o,s,i,a,l,c;const d=ht(e,t);if(!d)return n;const u=cn(e,d,t,n,r,un(e,d.workbook)??{},Gt(e,d.workbook).baseline);if(u)return u;const f=an(e,d,t,n,r,un(e,d.workbook)??{},Gt(e,d.workbook).baseline);if(f)return f;const h=Ae(d.charts.find(e=>e.id===t).state,d.workbook,n);if(h){const t=un(e,d.workbook),n=sn(t==null?void 0:t.addedSeries,h.forward);return on(d,{...t,addedSeries:n},Gt(e,d.workbook).baseline),h}const v=d.charts.find(e=>e.id===t).fields,w=[],g=[],m=hn(e,d.workbook)??{},b=(o=un(e,d.workbook))==null?void 0:o.heads,y=/* @__PURE__ */new Map;if(n.forward.length===1&&n.forward[0].path[5]==="series"&&n.forward[0].path[7]==="removed"){const o=d.charts.find(e=>e.id===t).state,l=Object.keys(o.series).indexOf(String(n.forward[0].path[6]));if(l<0)throw new Error("共享系列没有来源身份");const c=o.binding.chartPart,u=String(l),f=["document","extensions",dn,d.workbook,"series",c,u],h=(a=(i=(s=un(e,d.workbook))==null?void 0:s.series)==null?void 0:i[c])==null?void 0:a[u];return{forward:[{op:"set",path:f,value:!0,origin:r}],inverse:[h===void 0?{op:"del",path:f,origin:r}:{op:"set",path:f,value:h,origin:r}]}}if(n.forward.some(e=>e.path[5]==="categories"&&e.path[7]==="removed")){const o=n.forward.find(e=>e.path[5]==="categories"&&e.path[7]==="removed"),s=String(o.path[6]),i=ye(d,t),a=(l=i.positions.get(t))==null?void 0:l.get(s);if(a===void 0)throw new Error("共享类别缺少来源记录位置");return $e(e,d,i,a,r,un(e,d.workbook)??{},Gt(e,d.workbook).baseline)}const k=n.forward.filter(e=>e.path[5]==="categories");if(k.length){const n=d.charts.find(e=>e.id===t).state,r=p(e,t),o=structuredClone(r);for(const e of k)if(e.path[7]!=="levelClears"){if(e.op!=="set"||!v.some(t=>JSON.stringify(t.path)===JSON.stringify(e.path.slice(5))))throw new Error("共享工作簿的此类结构编辑尚未实现");pn(o,e.path.slice(5).map(String),e.value)}const{parts:s,map:i}=Gt(e,d.workbook),a=new Set(k.flatMap(e=>v.filter(t=>t.parent&&JSON.stringify(t.path)===JSON.stringify(e.path.slice(5))).map(e=>e.key))),l=new Map(oe(r).flatMap(e=>{const t=v.find(t=>JSON.stringify(t.path)===JSON.stringify(e.path));return t?[[e.key,t.key]]:[]})),c=new Map(oe(r).filter(e=>e.path[0]==="categories"&&!(e.path[1]in n.categories)).map(e=>[e.key,Ue(e.path[1],en(ye(d,t),e.key))])),u=new Set([...l].filter(([,e])=>a.has(e)).map(([e])=>e));for(const[e,t]of le(n,r,o,s,i,u))l.has(e)&&y.set(l.get(e)??e,"parent"in t?{parent:l.get(t.parent)??c.get(t.parent)??t.parent}:t)}for(const e of n.forward){if(e.path[5]==="categories"&&e.path[7]==="levelClears")continue;const t=v.find(t=>JSON.stringify(t.path)===JSON.stringify(e.path.slice(5)));if(!t||e.op!=="set")throw new Error("共享工作簿的此类结构编辑尚未实现");if(t.parent){const n=["document","extensions",dn,d.workbook,"heads",t.parent.family,t.key],o=(c=b==null?void 0:b[t.parent.family])==null?void 0:c[t.key];w.push({op:"set",path:n,value:e.value!==null,origin:r}),g.unshift(o===void 0?{op:"del",path:n,origin:r}:{op:"set",path:n,value:o,origin:r})}else{const n=y.get(t.key);if(e.path[7]==="points"&&n&&"value"in n&&n.value!==e.value)throw new Error("同一共享 XY 单元格不能同时写入不同数值");y.has(t.key)||y.set(t.key,{value:e.value})}}for(const[e,t]of y){const n=["document","extensions",dn,d.workbook,"cells",e];w.push({op:"set",path:n,value:JSON.stringify(t),origin:r}),g.unshift(Object.prototype.hasOwnProperty.call(m,e)?{op:"set",path:n,value:m[e],origin:r}:{op:"del",path:n,origin:r})}return{forward:w,inverse:g}}function kn(e,t){if(!t)return Object.values(e.elements).filter(t=>j(e,t.id)).map(e=>e.id);const n=[t.path[3]];return Object.values(e.elements).filter(t=>j(e,t.id)&&(n.includes(j(e,t.id))||n.includes($(e,t.id,!0).binding.workbookPart??""))).map(e=>e.id)}function On(e,t){if(t.path[4]==="dataset")return Ut(e,t);const n=ut(e,t.path[3]);if(!n)throw new Error("图表没有共享工作簿绑定");const r=n.charts.find(e=>e.state.binding.mode!=="workbook");if(r)throw new Error(`关联图表 ${r.id} 无法同步:${r.state.binding.reason}`);const{baseline:o}=Gt(e,n.workbook),s=wn(n,o,E(e,n.workbook));if(s)throw new Error(s);nt(n,t,o)}function En(e){var t;const n=(t=e.extensions)==null?void 0:t[dn];if(n!==void 0){if(!n||typeof n!="object"||Array.isArray(n))throw new Error("共享覆盖容器无效");for(const[t,r]of Object.entries(n)){const n=Jt(e,t);if(n){Dt(e,n);continue}const o=ut(e,t);if(!o)throw new Error(`共享工作簿没有可校验的图表依赖:${t}`);ot(o,r,Gt(e,t).baseline)}}}function Sn(e,t,n,r,o){for(const s of Object.keys(n.insertions??{})){const i=Ee(t,s),a=Qt(i,n.insertions,n.rows);if(Vt(t,i,a,r),!a.active.length)continue;const l=/* @__PURE__ */new Set([...i.charts,...i.xyOwners.map(e=>e.chart)]),c=i.numericLanes;for(const e of i.lanes)for(let t=i.start;t<=Math.max(i.end,a.end);t++)o(a.key(e,t),null);for(const n of l){const r=bn(e,t,structuredClone(n.state));if(r.binding.mode==="readonly")throw new Error(r.binding.reason??"共享类别数据不可保存");const s=new Set(i.xyOwners.filter(e=>e.chart===n).map(e=>e.seriesId)),a=[...ne(r),...oe(r).filter(e=>e.path[2]==="points"&&s.has(e.path[1]))];for(const e of a){if(e.path[0]!=="categories"&&!(e.path[2]==="points"&&e.path[1]in n.state.series))continue;const t=ce(e.key),r=i.horizontal?t.row:t.column,s=c.has(r)&&e.value!==null?Number(e.value):e.value;o(e.key,s)}}}}function jn(e,t,n,r,o){for(const[s,i]of Object.entries(n.xyRecords??{})){const n=Be(t,s),a=tt(n,i);if(Vt(t,n,a,r),!a.active.length&&!a.deleted.length)continue;for(const e of n.lanes)for(let t=n.start;t<=Math.max(n.end,a.end);t++)o(a.key(e,t),null);const l=new Set(n.owners.map(e=>e.chart));for(const r of l){const s=bn(e,t,structuredClone(r.state));if(s.binding.mode==="readonly")throw new Error(s.binding.reason??"共享 XY 记录不可保存");const i=new Set(n.owners.filter(e=>e.chart===r).map(e=>e.seriesId));for(const e of oe(s))e.path[2]==="points"&&i.has(e.path[1])&&o(e.key,e.value)}}}function xn(e,t){var n,r;const o=(r=(n=e.extensions)==null?void 0:n["chart-shared"])==null?void 0:r[t];if(!o)return;const s=E(e,t);if(!s)throw new Error(`共享工作簿不存在:${t}`);const{parts:a,map:l,baseline:c}=Gt(e,t),d=ut(e,t),u=d?Te(d,o):o.cells??{},f=/* @__PURE__ */new Map,h=(e,t)=>{const n=e.lastIndexOf("!"),r=decodeURIComponent(e.slice(0,n)),o=f.get(r)??/* @__PURE__ */new Map;o.set(e.slice(n+1),{kind:typeof t=="number"?"number":"string",value:t}),f.set(r,o)},p=/* @__PURE__ */new Set,v=o.series?vt(e,t):/* @__PURE__ */new Set;for(const e of v)h(e,null);for(const[e,t]of Object.entries(o.rows??{})){const n=ce(e),{horizontal:r,end:o}=Se(t);for(let e=r?n.column:n.row;e<=o;e++){const t=ee(n.sheet,`${i(r?e:n.column)}${r?n.row:e}`);p.add(t),h(t,null)}}for(const e of/* @__PURE__ */new Set([...p,...Object.keys(o.cells??{})])){if(v.has(e)||Object.prototype.hasOwnProperty.call(o.rows??{},e))continue;const t=Me(e,o.rows??{});h(t,ie(e,u,c))}if(o.insertions){const n=ut(e,t);if(!n)throw new Error("共享新增类别没有工作簿依赖图");Sn(e,n,o,c,h)}if(o.xyRecords){if(!d)throw new Error("共享 XY 记录没有工作簿依赖图");jn(e,d,o,c,h)}if(o.addedSeries){const n=ut(e,t);if(!n)throw new Error("共享新增系列没有工作簿依赖图");for(const e of on(n,o,c))if(!e.state.series[e.id].removed)for(const t of oe(e.state))t.path[0]==="series"&&t.path[1]===e.id&&h(t.key,t.value)}return J(s,a,l,f)}function Mn(e){var t,n;En(e);const r=/* @__PURE__ */Object.create(null),o=/* @__PURE__ */Object.create(null),s=(t=e.extensions)==null?void 0:t["chart-shared"];for(const t of dt(e)){if(!(s!=null&&s[t])&&!e.saveState.baselines[t])continue;const i=ut(e,t);if(!i||i.charts.some(t=>Jt(e,t.state.binding.chartPart)))continue;const a=E(e,t);if(!a)throw new Error(`共享工作簿不存在:${t}`);const l=bn(e,i,structuredClone(i.charts[0].state));if(l.binding.mode==="readonly")throw new Error(l.binding.reason??"共享图表只读");o[t]=e.saveState.baselines[t]??a.slice(),r[t]=xn(e,t)??a;for(const t of i.charts.filter(e=>e.native)){const s=t.state.binding.chartPart,a=E(e,s);if(!a)throw new Error(`共享图表部件不存在:${s}`);const l=bn(e,i,structuredClone(t.state));if(JSON.stringify(l)===JSON.stringify(t.state)){e.saveState.baselines[s]&&(r[s]=a,o[s]=a);continue}const c=P(G(a).root,void 0,g);r[s]=H(W(a,g,l,void 0,{prefix:g,frames:((n=c==null?void 0:c.scopes)==null?void 0:n.frames)??[]})),o[s]=e.saveState.baselines[s]??a.slice()}}return Object.keys(r).length?{changes:r,baselines:o}:void 0}function Cn(e){var t;const n=Mn(e),r={...n==null?void 0:n.changes},o={...n==null?void 0:n.baselines},s=new Set(Object.values(e.elements).map(t=>j(e,t.id)));for(const n of it(e).charts){if(s.has(n))continue;const i=Jt(e,n);if(!i)continue;const a=I(structuredClone(i),Dt(e,i)).state,l=E(e,n),c=a.binding.workbookPart;if(K(a,I(structuredClone(i),void 0).state)){e.saveState.baselines[n]&&(r[n]=l,o[n]=l),c&&e.saveState.baselines[c]&&(r[c]=o[c]=E(e,c));continue}if(c){const t=E(e,c);if(!t)throw new Error(`内嵌工作簿不存在:${c}`);const n=_(t,a);Object.assign(a,n.state),r[c]=n.bytes,o[c]=e.saveState.baselines[c]??t.slice()}const d=P(G(l).root,void 0,g);r[n]=H(W(l,g,a,void 0,{prefix:g,frames:((t=d==null?void 0:d.scopes)==null?void 0:t.frames)??[]})),o[n]=e.saveState.baselines[n]??l.slice()}return Object.keys(r).length?{changes:r,baselines:o}:void 0}const $n=/* @__PURE__ */new WeakMap;function zn(e,t,n,r,o){const s=r??j(e,t),i=s&&E(e,s);if(!s||!i)return o();let a=$n.get(i);a||(a=/* @__PURE__ */new Map,$n.set(i,a));const l=JSON.stringify([s,t,r?"":x(e,t),n]),c=E(e,M(s)),d=a.get(l),u=d==null?void 0:d.state.binding.workbookPart;if(d&&d.relationships===c&&d.workbook===(u?E(e,u):void 0))return structuredClone(d.state);const f=o();return a.set(l,{state:f,relationships:c,workbook:f.binding.workbookPart?E(e,f.binding.workbookPart):void 0}),structuredClone(f)}function Pn(e,t,n,r){var o;const s=G(n).root,i=Object.values(e.elements).filter(n=>j(e,n.id)===t),a=P(s,x(e,r),r);if(!(i.length<2&&!(a!=null&&a.scopes)))return{prefix:((o=a==null?void 0:a.scopes)==null?void 0:o.prefix)??r,frames:i.map(t=>{var n,r;return[x(e,t.id),((r=(n=P(s,x(e,t.id),t.id))==null?void 0:n.scopes)==null?void 0:r.prefix)??t.id]}).sort(([e],[t])=>e<t?-1:e>t?1:0)}}function Rn(e,t,n){var r,o;if(n.kind!=="group")return n;const s=j(e,t);if(!s||((o=(r=e.extensions)==null?void 0:r["chart-shared"])==null?void 0:o[s])===void 0&&!(it(e).frames.get(s)??[]).some(t=>{var n;return((n=e.elements[t].ovr.extensions)==null?void 0:n["chart-data"])!==void 0}))return n;const i=Jt(e,s);if(!i)return n;try{return Dt(e,i),n}catch{}const{children:a,...l}=n;return{...l,kind:"unsupported",label:"图表编辑未恢复"}}let Nn=!1;function An(e,t){const n=Cn(e);for(const[e,r]of Object.entries((n==null?void 0:n.changes)??{}))r&&t[e]&&(t[e]=r)}function Xn(){Nn||(Nn=!0,L({dataset:(e,t,n)=>Wt(e,t)?Tt(e,t,n):mn(e,t,n),command:(e,t,n,r)=>Wt(e,t)?qt(e,t,n):yn(e,t,n,r),overrides:Ft,source:zn,identityScopes:Pn,workbook:(e,t)=>!Wt(e,t)&&fn(e,t),active:(e,t)=>{var n;const r=(n=e.extensions)==null?void 0:n["chart-shared"];return t?!!(r!=null&&r[t]):!!r},owns:(e,t)=>Kt(e,t)||fn(e,t)}),q("chart-shared",{migrate:Pt,command:()=>{throw new Error("共享图表通过 ChartDataEditor 发出语义命令")},validateDocumentPatch:On,documentElements:kn,projectSource:Rn,beforeSave:Cn,generateParts:An,copyParts:An,projectDocument:(e,t,n)=>n.kind!=="group"||!j(e,t)?n:B(e,t,n)}))}function Yn(e){return Xn(),F(e)}function In(e,t){return Xn(),T(e,t)}function Jn(e){return Xn(),D(e)}function Wn(e,t){return Xn(),U(e,t)}export{Wn as chartProjection,Jn as createChartDataEditor,Yn as listEditableCharts,In as queryChartData,Xn as registerSharedChartEditing};
|
package/dist/chart.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Q as a,R as t,S as r,T as s}from"./index-CYDvbiwF.js";export{a as chartProjection,t as createChartDataEditor,r as listEditableCharts,s as queryChartData};
|