@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{assertFractionalIndex as e,compareFractionalIndex as t,sourcePartBytes as n,sourceElementXml as r,initialFractionalIndex as o,allocateElementId as i,fractionalIndexBetween as s,isLegacyExtensionReplay as l}from"@web-ppt/edit-core";import{findXmlAttribute as a,insertXmlChildUnchecked as c,createXmlElement as u,removeXmlChild as d,createXmlText as f,xmlElementChildren as m,parseXmlTree as h,serializeXmlTreeBytes as p,removeXmlAttribute as v,setXmlAttribute as g,cloneXmlNodeWithNamespaceClosure as b,serializeXmlTree as w,cloneXmlNode as y}from"@web-ppt/edit-core/xml";import{unzipSync as x}from"fflate";import{patchOpcPackage as N,disposeOpcPackage as $}from"@web-ppt/edit-core/opc";import{renderChartXml as E}from"@web-ppt/core/chart-edit";const C=Symbol.for("@web-ppt/edit-core/extensions/v1"),O=Symbol.for("@web-ppt/edit-core/extensions-generation/v1"),j=Symbol.for("@web-ppt/edit-core/extensions-listeners/v1"),I=/^[a-z][a-z0-9-]{0,63}$/;function k(){const e=globalThis;return e[j]??(e[j]={documents:/* @__PURE__ */new WeakMap,pending:/* @__PURE__ */new Map,active:/* @__PURE__ */new Set,resolvers:/* @__PURE__ */new WeakMap})}function S(e){if(!e||!I.test(e))throw new Error(`编辑扩展命名空间无效:${e}`)}function K(){const e=globalThis;return e[C]??(e[C]=/* @__PURE__ */new Map)}function R(e,t){var n;S(e),K().set(e,t);const r=globalThis;r[O]=(r[O]??0)+1;const o=new Set(k().pending.get(e));if(t.migrate)for(const e of k().active)o.add(e);k().pending.delete(e);for(const t of o??[])try{t(e)}catch(e){(n=globalThis.reportError)==null||n.call(globalThis,e)}}const M=e=>{var t;return(t=Object.values(e).find(e=>{var t;return(t=e.bindings.categories)==null?void 0:t.hierarchy}))==null?void 0:t.bindings.categories},P=32767,A=512,z=2e4,U=1024,L=1e5,F=64,T=/* @__PURE__ */new Set(["bar","line","pie","doughnut","area","scatter","radar","bubble","stock","ofPie","surface","other"]),W=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),X=/[\u0000-\u0008\u000B\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE\uFFFF]/u;function D(e){return!X.test(e)}function _(e,t){if(typeof e!="string"||e.length>P||!D(e))throw new Error(`${t}无效`)}function J(e,t){if(e!==null&&(typeof e!="number"||!Number.isFinite(e)))throw new Error(`${t}必须是有限数字或 null`)}function V(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t}无效`);if(Object.keys(e).some(e=>["__proto__","prototype","constructor"].includes(e)))throw new Error(`${t}含危险字段`)}function B(e,t,n){if(V(e,n),Object.keys(e).some(e=>!t.includes(e)))throw new Error(`${n}含未知字段`)}function Y(e,t,n){if(e!==t||e.length>A||!D(e)||/\x7f/.test(e)||["__proto__","prototype","constructor"].includes(e))throw new Error(`${n}身份无效`)}function Z(t,n){if(typeof t!="string"||t.length>1024)throw new Error(`${n}顺序无效`);try{e(t)}catch{throw new Error(`${n}顺序无效`)}}function q(e,t,n){if(B(e,["formula","cache"],t),e.formula!==null&&(typeof e.formula!="string"||e.formula.length>32767))throw new Error(`${t}公式无效`);if(!["number","string","literal","missing"].includes(String(e.cache)))throw new Error(`${t}缓存类型无效`);if(n&&(e.formula!==null||e.cache!=="literal"))throw new Error(`${t}不能注入来源公式`)}function G(e,t,n){if(B(e,["id","order","value","x","size","removed"],n),Y(e.id,t,n),Z(e.order,n),J(e.value,`${n} value`),W(e,"x")&&J(e.x,`${n} x`),W(e,"size")&&J(e.size,`${n} size`),e.removed!==void 0&&e.removed!==!0)throw new Error(`${n}删除标记无效`)}function H(e,t,n){if(B(e,["id","order","label","levels","levelParent","levelClears","removed"],n),Y(e.id,t,n),Z(e.order,n),_(e.label,n),e.levels!==void 0&&Q(e.levels),e.levelClears!==void 0&&ee(e.levelClears),e.levelParent!==void 0&&e.levelParent!==null){if(typeof e.levelParent!="string")throw new Error("类别前驱身份无效");Y(e.levelParent,e.levelParent,"类别前驱")}if(e.removed!==void 0&&e.removed!==!0)throw new Error(`${n}删除标记无效`)}function Q(e,t){if(!Array.isArray(e)||!e.length||e.length>F||t!==void 0&&e.length!==t)throw new Error("类别层级数量无效");for(const t of e)t!==null&&_(t,"类别层级")}function ee(e,t=F){V(e,"类别层级清空标记");for(const[n,r]of Object.entries(e)){if(!/^(0|[1-9]\d*)$/.test(n)||Number(n)>=t)throw new Error("类别层级清空标记无效");if(r!==null){if(typeof r!="string")throw new Error("类别层级清空前驱无效");Y(r,r,"类别层级清空前驱")}}}function te(e,t,n,r=!1){if(B(e,["id","order","sourceIndex","plotKind","name","points","bindings","removed"],n),Y(e.id,t,n),Z(e.order,n),!Number.isInteger(e.sourceIndex)||Number(e.sourceIndex)<0||Number(e.sourceIndex)>2147483647||!T.has(e.plotKind))throw new Error(`${n}图种或索引无效`);_(e.name,n),V(e.points,`${n}数据点`);const o=Object.entries(e.points);if(o.length>z)throw new Error(`${n}数据点过多`);const i=e.plotKind==="scatter"||e.plotKind==="bubble";if(o.forEach(([t,r])=>{if(G(r,t,`${n}数据点`),!i&&(W(r,"x")||W(r,"size"))||e.plotKind==="scatter"&&W(r,"size"))throw new Error(`${n}数据点与图种不匹配`)}),B(e.bindings,["name","categories","values","x","y","size"],`${n}绑定`),q(e.bindings.name,`${n}名称绑定`,r),i){if(W(e.bindings,"categories")||W(e.bindings,"values"))throw new Error(`${n}绑定与图种不匹配`);if(q(e.bindings.x,`${n} X 绑定`,r),q(e.bindings.y,`${n} Y 绑定`,r),e.plotKind==="bubble")q(e.bindings.size,`${n}大小绑定`,r);else if(W(e.bindings,"size"))throw new Error(`${n}绑定与图种不匹配`)}else{if(W(e.bindings,"x")||W(e.bindings,"y")||W(e.bindings,"size"))throw new Error(`${n}绑定与图种不匹配`);q(e.bindings.categories,`${n}类别绑定`,r),q(e.bindings.values,`${n}数值绑定`,r)}if(e.removed!==void 0&&e.removed!==!0)throw new Error(`${n}删除标记无效`)}function ne(e,t){let n=!1;for(const r of Object.keys(e))t.includes(r)||(delete e[r],n=!0);return n}function re(e,t,n){W(t,n)?e[n]=structuredClone(t[n]):delete e[n]}function oe(e,t,n,r){try{return r(e[n]),!1}catch{return re(e,t,n),!0}}function ie(e,t,n){const r=e;let o=ne(r,["id","order","label","levels","levelClears","removed"]);return r.levelClears!==void 0&&(o=oe(r,t,"levelClears",e=>{var n;return ee(e,((n=t.levels)==null?void 0:n.length)??0)})||o),t.levels?o=oe(r,t,"levels",e=>Q(e,t.levels.length))||o:r.levels!==void 0&&(delete r.levels,o=!0),o=oe(r,t,"id",e=>Y(e,n,`图表类别 ${n}`))||o,o=oe(r,t,"order",e=>Z(e,`图表类别 ${n}`))||o,o=oe(r,t,"label",e=>_(e,`图表类别 ${n}`))||o,r.removed!==void 0&&r.removed!==!0&&(re(r,t,"removed"),o=!0),o}function se(e,t,n){if(G(e,t,`图表数据点 ${t}`),!(n==="scatter"||n==="bubble")&&(W(e,"x")||W(e,"size"))||n==="scatter"&&W(e,"size"))throw new Error(`图表数据点 ${t} 与图种不匹配`)}function le(e,t,n,r){const o=e,i=["id","order","value","removed",...r==="scatter"||r==="bubble"?["x"]:[],...r==="bubble"?["size"]:[]];let s=ne(o,i);s=oe(o,t,"id",e=>Y(e,n,`图表数据点 ${n}`))||s,s=oe(o,t,"order",e=>Z(e,`图表数据点 ${n}`))||s;for(const e of["value",...i.includes("x")?["x"]:[],...i.includes("size")?["size"]:[]])s=oe(o,t,e,t=>J(t,`图表数据点 ${n} ${e}`))||s;return o.removed!==void 0&&o.removed!==!0&&(re(o,t,"removed"),s=!0),s}function ae(e,t,n){const r=e;let o=ne(r,["id","order","sourceIndex","plotKind","name","points","bindings","removed","sourceTemplate"]);o=oe(r,t,"id",e=>Y(e,n,`图表系列 ${n}`))||o,o=oe(r,t,"order",e=>Z(e,`图表系列 ${n}`))||o,o=oe(r,t,"name",e=>_(e,`图表系列 ${n}`))||o;for(const e of["sourceIndex","plotKind","bindings","sourceTemplate"])JSON.stringify(r[e])!==JSON.stringify(t[e])&&(re(r,t,e),o=!0);if(r.removed!==void 0&&r.removed!==!0&&(re(r,t,"removed"),o=!0),!r.points||typeof r.points!="object"||Array.isArray(r.points))return re(r,t,"points"),!0;for(const[n,r]of Object.entries(e.points)){const i=t.points[n];if(i){r&&typeof r=="object"&&!Array.isArray(r)?o=le(r,i,n,e.plotKind)||o:(e.points[n]=structuredClone(i),o=!0);continue}try{se(r,n,e.plotKind)}catch{delete e.points[n],o=!0}}const i=Object.keys(e.points).filter(e=>!t.points[e]).sort(),s=Math.max(0,z-Object.keys(t.points).length);for(const t of i.slice(s))delete e.points[t],o=!0;return o}function ce(e,t,n){let r=ne(e,["id","order","sourceIndex","plotKind","name","points","bindings","removed"]);if(!T.has(e.plotKind)||!e.points||typeof e.points!="object"||Array.isArray(e.points))return{valid:!1,deferred:!0};const o=e.plotKind==="scatter"||e.plotKind==="bubble",i=["id","order","value","removed",...o?["x"]:[],...e.plotKind==="bubble"?["size"]:[]];for(const[t,s]of Object.entries(e.points)){if(!s||typeof s!="object"||Array.isArray(s)){delete e.points[t],r=!0;continue}const l=o?void 0:n[t];if(l){const e=s;W(e,"id")||(e.id=t),W(e,"order")||(e.order=l.order),W(e,"value")||(e.value=null)}r=ne(s,i)||r;try{se(s,t,e.plotKind)}catch{delete e.points[t],r=!0}}try{te(e,t,`图表系列 ${t}`,!0)}catch{return{valid:!1,deferred:!0}}return{valid:!0,deferred:r}}function ue(e,t,n){const r=Object.keys(e).filter(e=>!W(t,e)).sort(),o=Math.max(0,n-Object.keys(t).length);for(const t of r.slice(o))delete e[t];return r.length>o}function de(e,t,n,r){var o,i;const s=new Set(Object.values(r).map(e=>e.plotKind)),l=(i=(o=M(r))==null?void 0:o.hierarchy)==null?void 0:i.levels,a=Math.min(z,l?Math.floor(L/l):z);let c=ue(e,n,a);c=ue(t,r,U)||c;for(const[t,r]of Object.entries(e)){const o=n[t];if(o){r&&typeof r=="object"&&!Array.isArray(r)?c=ie(r,o,t)||c:(e[t]=structuredClone(o),c=!0);continue}try{if(H(r,t,`图表类别 ${t}`),r.levels!==void 0){if(!l)throw new Error("平面类别不支持层级路径");Q(r.levels,l)}else if("levelParent"in r)throw new Error("新增层级类别的路径尚未到齐")}catch{delete e[t],c=!0}}for(const[n,o]of Object.entries(t)){const i=r[n];if(i){o&&typeof o=="object"&&!Array.isArray(o)?c=ae(o,i,n)||c:(t[n]=structuredClone(i),c=!0);continue}if(!s.has(o==null?void 0:o.plotKind)){delete t[n],c=!0;continue}const l=o&&typeof o=="object"&&!Array.isArray(o)?ce(o,n,e):{valid:!1,deferred:!0};c=l.deferred||c,l.valid||delete t[n]}let u=Object.values(t).reduce((e,t)=>e+Object.keys(t.points).length,0);if(u>L){const e=Object.entries(t).flatMap(([e,t])=>Object.keys(t.points).filter(t=>{var n;return!((n=r[e])!=null&&n.points[t])}).map(t=>({seriesId:e,pointId:t}))).sort((e,t)=>e.seriesId===t.seriesId?e.pointId<t.pointId?1:e.pointId>t.pointId?-1:0:e.seriesId<t.seriesId?1:e.seriesId>t.seriesId?-1:0);for(const n of e){if(u<=L)break;delete t[n.seriesId].points[n.pointId],u--,c=!0}}return c}function fe(e,n){const r=t(e.order,n.order);return r||(e.id<n.id?-1:e.id>n.id?1:0)}function me(e){return[...e].sort(fe)}const he=16384,pe=1048576;function ve(e){let t=0;for(const n of e)t=t*26+n.charCodeAt(0)-64;return t}function ge(e){if(!Number.isInteger(e)||e<1||e>he)throw new Error("工作簿列号越界");let t="";for(let n=e;n;n=Math.floor((n-1)/26))t=String.fromCharCode(65+(n-1)%26)+t;return t}function be(e){return e.startsWith("'")?e.endsWith("'")?e.slice(1,-1).replace(/''/g,"'"):null:/^[A-Za-z_\u0080-\uFFFF][A-Za-z0-9_.\u0080-\uFFFF]*$/.test(e)?e:null}function we(e){if(!e||e.length>512||e.includes("["))return null;const t=/^(('(?:[^']|'')+'|[^'!]+)!)\$?([A-Z]{1,3})\$?(\d+)(?::\$?([A-Z]{1,3})\$?(\d+))?$/.exec(e.trim());if(!t)return null;const n=be(t[2]),r=ve(t[3]),o=Number(t[4]),i=ve(t[5]??t[3]),s=Number(t[6]??t[4]);return!n||r<1||i>he||r>i||o<1||s>pe||o>s?null:{sheet:n,startColumn:r,startRow:o,endColumn:i,endRow:s}}const ye=e=>/^[A-Za-z_][A-Za-z0-9_.]*$/.test(e)?e:`'${e.replace(/'/g,"''")}'`;function xe(e){if(![e.startColumn,e.endColumn,e.startRow,e.endRow].every(Number.isInteger)||e.startColumn<1||e.endColumn>he||e.startColumn>e.endColumn||e.startRow<1||e.endRow>pe||e.startRow>e.endRow)throw new Error("工作簿范围越界");const t=`$${ge(e.startColumn)}$${e.startRow}`,n=`$${ge(e.endColumn)}$${e.endRow}`;return`${ye(e.sheet)}!${t}${t===n?"":`:${n}`}`}function Ne(e,t){const n=we(e);return!n||!Number.isInteger(t)||t<1?e:n.startColumn===n.endColumn?xe({...n,endRow:n.startRow+t-1}):n.startRow===n.endRow?xe({...n,endColumn:n.startColumn+t-1}):e}const $e="http://schemas.openxmlformats.org/drawingml/2006/chart",Ee="http://schemas.openxmlformats.org/drawingml/2006/main",Ce="http://schemas.openxmlformats.org/presentationml/2006/main",Oe="http://schemas.openxmlformats.org/officeDocument/2006/relationships",je="http://schemas.openxmlformats.org/package/2006/relationships",Ie="http://schemas.openxmlformats.org/spreadsheetml/2006/main",ke="http://purl.oclc.org/ooxml",Se=`${ke}/drawingml/chart`,Ke=`${ke}/drawingml/main`,Re=`${ke}/presentationml/main`,Me=`${ke}/officeDocument/relationships`,Pe=`${ke}/spreadsheetml/main`,Ae=(e,t,n)=>e===t||e===n,ze=e=>Ae(e,$e,Se),Ue=e=>Ae(e,Ce,Re),Le=e=>Ae(e,Ie,Pe);function Fe(e){return{child:(t,n)=>t&&e(t.namespaceUri)?m(t).find(e=>e.namespaceUri===t.namespaceUri&&e.localName===n)??null:null,children:(t,n)=>t&&e(t.namespaceUri)?m(t).filter(e=>e.namespaceUri===t.namespaceUri&&(!n||e.localName===n)):[]}}const Te=Fe(ze),We=Fe(Le),Xe=(e,t)=>{var n;return e?((n=a(e,{localName:t,namespaceUri:null}))==null?void 0:n.value)??null:null},De=e=>e?e.children.map(e=>e.type==="text"||e.type==="cdata"?e.value:e.type==="element"?De(e):"").join(""):"";function _e(e,t,n=null){c(e,t,n)}function Je(e,t,n=[]){return u(e.prefix?`${e.prefix}:${t}`:t,{attributes:n,selfClosing:!1})}function Ve(e,t){for(const t of[...e.children])d(e,t);_e(e,f(t))}const{child:Be,children:Ye}=Te;function Ze(e,t,n){const r=Be(e,"multiLvlStrRef");if(!r)return;const o=Be(r,"multiLvlStrCache"),i=Ye(o,"lvl");if(!i.length||i.length>F)throw new Error("多级类别缺少缓存或层数超限");const s=Xe(Be(o,"ptCount"),"val");let l=s===null?0:Number(s);if(!Number.isInteger(l)||l<0)throw new Error("多级类别点数无效");const a=i.map(e=>{const t=/* @__PURE__ */new Map;for(const n of Ye(e,"pt")){if(Ye(n,"v").length!==1)throw new Error("类别层级缺少唯一文本值");const e=Number(Xe(n,"idx")??NaN);if(!Number.isInteger(e)||e<0||e>=z||t.has(e))throw new Error("多级类别索引无效或重复");t.set(e,De(Be(n,"v"))),l=Math.max(l,e+1)}return t}).reverse();if(l>z||l*i.length>L)throw new Error("多级类别规模超限");const c=we(De(Be(r,"f")).trim()),u=we(t);if(!c)throw new Error("多级类别公式无法无歧义写回");const d=c.endRow-c.startRow+1,f=c.endColumn-c.startColumn+1,m=f===i.length&&d===Math.max(1,l),h=d===i.length&&f===Math.max(1,l),p=u&&u.startColumn===u.endColumn&&u.startRow<u.endRow?"rows":u&&u.startRow===u.endRow&&u.startColumn<u.endColumn?"columns":n,v=m&&h?p:m?"rows":h?"columns":void 0;if(!v)throw new Error("多级类别公式的层级方向不明确");return{count:l,hierarchy:{levels:i.length,orientation:v},slots:Array.from({length:l},(e,t)=>a.map(e=>e.get(t)??null))}}function qe(e,t){const n=we(e.formula),r=e.hierarchy;return!n||!r?Ne(e.formula,t):xe({...n,...r.orientation==="rows"?{endRow:n.startRow+Math.max(1,t)-1}:{endColumn:n.startColumn+Math.max(1,t)-1}})}function Ge(e,t){let n=Array(t).fill(null);return e.map(e=>{const r=e.levels??[...Array(t-1).fill(null),e.label];n=[...n];for(let e=0;e<t;e++)r[e]!==null?(n.fill(null,e+1),n[e]=r[e]):e===t-1&&(n[e]=null);return n})}function He(e,t){var n,r;let o=Array(t).fill(null);const i=/* @__PURE__ */new Map;let s=Array(t).fill(null);for(const l of e){l.levelParent!==void 0&&(o=[...l.levelParent?i.get(l.levelParent)??Array(t).fill(null):Array(t).fill(null)]);const e=[...l.levels];for(let r=0;r<t-1;r++){const t=(n=l.levelClears)==null?void 0:n[r];if(e[r]===null&&t!==void 0){const e=t?i.get(t):void 0,n=e&&o.slice(0,r).every((t,n)=>{var r;return(t==null?void 0:t.id)===((r=e[n])==null?void 0:r.id)});o[r]=n?e[r]:null,o.fill(null,r+1)}e[r]!==null&&(o[r]={id:l.id,value:e[r]},o.fill(null,r+1))}if(i.set(l.id,[...o]),!l.removed){for(let n=0;n<t-1;n++)e[n]===null&&o[n]&&o[n].id!==((r=s[n])==null?void 0:r.id)&&(e[n]=o[n].value);l.levels=e,s=[...o]}}}function Qe(e,t,n){const r=n.hierarchy.levels;let o=Be(e,"multiLvlStrRef");if(!o){for(const t of Ye(e).filter(e=>["numRef","strRef","strLit","numLit"].includes(e.localName)))d(e,t);o=Je(e,"multiLvlStrRef"),_e(e,o)}let i=Be(o,"f");i||(i=Je(o,"f"),_e(o,i,o.children[0]??null)),Ve(i,qe(n,t.length)??"");let s=Be(o,"multiLvlStrCache");s||(s=Je(o,"multiLvlStrCache"),_e(o,s,Be(o,"extLst")));for(const e of Ye(s).filter(e=>["ptCount","lvl"].includes(e.localName)))d(s,e);const l=Je(s,"ptCount",[["val",String(t.length)]]);_e(s,l,Be(s,"extLst"));for(let e=r-1;e>=0;e--){const n=Je(s,"lvl");_e(s,n,Be(s,"extLst")),t.forEach((t,r)=>{var o;const i=((o=t.levels)==null?void 0:o[e])??null;if(i===null)return;const s=Je(n,"pt",[["idx",String(r)]]),l=Je(s,"v");Ve(l,i),_e(s,l),_e(n,s)})}}function et(e){var t,n;const r=Object.values(e.categories),o=Object.values(e.series),i=(t=o.find(e=>{var t,n;return((t=e.bindings.categories)==null?void 0:t.hierarchy)||((n=e.bindings.categories)==null?void 0:n.formula)}))==null?void 0:t.bindings.categories,s=i==null?void 0:i.hierarchy;if(s)for(const e of r){const t=e.levels??[...Array(s.levels-1).fill(null),e.label];e.levels=t,e.label=t[t.length-1]??""}if(i)for(const e of o)e.plotKind==="scatter"||e.plotKind==="bubble"||(e.bindings.categories={...i,...((n=e.bindings.categories)==null?void 0:n.formula)===null?{}:e.bindings.categories});s&&He(me(r),s.levels);const l=r.filter(e=>!e.removed),a=o.filter(e=>!e.removed),c=a.filter(e=>e.plotKind!=="scatter"&&e.plotKind!=="bubble"),u=a.filter(e=>e.plotKind==="scatter"||e.plotKind==="bubble").reduce((e,t)=>e+Object.values(t.points).filter(e=>!e.removed).length,0);if(l.length*c.length+u>L){e.binding={...e.binding,mode:"readonly",reason:"图表数据矩阵超过安全上限"};return}for(const t of o)if(!t.removed&&!(t.plotKind==="scatter"||t.plotKind==="bubble")){for(const n of Object.values(t.points)){const t=e.categories[n.id];!t||t.removed?n.removed=!0:delete n.removed}for(const e of l)t.points[e.id]||(t.points[e.id]={id:e.id,order:e.order,value:null})}}function tt(e,t){for(const[n,r]of Object.entries(t))if(r&&typeof r=="object"&&!Array.isArray(r)){const t=e[n];if(n==="levels"){e[n]=Object.assign(Array.isArray(t)?[...t]:[],r);continue}(!t||typeof t!="object"||Array.isArray(t))&&(e[n]=/* @__PURE__ */Object.create(null)),tt(e[n],r)}else e[n]=r}function nt(e,t){const n=e;let r=!1;for(const e of Object.keys(n))["kind","binding","categories","series"].includes(e)||(delete n[e],r=!0);for(const o of["kind","binding"])JSON.stringify(e[o])!==JSON.stringify(t[o])&&(n[o]=structuredClone(t[o]),r=!0);for(const o of["categories","series"])try{V(e[o],`图表 ${o}`)}catch{n[o]=structuredClone(t[o]),r=!0}return r}function rt(e,t){if(t===void 0)return et(e),{state:e,deferred:!1};if(!t||typeof t!="object"||Array.isArray(t))throw new Error("图表的稀疏覆盖无效");const n=structuredClone(e);tt(n,t);for(const e of Object.values(n.series))e.pointsReady===!0&&(e.points??(e.points=/* @__PURE__ */Object.create(null)),delete e.pointsReady);let r=nt(n,e);return r=de(n.categories,n.series,e.categories,e.series)||r,et(n),{state:n,deferred:r}}const ot=n,it=/* @__PURE__ */new WeakMap,st={bg1:"lt1",tx1:"dk1",bg2:"lt2",tx2:"dk2",accent1:"accent1",accent2:"accent2",accent3:"accent3",accent4:"accent4",accent5:"accent5",accent6:"accent6",hlink:"hlink",folHlink:"folHlink"};function lt(e){const t=e.lastIndexOf("/");return`${e.slice(0,t+1)}_rels/${e.slice(t+1)}.rels`}function at(e,t){if(t.startsWith("/"))return t.slice(1);const n=e.slice(0,e.lastIndexOf("/")+1).split("/").filter(Boolean);for(const e of t.split("/"))e===".."?n.pop():e&&e!=="."&&n.push(e);return n.join("/")}function ct(e,t){var n,r,o,i;const s=ot(e,lt(t));if(!s)return{};let l=it.get(s);l||(l=/* @__PURE__ */new Map,it.set(s,l));const c=l.get(t);if(c)return c;const u=/* @__PURE__ */Object.create(null);for(const e of m(h(s).root,{localName:"Relationship",namespaceUri:je})){const s=(n=a(e,{localName:"Id",namespaceUri:null}))==null?void 0:n.value,l=(r=a(e,{localName:"Type",namespaceUri:null}))==null?void 0:r.value,c=(o=a(e,{localName:"Target",namespaceUri:null}))==null?void 0:o.value,d=((i=a(e,{localName:"TargetMode",namespaceUri:null}))==null?void 0:i.value)==="External";s&&l&&c&&(u[s]={type:l,target:d?c:at(t,c),...d?{external:!0}:{}})}return l.set(t,u),u}function ut(e,t){var n;let r=(n=e.elements[t])==null?void 0:n.parent;for(;r&&e.elements[r];)r=e.elements[r].parent;return r?e.slides[r]:void 0}const dt=e=>{var t;const n=(t=e.match(/rgba?\(([^)]+)\)/))==null?void 0:t[1].split(",").slice(0,3).map(e=>Math.max(0,Math.min(255,Math.round(Number(e.trim())))));return(n==null?void 0:n.length)===3&&n.every(Number.isFinite)?n.map(e=>e.toString(16).padStart(2,"0")).join("").toUpperCase():e.replace("#","")};function ft(e,t,n){var r;const o=ut(e,t),i=o!=null&&o.layoutId?e.layouts[o.layoutId]:void 0,s=i?e.masters[i.origin.masterPart]:void 0,l=(i==null?void 0:i.themeId)??(s==null?void 0:s.themeId),a=l?e.themes[l]:void 0,c={...a==null?void 0:a.src.colors,...a==null?void 0:a.ovr.colors},u=structuredClone((a==null?void 0:a.src.fonts)??{major:{latin:"",ea:"",cs:"",scripts:{}},minor:{latin:"",ea:"",cs:"",scripts:{}}});for(const e of["major","minor"])Object.assign(u[e],(r=a==null?void 0:a.ovr.fonts)==null?void 0:r[e]);const d={...st},f=s&&ot(e,s.id),p=f?h(f).root:null,v=p&&Ue(p.namespaceUri)?m(p).find(e=>e.localName==="clrMap"&&e.namespaceUri===p.namespaceUri):null;for(const e of(v==null?void 0:v.attributes)??[])d[e.localName]=e.value;return{ctx:{theme:Object.fromEntries(Object.entries(c).map(([e,t])=>[e,dt(t)])),clrMap:d},fonts:u,rels:structuredClone(ct(e,n))}}const mt=/* @__PURE__ */new WeakMap,ht=(e,t,n)=>{const r=e?m(e).filter(e=>e.localName===t&&e.namespaceUri===n):[];return r.length===1?r[0]:null},pt=(e,t,n=null)=>{var r;return e?((r=a(e,{localName:t,namespaceUri:n}))==null?void 0:r.value)??null:null};function vt(e){const t=[],n=e=>{e.localName==="graphicFrame"&&(e.namespaceUri===Ce||e.namespaceUri===Re)?t.push(e):m(e).forEach(n)};return n(e),t}function gt(e,t){var n;const r=(n=e.elements[t])==null?void 0:n.meta.origin;if(!r)throw new Error("图表框架缺少原生定位");return`${r.part}#${r.spid}`}function bt(e,t){var n;let o=mt.get(e);(!o||o.package!==e.package)&&(o={package:e.package,entries:/* @__PURE__ */new Map},mt.set(e,o));const i=o.entries;if(i.has(t))return i.get(t)??null;const s=e.elements[t],l=s==null?void 0:s.meta.origin;if(!s||s.src.kind!=="group"||s.meta.editable!=="frame"||!l)return i.set(t,null),null;const a=r(e,t);if(!a)return i.set(t,null),null;let c=null;const u={...ct(e,a.part),...a.relationships};for(const e of vt(h(a.bytes).root)){const t=e.namespaceUri===Re?{chart:Se,drawing:Ke,presentation:Re,relationship:Me}:{chart:$e,drawing:Ee,presentation:Ce,relationship:Oe},r=ht(e,"nvGraphicFramePr",t.presentation),o=ht(r,"cNvPr",t.presentation),i=pt(o,"id");if(i===null||Number(i)!==l.spid)continue;const s=ht(e,"graphic",t.drawing),a=ht(s,"graphicData",t.drawing);if(pt(a,"uri")!==t.chart)break;const d=ht(a,"chart",t.chart),f=((n=d==null?void 0:d.attributes.find(e=>e.localName==="id"&&e.namespaceUri===t.relationship))==null?void 0:n.value)??"",m=u[f];m!=null&&m.type.endsWith("/chart")&&(c=m.target);break}return i.set(t,c),c}const wt=/* @__PURE__ */new WeakMap;function yt(e){var t,n;const r=e&&wt.get(e);if(r)return r;const o=[],i=/* @__PURE__ */new Set;if(e)for(const r of m(h(e).root,{localName:"Override",namespaceUri:"http://schemas.openxmlformats.org/package/2006/content-types"})){const e=(t=a(r,{localName:"PartName",namespaceUri:null}))==null?void 0:t.value.replace(/^\//,""),s=(n=a(r,{localName:"ContentType",namespaceUri:null}))==null?void 0:n.value;e&&(o.push(e),s==="application/vnd.openxmlformats-officedocument.drawingml.chart+xml"&&i.add(e))}const s={parts:o,charts:i};return e&&wt.set(e,s),s}function xt(e){const{parts:t,charts:n}=yt(ot(e,"[Content_Types].xml")),r=new Set(n);for(const t of Object.values(e.elements)){const n=bt(e,t.id);n&&r.add(n)}return{parts:[.../* @__PURE__ */new Set([...t,...r])],charts:r}}let Nt;const $t=()=>Nt,Et=e=>{Nt=e},Ct=(e,t)=>{var n,r,o;return((n=Nt==null?void 0:Nt.overrides)==null?void 0:n.call(Nt,e,t))??((o=(r=e.elements[t])==null?void 0:r.ovr.extensions)==null?void 0:o["chart-data"])},Ot="共享图表数据需要加载 chart-shared 编辑入口";function jt(e,t,n){if(Nt)return Nt.dataset(e,t,n);if(n.binding.mode==="readonly")return n;const{chartPart:r,workbookPart:o}=n.binding,i=t=>t!==r&&o&&Object.values(ct(e,t)).some(e=>!e.external&&e.target===o);return(Object.values(e.elements).some(n=>{if(n.id===t)return!1;const o=bt(e,n.id);return o===r||!!(o&&i(o))})||o&&xt(e).parts.some(i))&&(n.binding={...n.binding,mode:"readonly",reason:Ot}),n}const It={barChart:"bar",bar3DChart:"bar",lineChart:"line",line3DChart:"line",pieChart:"pie",pie3DChart:"pie",doughnutChart:"doughnut",areaChart:"area",area3DChart:"area",scatterChart:"scatter",bubbleChart:"bubble",radarChart:"radar",stockChart:"stock",ofPieChart:"ofPie",surfaceChart:"surface",surface3DChart:"surface"},kt=1e5;function St(e){const t=/^([A-Z]{1,3})(\d+)$/.exec(e);if(!t)throw new Error(`单元格地址无效:${e}`);let n=0;for(const e of t[1])n=n*26+e.charCodeAt(0)-64;const r=Number(t[2]);if(n<1||n>16384||r<1||r>1048576)throw new Error(`单元格地址越界:${e}`);return{column:n,row:r}}function Kt(e){const t=e.toUpperCase().split(":");if(t.length<1||t.length>2)throw new Error(`工作表范围无效:${e}`);const n=St(t[0].replace(/\$/g,"")),r=St((t[1]??t[0]).replace(/\$/g,""));if(n.column>r.column||n.row>r.row)throw new Error(`工作表范围无效:${e}`);return{start:n,end:r}}function Rt(e){const{start:t,end:n}=Kt(e);if((n.column-t.column+1)*(n.row-t.row+1)>kt)throw new Error(`工作表范围过大:${e}`);const r=[];for(let e=t.row;e<=n.row;e++)for(let o=t.column;o<=n.column;o++)r.push(`${ge(o)}${e}`);return r}function Mt(e){const t=we(e);return t?Rt(`${ge(t.startColumn)}${t.startRow}:${ge(t.endColumn)}${t.endRow}`):[]}function Pt(e){const t=[];for(const n of e){const e=Number(n);if(!Number.isFinite(e)||String(e)!==n)return null;t.push(e)}return t}const{child:At,children:zt}=We,Ut=e=>{var t;return(t=me(Object.values(e.series)).find(e=>{var t;return(t=e.bindings.categories)==null?void 0:t.hierarchy}))==null?void 0:t.bindings.categories};function Lt(e,t,n){const r=h(e[t.sheets.get(n)]).root,o=/* @__PURE__ */new Map;for(const e of zt(At(r,"sheetData"),"row"))for(const t of zt(e,"c"))o.set(Xe(t,"r"),t);return o}function Ft(e,t,n){const r=we(e.formula);return e.hierarchy.orientation==="rows"?`${ge(r.startColumn+n)}${r.startRow+t}`:`${ge(r.startColumn+t)}${r.startRow+n}`}function Tt(e,t,n,r){if(!Object.values(t.series).some(e=>{var t;return!e.removed&&((t=e.bindings.categories)==null?void 0:t.hierarchy)}))return;const o=Ut(t),i=Ut(e);if(!(o!=null&&o.hierarchy)||!i)return;const s=we(o.formula),l=Lt(n,r,s.sheet),a=new Map(me(Object.values(e.categories)).map((e,t)=>[e.id,t])),c=me(Object.values(t.categories).filter(e=>!e.removed)),u=Ge(c,o.hierarchy.levels),d=/* @__PURE__ */new Map;return c.forEach((e,t)=>{var n;for(let r=0;r<o.hierarchy.levels;r++){const s=l.get(Ft(i,a.get(e.id),r)),c=((n=e.levels)==null?void 0:n[r])??null,f=!!(s&&(At(s,"v")||At(s,"is"))),m=c??(f?u[t][r]:null),h=s&&!["s","inlineStr"].includes(Xe(s,"t")??"")&&m!==null&&Number.isFinite(Number(m))&&String(Number(m))===m;d.set(Ft(o,t,r),{kind:h?"number":"string",value:h?Number(m):m})}}),{sheet:s.sheet,cells:d}}function Wt(e,t,n){if(!Object.values(e.series).some(e=>{var t;return!e.removed&&((t=e.bindings.categories)==null?void 0:t.hierarchy)}))return;const r=Ut(e);if(!(r!=null&&r.hierarchy))return;const o=we(r.formula),i=Lt(t,n,o.sheet),s=n.sharedStrings?zt(h(t[n.sharedStrings]).root,"si").map(De):[],l=me(Object.values(e.categories).filter(e=>!e.removed)),a=Ge(l,r.hierarchy.levels),c=e=>{if(!e||!At(e,"v")&&!At(e,"is"))return null;const t=Xe(e,"t"),n=De(At(e,"v"));if(t==="inlineStr")return De(At(e,"is"));if(t==="s"&&/^\d+$/.test(n)&&Number(n)<s.length)return s[Number(n)];if((t===null||t==="n")&&n.trim()&&Number.isFinite(Number(n)))return Number(n);throw new Error("多级类别工作簿含无法恢复的单元格类型")};l.forEach((e,t)=>{var n;for(let s=0;s<r.hierarchy.levels;s++){const l=Ft(r,t,s),u=c(i.get(l)),d=((n=e.levels)==null?void 0:n[s])??null,f=d??(s<r.hierarchy.levels-1?a[t][s]:null);if(!(d===null&&u===null)&&(f===null||u===null||String(u)!==f))throw new Error(`多级类别缓存与工作簿 ${o.sheet}!${l} 不一致`)}})}const{child:Xt,children:Dt}=We;function _t(e,t){Ve(e,t),/^\s|\s$/.test(t)?g(e,"xml:space","preserve"):v(e,"xml:space")}function Jt(e,t,n=null){const r=Xt(e,t);if(r)return r;const o=Je(e,t);return _e(e,o,n),o}function Vt(e,t,n,r,o=!1){const i=we(t);if(!i)return;let s=e.get(i.sheet);s||(s=/* @__PURE__ */new Map,e.set(i.sheet,s)),Mt(t).forEach((e,t)=>{s.set(e,{kind:r,value:o?null:n[t]??null})})}function Bt(e,t,n,r){var o,i,s,l,a,c,u;const d=/* @__PURE__ */new Map;for(const t of me(Object.values(e.series))){Vt(d,t.bindings.name.formula,[],"string",!0),Vt(d,((o=t.bindings.categories)==null?void 0:o.formula)??null,[],"string",!0);for(const e of["values","x","y","size"])Vt(d,((i=t.bindings[e])==null?void 0:i.formula)??null,[],"number",!0)}const f=me(Object.values(t.categories).filter(e=>!e.removed)),m=(s=me(Object.values(t.series)).find(e=>{var t;return!e.removed&&((t=e.bindings.categories)==null?void 0:t.formula)}))==null?void 0:s.bindings.categories,h=Pt(f.map(e=>e.label)),p=(m==null?void 0:m.cache)==="number"&&h!==null,v=Tt(e,t,n,r);if(v){const e=d.get(v.sheet)??/* @__PURE__ */new Map;for(const[t,n]of v.cells)e.set(t,n);d.set(v.sheet,e)}else Vt(d,(m==null?void 0:m.formula)??null,p?h:f.map(e=>e.label),p?"number":"string");for(const e of me(Object.values(t.series).filter(e=>!e.removed))){const t=me(Object.values(e.points).filter(e=>!e.removed));Vt(d,e.bindings.name.formula,[e.name],"string"),Vt(d,((l=e.bindings.values)==null?void 0:l.formula)??((a=e.bindings.y)==null?void 0:a.formula)??null,t.map(e=>e.value),"number"),Vt(d,((c=e.bindings.x)==null?void 0:c.formula)??null,t.map(e=>e.x??null),"number"),Vt(d,((u=e.bindings.size)==null?void 0:u.formula)??null,t.map(e=>e.size??null),"number")}return d}class Yt{constructor(e){var t;this.changed=!1,this.values=/* @__PURE__ */new Map,this.tree=e?h(e):null,Dt(((t=this.tree)==null?void 0:t.root)??null,"si").forEach((e,t)=>this.values.set(De(e),t))}index(e){if(!this.tree)return null;const t=this.values.get(e);if(t!==void 0)return t;const n=Dt(this.tree.root,"si").length,r=Je(this.tree.root,"si"),o=Je(r,"t");return _t(o,e),_e(r,o),_e(this.tree.root,r,Xt(this.tree.root,"extLst")),this.values.set(e,n),v(this.tree.root,"count"),v(this.tree.root,"uniqueCount"),n}}function Zt(e,t){const n=Jt(e.root,"sheetData",Xt(e.root,"extLst")),r=St(t);let o=Dt(n,"row").find(e=>Number(Xe(e,"r"))===r.row);if(!o){o=Je(n,"row",[["r",String(r.row)]]);const e=Dt(n,"row").find(e=>Number(Xe(e,"r"))>r.row)??null;_e(n,o,e)}let i=Dt(o,"c").find(e=>Xe(e,"r")===t);if(!i){i=Je(o,"c",[["r",t]]);const e=Dt(o,"c").find(e=>St(Xe(e,"r")??"A1").column>r.column)??null;_e(o,i,e)}return i}function qt(e){for(const t of[...Dt(e)].filter(e=>["f","v","is"].includes(e.localName)))d(e,t);v(e,"t")}function Gt(e,t,n){const r=Xe(e,"t")==="s";if(n.changed||(n.changed=r),qt(e),t.value===null)return;if(t.kind==="number"){const n=Number(t.value);if(!Number.isFinite(n))throw new Error("工作簿数值必须是有限数字");const r=Je(e,"v");Ve(r,String(n)),_e(e,r,Xt(e,"extLst"));return}const o=String(t.value),i=r?n.index(o):null;if(i!==null){g(e,"t","s");const t=Je(e,"v");Ve(t,String(i)),_e(e,t,Xt(e,"extLst"));return}g(e,"t","inlineStr");const s=Je(e,"is"),l=Je(s,"t");_t(l,o),_e(s,l),_e(e,s,Xt(e,"extLst"))}function Ht(e){const t=Xt(e.root,"dimension");let n=Number.POSITIVE_INFINITY,r=Number.POSITIVE_INFINITY,o=0,i=0;const s=e=>{n=Math.min(n,e.column),r=Math.min(r,e.row),o=Math.max(o,e.column),i=Math.max(i,e.row)},l=Xe(t,"ref");if(l){const e=Kt(l);s(e.start),s(e.end)}const a=Xt(e.root,"sheetData");for(const e of Dt(a,"row"))for(const t of Dt(e,"c")){const e=Xe(t,"r");e&&s(St(e.toUpperCase()))}if(!Number.isFinite(n))return;const c=t??Jt(e.root,"dimension",Dt(e.root).find(e=>e.localName!=="sheetPr")??null),u=`${ge(n)}${r}`,d=`${ge(o)}${i}`;g(c,"ref",u===d?u:`${u}:${d}`)}function Qt(e,t,n,r,o){return en(e,t,n,Bt(r,o,t,n))}function en(e,t,n,r){const o=new Yt(n.sharedStrings?t[n.sharedStrings]:void 0),i=/* @__PURE__ */Object.create(null);for(const[e,s]of r){const r=n.sheets.get(e);if(!r||!t[r])throw new Error(`工作簿缺少公式工作表:${e}`);const l=h(t[r]);for(const[e,t]of s)Gt(Zt(l,e),t,o);Ht(l),i[r]=p(l)}n.sharedStrings&&o.tree&&o.changed&&(v(o.tree.root,"count"),v(o.tree.root,"uniqueCount"),i[n.sharedStrings]=p(o.tree));const s={format:"pptx",bytes:e,parts:t,assets:Object.freeze({}),disposed:!1},l=N(s,i),a=l.bytes.slice();return l.package!==s&&$(l.package),a}const tn=16*1024*1024,nn=512,rn=32*1024*1024,on=64*1024*1024,{child:sn,children:ln}=We;function an(e){if(e.length>tn)throw new Error("内嵌工作簿压缩包超过安全上限");let t=0,n=0;return x(e,{filter:e=>{if(t++,n+=e.originalSize,t>nn||e.originalSize>rn||n>on)throw new Error("内嵌工作簿解压规模超过安全上限");return!0}})}function cn(e,t){if(t.startsWith("/"))return t.slice(1);const n=e.slice(0,e.lastIndexOf("/")+1).split("/").filter(Boolean);for(const e of t.split("/"))e===".."?n.pop():e&&e!=="."&&n.push(e);return n.join("/")}function un(e){var t;const n="xl/workbook.xml",r=e[n],o=e["xl/_rels/workbook.xml.rels"];if(!r||!o)throw new Error("内嵌工作簿缺少 workbook 关系");const i=h(o).root,s=m(i,{localName:"Relationship",namespaceUri:je}),l=/* @__PURE__ */new Map;for(const e of s){const t=Xe(e,"Id");if(!t||l.has(t))throw new Error("内嵌工作簿存在空或重复关系身份");l.set(t,{type:Xe(e,"Type")??"",target:Xe(e,"Target")??"",external:Xe(e,"TargetMode")==="External"})}const a=h(r).root,c=a.namespaceUri===Pe?Me:a.namespaceUri===Ie?Oe:null,u=/* @__PURE__ */new Map,d=/* @__PURE__ */new Set,f=/* @__PURE__ */new Set,p=/* @__PURE__ */new Set,v=/* @__PURE__ */new Set;for(const r of ln(sn(a,"sheets"),"sheet")){const o=Xe(r,"name"),i=Xe(r,"sheetId"),s=((t=r.attributes.find(e=>e.localName==="id"&&e.namespaceUri===c))==null?void 0:t.value)??"",a=l.get(s),m=(o==null?void 0:o.toUpperCase())??"";if(!o||!i||!s||d.has(m)||f.has(i)||p.has(s)||!(a!=null&&a.type.endsWith("/worksheet"))||!a.target||a.external)throw new Error("内嵌工作簿的工作表绑定存在歧义");const h=cn(n,a.target);if(!e[h]||v.has(h))throw new Error(`内嵌工作簿工作表目标无效:${h}`);d.add(m),f.add(i),p.add(s),v.add(h),u.set(o,h)}const g=[...l.values()].filter(e=>e.type.endsWith("/sharedStrings"));if(g.length>1)throw new Error("内嵌工作簿存在多个共享字符串关系");const b=g[0];if(b!=null&&b.external)throw new Error("共享字符串不能指向外部目标");const w=b!=null&&b.target?cn(n,b.target):null;if(w&&!e[w])throw new Error(`内嵌工作簿缺少共享字符串:${w}`);return{sheets:u,sharedStrings:w}}function dn(e){return(e==null?void 0:e.formula)??null}function fn(e,t=!0){return me(Object.values(e.series)).filter(e=>t||!e.sourceTemplate).flatMap(e=>Object.entries(e.bindings).flatMap(([e,t])=>{const n=dn(t);return n?[{field:e,formula:n,hierarchy:t==null?void 0:t.hierarchy}]:[]}))}function mn(e){return fn(e).map(e=>e.formula)}function hn(e){const t=fn(e).flatMap(e=>{const t=we(e.formula);return t?[{field:e.field,range:t}]:[]});for(let e=0;e<t.length;e++)for(let n=0;n<e;n++){const r=t[e],o=t[n];if(r.field==="categories"&&o.field==="categories"){if(JSON.stringify(r.range)!==JSON.stringify(o.range))throw new Error("同一图表的类别公式没有共享同一范围");continue}if(r.range.sheet===o.range.sheet&&r.range.startColumn<=o.range.endColumn&&o.range.startColumn<=r.range.endColumn&&r.range.startRow<=o.range.endRow&&o.range.startRow<=r.range.endRow)throw new Error("图表公式存在重叠写入")}}function pn(e,t,n=!1,r=[]){if(!e)return{ok:!1,reason:"图表关系指向的内嵌工作簿不存在"};let o,i;try{i=an(e),o=un(i)}catch{return{ok:!1,reason:"内嵌工作簿结构无法安全读取"}}const s=fn(t);if(!s.length)return{ok:!1,reason:"内嵌工作簿没有可写的数据公式"};for(const e of s){const t=we(e.formula);if(!t||!o.sheets.has(t.sheet))return{ok:!1,reason:`图表公式无法无歧义写回:${e.formula}`};const n=t.endColumn-t.startColumn+1,r=t.endRow-t.startRow+1,i=e.field==="categories"?e.hierarchy:void 0;if(i?(i.orientation==="rows"?n:r)!==i.levels:e.field==="name"?n*r!==1:n>1&&r>1)return{ok:!1,reason:`图表公式不是可安全改写的一维范围:${e.formula}`}}try{r&&!r.length&&hn(t),n&&Wt(t,i,o),r!==!1&&En(t,i,o,r)}catch(e){return{ok:!1,reason:e instanceof Error?e.message:"工作簿写入区域无法安全规划"}}return{ok:!0}}function vn(e,t){return Math.max(0,...mn(e).map(we).filter(e=>(e==null?void 0:e.sheet)===t).map(e=>e.endColumn))+1}function gn(e,t){return Math.max(0,...mn(e).map(we).filter(e=>(e==null?void 0:e.sheet)===t).map(e=>e.endRow))+1}function bn(e,t){return{...e,formula:t,cache:(e==null?void 0:e.cache)??"number"}}function wn(e,t){const n=/* @__PURE__ */new Map,r=/* @__PURE__ */new Map,o=/* @__PURE__ */new Map;for(const[i,s]of t.sheets){const t=e[s];if(!t)continue;const l=h(t).root,a=/* @__PURE__ */new Set,c=/* @__PURE__ */new Set,u=sn(l,"sheetData"),d=/* @__PURE__ */new Set,f=/* @__PURE__ */new Set;for(const e of ln(u,"row")){const t=Xe(e,"r"),n=t===null?Number.NaN:Number(t);if(!Number.isInteger(n)||n<1||n>1048576||d.has(n))throw new Error("工作表存在歧义行定位");d.add(n);for(const t of ln(e,"c")){const e=Xe(t,"r");if(!e)throw new Error("工作表存在无法定位的单元格");const r=e.toUpperCase();if(St(r).row!==n||f.has(r))throw new Error("工作表存在歧义单元格定位");f.add(r);const o=m(t),i=t.attributes.some(e=>e.namespaceUri!==null||!["r","s","t","cm","vm"].includes(e.localName));(o.length||Xe(t,"cm")!==null||Xe(t,"vm")!==null||i)&&(a.add(r),(Xe(t,"cm")!==null||Xe(t,"vm")!==null||i||o.some(e=>e.namespaceUri!==t.namespaceUri||!["v","is"].includes(e.localName)))&&c.add(r));for(const e of o.filter(e=>e.namespaceUri===t.namespaceUri&&e.localName==="f")){const t=Xe(e,"ref");t&&Rt(t).forEach(e=>c.add(e))}}}const p=/* @__PURE__ */new Set;for(const e of ln(sn(l,"mergeCells"),"mergeCell")){const t=Xe(e,"ref");if(!t)throw new Error("合并单元格缺少范围");Rt(t).forEach(e=>p.add(e))}n.set(i,a),r.set(i,p),o.set(i,c)}return{occupied:n,merged:r,unsafe:o}}function yn(e){const t=/* @__PURE__ */new Map;for(const n of fn(e,!1).map(e=>e.formula)){const e=we(n);if(!e)continue;const r=t.get(e.sheet)??/* @__PURE__ */new Set;Mt(n).forEach(e=>r.add(e)),t.set(e.sheet,r)}return t}function xn(e,t){var n;const r=/* @__PURE__ */new Map,o=/* @__PURE__ */new Map,i=/* @__PURE__ */new Set([...e.occupied.keys(),...e.merged.keys(),...e.unsafe.keys()]);for(const s of i){const i=/* @__PURE__ */new Set([...e.merged.get(s)??[],...e.unsafe.get(s)??[]]);for(const r of e.occupied.get(s)??[])(n=t.get(s))!=null&&n.has(r)||i.add(r);const l=/* @__PURE__ */new Map,a=/* @__PURE__ */new Map;for(const e of i){const t=St(e),n=l.get(t.row)??/* @__PURE__ */new Set;n.add(t.column),l.set(t.row,n);const r=a.get(t.column)??/* @__PURE__ */new Set;r.add(t.row),a.set(t.column,r)}r.set(s,l),o.set(s,a)}return{byRow:r,byColumn:o}}function Nn(e,t,n,r){const o=/* @__PURE__ */new Set,i=r.byRow.get(t);for(const e of new Set(n))for(const t of(i==null?void 0:i.get(e))??[])o.add(t);let s=e;for(;o.has(s);)s++;if(s<=16384)return s;throw new Error("工作簿没有可证明为空的新系列区域")}function $n(e,t,n,r){const o=/* @__PURE__ */new Set,i=r.byColumn.get(t);for(const e of new Set(n))for(const t of(i==null?void 0:i.get(e))??[])o.add(t);let s=e;for(;o.has(s);)s++;if(s<=1048576)return s;throw new Error("工作簿没有可证明为空的新系列区域")}function En(e,t,n,r=[]){var o,i,s,l,a,c,u,d,f,m;const h=structuredClone(e),p=fn(h),v=p.filter(e=>e.field!=="name").map(e=>we(e.formula)).find(Boolean);if(!v)throw new Error("内嵌工作簿没有可作为新增数据锚点的安全公式");const g=me(Object.values(h.series)).map(e=>e.bindings.categories).find(e=>we(dn(e))),b=we(dn(g))??v;let w=vn(h,v.sheet),y=gn(h,v.sheet);const x=me(Object.values(h.categories).filter(e=>!e.removed)),N=Math.max(1,x.length),$=wn(t,n),E=yn(e);for(const e of r)for(const[t,n]of yn(e)){const e=E.get(t)??/* @__PURE__ */new Set;for(const t of n)e.add(t);E.set(t,e)}const C=xn($,E),O=Array.from({length:N},(e,t)=>b.startRow+t),j=Array.from({length:N},(e,t)=>b.startColumn+t),I=p.filter(e=>e.field==="name").map(e=>we(e.formula)).find(e=>(e==null?void 0:e.sheet)===v.sheet)??null,k=(I==null?void 0:I.startRow)??(b.startRow>1?b.startRow-1:b.endRow+1),S=(I==null?void 0:I.startColumn)??(b.startColumn>1?b.startColumn-1:b.endColumn+1),K=((o=g==null?void 0:g.hierarchy)==null?void 0:o.orientation)==="columns"||b.startRow===b.endRow&&b.startColumn<b.endColumn,R=v.startRow===v.endRow&&v.startColumn<v.endColumn;for(const e of me(Object.values(h.series))){const t=e.bindings,n=me(Object.values(e.points).filter(e=>!e.removed)),r=e.plotKind==="scatter"||e.plotKind==="bubble",o=we(t.name.formula);if(o&&(t.name=bn(t.name,xe({...o,endColumn:o.startColumn,endRow:o.startRow}))),!r){if(t.categories=bn(t.categories,qe(g??{formula:xe(b)},N)),g!=null&&g.hierarchy&&(t.categories={...t.categories,hierarchy:g.hierarchy}),we(((i=t.values)==null?void 0:i.formula)??null))t.values=bn(t.values,Ne(((s=t.values)==null?void 0:s.formula)??null,Math.max(1,n.length)));else if(!e.removed)if(K){const e=$n(y,v.sheet,[S,...j],C);y=e+1,t.name=bn(t.name,xe({sheet:v.sheet,startColumn:S,endColumn:S,startRow:e,endRow:e})),t.values=bn(t.values,xe({sheet:v.sheet,startColumn:b.startColumn,endColumn:b.startColumn+Math.max(1,n.length)-1,startRow:e,endRow:e}))}else{const e=Nn(w,v.sheet,[k,...O],C);w=e+1,t.name=bn(t.name,xe({sheet:v.sheet,startColumn:e,endColumn:e,startRow:k,endRow:k})),t.values=bn(t.values,xe({sheet:v.sheet,startColumn:e,endColumn:e,startRow:b.startRow,endRow:b.startRow+Math.max(1,n.length)-1}))}continue}const u=["x","y"];e.plotKind==="bubble"&&u.push("size");const d=Array.from({length:Math.max(1,n.length)},(e,t)=>v.startColumn+t),f=Array.from({length:Math.max(1,n.length)},(e,t)=>v.startRow+t);for(const r of u)if(we(((l=t[r])==null?void 0:l.formula)??null))t[r]=bn(t[r],Ne(((a=t[r])==null?void 0:a.formula)??null,Math.max(1,n.length)));else if(!e.removed)if(R){const e=$n(y,v.sheet,[...r==="x"?[S]:[],...d],C);y=e+1,t[r]=bn(t[r],xe({sheet:v.sheet,startColumn:v.startColumn,endColumn:v.startColumn+Math.max(1,n.length)-1,startRow:e,endRow:e}))}else{const e=Nn(w,v.sheet,[k,...f],C);w=e+1,t[r]=bn(t[r],xe({sheet:v.sheet,startColumn:e,endColumn:e,startRow:v.startRow,endRow:v.startRow+Math.max(1,n.length)-1}))}if(!o&&!e.removed){const e=we(((c=t.x)==null?void 0:c.formula)??null);t.name=bn(t.name,xe({sheet:e.sheet,startColumn:R?S:e.startColumn,endColumn:R?S:e.startColumn,startRow:R?e.startRow:k,endRow:R?e.startRow:k}))}}for(const e of mn(h)){const t=we(e);if(t){for(const n of Mt(e))if((u=$.merged.get(t.sheet))!=null&&u.has(n)||(d=$.unsafe.get(t.sheet))!=null&&d.has(n)||(f=$.occupied.get(t.sheet))!=null&&f.has(n)&&!((m=E.get(t.sheet))!=null&&m.has(n)))throw new Error(`工作簿目标单元格 ${t.sheet}!${n} 已被未知内容占用`)}}return r.length||hn(h),h}function Cn(e,t){const n=an(e),r=un(n),o=En(t,n,r);return{bytes:Qt(e,n,r,t,o),state:o}}function On(e){if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("图表身份作用域无效");const t=e;if(Y(t.prefix,t.prefix,"图表身份作用域"),!Array.isArray(t.frames)||t.frames.length>z)throw new Error("图表框架身份数量超限");const n=/* @__PURE__ */new Set;for(const e of t.frames){if(!Array.isArray(e)||e.length!==2||typeof e[0]!="string"||!e[0]||e[0].length>1024||n.has(e[0]))throw new Error("图表框架身份定位无效");Y(e[1],e[1],"图表框架身份"),n.add(e[0])}return t}function jn(e,t,n){return t&&typeof e=="string"&&e.startsWith(`${t.prefix}:`)?`${n}${e.slice(t.prefix.length)}`:e}const In="urn:web-ppt:chart-data-identities:v1",kn=(L+z+U*2)*(A*2+32),{child:Sn,children:Kn}=Te;function Rn(e){if(!e)return"";const t=[];let n=0;const r=e=>{for(const o of e.children)if(o.type==="element"){if(!r(o))return!1}else if(o.type==="text"||o.type==="cdata"){if(n+=o.value.length,n>kn)return!1;t.push(o.value)}return!0};return r(e)?t.join(""):null}const Mn=(e,t)=>e.prefix?`${e.prefix}:${t}`:t;function Pn(e,t){if(!Array.isArray(e)||e.length>z)return null;const n=[],r=/* @__PURE__ */new Set;for(const o of e){try{Y(o,o,t)}catch{return null}if(r.has(o))return null;r.add(o),n.push(o)}return n}function An(e,t,n){var r;const o=Kn(Sn(e,"extLst"),"ext").find(e=>Xe(e,"uri")===In),i=o&&m(o,{localName:"ids",namespaceUri:In})[0];if(!i)return null;const s=Rn(i);if(s===null)return null;let l;try{l=JSON.parse(s)}catch{return null}if(!l||typeof l!="object"||Array.isArray(l))return null;const a=l,c=a.categoryOrientation==="rows"||a.categoryOrientation==="columns"?a.categoryOrientation:void 0;let u;try{u=On(a.scopes)}catch{return null}const d=((r=u==null?void 0:u.frames.find(([e])=>e===t))==null?void 0:r[1])??n??(u==null?void 0:u.prefix)??"",f=e=>jn(e,u,d),h=e=>Array.isArray(e)?e.map(f):e,p=Pn(h(a.categories),"持久化类别身份");if(!p||!Array.isArray(a.series)||a.series.length>U)return null;const v=[],g=/* @__PURE__ */new Set;let b=0;for(const e of a.series){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n={id:f(t.id),points:h(t.points)};try{Y(n.id,n.id,"持久化系列身份")}catch{return null}if(g.has(n.id))return null;const r=Pn(n.points,"持久化数据点身份");if(!r||(b+=r.length)>L)return null;g.add(n.id),v.push({id:n.id,points:r})}const w=a.templates??[];if(!Array.isArray(w)||w.length>T.size)return null;const y=/* @__PURE__ */new Map;for(const t of m(o,{localName:"template",namespaceUri:In})){const n=f(Xe(t,"id"));if(!n||y.has(n))return null;const r=m(t,{localName:"ser",namespaceUri:e.namespaceUri})[0];if(!r)return null;y.set(n,r)}const x=[],N=/* @__PURE__ */new Set;for(const e of w){if(!e||typeof e!="object"||Array.isArray(e))return null;const t=e,n={...t,id:f(t.id),points:h(t.points)};try{Y(n.id,n.id,"持久化模板系列身份")}catch{return null}if(!T.has(n.plotKind)||!Number.isInteger(n.sourceIndex)||Number(n.sourceIndex)<0||Number(n.sourceIndex)>2147483647||g.has(n.id)||N.has(n.plotKind))return null;const r=Pn(n.points,"持久化模板数据点身份"),o=y.get(n.id);if(!r||!o||(b+=r.length)>L)return null;g.add(n.id),N.add(n.plotKind),x.push({id:n.id,plotKind:n.plotKind,sourceIndex:Number(n.sourceIndex),points:r,node:o})}return y.size!==x.length?null:{categories:p,series:v,templates:x,categoryOrientation:c,...u?{scopes:{...u,prefix:d}}:{}}}function zn(e,t,n,r=[],o){var i,s;let l=Sn(e,"extLst");l||(l=u(Mn(e,"extLst"),{selfClosing:!1}),c(e,l));let a=Kn(l,"ext").find(e=>Xe(e,"uri")===In);a||(a=u(Mn(l,"ext"),{selfClosing:!1}),g(a,"uri",In),c(l,a));for(const e of[...a.children])d(a,e);const m=me(Object.values(t.categories).filter(e=>!e.removed)),h=n?n.flatMap(e=>{const n=t.series[e];return n&&!n.removed?[n]:[]}):me(Object.values(t.series).filter(e=>!e.removed)),p={categoryOrientation:(s=(i=M(t.series))==null?void 0:i.hierarchy)==null?void 0:s.orientation,...o?{scopes:o}:{},categories:m.map(e=>e.id),series:h.map(e=>({id:e.id,points:e.plotKind==="scatter"||e.plotKind==="bubble"?me(Object.values(e.points).filter(e=>!e.removed)).map(e=>e.id):[]})),templates:r.map(e=>({id:e.id,plotKind:e.plotKind,sourceIndex:e.sourceIndex,points:e.plotKind==="scatter"||e.plotKind==="bubble"?e.points:[]}))},v=JSON.stringify(p);if(v.length>kn)throw new Error("图表身份清单超过安全上限");const w=u("wppt:ids",{attributes:[["xmlns:wppt",In]],selfClosing:!1});c(w,f(v)),c(a,w);for(const e of r){const t=u("wppt:template",{attributes:[["xmlns:wppt",In],["id",e.id]],selfClosing:!1});c(t,b(e.node)),c(a,t)}}const{child:Un,children:Ln}=Te,Fn=e=>{const t=Ln(e).find(e=>e.localName.endsWith("Ref"));return t&&De(Un(t,"f")).trim()||null};function Tn(e){for(const t of["numRef","strRef","multiLvlStrRef"]){const n=Un(e,t);if(n)return Ln(n).find(e=>e.localName.endsWith("Cache"))??null}return Un(e,"numLit")??Un(e,"strLit")}function Wn(e){const t=Tn(e);return t?t.localName.endsWith("Lit")?"literal":t.localName.startsWith("str")||t.localName.startsWith("multiLvl")?"string":"number":"missing"}function Xn(e){const t=Tn(e),n=Xe(Un(t,"ptCount"),"val"),r=n===null?Number.NaN:Number(n);let o=Number.isInteger(r)&&r>=0?r:0,i=0;for(const e of(t==null?void 0:t.children)??[]){if(e.type!=="element"||e.namespaceUri!==(t==null?void 0:t.namespaceUri)||e.localName!=="pt")continue;if(++i>z)return z+1;const n=Xe(e,"idx"),r=n===null?Number.NaN:Number(n);Number.isInteger(r)&&r>=0&&(o=Math.max(o,r+1))}return o}function Dn(e,t){const n=Tn(e),r=/* @__PURE__ */new Map;if(!n)return r;let o=0;for(const e of n.children){if(e.type!=="element"||e.namespaceUri!==n.namespaceUri||e.localName!=="pt")continue;if(++o>z)break;const i=Xe(e,"idx"),s=i===null?Number.NaN:Number(i);if(!Number.isInteger(s)||s<0||s>=z)continue;const l=De(Un(e,"v"));if(!t)r.set(s,l);else if(!l.trim())r.set(s,null);else{const e=Number(l);r.set(s,Number.isFinite(e)?e:null)}}return r}function _n(e){return{formula:Fn(e),cache:Wn(e)}}function Jn(e){const t=Dn(e,!1);return t.has(0)?String(t.get(0)??""):De(Un(e,"v"))}function Vn(e,t,n,r,o,i,s,l,a,c){var u,d,f;if(a)return{chartPart:n,workbookPart:null,mode:"readonly",reason:"图表来源数据超过安全上限"};if(s)return{chartPart:n,workbookPart:null,mode:"readonly",reason:s};if(l)return{chartPart:n,workbookPart:null,mode:"readonly",reason:"不同系列的类别来源不一致,无法统一编辑"};const m=Ln(r).flatMap(e=>e.localName==="externalData"?[e]:[]).concat(Ln(Un(r,"chart"),"externalData"))[0]??null,h=r.namespaceUri===Se?Me:Oe,p=m?((u=m.attributes.find(e=>e.localName==="id"&&e.namespaceUri===h))==null?void 0:u.value)??null:null,v=ct(e,n),g=p?((d=v[p])==null?void 0:d.target)??null:null;if(p&&((f=v[p])!=null&&f.external))return{chartPart:n,workbookPart:null,mode:"readonly",reason:"图表绑定外部工作簿,不能写回内嵌包"};if(!g)return{chartPart:n,workbookPart:null,mode:"cache",reason:"图表没有可写的内嵌工作簿"};if(Object.values(i).some(e=>Object.values(e.bindings).some(e=>(e==null?void 0:e.formula)&&e.cache==="missing")))return{chartPart:n,workbookPart:g,mode:"readonly",reason:"图表公式缺少缓存,不能把未知工作簿值当成空值覆盖"};const b=ot(e,g),w=pn(b,{categories:o,series:i},!0,c?!1:[]);return w.ok?{chartPart:n,workbookPart:g,mode:"workbook"}:{chartPart:n,workbookPart:g,mode:"readonly",reason:w.reason}}function Bn(e,t,n=!1,r){var o,i;const s=()=>Yn(e,t,n,r);return((i=(o=$t())==null?void 0:o.source)==null?void 0:i.call(o,e,t,n,r,s))??s()}function Yn(e,t,n=!1,r){var i,s,l;const a=e.elements[t],c=r??(a&&bt(e,t)),u=c&&ot(e,c);if(!a&&!r||!c||!u)throw new Error(`元素 ${t} 不是可读取的经典图表`);const d=h(u).root,f=An(d,r?void 0:gt(e,t),t),m=Un(Un(d,"chart"),"plotArea");if(!m)throw new Error(`图表 ${t} 缺少 plotArea`);const p=/* @__PURE__ */Object.create(null),v=/* @__PURE__ */Object.create(null);let g=null,b,w=0,y=!1,x=!1,N,$=!1,E,C=!1,O=0;const j=/* @__PURE__ */new Map,I=[];let k=0;const S=/* @__PURE__ */new Set;for(const e of Ln(m)){const t=It[e.localName];if(!t)continue;const n=t==="scatter"||t==="bubble";S.add(t),x||(x=n),y||(y=!n);for(const n of Ln(e,"ser"))I.push({source:n,plotKind:t,identity:f==null?void 0:f.series[k],fallback:k,removed:!1}),k++}for(const e of(f==null?void 0:f.templates)??[])S.has(e.plotKind)&&I.push({source:e.node,plotKind:e.plotKind,identity:e,fallback:e.sourceIndex,removed:!0});for(const e of I){if(Object.keys(v).length>=U){C=!0;break}const{source:n,plotKind:r}=e,a=r==="scatter"||r==="bubble",c=Xe(Un(n,"idx"),"val"),u=c===null?Number.NaN:Number(c),d=Number.isInteger(u)&&u>=0&&u<=2147483647?u:e.fallback,m=Xe(Un(n,"order"),"val"),h=m===null?Number.NaN:Number(m),p=Number.isInteger(h)&&h>=0&&h<=2147483647?h:e.fallback,y=`${t}:s${d}`,x=j.get(y)??0;j.set(y,x+1);const I=((i=e.identity)==null?void 0:i.id)??`${y}${x?`~${x}`:""}`,k=Un(n,a?"yVal":"val"),S=Dn(k,!0),K=a?Un(n,"xVal"):null,R=Dn(K,!0),M=r==="bubble"?Un(n,"bubbleSize"):null,P=Dn(M,!0),A=a?null:Un(n,"cat");let F;try{F=Ze(A,Fn(k),f==null?void 0:f.categoryOrientation)}catch(e){N=e instanceof Error?e.message:"多级类别来源无效"}Un(Un(n,"tx"),"multiLvlStrRef")&&(N="系列名称使用不支持的多级引用"),F&&(Xn(k)>F.count||[...S.keys()].some(e=>e>=F.count))&&(N="多级类别与系列数据点数不一致");const T=F?new Map(F.slots.map((e,t)=>[t,e[e.length-1]])):A?Dn(A,!1):/* @__PURE__ */new Map;!b&&F&&(b=F.slots),!g&&A&&(g=T);const W=[(F==null?void 0:F.count)??Xn(A),Xn(k),Xn(K),Xn(M)];if(!a){const e=JSON.stringify([Fn(A),Wn(A),W[0],[...T],F]);E===void 0?E=e:$||($=E!==e)}if(W.some(e=>e>z)){C=!0;break}w=Math.max(w,W[0],(f==null?void 0:f.categories.length)??0);const X=Math.min(z,Math.max(W[1],W[2],W[3],a?((s=e.identity)==null?void 0:s.points.length)??0:w));if(O+X>L){C=!0;break}O+=X;const D=/* @__PURE__ */Object.create(null);for(let n=0;n<X;n++){const i=(a?(l=e.identity)==null?void 0:l.points[n]:f==null?void 0:f.categories[n])??`${a?I:t}:p${n}`;D[i]={id:i,order:o(n),value:S.get(n)??null,...a?{x:R.get(n)??null}:{},...r==="bubble"?{size:P.get(n)??null}:{}}}v[I]={id:I,order:o(p),sourceIndex:d,plotKind:r,name:Jn(Un(n,"tx")),points:D,bindings:{name:_n(Un(n,"tx")),...a?{x:_n(K),y:_n(k)}:{categories:{..._n(A),...F?{hierarchy:F.hierarchy}:{}},values:_n(k)},...r==="bubble"?{size:_n(M)}:{}},...e.removed?{removed:!0,sourceTemplate:!0}:{}}}for(let e=0;e<w;e++){const n=(g==null?void 0:g.get(e))??null,r=(f==null?void 0:f.categories[e])??`${t}:p${e}`;p[r]={id:r,order:o(e),label:String(n??""),...b?{levels:b[e]}:{}}}const K=Vn(e,t,c,d,p,v,N,$,C,n);return{kind:y&&x?"mixed":x?"xy":"category",categories:p,series:v,binding:f!=null&&f.scopes&&!$t()&&K.mode!=="readonly"?{...K,mode:"readonly",reason:Ot}:K}}function Zn(e,t){var n;const r=Bn(e,t,!!((n=$t())!=null&&n.owns(e,t))),o=Ct(e,t),{state:i,deferred:s}=rt(r,o);if(o!==void 0&&i.binding.mode==="workbook"&&i.binding.workbookPart){const t=ot(e,i.binding.workbookPart),n=pn(t,i);n.ok||(i.binding={...i.binding,mode:"readonly",reason:n.reason})}return{state:jt(e,t,i),deferred:s}}const qn=(e,t)=>Zn(e,t).state;function Gn(e){const t=structuredClone(e);for(const[e,n]of Object.entries(t.categories))n.removed&&delete t.categories[e];for(const[e,n]of Object.entries(t.series)){if(n.removed){delete t.series[e];continue}for(const[e,t]of Object.entries(n.points))t.removed&&delete n.points[e]}return t}function Hn(e){const t=Gn(e);return{kind:t.kind,binding:t.binding,categories:me(Object.values(t.categories)),series:me(Object.values(t.series)).map(e=>({...e,points:me(Object.values(e.points))}))}}const Qn=(e,t)=>JSON.stringify(Hn(e))===JSON.stringify(Hn(t));function er(e,t){var n;const r=Bn(e,t,!!((n=$t())!=null&&n.owns(e,t)));return et(r),Hn(r)}function tr(e,t){const n=Zn(e,t);return!n.deferred&&JSON.stringify(Hn(n.state))===JSON.stringify(er(e,t))}function nr(e,t){return JSON.stringify(Hn(Zn(e,t).state))!==JSON.stringify(er(e,t))}function rr(e,t){const n=qn(e,t),r=me(Object.values(n.categories).filter(e=>!e.removed)).map(({levelParent:e,levelClears:t,...n})=>n),o=me(Object.values(n.series)),i=o.filter(e=>!e.removed).map(e=>({...e,bindings:structuredClone(e.bindings),points:me(Object.values(e.points).filter(e=>!e.removed)).map(e=>({...e}))})),s=[...new Set(o.map(e=>e.plotKind))];return{chartId:t,kind:n.kind,plotKinds:s,categories:r,series:i,binding:{...n.binding}}}function or(e,t,n=!1){return Bn(e,t,n)}const ir="shared-native";function sr(e,t){return Bn(e,ir,!0,t)}function lr(e){return Object.values(e.elements).filter(t=>bt(e,t.id)).map(e=>e.id)}const{child:ar,children:cr}=Te;function ur(e,t,n=null){const r=ar(e,t);if(r)return r;const o=Je(e,t);return _e(e,o,n),o}function dr(e,t,n){const r=e.children.indexOf(t),o=r<0?null:e.children[r+1]??null,i=Je(e,n,t.attributes.map(e=>[e.name,e.value]));for(const e of[...t.children])d(t,e),_e(i,e);return d(e,t),_e(e,i,o),i}const fr=["idx","order","tx","spPr","invertIfNegative","pictureOptions","explosion","marker","dPt","dLbls","trendline","errBars","cat","val","shape","smooth","extLst"],mr=["idx","order","tx","spPr","invertIfNegative","marker","dPt","dLbls","trendline","errBars","xVal","yVal","bubbleSize","bubble3D","smooth","extLst"];function hr(e,t,n){const r=n==="scatter"||n==="bubble"?mr:fr,o=e=>{const t=r.indexOf(e);return t<0?Number.POSITIVE_INFINITY:t};let i=ar(e,t);const s=cr(e),l=o(t),a=i?s.indexOf(i):-1,c=a>=0&&(s.slice(0,a).some(e=>o(e.localName)>l)||s.slice(a+1).some(e=>o(e.localName)<l));i&&c&&d(e,i);const u=cr(e).find(e=>o(e.localName)>l)??null;return i?c&&_e(e,i,u):(i=Je(e,t),_e(e,i,u)),i}function pr(e){for(const t of["numRef","strRef","multiLvlStrRef"]){const n=ar(e,t);if(n)return{ref:n,data:cr(n).find(e=>e.localName.endsWith("Cache"))??null}}return{ref:null,data:ar(e,"numLit")??ar(e,"strLit")}}function vr(e,t,n,r){const o=e.children[e.children.indexOf(t)+1]??null,i=Je(e,r?"numLit":"strLit",(n==null?void 0:n.attributes.map(e=>[e.name,e.value]))??[]);if(n)for(const e of[...n.children])d(n,e),_e(i,e);const s=ar(t,"extLst");if(s){const e=ar(i,"extLst");if(e)for(const t of[...s.children])d(s,t),_e(e,t);else d(t,s),_e(i,s)}return d(e,t),_e(e,i,o),i}function gr(e,t,n,r){let{ref:o,data:i}=pr(e);if(o){const t=n?"numRef":"strRef";o.localName!==t&&(o=dr(e,o,t)),i=cr(o).find(e=>e.localName.endsWith("Cache"))??null}if(i){const t=o?n?"numCache":"strCache":n?"numLit":"strLit";i.localName!==t&&(i=dr(o??e,i,t))}if(o&&r.formula===null&&(i=vr(e,o,i,n),o=null),i||(i=Je(o??e,o?n?"numCache":"strCache":n?"numLit":"strLit"),_e(o??e,i,ar(o??e,"extLst"))),!n){const e=ar(i,"formatCode");e&&d(i,e)}if(o){const e=ar(o,"f"),n=Ne(r.formula,t.length);n?Ve(e??ur(o,"f",i),n):e&&d(o,e)}for(const e of cr(i,"pt"))d(i,e);if(n&&!ar(i,"formatCode")){const e=Je(i,"formatCode");Ve(e,"General"),_e(i,e,cr(i).find(e=>["ptCount","pt","extLst"].includes(e.localName))??null)}const s=ur(i,"ptCount",cr(i).find(e=>["pt","extLst"].includes(e.localName))??null);g(s,"val",String(t.length)),t.forEach((e,t)=>{if(e===null)return;const n=Je(i,"pt",[["idx",String(t)]]),r=Je(n,"v");Ve(r,String(e)),_e(n,r),_e(i,n,ar(i,"extLst"))})}function br(e,t,n){const{ref:r,data:o}=pr(e);r&&n.formula?gr(e,[t],!1,n):((r||o)&&d(e,r??o),Ve(ur(e,"v"),t))}function wr(e){const{ref:t,data:n}=pr(e);return(t==null?void 0:t.localName)==="numRef"||(n==null?void 0:n.localName)==="numLit"}function yr(e){const t=e?pr(e).data:null,n=Xe(ar(t,"ptCount"),"val"),r=n===null?Number.NaN:Number(n);let o=Number.isInteger(r)&&r>=0?r:0,i=0;for(const e of(t==null?void 0:t.children)??[]){if(e.type!=="element"||e.namespaceUri!==(t==null?void 0:t.namespaceUri)||e.localName!=="pt")continue;if(++i>z)break;const n=Xe(e,"idx"),r=n===null?Number.NaN:Number(n);Number.isInteger(r)&&r>=0&&r<z&&(o=Math.max(o,r+1))}return Math.min(z,o)}function xr(e,t,n,r){var o,i;const s=/* @__PURE__ */new Map,l=An(e,r,n),a=/* @__PURE__ */new Map;let c=0;for(const e of cr(t)){const t=It[e.localName];if(t)for(const r of cr(e,"ser")){const e=Xe(ar(r,"idx"),"val"),u=e===null?Number.NaN:Number(e),d=Number.isInteger(u)&&u>=0&&u<=2147483647?u:c,f=`${n}:s${d}`,m=a.get(f)??0;a.set(f,m+1);const h=((o=l==null?void 0:l.series[c])==null?void 0:o.id)??`${f}${m?`~${m}`:""}`,p=t==="scatter"||t==="bubble",v=p?[ar(r,"xVal"),ar(r,"yVal"),ar(r,"bubbleSize")]:[ar(r,"cat"),ar(r,"val")],g=p?(i=l==null?void 0:l.series[c])==null?void 0:i.points:l==null?void 0:l.categories,b=Math.max((g==null?void 0:g.length)??0,...v.map(yr)),w=Array.from({length:b},(e,t)=>(g==null?void 0:g[t])??`${p?h:n}:p${t}`);s.set(h,{node:r,pointIds:w,id:h,plotKind:t,sourceIndex:d}),c++}}return s}function Nr(e,t){return cr(e).find(e=>cr(e,"ser").includes(t))??null}function $r(e,t,n){const r=cr(e).find(e=>It[e.localName]===t);if(!r)throw new Error(`来源图表没有 ${t} 绘图区,不能在保存时伪造图种`);const o=n.get(t);if(!o)throw new Error(`${t} 绘图区没有可继承样式的系列`);const i=y(o.node),s=cr(r).find(e=>!"barDir grouping varyColors scatterStyle radarStyle ofPieType wireframe ser".split(" ").includes(e.localName))??null;return _e(r,i,s),{...o,node:i}}function Er(e,t,n){const r=new Map(me(Object.values(n.points).filter(e=>!e.removed)).map((e,t)=>[e.id,t])),o=(e,n)=>{const o=ar(n,"idx"),i=Xe(o,"val"),s=i===null?Number.NaN:Number(i),l=Number.isInteger(s)&&s>=0?t[s]:void 0,a=l===void 0?void 0:r.get(l);a===void 0?d(e,n):g(o,"val",String(a))};for(const t of[...cr(e,"dPt")])o(e,t);const i=ar(e,"dLbls");if(i)for(const e of[...cr(i,"dLbl")])o(i,e)}function Cr(e,t,n,r,o){var i,s;g(hr(e,"idx",t.plotKind),"val",String(o)),g(hr(e,"order",t.plotKind),"val",String(r)),br(hr(e,"tx",t.plotKind),t.name,t.bindings.name);const l=me(Object.values(t.points).filter(e=>!e.removed));if(t.plotKind==="scatter"||t.plotKind==="bubble")gr(hr(e,"xVal",t.plotKind),l.map(e=>e.x??null),!0,t.bindings.x),gr(hr(e,"yVal",t.plotKind),l.map(e=>e.value),!0,t.bindings.y),t.plotKind==="bubble"&&gr(hr(e,"bubbleSize",t.plotKind),l.map(e=>e.size??null),!0,t.bindings.size);else{const r=hr(e,"cat",t.plotKind),o=n.map(e=>e.label),a=Pt(o)!==null&&(((i=t.bindings.categories)==null?void 0:i.cache)==="number"||wr(r));(s=t.bindings.categories)!=null&&s.hierarchy?Qe(r,n,t.bindings.categories):gr(r,o,a,t.bindings.categories),gr(hr(e,"val",t.plotKind),l.map(e=>e.value),!0,t.bindings.values)}}function Or(e,t,n,r,o){var i;const s=h(e),l=ar(ar(s.root,"chart"),"plotArea");if(!l)throw new Error(`图表 ${t} 缺少 plotArea`);const a=xr(s.root,l,t,r),c=An(s.root,r,t),u=/* @__PURE__ */new Map;for(const e of(c==null?void 0:c.templates)??[])u.set(e.plotKind,{node:e.node,pointIds:e.points,id:e.id,plotKind:e.plotKind,sourceIndex:e.sourceIndex});for(const e of cr(l)){const t=It[e.localName],n=cr(e,"ser")[0],r=n&&[...a.values()].find(e=>e.node===n);t&&r&&u.set(t,{...r,node:b(n)})}for(const[e,t]of a)if((i=n.series[e])!=null&&i.removed||!n.series[e]){const e=Nr(l,t.node);e&&d(e,t.node)}const f=me(Object.values(n.categories).filter(e=>!e.removed)),m=me(Object.values(n.series).filter(e=>!e.removed)),p=new Set(m.filter(e=>a.has(e.id)).map(e=>e.sourceIndex)),v=/* @__PURE__ */new Set,g=/* @__PURE__ */new Map;let w=0;m.forEach((e,t)=>{const n=a.get(e.id),r=n??$r(l,e.plotKind,u);let o=e.sourceIndex;if(!n&&(p.has(o)||v.has(o))){for(;v.has(w)||p.has(w);)w++;o=w++}n||v.add(o),Er(r.node,r.pointIds,e),Cr(r.node,e,f,t,o),g.set(r.node,e.id)});const y=cr(l).flatMap(e=>cr(e,"ser")).flatMap(e=>g.has(e)?[g.get(e)]:[]),x=new Set(m.map(e=>e.plotKind)),N=[];for(const[e,t]of u){if(x.has(e))continue;const r=n.series[t.id]??Object.values(n.series).find(t=>t.plotKind===e);if(!r)continue;const o=b(t.node),i={...r,name:"",points:/* @__PURE__ */Object.create(null)};Er(o,t.pointIds,i),Cr(o,i,f,0,r.sourceIndex),N.push({id:r.id,plotKind:e,sourceIndex:r.sourceIndex,points:[],node:o})}return zn(s.root,n,y,N,o??(c==null?void 0:c.scopes)),s}function jr(e,t){for(const n of[...e.children])n.type==="element"&&(!n.namespaceUri||!t.has(n.namespaceUri)?d(e,n):jr(n,t))}function Ir(e,t,n,r){const o=Or(e,t,n,r),i=o.root.namespaceUri===Se?/* @__PURE__ */new Set([Se,Ke]):/* @__PURE__ */new Set([$e,Ee]);return jr(o.root,i),w(o)}function kr(e,t){const n=qn(e,t);if(n.binding.unresolved)throw new Error(n.binding.reason);const r=n.binding.chartPart,o=ot(e,r);return{xml:Ir(o,t,n,gt(e,t)),context:ft(e,t,r),part:r}}function Sr(e,t,n){if(n.kind!=="group")return n;const r=kr(e,t);return{...n,children:E(r.xml,n.w,n.h,r.context)}}function Kr(e,t){Y(e,e,t)}function Rr(e,t,n){var r,o;if(t.path[4]!=="chart-data")throw new Error(`Patch ${n} 的图表命名空间无效`);const i=t.path.slice(5),s=i[0]==="categories"&&i.length===3&&["id","order","label","levelParent","removed"].includes(i[2]),l=i[0]==="categories"&&i.length===4&&["levels","levelClears"].includes(i[2]);if(l){const n=(o=(r=M(e.series))==null?void 0:r.hierarchy)==null?void 0:o.levels;if(!n||!/^(0|[1-9]\d*)$/.test(i[3])||Number(i[3])>=n)throw new Error("图表类别层级索引无效");t.op==="set"&&i[2]==="levelClears"&&t.value!==null&&Kr(t.value,"类别层级清空前驱"),t.op==="set"&&i[2]==="levels"&&t.value!==null&&_(t.value,"类别层级")}const a=i[0]==="series"&&i.length===3&&["id","order","sourceIndex","plotKind","name","pointsReady","removed"].includes(i[2]),c=i[0]==="series"&&i.length===5&&i[2]==="points"&&["id","order","value","x","size","removed"].includes(i[4]),u=i[0]==="series"&&i.length===5&&i[2]==="bindings"&&["name","categories","values","x","y","size"].includes(i[3])&&["formula","cache"].includes(i[4]);if(!(t.op==="del"&&i.length===0)&&!s&&!l&&!a&&!c&&!u)throw new Error(`Patch ${n} 的图表路径不受支持`);if(s&&e.kind==="xy")throw new Error(`Patch ${n} 的纯 XY 图不能包含类别`);if(t.op==="set"){const r=i[i.length-1];if(r==="id"&&Y(t.value,c?i[3]:i[1],`Patch ${n} 的身份`),r==="order"&&Z(t.value,`Patch ${n} 的顺序`),r==="levelParent"&&t.value!==null&&Kr(t.value,"类别前驱"),(r==="name"||r==="label")&&_(t.value,`Patch ${n} 的名称`),r==="removed"&&t.value!==!0)throw new Error(`Patch ${n} 的删除标记无效`);if(r==="sourceIndex"&&(!Number.isInteger(t.value)||Number(t.value)<0||Number(t.value)>2147483647))throw new Error(`Patch ${n} 的系列索引无效`);if(r==="plotKind"&&!T.has(t.value))throw new Error(`Patch ${n} 的图种无效`);if(r==="plotKind"&&!Object.values(e.series).some(e=>e.plotKind===t.value))throw new Error(`Patch ${n} 的图种没有可继承的来源绘图区`);if(r==="pointsReady"&&t.value!==!0)throw new Error(`Patch ${n} 的空数据点标记无效`);if(r==="formula"&&t.value!==null)throw new Error(`Patch ${n} 不能注入来源公式`);if(r==="cache"&&t.value!=="literal")throw new Error(`Patch ${n} 的缓存类型无效`);(r==="value"||r==="x"||r==="size")&&J(t.value,`Patch ${n} 的 ${r}`)}}const Mr="chart-data";function Pr(e,t){var n,r;return((r=(n=e.elements[t])==null?void 0:n.ovr.extensions)==null?void 0:r[Mr])??null}function Ar(e){var t,n,r,o,i,s,l,a;if(e.meta.source!=="pptx")return;const c=/* @__PURE__ */Object.create(null),u=/* @__PURE__ */Object.create(null),d=/* @__PURE__ */new Set;for(const f of Object.values(e.elements)){const m=bt(e,f.id);if(!m||d.has(m))continue;const h=Pr(e,f.id),v=e.saveState.baselines[m]!==void 0;if(!h&&!v&&!((t=$t())!=null&&t.active(e)))continue;d.add(m);const g=ot(e,m);if(!g)throw new Error(`图表来源 part 不存在:${m}`);u[m]=e.saveState.baselines[m]??g.slice();const b=or(e,f.id).binding.workbookPart;if(!nr(e,f.id)){if(!v)continue;c[m]=u[m],b&&e.saveState.baselines[b]&&!((r=(n=$t())==null?void 0:n.workbook)!=null&&r.call(n,e,f.id))&&(u[b]=e.saveState.baselines[b],c[b]??(c[b]=u[b]));continue}let w=qn(e,f.id);if(w.binding.mode==="workbook"){if(!b)throw new Error("工作簿同步状态缺少目标 part");const t=ot(e,b);if(!t)throw new Error(`内嵌工作簿不存在:${b}`);if(u[b]=e.saveState.baselines[b]??t.slice(),(i=(o=$t())==null?void 0:o.workbook)!=null&&i.call(o,e,f.id)){if(h&&!((s=$t())!=null&&s.active(e,b)))throw new Error("共享关系中的既有局部覆盖尚未迁移为文档事务")}else{const e=Cn(c[b]??t,w);w=e.state,c[b]=e.bytes}}else if(w.binding.mode==="readonly")throw new Error(w.binding.reason??"图表数据只读");c[m]=p(Or(g,f.id,w,gt(e,f.id),(a=(l=$t())==null?void 0:l.identityScopes)==null?void 0:a.call(l,e,m,g,f.id)))}if(Reflect.ownKeys(c).length)return{changes:c,baselines:u}}function zr(e,t,n,r,o){if(n.kind==="xy")throw new Error("纯 XY 图没有可编辑类别");const i=n.categories[r.pointId];if(!i||i.removed)throw new Error(`图表类别不存在:${r.pointId}`);if(r.op==="set-category-path"){if(!i.levels)throw new Error("此图表没有多级类别");return Q(r.levels,i.levels.length),Wr(e,t,i,r.levels,o,Ur(n,i.id))}if(_(r.label,"类别名称"),i.levels)return Wr(e,t,i,[...i.levels.slice(0,-1),r.label],o);const s=["elements",t,"ovr","extensions","chart-data","categories",i.id,"label"];return{forward:[{op:"set",path:s,value:r.label,origin:o}],inverse:[{op:"set",path:s,value:i.label,origin:o}]}}function Ur(e,t){var n;const r=me(Object.values(e.categories).filter(e=>!e.removed));return((n=r[r.findIndex(e=>e.id===t)-1])==null?void 0:n.id)??null}function Lr(e){var t,n;const r=(n=(t=M(e.series))==null?void 0:t.hierarchy)==null?void 0:n.levels;if(r&&(Object.keys(e.categories).length+1)*r>L)throw new Error("图表类别层级单元数量已达上限")}function Fr(e,t,n,r){var o,i,s;const l=Ct(e,t),a=(s=(i=(o=l==null?void 0:l.categories)==null?void 0:o[n])==null?void 0:i.levels)==null?void 0:s[r];return a===null||typeof a=="string"?a:void 0}function Tr(e,t,n,r){var o,i,s;const l=Ct(e,t),a=(s=(i=(o=l==null?void 0:l.categories)==null?void 0:o[n])==null?void 0:i.levelClears)==null?void 0:s[r];return a===null||typeof a=="string"?a:void 0}function Wr(e,t,n,r,o,i=null){const s=[],l=[];return r.forEach((a,c)=>{var u;const d=(u=n.levels)==null?void 0:u[c];if(a===d)return;const f=["elements",t,"ovr","extensions","chart-data","categories",n.id,"levels",String(c)];s.push({op:"set",path:f,value:a,origin:o});const m=Fr(e,t,n.id,c);l.unshift(m===void 0?{op:"del",path:f,origin:o}:{op:"set",path:f,value:m,origin:o});const h=Tr(e,t,n.id,c);if(c<r.length-1&&(a===null||h!==void 0)){const e=["elements",t,"ovr","extensions","chart-data","categories",n.id,"levelClears",String(c)];s.push(a===null?{op:"set",path:e,value:i,origin:o}:{op:"del",path:e,origin:o}),l.unshift(h!==void 0?{op:"set",path:e,value:h,origin:o}:{op:"del",path:e,origin:o})}}),{forward:s,inverse:l}}const Xr="chart-data",Dr=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function _r(e,t){if(e.meta.readonly)throw new Error("只读编辑文档不能修改图表数据");const n=e.elements[t];if(!n||!bt(e,t)||n.meta.editable!=="frame")throw new Error(`元素 ${t} 不是可编辑数据的经典图表`)}function Jr(e,t){_r(e,t);const n=qn(e,t);if(n.binding.mode==="readonly")throw new Error(n.binding.reason??"图表数据只读");return n}function Vr(e,t){var n;_r(e,t);const r=or(e,t),o=l(e,t,Xr),i=(o?r:jt(e,t,r)).binding;if(i.mode==="readonly")throw new Error(i.reason??"图表数据只读");if(!o&&((n=$t())!=null&&n.owns(e,t)))throw new Error("共享图表需使用文档级补丁");return r}function Br(e,t,n,r){return{op:"set",path:["elements",e,"ovr","extensions",Xr,...t],value:n,origin:r}}function Yr(e,t,n){return{op:"del",path:["elements",e,"ovr","extensions",Xr,...t],origin:n}}function Zr(e,t,n,r){return n===void 0?Yr(e,t,r):Br(e,t,n,r)}function qr(e,t,n,r,o){return{forward:[Br(e,t,n,o)],inverse:[Zr(e,t,r,o)]}}function Gr(e,t,n,r){const o=[];for(const[i,s]of Object.entries(n))s&&typeof s=="object"?o.push(...Gr(e,[...t,i],s,r)):o.push(Br(e,[...t,i],s,r));return o}function Hr(e,t){if(typeof e!="string")throw new Error(`${t}身份无效`);return Y(e,e,t),e}function Qr(e){V(e,"新增图表系列");const t=Hr(e.id,"新增图表系列");te(e,t,"新增图表系列",!0)}function eo(e){V(e,"新增图表类别");const t=Hr(e.id,"新增图表类别");H(e,t,"新增图表类别")}function to(e,t,n){if(G(e,t,"新增图表数据点"),n!=="scatter"&&n!=="bubble"&&(Dr(e,"x")||Dr(e,"size"))||n==="scatter"&&Dr(e,"size"))throw new Error("新增图表数据点与图种不匹配")}function no(e){const t=e.payload;if(!t||typeof t!="object"||typeof t.op!="string")throw new Error("图表数据命令无效");return t}function ro(e,t,n){var r,o,i;const s=Jr(e,t.id),l=no(t);if(l.op==="set-series-name"){_(l.name,"系列名称");const e=s.series[l.seriesId];if(!e||e.removed)throw new Error(`图表系列不存在:${l.seriesId}`);return qr(t.id,["series",l.seriesId,"name"],l.name,e.name,n)}if(l.op==="set-category-label"||l.op==="set-category-path")return zr(e,t.id,s,l,n);if(l.op==="set-point"){const e=s.series[l.seriesId],r=e==null?void 0:e.points[l.pointId];if(!e||e.removed||!r||r.removed)throw new Error("图表数据点不存在");const o=["value","x","size"].filter(e=>Dr(l,e));if(!o.length)throw new Error("图表数据点命令没有修改字段");const i=e.plotKind==="scatter"||e.plotKind==="bubble";if(o.includes("x")&&!i)throw new Error("只有散点或气泡图可以写 X 值");if(o.includes("size")&&e.plotKind!=="bubble")throw new Error("只有气泡图可以写大小");const a=[],c=[];for(const e of o){J(l[e],`数据点 ${e}`);const o=["series",l.seriesId,"points",l.pointId,e];a.push(Br(t.id,o,l[e],n)),c.unshift(Zr(t.id,o,r[e],n))}return{forward:a,inverse:c}}if(l.op==="add-series"){if(Qr(l.series),Object.keys(s.series).length>=U)throw new Error("图表系列数量已达上限");if(ao(s)+Object.keys(l.series.points??{}).length>L)throw new Error("图表数据单元数量已达上限");if(s.series[l.series.id])throw new Error(`图表系列身份重复:${l.series.id}`);return{forward:[...Gr(t.id,["series",l.series.id],l.series,n),Br(t.id,["series",l.series.id,"pointsReady"],!0,n),Yr(t.id,["series",l.series.id,"removed"],n)],inverse:[Br(t.id,["series",l.series.id,"removed"],!0,n)]}}if(l.op==="remove-series"){const e=s.series[l.seriesId];if(!e||e.removed)throw new Error(`图表系列不存在:${l.seriesId}`);return qr(t.id,["series",l.seriesId,"removed"],!0,e.removed,n)}if(l.op==="add-category"){Lr(s),eo(l.category);const e=(o=(r=M(s.series))==null?void 0:r.hierarchy)==null?void 0:o.levels;if(l.category.levels){if(!e)throw new Error("此图表没有多级类别");if(Q(l.category.levels,e),(l.category.levels[e-1]??"")!==l.category.label)throw new Error("类别名称与叶级标签不一致")}if(V(l.points,"新增类别数据点"),s.kind==="xy")throw new Error("纯 XY 图不能新增类别");if(Object.keys(s.categories).length>=z)throw new Error("图表类别数量已达上限");if(ao(s)+Object.keys(l.points).length>L)throw new Error("图表数据单元数量已达上限");if(s.categories[l.category.id])throw new Error(`图表类别身份重复:${l.category.id}`);const i=me(Object.values(s.series).filter(e=>!e.removed&&e.plotKind!=="scatter"&&e.plotKind!=="bubble")),a=new Set(i.map(e=>e.id));if(Object.keys(l.points).length!==a.size||Object.keys(l.points).some(e=>!a.has(e)))throw new Error("新增类别数据点没有覆盖全部类别系列");for(const[e,t]of Object.entries(l.points))to(t,l.category.id,s.series[e].plotKind);const c=Gr(t.id,["categories",l.category.id],l.category,n);c.push(Yr(t.id,["categories",l.category.id,"removed"],n));for(const[e,r]of Object.entries(l.points))c.push(...Gr(t.id,["series",e,"points",r.id],r,n)),c.push(Yr(t.id,["series",e,"points",r.id,"removed"],n));const u=[...Object.entries(l.points).map(([e,r])=>Br(t.id,["series",e,"points",r.id,"removed"],!0,n)),Br(t.id,["categories",l.category.id,"removed"],!0,n)];return{forward:c,inverse:u}}if(l.op==="remove-category"){if(s.kind==="xy")throw new Error("纯 XY 图没有可删除类别");const e=s.categories[l.pointId];if(!e||e.removed)throw new Error(`图表类别不存在:${l.pointId}`);const r=[Br(t.id,["categories",l.pointId,"removed"],!0,n)],o=[];for(const e of me(Object.values(s.series)))e.points[l.pointId]&&(r.push(Br(t.id,["series",e.id,"points",l.pointId,"removed"],!0,n)),o.unshift(Yr(t.id,["series",e.id,"points",l.pointId,"removed"],n)));return o.push(Yr(t.id,["categories",l.pointId,"removed"],n)),{forward:r,inverse:o}}if(l.op==="add-point"){const e=s.series[l.seriesId];if(e&&to(l.point,Hr((i=l.point)==null?void 0:i.id,"新增图表数据点"),e.plotKind),!e||e.removed||e.points[l.point.id])throw new Error("图表数据点身份无效");if(Object.keys(e.points).length>=z)throw new Error("图表数据点数量已达上限");if(ao(s)>=L)throw new Error("图表数据单元数量已达上限");return{forward:[...Gr(t.id,["series",l.seriesId,"points",l.point.id],l.point,n),Yr(t.id,["series",l.seriesId,"points",l.point.id,"removed"],n)],inverse:[Br(t.id,["series",l.seriesId,"points",l.point.id,"removed"],!0,n)]}}const a=s.series[l.seriesId],c=a==null?void 0:a.points[l.pointId];if(!a||a.removed||!c||c.removed)throw new Error("图表数据点不存在");if(a.plotKind!=="scatter"&&a.plotKind!=="bubble")throw new Error("只有散点或气泡系列可以独立删除数据点");return qr(t.id,["series",l.seriesId,"points",l.pointId,"removed"],!0,c.removed,n)}function oo(e,t,n){Rr(Vr(e,t.path[1]),t,n)}function io(e,t){const n=/* @__PURE__ */new Map;for(const{patch:r,index:o}of t){const t=r.path[1];let i=n.get(t);i||(i=Vr(e,t),n.set(t,i)),Rr(i,r,o)}}function so(e,t){const n=Ar(e);if(n)for(const[e,r]of Object.entries(n.changes))r&&(t[e]=r)}R(Xr,{command:(e,t,n)=>{var r;const o=ro(e,t,n);return((r=$t())==null?void 0:r.command(e,t.id,o,n))??o},validatePatch:oo,validatePatches:io,prune:(e,t)=>tr(e,t),project:Sr,beforeSave:Ar,generateParts:so,copyParts:so});function lo(e){return e.reduce((e,n)=>e===null||t(e,n.order)<0?n.order:e,null)}function ao(e){return Object.values(e.series).reduce((e,t)=>e+Object.keys(t.points).length,0)}function co(e,t,n){e.exec({type:"Extension",namespace:Xr,id:t,payload:n})}function uo(e){return{setSeriesName:(t,n,r)=>co(e,t,{op:"set-series-name",seriesId:n,name:r}),setCategoryLabel:(t,n,r)=>co(e,t,{op:"set-category-label",pointId:n,label:r}),setCategoryPath:(t,n,r)=>co(e,t,{op:"set-category-path",pointId:n,levels:r}),setCategoryLevel:(t,n,r,o)=>{const i=Jr(e.doc,t).categories[n];if(!(i!=null&&i.levels)||!Number.isInteger(r)||r<0||r>=i.levels.length)throw new Error("图表类别层级索引无效");const s=[...i.levels];s[r]=o,co(e,t,{op:"set-category-path",pointId:n,levels:s})},setValue:(t,n,r,o)=>co(e,t,{op:"set-point",seriesId:n,pointId:r,value:o}),setPoint:(t,n,r,o)=>co(e,t,{op:"set-point",seriesId:n,pointId:r,...o}),addSeries:(t,n,r)=>{var o,l;_(n,"系列名称");const a=Jr(e.doc,t),c=me(Object.values(a.series));if(c.length>=U)throw new Error("图表系列数量已达上限");const u=c.filter(e=>!e.removed),d=r??((o=u[0])==null?void 0:o.plotKind)??((l=c[0])==null?void 0:l.plotKind)??"bar";if(!T.has(d)||!c.some(e=>e.plotKind===d))throw new Error(`来源图表没有 ${d} 绘图区,不能新增该图种系列`);const f=d==="scatter"||d==="bubble"?0:Object.values(a.categories).filter(e=>!e.removed).length;if(ao(a)+f>L)throw new Error("图表数据单元数量已达上限");const m=`${i(e.doc)}:series`,h=d==="scatter"||d==="bubble",p=/* @__PURE__ */Object.create(null),v=new Set(u.map(e=>e.sourceIndex));let g=0;for(;v.has(g);)g++;const b={id:m,order:s(lo(u),null),sourceIndex:g,plotKind:d,name:n,points:p,bindings:{name:{formula:null,cache:"literal"},...h?{x:{formula:null,cache:"literal"},y:{formula:null,cache:"literal"}}:{categories:{formula:null,cache:"literal"},values:{formula:null,cache:"literal"}},...d==="bubble"?{size:{formula:null,cache:"literal"}}:{}}};return co(e,t,{op:"add-series",series:b}),m},removeSeries:(t,n)=>co(e,t,{op:"remove-series",seriesId:n}),addCategory:(t,n)=>{var r,o,l;const a=Jr(e.doc,t);Lr(a);const c=(o=(r=M(a.series))==null?void 0:r.hierarchy)==null?void 0:o.levels;if(typeof n!="string"){if(!c)throw new Error("此图表没有多级类别");Q(n,c)}const u=typeof n=="string"?n:n[n.length-1]??"";_(u,"类别名称");const d=c?typeof n=="string"?[...Array(c-1).fill(null),u]:[...n]:void 0;if(a.kind==="xy")throw new Error("纯 XY 图不能新增类别");if(Object.keys(a.categories).length>=z)throw new Error("图表类别数量已达上限");const f=Object.values(a.series).filter(e=>!e.removed&&e.plotKind!=="scatter"&&e.plotKind!=="bubble").length;if(ao(a)+f>L)throw new Error("图表数据单元数量已达上限");const m=me(Object.values(a.categories).filter(e=>!e.removed)),h=`${i(e.doc)}:category`,p=s(lo(m),null),v=/* @__PURE__ */Object.create(null);for(const e of me(Object.values(a.series).filter(e=>!e.removed&&e.plotKind!=="scatter"&&e.plotKind!=="bubble")))v[e.id]={id:h,order:p,value:null};return co(e,t,{op:"add-category",category:{id:h,order:p,label:u,...d?{levels:d,levelParent:((l=m[m.length-1])==null?void 0:l.id)??null}:{}},points:v}),h},removeCategory:(t,n)=>co(e,t,{op:"remove-category",pointId:n}),addPoint:(t,n,r)=>{J(r.value,"数据点 value");const o=Jr(e.doc,t),l=o.series[n];if(!l||l.plotKind!=="scatter"&&l.plotKind!=="bubble")throw new Error("只有散点或气泡系列可以独立新增数据点");if(Object.keys(l.points).length>=z)throw new Error("图表数据点数量已达上限");if(ao(o)>=L)throw new Error("图表数据单元数量已达上限");if(Dr(r,"x")&&J(r.x,"数据点 x"),Dr(r,"size")&&J(r.size,"数据点 size"),Dr(r,"size")&&l.plotKind!=="bubble")throw new Error("只有气泡图可以写大小");const a=me(Object.values(l.points).filter(e=>!e.removed)),c=`${i(e.doc)}:point`,u={id:c,order:s(lo(a),null),value:r.value,...Dr(r,"x")?{x:r.x}:{},...Dr(r,"size")?{size:r.size}:{}};return co(e,t,{op:"add-point",seriesId:n,point:u}),c},removePoint:(t,n,r)=>co(e,t,{op:"remove-point",seriesId:n,pointId:r})}}function fo(e){return lr(e).map(t=>{const n=rr(e,t);return{id:t,name:e.elements[t].src.name??"图表",binding:n.binding}})}function mo(e,t){return rr(e,t)}export{ct as A,or as B,sr as C,An as D,pn as E,an as F,un as G,wn as H,z as I,rt as J,en as K,Or as L,P as M,ir as N,Qn as O,Cn as P,kr as Q,uo as R,fo as S,mo as T,R as U,Et as V,Sr as W,Xe as a,Mt as b,ge as c,L as d,Tt as e,St as f,et as g,xe as h,qn as i,Y as j,V as k,_ as l,Z as m,fe as n,me as o,we as p,J as q,Ge as r,ot as s,xt as t,bt as u,Rr as v,We as w,De as x,gt as y,lt as z};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/** @web-ppt/edit-core —— 无 DOM 的编辑文档模型与高保真渲染投影。 */
|
|
2
2
|
export { Editor } from './editor';
|
|
3
|
+
export { sourcePartBytes, sessionAsset as sourceAsset } from './session-assets';
|
|
4
|
+
export { sourceElementXml } from './element-source';
|
|
3
5
|
export { EDITOR_RECOVERY_VERSION, restoreRecoveryFrames } from './recovery';
|
|
4
6
|
export { detectImageMime } from './commands/image-format';
|
|
5
7
|
export { MAX_REPLACE_IMAGE_BYTES } from './commands/image-resource';
|
|
6
8
|
export { copyElements } from './clipboard';
|
|
7
9
|
export { queryRunProps } from './run-properties';
|
|
10
|
+
export { TEXT_CAPS_STYLES, TEXT_STRIKE_STYLES, TEXT_UNDERLINE_STYLES, } from './run-property-schema';
|
|
8
11
|
export { queryRunLink } from './run-links';
|
|
9
12
|
export { queryParaProps } from './paragraph-properties';
|
|
10
13
|
export { queryBodyProps } from './body-properties';
|
|
@@ -18,8 +21,13 @@ export { querySlideNotes } from './slide-notes';
|
|
|
18
21
|
export { queryElementStroke } from './shape-stroke';
|
|
19
22
|
export { queryElementEffects } from './shape-effects';
|
|
20
23
|
export { queryElementCrop } from './image-content';
|
|
24
|
+
export { queryElementPresetGeometry } from './preset-geometry';
|
|
21
25
|
export { listTableStyles, queryTableStyle } from './table-style';
|
|
22
26
|
export type { TableStyleCatalogItem, TableStyleState } from './table-style';
|
|
27
|
+
export { listThemes, queryTheme } from './theme';
|
|
28
|
+
export { listLayouts, queryLayout } from './layout';
|
|
29
|
+
export { listMasters, queryMaster } from './master';
|
|
30
|
+
export { toDesignCanvas } from './design';
|
|
23
31
|
export { assertCustomGeometry, moveCustomGeometryPoint, queryElementCustomGeometry, setCustomGeometryClosed, setCustomGeometrySegmentType, } from './custom-geometry';
|
|
24
32
|
export { customGeometryFromSvgPath } from './custom-geometry-path';
|
|
25
33
|
export type { CustomGeometry } from '@web-ppt/core';
|
|
@@ -27,28 +35,48 @@ export { MAX_EXTERNAL_LINK_LENGTH, normalizeExternalLinkTarget, queryElementLink
|
|
|
27
35
|
export type { VectorFill } from './shape-fill';
|
|
28
36
|
export type { StrokeCommandValue } from './shape-stroke';
|
|
29
37
|
export { validateEditDoc } from './model-invariants';
|
|
30
|
-
export { tableCellKey, tableCellOverrideKey } from './table-cell';
|
|
38
|
+
export { tableCellKey, tableCellOverrideKey, tableCellStableRefFromKey } from './table-cell';
|
|
39
|
+
export { queryTableGrid, tableCellMergeRole, tableGridIdentities } from './table-grid';
|
|
40
|
+
export type { TableGridIdentities } from './table-grid';
|
|
31
41
|
export { assertTableDimension, isEmptyContentPlaceholder, MAX_TABLE_DIMENSION } from './table-insertion-policy';
|
|
32
42
|
export { isElementDescendantOf, outermostSelectedElementIds } from './selection';
|
|
33
43
|
export { elementOrder, writableLayerSiblingIds } from './element-order';
|
|
34
44
|
export { MAX_ELEMENT_NAME_LENGTH } from './element-name';
|
|
45
|
+
export { MAX_ALT_TEXT_LENGTH, queryElementAltText } from './alt-text';
|
|
46
|
+
export { elementWorldBounds } from './commands/element-arrangement';
|
|
47
|
+
export { listSections, MAX_SECTION_NAME_LENGTH, sectionOfSlide } from './sections';
|
|
48
|
+
export { MAX_SLIDE_SIZE, MIN_SLIDE_SIZE, querySlideSize } from './slide-size';
|
|
35
49
|
export { querySelectionPane } from './selection-pane';
|
|
36
50
|
export { applyPatches, assertPatchesApplicable, stageExternalPatches } from './commands/patch';
|
|
51
|
+
export { MAX_PATCHES_PER_TRANSACTION } from './commands/types';
|
|
37
52
|
export { allocateElementId, allocateSlideId, createDoc, createEmptyDoc, disposeDoc, replaceDocPackage } from './document';
|
|
38
53
|
export { configureCollaborationIdentity } from './collaboration-identity';
|
|
54
|
+
export { presentationSlideIdForPart, presentationSlideIdsByPart, } from './commands/add-slide-identity';
|
|
39
55
|
export { assertIdentityAllocation, MAX_COLLABORATION_VERSION } from './identity-allocation';
|
|
40
56
|
export { effectiveElement, invalidateAll, invalidateElement, invalidateElementStructure, invalidateSlide, invalidateSlideStructure, slideOfElement, toSlide, } from './projection';
|
|
41
57
|
export { projectedSlideElementIds, unboundLayoutPlaceholders } from './layout-projection';
|
|
42
58
|
export { assertFractionalIndex, compareFractionalIndex, fractionalIndexBetween, initialFractionalIndex, } from './fractional-index';
|
|
43
|
-
export { composeSpaceMatrices, elementContentToSlideMatrix, elementFrameToParentMatrix, elementFrameToSlideMatrix, elementChildrenToSlideMatrix, elementFrameToSlidePoint, elementParentToSlideMatrix, elementParentToSlidePoint, inverseTransformSpaceVector, invertSpaceMatrix, screenToSlidePoint, slideToElementFramePoint, slideToElementParentPoint, slideToScreenPoint, spaceOrientationParity, transformSpacePoint, transformSpaceVector, } from './space';
|
|
44
|
-
export type { CreateDocOptions, EditableKind, EditAnimationStep, EditDoc, EditDocMeta, EditIdentity, EditIdentityAllocation, EditIdentityRange, EditSaveState, ElementCropState, ElementEffectsState, ElementFillState, ElementId, ElementImageReplacement, ElementInsertionSource, ElementLinkState, ElementMeta, ElementOverrides, ElementStrokeState, ImageCrop, LinkOverride, LinkSourceValue, LinkTarget, RelativeLinkSource, UnsupportedLinkSource, SlideAnimationState, SlideBackgroundState, SlideHiddenState, SlideImageBackground, SlideLayoutState, SlideNotesState, SlideTransitionState, ElementRecord, FractionalIndex, ProjectionInvalidation, RemovedElementRecord, SlideId, SlideOverrides, FlatTextParagraph, ParagraphProperties, ParagraphPropertiesState, ParagraphPropertyOverrides, RunLinkState, RunProperties, RunPropertiesState, RunPropertyOverrides, RunPropertyState, SlideCreation, SlideNotesBinding, SlideRecord, SlideSource, TableCellAddress, TableCellKey, TableCellOverrides, TableCellRowRef, TableRowId, TableRowInsertion, TextFragment, TextFragmentMark, TextFragmentParagraph, TextMark, TextOverride, TextBodyAutoFit, TextBodyProperties, TextBodyPropertyOverrides, } from './types';
|
|
59
|
+
export { composeSpaceMatrices, editFrameToModelFrame, elementContentToSlideMatrix, elementEditFrame, elementEditParentToSlideMatrix, elementFrameToParentMatrix, elementFrameToSlideMatrix, elementChildrenToSlideMatrix, elementFrameToSlidePoint, elementParentToRenderedParentMatrix, elementParentToSlideMatrix, elementParentToSlidePoint, groupEditChildrenToSlideMatrix, groupEditFrameToModelFrame, inverseTransformSpaceVector, invertSpaceMatrix, renderedContentToSlideMatrix, renderedElement, renderedFrameToSlideMatrix, screenToSlidePoint, slideToElementFramePoint, slideToElementEditParentPoint, slideToElementParentPoint, slideToScreenPoint, spaceOrientationParity, transformSpacePoint, transformSpaceVector, } from './space';
|
|
60
|
+
export type { CreateDocOptions, DesignTarget, LayoutCatalogItem, LayoutDesignState, LayoutDesignTarget, LayoutPropertyState, LayoutOverrides, LayoutRecord, MasterCatalogItem, MasterDesignState, MasterDesignTarget, MasterOverrides, MasterParagraphPropertyInput, MasterParagraphPropertyOverrides, MasterParagraphStyle, MasterRecord, MasterRunPropertyOverrides, MasterTextLevelOverrides, MasterTextLevelState, MasterTextStyleOverrides, EditableKind, EditAnimationStep, EditDoc, EditDocMeta, EditIdentity, EditIdentityAllocation, EditIdentityRange, EditSaveState, ElementAltTextOverrides, ElementAltTextState, ElementCropState, ElementEffectsState, ElementFillState, ElementId, ElementImageReplacement, ElementInsertionSource, ElementLinkState, ElementMeta, ElementOverrides, ElementPresetGeometryState, ElementStrokeState, ImageCrop, LinkOverride, LinkSourceValue, LinkTarget, RelativeLinkSource, UnsupportedLinkSource, SlideAnimationState, SlideBackgroundState, SlideHiddenState, SlideImageBackground, SlideLayoutState, SlideNotesState, SlideTransitionState, ElementRecord, FractionalIndex, ProjectionInvalidation, RemovedElementRecord, SlideId, SlideOverrides, FlatTextParagraph, ParagraphAutoNumberType, ParagraphBullet, ParagraphBulletInput, ParagraphBulletSize, ParagraphBulletStyle, ParagraphProperties, ParagraphPropertiesState, ParagraphPropertyInput, ParagraphPropertyOverrides, RunLinkState, RunProperties, RunPropertiesState, RunPropertyOverrides, RunPropertyState, SectionId, SectionRecord, SectionState, SlideCreation, SlideNotesBinding, SlideRecord, SlideSizeState, SlideSource, TableCellAddress, TableCellColumnRef, TableCellKey, TableCellOverrides, TableCellRef, TableCellRowRef, TableColumnId, TableColumnInsertion, TableMergeRegion, TableRowId, TableRowInsertion, TextFragment, TextFragmentMark, TextFragmentParagraph, TextMark, TextOverride, TextBodyAutoFit, TextBodyProperties, TextBodyPropertyOverrides, ThemeFontCollectionOverrides, ThemeOverrides, ThemeRecord, ThemeState, } from './types';
|
|
45
61
|
export type { RecoveryAssetReference, RecoveryFrame, RecoveryFrameSource, RecoveryRestoreResult, RecoverySubscriber, } from './recovery-types';
|
|
46
|
-
export type {
|
|
47
|
-
export type {
|
|
62
|
+
export type { DocumentExtensionPatch } from './commands/types';
|
|
63
|
+
export type { AddImageCommand, AddSectionCommand, AddShapeCommand, AddSlideCommand, AddTableCommand, AlignEdge, AlignElementsCommand, ClipboardElementRecord, ClipboardPortableLink, ClipboardRelationship, ClipboardResource, ClipboardTextLink, ClipboardXmlRoot, Command, DesignCommand, CommandPatches, DistributeElementsCommand, DuplicateSlideCommand, EditTextCommand, EditorChange, ExtensionCommand, ExtensionPatch, GroupCommand, MoveSectionCommand, RemoveSectionCommand, RenameSectionCommand, UngroupCommand, EditorOptions, EditorPatchEvent, EditorPatchSubscriber, EditorPatchSubscribeOptions, EditorSubscriber, ExternalPatchOptions, ElementAltTextPatch, ElementClipboardPayload, ElementClipboardRecordMeta, ElementCropPatch, ElementEffectsPatch, ElementFillPatch, ElementImageReplacementPatch, ElementInteractionField, ElementInteractionPatch, ElementLinkPatch, ElementNamePatch, ElementOrderPatch, ElementStrokePatch, ElementTextPatch, ElementTransformPatch, DocumentSizePatch, ElementHierarchyPatch, ElementHierarchyState, ElementTreePatch, ElementTreeSnapshot, ElementXfrmPath, FitTextShapeCommand, History, HistoryEntry, InsertColumnCommand, InsertRowCommand, MergeCellsCommand, MoveSlideCommand, Patch, RemoveColumnCommand, RemoveElementCommand, RemoveRowCommand, RemoveSlideCommand, SectionStatePatch, SetAnimationsCommand, SetBackgroundCommand, SetBackgroundCropCommand, SetBackgroundImageCommand, SetCellPropsCommand, SetColumnWidthCommand, SetHiddenCommand, SetRowHeightCommand, SetSlideSizeCommand, SetTransitionCommand, SlideAnimationsPatch, SlideBackgroundImagePatch, SlideBackgroundPatch, SlideChangeSets, SlideHiddenPatch, SlideTransitionPatch, SlideOrderPatch, SlidePropertyPatch, SlideTreePatch, SlideTreeSnapshot, SplitCellCommand, ApplyFormatCommand, ClearFormatCommand, FormatMaskField, PasteElementsCommand, Selection, ElementLayerTarget, FlipField, NumericXfrmField, SetAltTextCommand, SetElementHiddenCommand, SetFlipCommand, SetLockedCommand, SetNameCommand, SetParaPropsCommand, SetRunPropsCommand, SetXfrmCommand, SetZCommand, TextPosition, TextRange, Transaction, ReplaceImageCommand, SetBodyPropsCommand, SetCropCommand, SetEffectsCommand, SetFillCommand, SetLayoutCommand, SetLinkCommand, SetNotesCommand, SetStrokeCommand, SlideLayoutPatch, SlideNotesPatch, TableCellPropsPatch, TableColumnPatch, TableGridEntryPatch, TableMergePatch, TableRowPatch, ElementTableStylePatch, SetTableStyleCommand, SetThemeCommand, ThemeColorPatch, ThemeFontPatch, ThemePatch, LayoutBackgroundPatch, LayoutTransitionPatch, LayoutPropertyPatch, MasterBackgroundPatch, MasterParagraphTextStylePatch, MasterRunTextStylePatch, MasterTextStylePatch, SetMasterTextStyleCommand, TextEditOp, TransactionOptions, TransactionResult, XfrmField, XfrmValueByField, } from './commands/types';
|
|
64
|
+
export type { ConvertToCustomGeometryCommand, ElementGeometryPatch, ElementPresetGeometryPatch, SetAdjCommand, SetGeometryCommand, SetPresetCommand, } from './commands/geometry-types';
|
|
48
65
|
export type { SlideTransitionInput } from './slide-transition';
|
|
49
66
|
export type { EditableAnimationEffect, EmphasisAnimationEffect, EntranceExitAnimationEffect, } from './animation-catalog';
|
|
50
67
|
export type { SelectionPaneItem } from './selection-pane';
|
|
51
68
|
export type { FindTextRequest, ReplaceTextCommand, ReplaceTextScope, TextSearchMatch, TextSearchScope, TextSearchTarget, } from './text-search-types';
|
|
52
|
-
export { applyParagraphProps, applyRunProps, applyTextEditOps, flattenTextBody, queryTextParagraphProps, queryTextRunProps, textBodyFromOverride, textFragmentFromRange, textMarksInRange, } from './text-model';
|
|
69
|
+
export { applyParagraphProps, applyRunProps, applyTextEditOps, clearRunFormat, flattenTextBody, queryTextParagraphProps, queryTextRunProps, textBodyFromOverride, textFragmentFromRange, textMarksInRange, } from './text-model';
|
|
53
70
|
export { TEXT_ATOM, textBodyEditText, textPositionAtIndex, textPositionToIndex, textRunEditLength, } from './text-position';
|
|
54
|
-
export type { AffineMatrix, ElementFrameTransform, SlideViewport, SpacePoint } from './space';
|
|
71
|
+
export type { AffineMatrix, ElementEditFrame, ElementFrameTransform, SlideViewport, SpacePoint } from './space';
|
|
72
|
+
export { EXTENSION_ADDRESSES, canonicalExtensionPath, canonicalExtensionPatch, extensionAddressPatches, isExtensionAddressPatch } from './extension-addresses';
|
|
73
|
+
export { assertEditIdentityWatermark } from './identity-watermark';
|
|
74
|
+
export { extensionMigrationPatches, setExtensionMigrationResolver, refreshExtensionMigrations } from './extension-runtime';
|
|
75
|
+
export type { ExtensionMigrationResolver } from './extension-runtime';
|
|
76
|
+
export { isLegacyExtensionReplay } from './extension-recovery-context';
|
|
77
|
+
export { isExtensionMigrationPatch, canonicalExtensionMigrationInputs, readExtensionMigration, extensionMigrationReceipts, EXTENSION_MIGRATIONS } from './extension-migration-receipt';
|
|
78
|
+
export type { ExtensionMigrationInput, ExtensionMigrationReceipt } from './extension-migration-receipt';
|
|
79
|
+
export { readExtensionCopies } from './extension-copy';
|
|
80
|
+
export { rebaseExtensionCopySnapshot } from './extension-copy-history';
|
|
81
|
+
export type { ExtensionCopyInput, ExtensionCopyResolver } from './extension-copy';
|
|
82
|
+
export { readExtensionAddress } from './extension-addresses';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { InkData, InkPoint } from '@web-ppt/core/ink-edit';
|
|
2
|
+
import type { EditDoc, Editor, ElementId } from '@web-ppt/edit-core';
|
|
3
|
+
export type { InkData, InkPoint, InkStroke } from '@web-ppt/core/ink-edit';
|
|
4
|
+
export declare function queryInk(doc: EditDoc, id: string): InkData;
|
|
5
|
+
export declare function listEditableInk(doc: EditDoc): {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
}[];
|
|
9
|
+
export declare function createInkEditor(editor: Pick<Editor, 'doc' | 'exec'>): {
|
|
10
|
+
query: (id: ElementId) => InkData;
|
|
11
|
+
setStyle(id: ElementId, strokeId: string, style: {
|
|
12
|
+
color?: string;
|
|
13
|
+
width?: number;
|
|
14
|
+
}): void;
|
|
15
|
+
setPoints(id: ElementId, strokeId: string, points: InkPoint[]): void;
|
|
16
|
+
translate(id: ElementId, strokeId: string, dx: number, dy: number): void;
|
|
17
|
+
addStroke(id: ElementId, points: {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
pressure?: number;
|
|
21
|
+
}[], style: {
|
|
22
|
+
color: string;
|
|
23
|
+
width: number;
|
|
24
|
+
}, strokeId?: string): string;
|
|
25
|
+
removeStroke(id: ElementId, strokeId: string): void;
|
|
26
|
+
reset(id: ElementId): void;
|
|
27
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { EditDoc } from '@web-ppt/edit-core';
|
|
2
|
+
export declare const storedInk: (doc: EditDoc, id: string) => string | undefined;
|
|
3
|
+
export declare function saveInk(doc: EditDoc, baselines: Record<string, Uint8Array>, created: Set<string>, changes: Record<string, Uint8Array | null>, generated?: boolean): void;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { EditDoc } from '@web-ppt/edit-core';
|
|
2
|
+
export declare const INK = "http://www.w3.org/2003/InkML", P14 = "http://schemas.microsoft.com/office/powerpoint/2010/main";
|
|
3
|
+
export declare function inkSource(doc: EditDoc, id: string): {
|
|
4
|
+
part: string;
|
|
5
|
+
host: string;
|
|
6
|
+
xml: string;
|
|
7
|
+
} | null;
|