@superdoc-dev/cli 0.2.0-next.30 → 0.2.0-next.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1938 -34
  2. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -436,6 +436,7 @@ var init_base = __esm(() => {
436
436
  "table",
437
437
  "tableRow",
438
438
  "tableCell",
439
+ "tableOfContents",
439
440
  "image",
440
441
  "sdt",
441
442
  "run",
@@ -453,6 +454,7 @@ var init_base = __esm(() => {
453
454
  "table",
454
455
  "tableRow",
455
456
  "tableCell",
457
+ "tableOfContents",
456
458
  "image",
457
459
  "sdt"
458
460
  ];
@@ -2490,6 +2492,89 @@ var init_operation_definitions = __esm(() => {
2490
2492
  }),
2491
2493
  referenceDocPath: "tables/get-properties.mdx",
2492
2494
  referenceGroup: "tables"
2495
+ },
2496
+ "create.tableOfContents": {
2497
+ memberPath: "create.tableOfContents",
2498
+ description: "Insert a new table of contents at the target position.",
2499
+ expectedResult: "Returns a CreateTableOfContentsResult with the new TOC block address.",
2500
+ requiresDocumentContext: true,
2501
+ metadata: mutationOperation({
2502
+ idempotency: "non-idempotent",
2503
+ supportsDryRun: true,
2504
+ supportsTrackedMode: false,
2505
+ possibleFailureCodes: ["NO_OP", "INVALID_INSERTION_CONTEXT"],
2506
+ throws: ["INVALID_TARGET", "TARGET_NOT_FOUND", "CAPABILITY_UNAVAILABLE"]
2507
+ }),
2508
+ referenceDocPath: "create/table-of-contents.mdx",
2509
+ referenceGroup: "create"
2510
+ },
2511
+ "toc.list": {
2512
+ memberPath: "toc.list",
2513
+ description: "List all tables of contents in the document.",
2514
+ expectedResult: "Returns a TocListResult with an array of TOC discovery items and pagination metadata.",
2515
+ requiresDocumentContext: true,
2516
+ metadata: readOperation({
2517
+ idempotency: "idempotent"
2518
+ }),
2519
+ referenceDocPath: "toc/list.mdx",
2520
+ referenceGroup: "toc"
2521
+ },
2522
+ "toc.get": {
2523
+ memberPath: "toc.get",
2524
+ description: "Retrieve details of a specific table of contents.",
2525
+ expectedResult: "Returns a TocInfo object with the instruction, source/display configuration, and entry count.",
2526
+ requiresDocumentContext: true,
2527
+ metadata: readOperation({
2528
+ idempotency: "idempotent",
2529
+ throws: T_NOT_FOUND
2530
+ }),
2531
+ referenceDocPath: "toc/get.mdx",
2532
+ referenceGroup: "toc"
2533
+ },
2534
+ "toc.configure": {
2535
+ memberPath: "toc.configure",
2536
+ description: "Update the configuration switches of a table of contents.",
2537
+ expectedResult: "Returns a TocMutationResult with the updated TOC address on success, or a failure code on no-op.",
2538
+ requiresDocumentContext: true,
2539
+ metadata: mutationOperation({
2540
+ idempotency: "conditional",
2541
+ supportsDryRun: true,
2542
+ supportsTrackedMode: false,
2543
+ possibleFailureCodes: ["NO_OP"],
2544
+ throws: ["TARGET_NOT_FOUND", "INVALID_TARGET", "CAPABILITY_UNAVAILABLE"]
2545
+ }),
2546
+ referenceDocPath: "toc/configure.mdx",
2547
+ referenceGroup: "toc"
2548
+ },
2549
+ "toc.update": {
2550
+ memberPath: "toc.update",
2551
+ description: "Rebuild the materialized content of a table of contents.",
2552
+ expectedResult: "Returns a TocMutationResult with the TOC address on success, or a failure code if content is unchanged.",
2553
+ requiresDocumentContext: true,
2554
+ metadata: mutationOperation({
2555
+ idempotency: "conditional",
2556
+ supportsDryRun: true,
2557
+ supportsTrackedMode: false,
2558
+ possibleFailureCodes: ["NO_OP"],
2559
+ throws: ["TARGET_NOT_FOUND", "INVALID_TARGET", "CAPABILITY_UNAVAILABLE"]
2560
+ }),
2561
+ referenceDocPath: "toc/update.mdx",
2562
+ referenceGroup: "toc"
2563
+ },
2564
+ "toc.remove": {
2565
+ memberPath: "toc.remove",
2566
+ description: "Remove a table of contents from the document.",
2567
+ expectedResult: "Returns a TocMutationResult with the removed TOC address on success, or a failure code on no-op.",
2568
+ requiresDocumentContext: true,
2569
+ metadata: mutationOperation({
2570
+ idempotency: "conditional",
2571
+ supportsDryRun: true,
2572
+ supportsTrackedMode: false,
2573
+ possibleFailureCodes: ["NO_OP"],
2574
+ throws: ["TARGET_NOT_FOUND", "INVALID_TARGET", "CAPABILITY_UNAVAILABLE"]
2575
+ }),
2576
+ referenceDocPath: "toc/remove.mdx",
2577
+ referenceGroup: "toc"
2493
2578
  }
2494
2579
  };
2495
2580
  OPERATION_IDS = Object.freeze(Object.keys(OPERATION_DEFINITIONS));
@@ -2800,6 +2885,18 @@ function supportsImplicitTrueValue(operationId) {
2800
2885
  return false;
2801
2886
  return entry.type === "boolean" || key === "underline";
2802
2887
  }
2888
+ function tocAddressSchema() {
2889
+ return objectSchema({
2890
+ kind: { const: "block" },
2891
+ nodeType: { const: "tableOfContents" },
2892
+ nodeId: { type: "string" }
2893
+ }, ["kind", "nodeType", "nodeId"]);
2894
+ }
2895
+ function tocMutationResultSchema() {
2896
+ return {
2897
+ oneOf: [tocMutationSuccessSchema, tocMutationFailureSchema]
2898
+ };
2899
+ }
2803
2900
  function buildInternalContractSchemas() {
2804
2901
  const operations = { ...operationSchemas };
2805
2902
  for (const operationId of OPERATION_IDS) {
@@ -2819,7 +2916,7 @@ function buildInternalContractSchemas() {
2819
2916
  operations
2820
2917
  };
2821
2918
  }
2822
- var nodeTypeValues, blockNodeTypeValues, deletableBlockNodeTypeValues, inlineNodeTypeValues, knownTargetKindValues, SHARED_DEFS, rangeSchema, positionSchema, inlineAnchorSchema, targetKindSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, deletableBlockNodeAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, sectionAddressSchema, inlineNodeAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchRunSchema, matchBlockSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, listsExitSuccessSchema, nodeSummarySchema, nodeInfoSchema, matchContextSchema, unknownNodeDiagnosticSchema, textSelectorSchema, nodeSelectorSchema, selectorShorthandSchema, selectSchema, findInputSchema, findItemDomainSchema, findOutputSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentInfoSchema, listKindSchema, listInsertPositionSchema, listItemInfoSchema, listItemDomainItemSchema, listsListResultSchema, sectionBreakTypeSchema, sectionOrientationSchema, sectionVerticalAlignSchema, sectionDirectionSchema, sectionHeaderFooterKindSchema, sectionHeaderFooterVariantSchema, sectionLineNumberRestartSchema, sectionPageNumberFormatSchema, sectionRangeDomainSchema, sectionPageMarginsSchema, sectionHeaderFooterMarginsSchema, sectionPageSetupSchema, sectionColumnsSchema, sectionLineNumberingSchema, sectionPageNumberingSchema, sectionHeaderFooterRefsSchema, sectionBorderSpecSchema, sectionPageBordersSchema, sectionInfoSchema, sectionResolvedHandleSchema, sectionDomainItemSchema, sectionsListResultSchema, sectionMutationSuccessSchema, documentMutationSuccessSchema, createSectionBreakSuccessSchema, commentInfoSchema, commentDomainItemSchema, commentsListResultSchema, trackChangeInfoSchema, trackChangeDomainItemSchema, trackChangesListResultSchema, capabilityReasonCodeSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, inlinePropertyCapabilitySchema, inlinePropertyCapabilitiesByKeySchema, formatCapabilitiesSchema, planEngineCapabilitiesSchema, capabilitiesOutputSchema, strictEmptyObjectSchema, insertInputSchema, tableLocatorSchema, _tableScopedRowLocatorSchema, _tableScopedColumnLocatorSchema, mergeRangeLocatorSchema, mixedRowLocatorOneOf, tableCreateLocationSchema, tableMutationSuccessSchema, createTableSuccessSchema, tableMutationFailureCodes, tableMutationFailureSchema, tableMutationResultSchema, createTableResultSchema, formatInlineAliasOperationSchemas, operationSchemas;
2919
+ var nodeTypeValues, blockNodeTypeValues, deletableBlockNodeTypeValues, inlineNodeTypeValues, knownTargetKindValues, SHARED_DEFS, rangeSchema, positionSchema, inlineAnchorSchema, targetKindSchema, textAddressSchema, textTargetSchema, blockNodeAddressSchema, deletableBlockNodeAddressSchema, paragraphAddressSchema, headingAddressSchema, listItemAddressSchema, sectionAddressSchema, inlineNodeAddressSchema, nodeAddressSchema, commentAddressSchema, trackedChangeAddressSchema, entityAddressSchema, resolvedHandleSchema, pageInfoSchema, receiptSuccessSchema, textMutationRangeSchema, textMutationResolutionSchema, textMutationSuccessSchema, matchRunSchema, matchBlockSchema, trackChangeRefSchema, createParagraphSuccessSchema, createHeadingSuccessSchema, headingLevelSchema, listsInsertSuccessSchema, listsMutateItemSuccessSchema, listsExitSuccessSchema, nodeSummarySchema, nodeInfoSchema, matchContextSchema, unknownNodeDiagnosticSchema, textSelectorSchema, nodeSelectorSchema, selectorShorthandSchema, selectSchema, findInputSchema, findItemDomainSchema, findOutputSchema, documentInfoCountsSchema, documentInfoOutlineItemSchema, documentInfoCapabilitiesSchema, documentInfoSchema, listKindSchema, listInsertPositionSchema, listItemInfoSchema, listItemDomainItemSchema, listsListResultSchema, sectionBreakTypeSchema, sectionOrientationSchema, sectionVerticalAlignSchema, sectionDirectionSchema, sectionHeaderFooterKindSchema, sectionHeaderFooterVariantSchema, sectionLineNumberRestartSchema, sectionPageNumberFormatSchema, sectionRangeDomainSchema, sectionPageMarginsSchema, sectionHeaderFooterMarginsSchema, sectionPageSetupSchema, sectionColumnsSchema, sectionLineNumberingSchema, sectionPageNumberingSchema, sectionHeaderFooterRefsSchema, sectionBorderSpecSchema, sectionPageBordersSchema, sectionInfoSchema, sectionResolvedHandleSchema, sectionDomainItemSchema, sectionsListResultSchema, sectionMutationSuccessSchema, documentMutationSuccessSchema, createSectionBreakSuccessSchema, commentInfoSchema, commentDomainItemSchema, commentsListResultSchema, trackChangeInfoSchema, trackChangeDomainItemSchema, trackChangesListResultSchema, capabilityReasonCodeSchema, capabilityReasonsSchema, capabilityFlagSchema, operationRuntimeCapabilitySchema, operationCapabilitiesSchema, inlinePropertyCapabilitySchema, inlinePropertyCapabilitiesByKeySchema, formatCapabilitiesSchema, planEngineCapabilitiesSchema, capabilitiesOutputSchema, strictEmptyObjectSchema, insertInputSchema, tableLocatorSchema, _tableScopedRowLocatorSchema, _tableScopedColumnLocatorSchema, mergeRangeLocatorSchema, mixedRowLocatorOneOf, tableCreateLocationSchema, tableMutationSuccessSchema, createTableSuccessSchema, tableMutationFailureCodes, tableMutationFailureSchema, tableMutationResultSchema, createTableResultSchema, formatInlineAliasOperationSchemas, tocMutationFailureCodes, tocMutationFailureSchema, tocMutationSuccessSchema, operationSchemas;
2823
2920
  var init_schemas = __esm(() => {
2824
2921
  init_command_catalog();
2825
2922
  init_types2();
@@ -2839,6 +2936,7 @@ var init_schemas = __esm(() => {
2839
2936
  "trackedChange",
2840
2937
  "table",
2841
2938
  "tableCell",
2939
+ "tableOfContents",
2842
2940
  "section",
2843
2941
  "sdt",
2844
2942
  "field"
@@ -3504,6 +3602,25 @@ var init_schemas = __esm(() => {
3504
3602
  };
3505
3603
  return [operationId, schema];
3506
3604
  }));
3605
+ tocMutationFailureCodes = [
3606
+ "NO_OP",
3607
+ "INVALID_TARGET",
3608
+ "TARGET_NOT_FOUND",
3609
+ "CAPABILITY_UNAVAILABLE",
3610
+ "INVALID_INSERTION_CONTEXT"
3611
+ ];
3612
+ tocMutationFailureSchema = objectSchema({
3613
+ success: { const: false },
3614
+ failure: objectSchema({
3615
+ code: { enum: [...tocMutationFailureCodes] },
3616
+ message: { type: "string" },
3617
+ details: {}
3618
+ }, ["code", "message"])
3619
+ }, ["success", "failure"]);
3620
+ tocMutationSuccessSchema = objectSchema({ success: { const: true }, toc: tocAddressSchema() }, [
3621
+ "success",
3622
+ "toc"
3623
+ ]);
3507
3624
  operationSchemas = {
3508
3625
  find: {
3509
3626
  input: findInputSchema,
@@ -4713,6 +4830,94 @@ var init_schemas = __esm(() => {
4713
4830
  bandedColumns: { type: "boolean" }
4714
4831
  })
4715
4832
  }, ["nodeId"])
4833
+ },
4834
+ "create.tableOfContents": {
4835
+ input: objectSchema({
4836
+ at: {
4837
+ oneOf: [
4838
+ objectSchema({ kind: { const: "documentStart" } }, ["kind"]),
4839
+ objectSchema({ kind: { const: "documentEnd" } }, ["kind"]),
4840
+ objectSchema({ kind: { const: "before" }, target: blockNodeAddressSchema }, ["kind", "target"]),
4841
+ objectSchema({ kind: { const: "after" }, target: blockNodeAddressSchema }, ["kind", "target"])
4842
+ ]
4843
+ },
4844
+ config: objectSchema({
4845
+ outlineLevels: objectSchema({ from: { type: "integer" }, to: { type: "integer" } }, ["from", "to"]),
4846
+ useAppliedOutlineLevel: { type: "boolean" },
4847
+ hyperlinks: { type: "boolean" },
4848
+ hideInWebView: { type: "boolean" },
4849
+ omitPageNumberLevels: objectSchema({ from: { type: "integer" }, to: { type: "integer" } }, ["from", "to"]),
4850
+ separator: { type: "string" }
4851
+ })
4852
+ }),
4853
+ output: tocMutationResultSchema(),
4854
+ success: tocMutationSuccessSchema,
4855
+ failure: tocMutationFailureSchema
4856
+ },
4857
+ "toc.list": {
4858
+ input: objectSchema({
4859
+ limit: { type: "integer" },
4860
+ offset: { type: "integer" }
4861
+ }),
4862
+ output: objectSchema({
4863
+ evaluatedRevision: { type: "string" },
4864
+ total: { type: "integer" },
4865
+ items: arraySchema(objectSchema({
4866
+ id: { type: "string" },
4867
+ handle: ref("ResolvedHandle"),
4868
+ address: tocAddressSchema(),
4869
+ instruction: { type: "string" },
4870
+ sourceConfig: { type: "object" },
4871
+ displayConfig: { type: "object" },
4872
+ preserved: { type: "object" },
4873
+ entryCount: { type: "integer" }
4874
+ }, ["id", "handle", "address", "instruction", "entryCount"])),
4875
+ page: ref("PageInfo")
4876
+ }, ["evaluatedRevision", "total", "items", "page"])
4877
+ },
4878
+ "toc.get": {
4879
+ input: objectSchema({ target: tocAddressSchema() }, ["target"]),
4880
+ output: objectSchema({
4881
+ nodeType: { const: "tableOfContents" },
4882
+ kind: { const: "block" },
4883
+ properties: objectSchema({
4884
+ instruction: { type: "string" },
4885
+ sourceConfig: { type: "object" },
4886
+ displayConfig: { type: "object" },
4887
+ preservedSwitches: { type: "object" },
4888
+ entryCount: { type: "integer" }
4889
+ }, ["instruction", "entryCount"])
4890
+ }, ["nodeType", "kind", "properties"])
4891
+ },
4892
+ "toc.configure": {
4893
+ input: objectSchema({
4894
+ target: tocAddressSchema(),
4895
+ patch: objectSchema({
4896
+ outlineLevels: objectSchema({ from: { type: "integer" }, to: { type: "integer" } }, ["from", "to"]),
4897
+ useAppliedOutlineLevel: { type: "boolean" },
4898
+ hyperlinks: { type: "boolean" },
4899
+ hideInWebView: { type: "boolean" },
4900
+ omitPageNumberLevels: objectSchema({ from: { type: "integer" }, to: { type: "integer" } }, ["from", "to"]),
4901
+ separator: { type: "string" }
4902
+ })
4903
+ }, ["target", "patch"]),
4904
+ output: tocMutationResultSchema(),
4905
+ success: tocMutationSuccessSchema,
4906
+ failure: tocMutationFailureSchema
4907
+ },
4908
+ "toc.update": {
4909
+ input: objectSchema({
4910
+ target: tocAddressSchema()
4911
+ }, ["target"]),
4912
+ output: tocMutationResultSchema(),
4913
+ success: tocMutationSuccessSchema,
4914
+ failure: tocMutationFailureSchema
4915
+ },
4916
+ "toc.remove": {
4917
+ input: objectSchema({ target: tocAddressSchema() }, ["target"]),
4918
+ output: tocMutationResultSchema(),
4919
+ success: tocMutationSuccessSchema,
4920
+ failure: tocMutationFailureSchema
4716
4921
  }
4717
4922
  };
4718
4923
  });
@@ -4797,6 +5002,11 @@ var init_reference_doc_map = __esm(() => {
4797
5002
  title: "Tables",
4798
5003
  description: "Table structure, layout, styling, and cell operations.",
4799
5004
  pagePath: "tables/index.mdx"
5005
+ },
5006
+ toc: {
5007
+ title: "Table of Contents",
5008
+ description: "Table of contents lifecycle and configuration.",
5009
+ pagePath: "toc/index.mdx"
4800
5010
  }
4801
5011
  };
4802
5012
  REFERENCE_OPERATION_GROUPS = Object.keys(GROUP_METADATA).map((key) => ({
@@ -5598,6 +5808,24 @@ function executeCreateSectionBreak(adapter, input, options) {
5598
5808
  validateCreateSectionBreakInput(normalized);
5599
5809
  return adapter.sectionBreak(normalized, normalizeMutationOptions(options));
5600
5810
  }
5811
+ function normalizeTocCreateLocation(location2) {
5812
+ return location2 ?? { kind: "documentEnd" };
5813
+ }
5814
+ function normalizeCreateTableOfContentsInput(input) {
5815
+ return {
5816
+ at: normalizeTocCreateLocation(input.at),
5817
+ config: input.config
5818
+ };
5819
+ }
5820
+ function executeCreateTableOfContents(adapter, input, options) {
5821
+ const normalized = normalizeCreateTableOfContentsInput(input);
5822
+ const at = normalized.at;
5823
+ if ((at.kind === "before" || at.kind === "after") && "nodeId" in at) {
5824
+ throw new DocumentApiValidationError("INVALID_TARGET", "create.tableOfContents requires at.target for before/after positioning. The nodeId form is not supported.", { fields: ["at.nodeId"] });
5825
+ }
5826
+ validateTargetOnlyCreateLocation(at, "create.tableOfContents");
5827
+ return adapter.tableOfContents(normalized, normalizeMutationOptions(options));
5828
+ }
5601
5829
  var SECTION_BREAK_TYPES;
5602
5830
  var init_create = __esm(() => {
5603
5831
  init_errors2();
@@ -5796,7 +6024,13 @@ function buildDispatchTable(api) {
5796
6024
  "tables.clearCellSpacing": (input, options) => api.tables.clearCellSpacing(input, options),
5797
6025
  "tables.get": (input) => api.tables.get(input),
5798
6026
  "tables.getCells": (input) => api.tables.getCells(input),
5799
- "tables.getProperties": (input) => api.tables.getProperties(input)
6027
+ "tables.getProperties": (input) => api.tables.getProperties(input),
6028
+ "create.tableOfContents": (input, options) => api.create.tableOfContents(input, options),
6029
+ "toc.list": (input) => api.toc.list(input),
6030
+ "toc.get": (input) => api.toc.get(input),
6031
+ "toc.configure": (input, options) => api.toc.configure(input, options),
6032
+ "toc.update": (input, options) => api.toc.update(input, options),
6033
+ "toc.remove": (input, options) => api.toc.remove(input, options)
5800
6034
  };
5801
6035
  }
5802
6036
  var init_invoke = __esm(() => {
@@ -6208,6 +6442,39 @@ var init_sections = __esm(() => {
6208
6442
  PAGE_BORDER_Z_ORDER_VALUES = ["front", "back"];
6209
6443
  });
6210
6444
 
6445
+ // ../../packages/document-api/src/toc/toc.ts
6446
+ function validateTocTarget(target, operationName) {
6447
+ if (target === undefined || target === null) {
6448
+ throw new DocumentApiValidationError("INVALID_TARGET", `${operationName} requires a target.`);
6449
+ }
6450
+ const t = target;
6451
+ if (t.kind !== "block" || t.nodeType !== "tableOfContents" || typeof t.nodeId !== "string") {
6452
+ throw new DocumentApiValidationError("INVALID_TARGET", `${operationName} target must be a TocAddress with kind 'block', nodeType 'tableOfContents', and a string nodeId.`, { target });
6453
+ }
6454
+ }
6455
+ function executeTocList(adapter, query2) {
6456
+ return adapter.list(query2);
6457
+ }
6458
+ function executeTocGet(adapter, input) {
6459
+ validateTocTarget(input.target, "toc.get");
6460
+ return adapter.get(input);
6461
+ }
6462
+ function executeTocConfigure(adapter, input, options) {
6463
+ validateTocTarget(input.target, "toc.configure");
6464
+ return adapter.configure(input, normalizeMutationOptions(options));
6465
+ }
6466
+ function executeTocUpdate(adapter, input, options) {
6467
+ validateTocTarget(input.target, "toc.update");
6468
+ return adapter.update(input, normalizeMutationOptions(options));
6469
+ }
6470
+ function executeTocRemove(adapter, input, options) {
6471
+ validateTocTarget(input.target, "toc.remove");
6472
+ return adapter.remove(input, normalizeMutationOptions(options));
6473
+ }
6474
+ var init_toc = __esm(() => {
6475
+ init_errors2();
6476
+ });
6477
+
6211
6478
  // ../../packages/document-api/src/lists/lists.types.ts
6212
6479
  var LIST_KINDS, LIST_INSERT_POSITIONS;
6213
6480
  var init_lists_types = __esm(() => {
@@ -6314,6 +6581,9 @@ function createDocumentApi(adapters) {
6314
6581
  },
6315
6582
  sectionBreak(input, options) {
6316
6583
  return executeCreateSectionBreak(adapters.create, input, options);
6584
+ },
6585
+ tableOfContents(input, options) {
6586
+ return executeCreateTableOfContents(adapters.create, input, options);
6317
6587
  }
6318
6588
  },
6319
6589
  capabilities: capabilities2,
@@ -6518,6 +6788,23 @@ function createDocumentApi(adapters) {
6518
6788
  return adapters.tables.getProperties(input);
6519
6789
  }
6520
6790
  },
6791
+ toc: {
6792
+ list(query2) {
6793
+ return executeTocList(adapters.toc, query2);
6794
+ },
6795
+ get(input) {
6796
+ return executeTocGet(adapters.toc, input);
6797
+ },
6798
+ configure(input, options) {
6799
+ return executeTocConfigure(adapters.toc, input, options);
6800
+ },
6801
+ update(input, options) {
6802
+ return executeTocUpdate(adapters.toc, input, options);
6803
+ },
6804
+ remove(input, options) {
6805
+ return executeTocRemove(adapters.toc, input, options);
6806
+ }
6807
+ },
6521
6808
  query: {
6522
6809
  match(input) {
6523
6810
  return adapters.query.match(input);
@@ -6558,6 +6845,7 @@ var init_src = __esm(() => {
6558
6845
  init_invoke();
6559
6846
  init_tables();
6560
6847
  init_sections();
6848
+ init_toc();
6561
6849
  init_format();
6562
6850
  init_inline_run_patch();
6563
6851
  init_styles();
@@ -7204,6 +7492,7 @@ var init_operation_hints = __esm(() => {
7204
7492
  "styles.apply": "applied stylesheet defaults",
7205
7493
  "create.paragraph": "created paragraph",
7206
7494
  "create.heading": "created heading",
7495
+ "create.tableOfContents": "created table of contents",
7207
7496
  "lists.list": "listed items",
7208
7497
  "lists.get": "resolved list item",
7209
7498
  "lists.insert": "inserted list item",
@@ -7220,6 +7509,11 @@ var init_operation_hints = __esm(() => {
7220
7509
  "trackChanges.list": "listed tracked changes",
7221
7510
  "trackChanges.get": "resolved tracked change",
7222
7511
  "trackChanges.decide": "reviewed tracked change",
7512
+ "toc.list": "listed tables of contents",
7513
+ "toc.get": "resolved table of contents",
7514
+ "toc.configure": "configured table of contents",
7515
+ "toc.update": "updated table of contents",
7516
+ "toc.remove": "removed table of contents",
7223
7517
  "query.match": "matched selectors",
7224
7518
  "mutations.preview": "previewed mutations",
7225
7519
  "mutations.apply": "applied mutations",
@@ -7281,6 +7575,7 @@ var init_operation_hints = __esm(() => {
7281
7575
  "styles.apply": "receipt",
7282
7576
  "create.paragraph": "createResult",
7283
7577
  "create.heading": "createResult",
7578
+ "create.tableOfContents": "createResult",
7284
7579
  "lists.list": "listResult",
7285
7580
  "lists.get": "listItemInfo",
7286
7581
  "lists.insert": "listsMutationResult",
@@ -7297,6 +7592,11 @@ var init_operation_hints = __esm(() => {
7297
7592
  "trackChanges.list": "trackChangeList",
7298
7593
  "trackChanges.get": "trackChangeInfo",
7299
7594
  "trackChanges.decide": "trackChangeMutationReceipt",
7595
+ "toc.list": "plain",
7596
+ "toc.get": "plain",
7597
+ "toc.configure": "plain",
7598
+ "toc.update": "plain",
7599
+ "toc.remove": "plain",
7300
7600
  "query.match": "plain",
7301
7601
  "mutations.preview": "plain",
7302
7602
  "mutations.apply": "plain",
@@ -7358,6 +7658,7 @@ var init_operation_hints = __esm(() => {
7358
7658
  "styles.apply": "receipt",
7359
7659
  "create.paragraph": "result",
7360
7660
  "create.heading": "result",
7661
+ "create.tableOfContents": "result",
7361
7662
  "lists.list": "result",
7362
7663
  "lists.get": "item",
7363
7664
  "lists.insert": "result",
@@ -7374,6 +7675,11 @@ var init_operation_hints = __esm(() => {
7374
7675
  "trackChanges.list": "result",
7375
7676
  "trackChanges.get": "change",
7376
7677
  "trackChanges.decide": "receipt",
7678
+ "toc.list": "result",
7679
+ "toc.get": "result",
7680
+ "toc.configure": "result",
7681
+ "toc.update": "result",
7682
+ "toc.remove": "result",
7377
7683
  "query.match": "result",
7378
7684
  "mutations.preview": "result",
7379
7685
  "mutations.apply": "result",
@@ -7443,6 +7749,7 @@ var init_operation_hints = __esm(() => {
7443
7749
  "styles.apply": "general",
7444
7750
  "create.paragraph": "create",
7445
7751
  "create.heading": "create",
7752
+ "create.tableOfContents": "create",
7446
7753
  "lists.list": "lists",
7447
7754
  "lists.get": "lists",
7448
7755
  "lists.insert": "lists",
@@ -7459,6 +7766,11 @@ var init_operation_hints = __esm(() => {
7459
7766
  "trackChanges.list": "trackChanges",
7460
7767
  "trackChanges.get": "trackChanges",
7461
7768
  "trackChanges.decide": "trackChanges",
7769
+ "toc.list": "query",
7770
+ "toc.get": "query",
7771
+ "toc.configure": "toc",
7772
+ "toc.update": "toc",
7773
+ "toc.remove": "toc",
7462
7774
  "query.match": "query",
7463
7775
  "mutations.preview": "general",
7464
7776
  "mutations.apply": "general",
@@ -28319,7 +28631,7 @@ var init_remark_gfm_z_sDF4ss_es = __esm(() => {
28319
28631
  emptyOptions2 = {};
28320
28632
  });
28321
28633
 
28322
- // ../../packages/superdoc/dist/chunks/SuperConverter-DhpmwuUN.es.js
28634
+ // ../../packages/superdoc/dist/chunks/SuperConverter-BSZgN87C.es.js
28323
28635
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
28324
28636
  const fieldValue = extension$1.config[field];
28325
28637
  if (typeof fieldValue === "function")
@@ -29681,6 +29993,20 @@ function supportsImplicitTrueValue2(operationId) {
29681
29993
  return false;
29682
29994
  return entry.type === "boolean" || key === "underline";
29683
29995
  }
29996
+ function tocAddressSchema2() {
29997
+ return objectSchema2({
29998
+ kind: { const: "block" },
29999
+ nodeType: { const: "tableOfContents" },
30000
+ nodeId: { type: "string" }
30001
+ }, [
30002
+ "kind",
30003
+ "nodeType",
30004
+ "nodeId"
30005
+ ]);
30006
+ }
30007
+ function tocMutationResultSchema2() {
30008
+ return { oneOf: [tocMutationSuccessSchema2, tocMutationFailureSchema2] };
30009
+ }
29684
30010
  function executeCapabilities2(adapter) {
29685
30011
  return adapter.get();
29686
30012
  }
@@ -30283,6 +30609,23 @@ function executeCreateSectionBreak2(adapter, input, options) {
30283
30609
  validateCreateSectionBreakInput2(normalized);
30284
30610
  return adapter.sectionBreak(normalized, normalizeMutationOptions2(options));
30285
30611
  }
30612
+ function normalizeTocCreateLocation2(location2) {
30613
+ return location2 ?? { kind: "documentEnd" };
30614
+ }
30615
+ function normalizeCreateTableOfContentsInput2(input) {
30616
+ return {
30617
+ at: normalizeTocCreateLocation2(input.at),
30618
+ config: input.config
30619
+ };
30620
+ }
30621
+ function executeCreateTableOfContents2(adapter, input, options) {
30622
+ const normalized = normalizeCreateTableOfContentsInput2(input);
30623
+ const at = normalized.at;
30624
+ if ((at.kind === "before" || at.kind === "after") && "nodeId" in at)
30625
+ throw new DocumentApiValidationError2("INVALID_TARGET", "create.tableOfContents requires at.target for before/after positioning. The nodeId form is not supported.", { fields: ["at.nodeId"] });
30626
+ validateTargetOnlyCreateLocation2(at, "create.tableOfContents");
30627
+ return adapter.tableOfContents(normalized, normalizeMutationOptions2(options));
30628
+ }
30286
30629
  function validateBlocksDeleteInput2(input) {
30287
30630
  if (!input || typeof input !== "object")
30288
30631
  throw new DocumentApiValidationError2("INVALID_INPUT", "blocks.delete requires an input object.", { fields: ["input"] });
@@ -30448,7 +30791,13 @@ function buildDispatchTable2(api) {
30448
30791
  "tables.clearCellSpacing": (input, options) => api.tables.clearCellSpacing(input, options),
30449
30792
  "tables.get": (input) => api.tables.get(input),
30450
30793
  "tables.getCells": (input) => api.tables.getCells(input),
30451
- "tables.getProperties": (input) => api.tables.getProperties(input)
30794
+ "tables.getProperties": (input) => api.tables.getProperties(input),
30795
+ "create.tableOfContents": (input, options) => api.create.tableOfContents(input, options),
30796
+ "toc.list": (input) => api.toc.list(input),
30797
+ "toc.get": (input) => api.toc.get(input),
30798
+ "toc.configure": (input, options) => api.toc.configure(input, options),
30799
+ "toc.update": (input, options) => api.toc.update(input, options),
30800
+ "toc.remove": (input, options) => api.toc.remove(input, options)
30452
30801
  };
30453
30802
  }
30454
30803
  function validateTableLocator2(input, operationName) {
@@ -30792,6 +31141,32 @@ function executeSectionsClearPageBorders2(adapter, input, options) {
30792
31141
  assertSectionTarget2(input, "sections.clearPageBorders");
30793
31142
  return adapter.clearPageBorders(input, normalizeMutationOptions2(options));
30794
31143
  }
31144
+ function validateTocTarget2(target, operationName) {
31145
+ if (target === undefined || target === null)
31146
+ throw new DocumentApiValidationError2("INVALID_TARGET", `${operationName} requires a target.`);
31147
+ const t = target;
31148
+ if (t.kind !== "block" || t.nodeType !== "tableOfContents" || typeof t.nodeId !== "string")
31149
+ throw new DocumentApiValidationError2("INVALID_TARGET", `${operationName} target must be a TocAddress with kind 'block', nodeType 'tableOfContents', and a string nodeId.`, { target });
31150
+ }
31151
+ function executeTocList2(adapter, query2) {
31152
+ return adapter.list(query2);
31153
+ }
31154
+ function executeTocGet2(adapter, input) {
31155
+ validateTocTarget2(input.target, "toc.get");
31156
+ return adapter.get(input);
31157
+ }
31158
+ function executeTocConfigure2(adapter, input, options) {
31159
+ validateTocTarget2(input.target, "toc.configure");
31160
+ return adapter.configure(input, normalizeMutationOptions2(options));
31161
+ }
31162
+ function executeTocUpdate2(adapter, input, options) {
31163
+ validateTocTarget2(input.target, "toc.update");
31164
+ return adapter.update(input, normalizeMutationOptions2(options));
31165
+ }
31166
+ function executeTocRemove2(adapter, input, options) {
31167
+ validateTocTarget2(input.target, "toc.remove");
31168
+ return adapter.remove(input, normalizeMutationOptions2(options));
31169
+ }
30795
31170
  function buildFormatInlineAliasApi2(adapter) {
30796
31171
  return Object.fromEntries(INLINE_PROPERTY_REGISTRY2.map((entry) => {
30797
31172
  const key = entry.key;
@@ -30888,6 +31263,9 @@ function createDocumentApi2(adapters) {
30888
31263
  },
30889
31264
  sectionBreak(input, options) {
30890
31265
  return executeCreateSectionBreak2(adapters.create, input, options);
31266
+ },
31267
+ tableOfContents(input, options) {
31268
+ return executeCreateTableOfContents2(adapters.create, input, options);
30891
31269
  }
30892
31270
  },
30893
31271
  capabilities: capabilities2,
@@ -31092,6 +31470,23 @@ function createDocumentApi2(adapters) {
31092
31470
  return adapters.tables.getProperties(input);
31093
31471
  }
31094
31472
  },
31473
+ toc: {
31474
+ list(query2) {
31475
+ return executeTocList2(adapters.toc, query2);
31476
+ },
31477
+ get(input) {
31478
+ return executeTocGet2(adapters.toc, input);
31479
+ },
31480
+ configure(input, options) {
31481
+ return executeTocConfigure2(adapters.toc, input, options);
31482
+ },
31483
+ update(input, options) {
31484
+ return executeTocUpdate2(adapters.toc, input, options);
31485
+ },
31486
+ remove(input, options) {
31487
+ return executeTocRemove2(adapters.toc, input, options);
31488
+ }
31489
+ },
31095
31490
  query: { match(input) {
31096
31491
  return adapters.query.match(input);
31097
31492
  } },
@@ -46590,7 +46985,7 @@ var isRegExp = (value) => {
46590
46985
  tracked: false,
46591
46986
  carrier: runAttributeCarrier2(runPropertyKey ?? key),
46592
46987
  schema
46593
- }), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_NOT_FOUND_COMMAND_TRACKED2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG2, ALIGNMENTS2, ALIGNMENT_SET2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, ALIGN_ALLOWED_KEYS2, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, listsExitSuccessSchema2, nodeSummarySchema2, nodeInfoSchema2, matchContextSchema2, unknownNodeDiagnosticSchema2, textSelectorSchema2, nodeSelectorSchema2, findItemDomainSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, GROUP_METADATA2, CAPABILITY_REASON_CODES2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUE_SET2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, STYLES_APPLY_INPUT_ALLOWED_KEYS2, STYLES_APPLY_TARGET_ALLOWED_KEYS2, STYLES_APPLY_OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, DELETE_INPUT_ALLOWED_KEYS2, INSERT_INPUT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, REPLACE_INPUT_ALLOWED_KEYS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, TABLE_LOCATOR_OPS2, ROW_LOCATOR_OPS2, COLUMN_LOCATOR_OPS2, MERGE_RANGE_LOCATOR_OPS2, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS2, HEADER_FOOTER_VARIANTS2, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$207) => ({
46988
+ }), INLINE_PROPERTY_REGISTRY2, INLINE_PROPERTY_KEY_SET2, INLINE_PROPERTY_BY_KEY2, UNDERLINE_OBJECT_ALLOWED_KEYS2, SHADING_ALLOWED_KEYS2, BORDER_ALLOWED_KEYS2, FIT_TEXT_ALLOWED_KEYS2, LANG_ALLOWED_KEYS2, RFONTS_ALLOWED_KEYS2, EAST_ASIAN_LAYOUT_ALLOWED_KEYS2, STYLISTIC_SET_ALLOWED_KEYS2, VERT_ALIGN_VALUES2, NONE_FAILURES2, NONE_THROWS2, T_NOT_FOUND2, T_NOT_FOUND_CAPABLE2, T_PLAN_ENGINE2, T_NOT_FOUND_COMMAND2, T_NOT_FOUND_COMMAND_TRACKED2, T_QUERY_MATCH2, T_SECTION_CREATE2, T_SECTION_READ2, T_SECTION_MUTATION2, T_SECTION_SETTINGS_MUTATION2, FORMAT_INLINE_ALIAS_OPERATION_DEFINITIONS2, OPERATION_DEFINITIONS2, OPERATION_IDS2, COMMAND_CATALOG2, ALIGNMENTS2, ALIGNMENT_SET2, STYLE_APPLY_INPUT_ALLOWED_KEYS2, INLINE_ALIAS_INPUT_ALLOWED_KEYS2, ALIGN_ALLOWED_KEYS2, nodeTypeValues2, blockNodeTypeValues2, deletableBlockNodeTypeValues2, inlineNodeTypeValues2, rangeSchema2, textAddressSchema2, textTargetSchema2, blockNodeAddressSchema2, deletableBlockNodeAddressSchema2, paragraphAddressSchema2, headingAddressSchema2, listItemAddressSchema2, sectionAddressSchema2, nodeAddressSchema2, commentAddressSchema2, trackedChangeAddressSchema2, entityAddressSchema2, resolvedHandleSchema2, pageInfoSchema2, receiptSuccessSchema2, textMutationResolutionSchema2, textMutationSuccessSchema2, matchBlockSchema2, trackChangeRefSchema2, createParagraphSuccessSchema2, createHeadingSuccessSchema2, headingLevelSchema2, listsInsertSuccessSchema2, listsMutateItemSuccessSchema2, listsExitSuccessSchema2, nodeSummarySchema2, nodeInfoSchema2, matchContextSchema2, unknownNodeDiagnosticSchema2, textSelectorSchema2, nodeSelectorSchema2, findItemDomainSchema2, documentInfoCountsSchema2, documentInfoOutlineItemSchema2, documentInfoCapabilitiesSchema2, listKindSchema2, listInsertPositionSchema2, sectionBreakTypeSchema2, sectionOrientationSchema2, sectionVerticalAlignSchema2, sectionDirectionSchema2, sectionHeaderFooterKindSchema2, sectionHeaderFooterVariantSchema2, sectionLineNumberRestartSchema2, sectionPageNumberFormatSchema2, sectionRangeDomainSchema2, sectionPageMarginsSchema2, sectionHeaderFooterMarginsSchema2, sectionPageSetupSchema2, sectionColumnsSchema2, sectionLineNumberingSchema2, sectionPageNumberingSchema2, sectionHeaderFooterRefsSchema2, sectionBorderSpecSchema2, sectionPageBordersSchema2, sectionMutationSuccessSchema2, documentMutationSuccessSchema2, createSectionBreakSuccessSchema2, capabilityReasonsSchema2, capabilityFlagSchema2, operationRuntimeCapabilitySchema2, operationCapabilitiesSchema2, inlinePropertyCapabilitySchema2, formatCapabilitiesSchema2, planEngineCapabilitiesSchema2, tableCreateLocationSchema2, formatInlineAliasOperationSchemas2, tocMutationFailureSchema2, tocMutationSuccessSchema2, GROUP_METADATA2, CAPABILITY_REASON_CODES2, ST_ON_OFF_ON_VALUES2, ST_ON_OFF_OFF_VALUES2, ST_UNDERLINE_VALUE_SET2, CREATE_COMMENT_ALLOWED_KEYS2, PATCH_COMMENT_ALLOWED_KEYS2, PROPERTY_REGISTRY2, ALLOWED_KEYS_BY_CHANNEL2, STYLES_APPLY_INPUT_ALLOWED_KEYS2, STYLES_APPLY_TARGET_ALLOWED_KEYS2, STYLES_APPLY_OPTIONS_ALLOWED_KEYS2, VALID_CHANNELS2, DELETE_INPUT_ALLOWED_KEYS2, INSERT_INPUT_ALLOWED_KEYS2, VALID_INSERT_TYPES2, REPLACE_INPUT_ALLOWED_KEYS2, SECTION_BREAK_TYPES$1, SUPPORTED_DELETE_NODE_TYPES2, REJECTED_DELETE_NODE_TYPES2, TABLE_LOCATOR_OPS2, ROW_LOCATOR_OPS2, COLUMN_LOCATOR_OPS2, MERGE_RANGE_LOCATOR_OPS2, DEFAULT_SECTIONS_LIST_LIMIT2 = 250, SECTION_BREAK_TYPES3, SECTION_ORIENTATIONS2, SECTION_VERTICAL_ALIGNS2, SECTION_DIRECTIONS2, HEADER_FOOTER_KINDS2, HEADER_FOOTER_VARIANTS2, LINE_NUMBER_RESTARTS2, PAGE_NUMBER_FORMATS2, PAGE_BORDER_DISPLAYS2, PAGE_BORDER_OFFSET_FROM_VALUES2, PAGE_BORDER_Z_ORDER_VALUES2, _buffers, _defaultCollectionId = null, _nextCollectionId = 1, generateV2HandlerEntity = (handlerName, translator$207) => ({
46594
46989
  handlerName,
46595
46990
  handler: (params) => {
46596
46991
  const { nodes } = params;
@@ -55341,7 +55736,7 @@ var isRegExp = (value) => {
55341
55736
  };
55342
55737
  }, decode$11 = (params) => {
55343
55738
  const { node: node3 } = params;
55344
- const contentNodes = node3.content.map((n) => exportSchemaToJson({
55739
+ const contentNodes = (Array.isArray(node3.content) ? node3.content : []).map((n) => exportSchemaToJson({
55345
55740
  ...params,
55346
55741
  node: n
55347
55742
  }));
@@ -57790,7 +58185,7 @@ var isRegExp = (value) => {
57790
58185
  state.kern = kernNode.attributes["w:val"];
57791
58186
  }
57792
58187
  }, SuperConverter;
57793
- var init_SuperConverter_DhpmwuUN_es = __esm(() => {
58188
+ var init_SuperConverter_BSZgN87C_es = __esm(() => {
57794
58189
  init_rolldown_runtime_B2q5OVn9_es();
57795
58190
  init_jszip_ChlR43oI_es();
57796
58191
  init_xml_js_DLE8mr0n_es();
@@ -60208,6 +60603,7 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
60208
60603
  "table",
60209
60604
  "tableRow",
60210
60605
  "tableCell",
60606
+ "tableOfContents",
60211
60607
  "image",
60212
60608
  "sdt",
60213
60609
  "run",
@@ -60225,6 +60621,7 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
60225
60621
  "table",
60226
60622
  "tableRow",
60227
60623
  "tableCell",
60624
+ "tableOfContents",
60228
60625
  "image",
60229
60626
  "sdt"
60230
60627
  ];
@@ -62026,6 +62423,103 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
62026
62423
  }),
62027
62424
  referenceDocPath: "tables/get-properties.mdx",
62028
62425
  referenceGroup: "tables"
62426
+ },
62427
+ "create.tableOfContents": {
62428
+ memberPath: "create.tableOfContents",
62429
+ description: "Insert a new table of contents at the target position.",
62430
+ expectedResult: "Returns a CreateTableOfContentsResult with the new TOC block address.",
62431
+ requiresDocumentContext: true,
62432
+ metadata: mutationOperation2({
62433
+ idempotency: "non-idempotent",
62434
+ supportsDryRun: true,
62435
+ supportsTrackedMode: false,
62436
+ possibleFailureCodes: ["NO_OP", "INVALID_INSERTION_CONTEXT"],
62437
+ throws: [
62438
+ "INVALID_TARGET",
62439
+ "TARGET_NOT_FOUND",
62440
+ "CAPABILITY_UNAVAILABLE"
62441
+ ]
62442
+ }),
62443
+ referenceDocPath: "create/table-of-contents.mdx",
62444
+ referenceGroup: "create"
62445
+ },
62446
+ "toc.list": {
62447
+ memberPath: "toc.list",
62448
+ description: "List all tables of contents in the document.",
62449
+ expectedResult: "Returns a TocListResult with an array of TOC discovery items and pagination metadata.",
62450
+ requiresDocumentContext: true,
62451
+ metadata: readOperation2({ idempotency: "idempotent" }),
62452
+ referenceDocPath: "toc/list.mdx",
62453
+ referenceGroup: "toc"
62454
+ },
62455
+ "toc.get": {
62456
+ memberPath: "toc.get",
62457
+ description: "Retrieve details of a specific table of contents.",
62458
+ expectedResult: "Returns a TocInfo object with the instruction, source/display configuration, and entry count.",
62459
+ requiresDocumentContext: true,
62460
+ metadata: readOperation2({
62461
+ idempotency: "idempotent",
62462
+ throws: T_NOT_FOUND2
62463
+ }),
62464
+ referenceDocPath: "toc/get.mdx",
62465
+ referenceGroup: "toc"
62466
+ },
62467
+ "toc.configure": {
62468
+ memberPath: "toc.configure",
62469
+ description: "Update the configuration switches of a table of contents.",
62470
+ expectedResult: "Returns a TocMutationResult with the updated TOC address on success, or a failure code on no-op.",
62471
+ requiresDocumentContext: true,
62472
+ metadata: mutationOperation2({
62473
+ idempotency: "conditional",
62474
+ supportsDryRun: true,
62475
+ supportsTrackedMode: false,
62476
+ possibleFailureCodes: ["NO_OP"],
62477
+ throws: [
62478
+ "TARGET_NOT_FOUND",
62479
+ "INVALID_TARGET",
62480
+ "CAPABILITY_UNAVAILABLE"
62481
+ ]
62482
+ }),
62483
+ referenceDocPath: "toc/configure.mdx",
62484
+ referenceGroup: "toc"
62485
+ },
62486
+ "toc.update": {
62487
+ memberPath: "toc.update",
62488
+ description: "Rebuild the materialized content of a table of contents.",
62489
+ expectedResult: "Returns a TocMutationResult with the TOC address on success, or a failure code if content is unchanged.",
62490
+ requiresDocumentContext: true,
62491
+ metadata: mutationOperation2({
62492
+ idempotency: "conditional",
62493
+ supportsDryRun: true,
62494
+ supportsTrackedMode: false,
62495
+ possibleFailureCodes: ["NO_OP"],
62496
+ throws: [
62497
+ "TARGET_NOT_FOUND",
62498
+ "INVALID_TARGET",
62499
+ "CAPABILITY_UNAVAILABLE"
62500
+ ]
62501
+ }),
62502
+ referenceDocPath: "toc/update.mdx",
62503
+ referenceGroup: "toc"
62504
+ },
62505
+ "toc.remove": {
62506
+ memberPath: "toc.remove",
62507
+ description: "Remove a table of contents from the document.",
62508
+ expectedResult: "Returns a TocMutationResult with the removed TOC address on success, or a failure code on no-op.",
62509
+ requiresDocumentContext: true,
62510
+ metadata: mutationOperation2({
62511
+ idempotency: "conditional",
62512
+ supportsDryRun: true,
62513
+ supportsTrackedMode: false,
62514
+ possibleFailureCodes: ["NO_OP"],
62515
+ throws: [
62516
+ "TARGET_NOT_FOUND",
62517
+ "INVALID_TARGET",
62518
+ "CAPABILITY_UNAVAILABLE"
62519
+ ]
62520
+ }),
62521
+ referenceDocPath: "toc/remove.mdx",
62522
+ referenceGroup: "toc"
62029
62523
  }
62030
62524
  };
62031
62525
  OPERATION_IDS2 = Object.freeze(Object.keys(OPERATION_DEFINITIONS2));
@@ -62951,6 +63445,24 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
62951
63445
  failure: textMutationFailureSchemaFor2(operationId)
62952
63446
  }];
62953
63447
  }));
63448
+ tocMutationFailureSchema2 = objectSchema2({
63449
+ success: { const: false },
63450
+ failure: objectSchema2({
63451
+ code: { enum: [...[
63452
+ "NO_OP",
63453
+ "INVALID_TARGET",
63454
+ "TARGET_NOT_FOUND",
63455
+ "CAPABILITY_UNAVAILABLE",
63456
+ "INVALID_INSERTION_CONTEXT"
63457
+ ]] },
63458
+ message: { type: "string" },
63459
+ details: {}
63460
+ }, ["code", "message"])
63461
+ }, ["success", "failure"]);
63462
+ tocMutationSuccessSchema2 = objectSchema2({
63463
+ success: { const: true },
63464
+ toc: tocAddressSchema2()
63465
+ }, ["success", "toc"]);
62954
63466
  objectSchema2({
62955
63467
  nodeId: { type: "string" },
62956
63468
  nodeType: { enum: [...blockNodeTypeValues2] }
@@ -63879,7 +64391,92 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
63879
64391
  bandedRows: { type: "boolean" },
63880
64392
  bandedColumns: { type: "boolean" }
63881
64393
  })
63882
- }, ["nodeId"]);
64394
+ }, ["nodeId"]), objectSchema2({
64395
+ at: { oneOf: [
64396
+ objectSchema2({ kind: { const: "documentStart" } }, ["kind"]),
64397
+ objectSchema2({ kind: { const: "documentEnd" } }, ["kind"]),
64398
+ objectSchema2({
64399
+ kind: { const: "before" },
64400
+ target: blockNodeAddressSchema2
64401
+ }, ["kind", "target"]),
64402
+ objectSchema2({
64403
+ kind: { const: "after" },
64404
+ target: blockNodeAddressSchema2
64405
+ }, ["kind", "target"])
64406
+ ] },
64407
+ config: objectSchema2({
64408
+ outlineLevels: objectSchema2({
64409
+ from: { type: "integer" },
64410
+ to: { type: "integer" }
64411
+ }, ["from", "to"]),
64412
+ useAppliedOutlineLevel: { type: "boolean" },
64413
+ hyperlinks: { type: "boolean" },
64414
+ hideInWebView: { type: "boolean" },
64415
+ omitPageNumberLevels: objectSchema2({
64416
+ from: { type: "integer" },
64417
+ to: { type: "integer" }
64418
+ }, ["from", "to"]),
64419
+ separator: { type: "string" }
64420
+ })
64421
+ }), tocMutationResultSchema2(), objectSchema2({
64422
+ limit: { type: "integer" },
64423
+ offset: { type: "integer" }
64424
+ }), objectSchema2({
64425
+ evaluatedRevision: { type: "string" },
64426
+ total: { type: "integer" },
64427
+ items: arraySchema2(objectSchema2({
64428
+ id: { type: "string" },
64429
+ handle: ref2("ResolvedHandle"),
64430
+ address: tocAddressSchema2(),
64431
+ instruction: { type: "string" },
64432
+ sourceConfig: { type: "object" },
64433
+ displayConfig: { type: "object" },
64434
+ preserved: { type: "object" },
64435
+ entryCount: { type: "integer" }
64436
+ }, [
64437
+ "id",
64438
+ "handle",
64439
+ "address",
64440
+ "instruction",
64441
+ "entryCount"
64442
+ ])),
64443
+ page: ref2("PageInfo")
64444
+ }, [
64445
+ "evaluatedRevision",
64446
+ "total",
64447
+ "items",
64448
+ "page"
64449
+ ]), objectSchema2({ target: tocAddressSchema2() }, ["target"]), objectSchema2({
64450
+ nodeType: { const: "tableOfContents" },
64451
+ kind: { const: "block" },
64452
+ properties: objectSchema2({
64453
+ instruction: { type: "string" },
64454
+ sourceConfig: { type: "object" },
64455
+ displayConfig: { type: "object" },
64456
+ preservedSwitches: { type: "object" },
64457
+ entryCount: { type: "integer" }
64458
+ }, ["instruction", "entryCount"])
64459
+ }, [
64460
+ "nodeType",
64461
+ "kind",
64462
+ "properties"
64463
+ ]), objectSchema2({
64464
+ target: tocAddressSchema2(),
64465
+ patch: objectSchema2({
64466
+ outlineLevels: objectSchema2({
64467
+ from: { type: "integer" },
64468
+ to: { type: "integer" }
64469
+ }, ["from", "to"]),
64470
+ useAppliedOutlineLevel: { type: "boolean" },
64471
+ hyperlinks: { type: "boolean" },
64472
+ hideInWebView: { type: "boolean" },
64473
+ omitPageNumberLevels: objectSchema2({
64474
+ from: { type: "integer" },
64475
+ to: { type: "integer" }
64476
+ }, ["from", "to"]),
64477
+ separator: { type: "string" }
64478
+ })
64479
+ }, ["target", "patch"]), tocMutationResultSchema2(), objectSchema2({ target: tocAddressSchema2() }, ["target"]), tocMutationResultSchema2(), objectSchema2({ target: tocAddressSchema2() }, ["target"]), tocMutationResultSchema2();
63883
64480
  projectFromDefinitions2((_id, entry) => entry.memberPath);
63884
64481
  [...new Set(OPERATION_IDS2.map((id) => OPERATION_DEFINITIONS2[id].memberPath))];
63885
64482
  projectFromDefinitions2((_id, entry) => entry.referenceDocPath);
@@ -63948,6 +64545,11 @@ var init_SuperConverter_DhpmwuUN_es = __esm(() => {
63948
64545
  title: "Tables",
63949
64546
  description: "Table structure, layout, styling, and cell operations.",
63950
64547
  pagePath: "tables/index.mdx"
64548
+ },
64549
+ toc: {
64550
+ title: "Table of Contents",
64551
+ description: "Table of contents lifecycle and configuration.",
64552
+ pagePath: "toc/index.mdx"
63951
64553
  }
63952
64554
  };
63953
64555
  Object.keys(GROUP_METADATA2).map((key) => ({
@@ -101203,9 +101805,9 @@ var init_remark_gfm_CQ3Jg4PR_es = __esm(() => {
101203
101805
  init_remark_gfm_z_sDF4ss_es();
101204
101806
  });
101205
101807
 
101206
- // ../../packages/superdoc/dist/chunks/src-B-vDSO7p.es.js
101207
- var exports_src_B_vDSO7p_es = {};
101208
- __export(exports_src_B_vDSO7p_es, {
101808
+ // ../../packages/superdoc/dist/chunks/src-taG73BWT.es.js
101809
+ var exports_src_taG73BWT_es = {};
101810
+ __export(exports_src_taG73BWT_es, {
101209
101811
  zt: () => defineMark,
101210
101812
  z: () => cM,
101211
101813
  yt: () => removeAwarenessStates,
@@ -108059,6 +108661,20 @@ function normalizeExcerpt(text5) {
108059
108661
  const trimmed = text5.replace(/\s+/g, " ").trim();
108060
108662
  return trimmed.length ? trimmed : undefined;
108061
108663
  }
108664
+ function stableHash(input2) {
108665
+ let hash$3 = 2166136261;
108666
+ for (let index2 = 0;index2 < input2.length; index2 += 1) {
108667
+ hash$3 ^= input2.charCodeAt(index2);
108668
+ hash$3 = Math.imul(hash$3, 16777619);
108669
+ }
108670
+ return (hash$3 >>> 0).toString(16).padStart(8, "0");
108671
+ }
108672
+ function buildFallbackTocNodeId(node3, pos) {
108673
+ return `toc-auto-${stableHash(`${pos}:${typeof node3.attrs?.instruction === "string" ? node3.attrs.instruction : ""}`)}`;
108674
+ }
108675
+ function resolvePublicTocNodeId(node3, pos) {
108676
+ return buildFallbackTocNodeId(node3, pos);
108677
+ }
108062
108678
  function isListItem$1(attrs) {
108063
108679
  const numbering = attrs?.paragraphProperties?.numberingProperties;
108064
108680
  if (numbering && (numbering.numId != null || numbering.ilvl != null))
@@ -108099,6 +108715,8 @@ function mapBlockNodeType(node3) {
108099
108715
  return "tableCell";
108100
108716
  case "image":
108101
108717
  return "image";
108718
+ case "tableOfContents":
108719
+ return "tableOfContents";
108102
108720
  case "structuredContentBlock":
108103
108721
  case "sdt":
108104
108722
  return "sdt";
@@ -108106,11 +108724,13 @@ function mapBlockNodeType(node3) {
108106
108724
  return;
108107
108725
  }
108108
108726
  }
108109
- function resolveBlockNodeId(node3) {
108727
+ function resolveBlockNodeId(node3, pos, nodeType) {
108110
108728
  if (node3.type.name === "paragraph") {
108111
108729
  const attrs$1 = node3.attrs;
108112
108730
  return toId(attrs$1?.paraId) ?? toId(attrs$1?.sdBlockId);
108113
108731
  }
108732
+ if (nodeType === "tableOfContents")
108733
+ return resolvePublicTocNodeId(node3, pos);
108114
108734
  const attrs = node3.attrs ?? {};
108115
108735
  const typeName = node3.type.name;
108116
108736
  if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader")
@@ -108146,7 +108766,7 @@ function buildBlockIndex(editor) {
108146
108766
  const nodeType = mapBlockNodeType(node3);
108147
108767
  if (!nodeType)
108148
108768
  return;
108149
- const nodeId = resolveBlockNodeId(node3);
108769
+ const nodeId = resolveBlockNodeId(node3, pos, nodeType);
108150
108770
  if (!nodeId)
108151
108771
  return;
108152
108772
  const candidate = {
@@ -108466,6 +109086,173 @@ function findCandidateByPos(candidates, pos) {
108466
109086
  return candidate;
108467
109087
  }
108468
109088
  }
109089
+ function parseLevelRange(value) {
109090
+ const match$1 = value.match(/^(\d+)-(\d+)$/);
109091
+ if (!match$1)
109092
+ return;
109093
+ return {
109094
+ from: parseInt(match$1[1], 10),
109095
+ to: parseInt(match$1[2], 10)
109096
+ };
109097
+ }
109098
+ function parseCustomStyles(value) {
109099
+ const entries = [];
109100
+ const parts = value.split(",");
109101
+ for (let i$1 = 0;i$1 < parts.length - 1; i$1 += 2) {
109102
+ const styleName = parts[i$1].trim();
109103
+ const level = parseInt(parts[i$1 + 1].trim(), 10);
109104
+ if (styleName && !isNaN(level))
109105
+ entries.push({
109106
+ styleName,
109107
+ level
109108
+ });
109109
+ }
109110
+ return entries;
109111
+ }
109112
+ function parseTocInstruction(instruction) {
109113
+ const source = {};
109114
+ const display = {};
109115
+ const preserved = {};
109116
+ const rawExtensions = [];
109117
+ let match$1;
109118
+ while ((match$1 = SWITCH_PATTERN.exec(instruction)) !== null) {
109119
+ const switchChar = match$1[1].toLowerCase();
109120
+ const arg = match$1[2] ?? "";
109121
+ switch (switchChar) {
109122
+ case "o": {
109123
+ const range = parseLevelRange(arg);
109124
+ if (range)
109125
+ source.outlineLevels = range;
109126
+ break;
109127
+ }
109128
+ case "u":
109129
+ source.useAppliedOutlineLevel = true;
109130
+ break;
109131
+ case "h":
109132
+ display.hyperlinks = true;
109133
+ break;
109134
+ case "z":
109135
+ display.hideInWebView = true;
109136
+ break;
109137
+ case "n": {
109138
+ const range = parseLevelRange(arg);
109139
+ if (range)
109140
+ display.omitPageNumberLevels = range;
109141
+ break;
109142
+ }
109143
+ case "p":
109144
+ if (arg)
109145
+ display.separator = arg;
109146
+ break;
109147
+ case "t":
109148
+ if (arg)
109149
+ preserved.customStyles = parseCustomStyles(arg);
109150
+ break;
109151
+ case "b":
109152
+ if (arg)
109153
+ preserved.bookmarkName = arg;
109154
+ break;
109155
+ case "f":
109156
+ if (arg)
109157
+ preserved.tcFieldIdentifier = arg;
109158
+ break;
109159
+ case "l": {
109160
+ const range = parseLevelRange(arg);
109161
+ if (range)
109162
+ preserved.tcFieldLevels = range;
109163
+ break;
109164
+ }
109165
+ case "a":
109166
+ if (arg)
109167
+ preserved.captionType = arg;
109168
+ break;
109169
+ case "c":
109170
+ if (arg)
109171
+ preserved.seqFieldIdentifier = arg;
109172
+ break;
109173
+ case "d":
109174
+ if (arg)
109175
+ preserved.chapterSeparator = arg;
109176
+ break;
109177
+ case "s":
109178
+ if (arg)
109179
+ preserved.chapterNumberSource = arg;
109180
+ break;
109181
+ case "w":
109182
+ preserved.preserveTabEntries = true;
109183
+ break;
109184
+ default:
109185
+ rawExtensions.push(arg ? `\\${switchChar} "${arg}"` : `\\${switchChar}`);
109186
+ break;
109187
+ }
109188
+ }
109189
+ if (rawExtensions.length > 0)
109190
+ preserved.rawExtensions = rawExtensions;
109191
+ return {
109192
+ source,
109193
+ display,
109194
+ preserved
109195
+ };
109196
+ }
109197
+ function serializeTocInstruction(config2) {
109198
+ const parts = ["TOC"];
109199
+ const { source, display, preserved } = config2;
109200
+ if (source.outlineLevels)
109201
+ parts.push(`\\o "${source.outlineLevels.from}-${source.outlineLevels.to}"`);
109202
+ if (source.useAppliedOutlineLevel)
109203
+ parts.push("\\u");
109204
+ if (preserved.customStyles?.length) {
109205
+ const pairs = preserved.customStyles.map((s2) => `${s2.styleName},${s2.level}`).join(",");
109206
+ parts.push(`\\t "${pairs}"`);
109207
+ }
109208
+ if (display.hyperlinks)
109209
+ parts.push("\\h");
109210
+ if (display.hideInWebView)
109211
+ parts.push("\\z");
109212
+ if (display.omitPageNumberLevels)
109213
+ parts.push(`\\n "${display.omitPageNumberLevels.from}-${display.omitPageNumberLevels.to}"`);
109214
+ if (display.separator)
109215
+ parts.push(`\\p "${display.separator}"`);
109216
+ if (preserved.captionType)
109217
+ parts.push(`\\a "${preserved.captionType}"`);
109218
+ if (preserved.bookmarkName)
109219
+ parts.push(`\\b "${preserved.bookmarkName}"`);
109220
+ if (preserved.seqFieldIdentifier)
109221
+ parts.push(`\\c "${preserved.seqFieldIdentifier}"`);
109222
+ if (preserved.chapterSeparator)
109223
+ parts.push(`\\d "${preserved.chapterSeparator}"`);
109224
+ if (preserved.tcFieldIdentifier)
109225
+ parts.push(`\\f "${preserved.tcFieldIdentifier}"`);
109226
+ if (preserved.tcFieldLevels)
109227
+ parts.push(`\\l "${preserved.tcFieldLevels.from}-${preserved.tcFieldLevels.to}"`);
109228
+ if (preserved.chapterNumberSource)
109229
+ parts.push(`\\s "${preserved.chapterNumberSource}"`);
109230
+ if (preserved.preserveTabEntries)
109231
+ parts.push("\\w");
109232
+ if (preserved.rawExtensions?.length)
109233
+ parts.push(...preserved.rawExtensions);
109234
+ return parts.join(" ");
109235
+ }
109236
+ function applyTocPatch(existing, patch3) {
109237
+ return {
109238
+ source: {
109239
+ ...existing.source,
109240
+ ...patch3.outlineLevels !== undefined && { outlineLevels: patch3.outlineLevels },
109241
+ ...patch3.useAppliedOutlineLevel !== undefined && { useAppliedOutlineLevel: patch3.useAppliedOutlineLevel }
109242
+ },
109243
+ display: {
109244
+ ...existing.display,
109245
+ ...patch3.hyperlinks !== undefined && { hyperlinks: patch3.hyperlinks },
109246
+ ...patch3.hideInWebView !== undefined && { hideInWebView: patch3.hideInWebView },
109247
+ ...patch3.omitPageNumberLevels !== undefined && { omitPageNumberLevels: patch3.omitPageNumberLevels },
109248
+ ...patch3.separator !== undefined && { separator: patch3.separator }
109249
+ },
109250
+ preserved: { ...existing.preserved }
109251
+ };
109252
+ }
109253
+ function areTocConfigsEqual(a2, b$1) {
109254
+ return serializeTocInstruction(a2) === serializeTocInstruction(b$1);
109255
+ }
108469
109256
  function resolveMeasurement(value) {
108470
109257
  if (typeof value === "number")
108471
109258
  return value;
@@ -108596,6 +109383,23 @@ function mapTableCellNode(candidate) {
108596
109383
  }
108597
109384
  };
108598
109385
  }
109386
+ function mapTableOfContentsNode(candidate) {
109387
+ const node3 = candidate.node;
109388
+ const instruction = node3.attrs?.instruction ?? "";
109389
+ const config2 = parseTocInstruction(instruction);
109390
+ const entryCount = node3.childCount;
109391
+ return {
109392
+ nodeType: "tableOfContents",
109393
+ kind: "block",
109394
+ properties: {
109395
+ instruction,
109396
+ sourceConfig: config2.source,
109397
+ displayConfig: config2.display,
109398
+ preservedSwitches: config2.preserved,
109399
+ entryCount
109400
+ }
109401
+ };
109402
+ }
108599
109403
  function buildImageInfo(attrs, kind) {
108600
109404
  return {
108601
109405
  nodeType: "image",
@@ -108842,6 +109646,10 @@ function mapNodeInfo(candidate, overrideType) {
108842
109646
  const attrs = candidate.node?.attrs;
108843
109647
  return buildSdtInfo(attrs, kind);
108844
109648
  }
109649
+ case "tableOfContents":
109650
+ if (kind !== "block")
109651
+ throw new DocumentApiAdapterError("INVALID_TARGET", "TableOfContents nodes can only be resolved as blocks.");
109652
+ return mapTableOfContentsNode(candidate);
108845
109653
  case "hyperlink":
108846
109654
  if (!isInlineCandidate(candidate))
108847
109655
  throw new DocumentApiAdapterError("INVALID_TARGET", "Hyperlink nodes can only be resolved inline.");
@@ -119280,6 +120088,335 @@ function tablesSetCellSpacingWrapper(editor, input2, options) {
119280
120088
  function tablesClearCellSpacingWrapper(editor, input2, options) {
119281
120089
  return executeTableCommand(editor, "tables.clearCellSpacing", tablesClearCellSpacingAdapter, input2, options);
119282
120090
  }
120091
+ function findAllTocNodes(doc$2) {
120092
+ const results = [];
120093
+ doc$2.descendants((node3, pos) => {
120094
+ if (node3.type.name === "tableOfContents") {
120095
+ const sdBlockId = node3.attrs?.sdBlockId;
120096
+ const nodeId = resolvePublicTocNodeId(node3, pos);
120097
+ const commandNodeId = sdBlockId;
120098
+ results.push({
120099
+ node: node3,
120100
+ pos,
120101
+ nodeId,
120102
+ commandNodeId
120103
+ });
120104
+ return false;
120105
+ }
120106
+ return true;
120107
+ });
120108
+ return results;
120109
+ }
120110
+ function resolveTocTarget(doc$2, target) {
120111
+ const found2 = findAllTocNodes(doc$2).find((t) => t.nodeId === target.nodeId || t.commandNodeId === target.nodeId);
120112
+ if (!found2)
120113
+ throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Table of contents with nodeId "${target.nodeId}" not found.`);
120114
+ return found2;
120115
+ }
120116
+ function resolvePostMutationTocId(doc$2, sdBlockId) {
120117
+ return findAllTocNodes(doc$2).find((t) => t.commandNodeId === sdBlockId)?.nodeId ?? sdBlockId;
120118
+ }
120119
+ function extractTocInfo(node3) {
120120
+ const instruction = node3.attrs?.instruction ?? "";
120121
+ const config2 = parseTocInstruction(instruction);
120122
+ return {
120123
+ nodeType: "tableOfContents",
120124
+ kind: "block",
120125
+ properties: {
120126
+ instruction,
120127
+ sourceConfig: config2.source,
120128
+ displayConfig: config2.display,
120129
+ preservedSwitches: config2.preserved,
120130
+ entryCount: node3.childCount
120131
+ }
120132
+ };
120133
+ }
120134
+ function buildTocDiscoveryItem(resolved, evaluatedRevision) {
120135
+ const instruction = resolved.node.attrs?.instruction ?? "";
120136
+ const config2 = parseTocInstruction(instruction);
120137
+ const address2 = {
120138
+ kind: "block",
120139
+ nodeType: "tableOfContents",
120140
+ nodeId: resolved.nodeId
120141
+ };
120142
+ const handle3 = buildResolvedHandle2(resolved.nodeId, "stable", "tableOfContents");
120143
+ const domain2 = {
120144
+ address: address2,
120145
+ instruction,
120146
+ sourceConfig: config2.source,
120147
+ displayConfig: config2.display,
120148
+ preserved: config2.preserved,
120149
+ entryCount: resolved.node.childCount
120150
+ };
120151
+ return buildDiscoveryItem2(`toc:${resolved.nodeId}:${evaluatedRevision}`, handle3, domain2);
120152
+ }
120153
+ function collectHeadingSources(doc$2, config2) {
120154
+ const sources = [];
120155
+ const { outlineLevels } = config2.source;
120156
+ const useApplied = config2.source.useAppliedOutlineLevel ?? false;
120157
+ doc$2.descendants((node3, _pos) => {
120158
+ if (node3.type.name === "tableOfContents")
120159
+ return false;
120160
+ if (node3.type.name === "paragraph") {
120161
+ const attrs = node3.attrs;
120162
+ const paragraphProps = attrs?.paragraphProperties;
120163
+ const styleId = paragraphProps?.styleId;
120164
+ const sdBlockId = attrs?.sdBlockId ?? attrs?.paraId;
120165
+ if (!sdBlockId)
120166
+ return true;
120167
+ const headingLevel = getHeadingLevel(styleId);
120168
+ if (headingLevel != null && outlineLevels) {
120169
+ if (headingLevel >= outlineLevels.from && headingLevel <= outlineLevels.to) {
120170
+ sources.push({
120171
+ text: flattenText(node3),
120172
+ level: headingLevel,
120173
+ sdBlockId
120174
+ });
120175
+ return false;
120176
+ }
120177
+ }
120178
+ if (useApplied && outlineLevels) {
120179
+ const rawOutlineLevel = paragraphProps?.outlineLevel;
120180
+ if (rawOutlineLevel != null) {
120181
+ const tocLevel = rawOutlineLevel + 1;
120182
+ if (tocLevel >= outlineLevels.from && tocLevel <= outlineLevels.to) {
120183
+ sources.push({
120184
+ text: flattenText(node3),
120185
+ level: tocLevel,
120186
+ sdBlockId
120187
+ });
120188
+ return false;
120189
+ }
120190
+ }
120191
+ }
120192
+ }
120193
+ return true;
120194
+ });
120195
+ return sources;
120196
+ }
120197
+ function flattenText(node3) {
120198
+ let text5 = "";
120199
+ node3.descendants((child) => {
120200
+ if (child.isText)
120201
+ text5 += child.text;
120202
+ return true;
120203
+ });
120204
+ return text5;
120205
+ }
120206
+ function buildTocEntryParagraphs(sources, config2) {
120207
+ return sources.map((source) => buildEntryParagraph(source, config2));
120208
+ }
120209
+ function buildEntryParagraph(source, config2) {
120210
+ const { display } = config2;
120211
+ const content3 = [];
120212
+ const textNode = {
120213
+ type: "text",
120214
+ text: source.text || " "
120215
+ };
120216
+ if (display.hyperlinks)
120217
+ textNode.marks = [{
120218
+ type: "link",
120219
+ attrs: {
120220
+ anchor: source.sdBlockId,
120221
+ rId: null,
120222
+ history: true
120223
+ }
120224
+ }];
120225
+ content3.push(textNode);
120226
+ const omitRange = display.omitPageNumberLevels;
120227
+ if (!(omitRange && source.level >= omitRange.from && source.level <= omitRange.to)) {
120228
+ if (display.separator)
120229
+ content3.push({
120230
+ type: "text",
120231
+ text: display.separator
120232
+ });
120233
+ else
120234
+ content3.push({ type: "tab" });
120235
+ content3.push({
120236
+ type: "text",
120237
+ text: "0"
120238
+ });
120239
+ }
120240
+ return {
120241
+ type: "paragraph",
120242
+ attrs: {
120243
+ paragraphProperties: { styleId: `TOC${source.level}` },
120244
+ sdBlockId: undefined
120245
+ },
120246
+ content: content3
120247
+ };
120248
+ }
120249
+ function tocListWrapper(editor, query2) {
120250
+ const doc$2 = editor.state.doc;
120251
+ const revision = getRevision(editor);
120252
+ const { total, items: paged } = paginate(findAllTocNodes(doc$2).map((resolved) => buildTocDiscoveryItem(resolved, revision)), query2?.offset, query2?.limit);
120253
+ return buildDiscoveryResult2({
120254
+ evaluatedRevision: revision,
120255
+ total,
120256
+ items: paged,
120257
+ page: {
120258
+ limit: query2?.limit ?? total,
120259
+ offset: query2?.offset ?? 0,
120260
+ returned: paged.length
120261
+ }
120262
+ });
120263
+ }
120264
+ function tocGetWrapper(editor, input2) {
120265
+ return extractTocInfo(resolveTocTarget(editor.state.doc, input2.target).node);
120266
+ }
120267
+ function buildTocAddress(nodeId) {
120268
+ return {
120269
+ kind: "block",
120270
+ nodeType: "tableOfContents",
120271
+ nodeId
120272
+ };
120273
+ }
120274
+ function tocSuccess(nodeId) {
120275
+ return {
120276
+ success: true,
120277
+ toc: buildTocAddress(nodeId)
120278
+ };
120279
+ }
120280
+ function tocFailure(code$1, message) {
120281
+ return {
120282
+ success: false,
120283
+ failure: {
120284
+ code: code$1,
120285
+ message
120286
+ }
120287
+ };
120288
+ }
120289
+ function toTocEditorCommand(command$1) {
120290
+ return command$1;
120291
+ }
120292
+ function runTocAction(editor, action, expectedRevision) {
120293
+ return executeDomainCommand(editor, () => {
120294
+ const result = action();
120295
+ if (result)
120296
+ clearIndexCache(editor);
120297
+ return result;
120298
+ }, { expectedRevision });
120299
+ }
120300
+ function runTocCommand(editor, command$1, args$1, expectedRevision) {
120301
+ const executeCommand = toTocEditorCommand(command$1);
120302
+ return runTocAction(editor, () => executeCommand(args$1), expectedRevision);
120303
+ }
120304
+ function receiptApplied(receipt2) {
120305
+ return receipt2.steps[0]?.effect === "changed";
120306
+ }
120307
+ function isTocContentUnchanged(existingNode, newContent) {
120308
+ if (existingNode.childCount !== newContent.length)
120309
+ return false;
120310
+ const existingEntries = [];
120311
+ let canSerialize = true;
120312
+ existingNode.forEach((child) => {
120313
+ if (!canSerialize)
120314
+ return;
120315
+ if (typeof child.toJSON !== "function") {
120316
+ canSerialize = false;
120317
+ return;
120318
+ }
120319
+ const json = child.toJSON();
120320
+ if (json.attrs)
120321
+ delete json.attrs.sdBlockId;
120322
+ existingEntries.push(json);
120323
+ });
120324
+ if (!canSerialize)
120325
+ return false;
120326
+ const normalized = newContent.map((entry) => {
120327
+ const clone = JSON.parse(JSON.stringify(entry));
120328
+ if (clone.attrs)
120329
+ delete clone.attrs.sdBlockId;
120330
+ return clone;
120331
+ });
120332
+ return JSON.stringify(existingEntries) === JSON.stringify(normalized);
120333
+ }
120334
+ function materializeTocContent(doc$2, config2) {
120335
+ const entryParagraphs = buildTocEntryParagraphs(collectHeadingSources(doc$2, config2), config2);
120336
+ return entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER;
120337
+ }
120338
+ function tocConfigureWrapper(editor, input2, options) {
120339
+ rejectTrackedMode("toc.configure", options);
120340
+ const command$1 = requireEditorCommand(editor.commands?.setTableOfContentsInstructionById, "toc.configure");
120341
+ const resolved = resolveTocTarget(editor.state.doc, input2.target);
120342
+ const currentConfig = parseTocInstruction(resolved.node.attrs?.instruction ?? "");
120343
+ const patched = applyTocPatch(currentConfig, input2.patch);
120344
+ const nextContent = materializeTocContent(editor.state.doc, patched);
120345
+ if (areTocConfigsEqual(currentConfig, patched))
120346
+ return tocFailure("NO_OP", "Configuration patch produced no change.");
120347
+ if (options?.dryRun)
120348
+ return tocSuccess(resolved.nodeId);
120349
+ const shouldRefreshContent = !isTocContentUnchanged(resolved.node, nextContent);
120350
+ const commandNodeId = resolved.commandNodeId ?? resolved.nodeId;
120351
+ if (!receiptApplied(runTocCommand(editor, command$1, {
120352
+ sdBlockId: commandNodeId,
120353
+ instruction: serializeTocInstruction(patched),
120354
+ ...shouldRefreshContent ? { content: nextContent } : {}
120355
+ }, options?.expectedRevision)))
120356
+ return tocFailure("NO_OP", "Configuration change could not be applied.");
120357
+ return tocSuccess(resolvePostMutationTocId(editor.state.doc, commandNodeId));
120358
+ }
120359
+ function tocUpdateWrapper(editor, input2, options) {
120360
+ rejectTrackedMode("toc.update", options);
120361
+ const command$1 = requireEditorCommand(editor.commands?.replaceTableOfContentsContentById, "toc.update");
120362
+ const resolved = resolveTocTarget(editor.state.doc, input2.target);
120363
+ const config2 = parseTocInstruction(resolved.node.attrs?.instruction ?? "");
120364
+ const content3 = materializeTocContent(editor.state.doc, config2);
120365
+ if (isTocContentUnchanged(resolved.node, content3))
120366
+ return tocFailure("NO_OP", "TOC update produced no change.");
120367
+ if (options?.dryRun)
120368
+ return tocSuccess(resolved.nodeId);
120369
+ return receiptApplied(runTocCommand(editor, command$1, {
120370
+ sdBlockId: resolved.commandNodeId ?? resolved.nodeId,
120371
+ content: content3
120372
+ }, options?.expectedRevision)) ? tocSuccess(resolved.nodeId) : tocFailure("NO_OP", "TOC update produced no change.");
120373
+ }
120374
+ function tocRemoveWrapper(editor, input2, options) {
120375
+ rejectTrackedMode("toc.remove", options);
120376
+ const command$1 = requireEditorCommand(editor.commands?.deleteTableOfContentsById, "toc.remove");
120377
+ const resolved = resolveTocTarget(editor.state.doc, input2.target);
120378
+ if (options?.dryRun)
120379
+ return tocSuccess(resolved.nodeId);
120380
+ return receiptApplied(runTocCommand(editor, command$1, { sdBlockId: resolved.commandNodeId ?? resolved.nodeId }, options?.expectedRevision)) ? tocSuccess(resolved.nodeId) : tocFailure("NO_OP", "TOC removal produced no change.");
120381
+ }
120382
+ function createTableOfContentsWrapper(editor, input2, options) {
120383
+ rejectTrackedMode("create.tableOfContents", options);
120384
+ const command$1 = requireEditorCommand(editor.commands?.insertTableOfContentsAt, "create.tableOfContents");
120385
+ const at = input2.at ?? { kind: "documentEnd" };
120386
+ let pos;
120387
+ if (at.kind === "documentStart")
120388
+ pos = 0;
120389
+ else if (at.kind === "documentEnd")
120390
+ pos = editor.state.doc.content.size;
120391
+ else
120392
+ pos = resolveBlockInsertionPos(editor, at.target.nodeId, at.kind);
120393
+ const config2 = input2.config ? applyTocPatch(DEFAULT_TOC_CONFIG, input2.config) : DEFAULT_TOC_CONFIG;
120394
+ const instruction = serializeTocInstruction(config2);
120395
+ const content3 = materializeTocContent(editor.state.doc, config2);
120396
+ const sdBlockId = v4_default();
120397
+ if (options?.dryRun)
120398
+ return {
120399
+ success: true,
120400
+ toc: buildTocAddress("(dry-run)")
120401
+ };
120402
+ if (!receiptApplied(runTocCommand(editor, command$1, {
120403
+ pos,
120404
+ instruction,
120405
+ sdBlockId,
120406
+ content: content3
120407
+ }, options?.expectedRevision)))
120408
+ return {
120409
+ success: false,
120410
+ failure: {
120411
+ code: "INVALID_INSERTION_CONTEXT",
120412
+ message: "Table of contents could not be inserted at the requested location."
120413
+ }
120414
+ };
120415
+ return {
120416
+ success: true,
120417
+ toc: buildTocAddress(resolvePostMutationTocId(editor.state.doc, sdBlockId))
120418
+ };
120419
+ }
119283
120420
  function assembleDocumentApiAdapters(editor) {
119284
120421
  registerBuiltInExecutors();
119285
120422
  initRevision(editor);
@@ -119316,7 +120453,8 @@ function assembleDocumentApiAdapters(editor) {
119316
120453
  paragraph: (input2, options) => createParagraphWrapper(editor, input2, options),
119317
120454
  heading: (input2, options) => createHeadingWrapper(editor, input2, options),
119318
120455
  table: (input2, options) => createTableWrapper(editor, input2, options),
119319
- sectionBreak: (input2, options) => createSectionBreakAdapter(editor, input2, options)
120456
+ sectionBreak: (input2, options) => createSectionBreakAdapter(editor, input2, options),
120457
+ tableOfContents: (input2, options) => createTableOfContentsWrapper(editor, input2, options)
119320
120458
  },
119321
120459
  lists: {
119322
120460
  list: (query2) => listsListWrapper(editor, query2),
@@ -119389,6 +120527,13 @@ function assembleDocumentApiAdapters(editor) {
119389
120527
  getCells: (input2) => tablesGetCellsAdapter(editor, input2),
119390
120528
  getProperties: (input2) => tablesGetPropertiesAdapter(editor, input2)
119391
120529
  },
120530
+ toc: {
120531
+ list: (query2) => tocListWrapper(editor, query2),
120532
+ get: (input2) => tocGetWrapper(editor, input2),
120533
+ configure: (input2, options) => tocConfigureWrapper(editor, input2, options),
120534
+ update: (input2, options) => tocUpdateWrapper(editor, input2, options),
120535
+ remove: (input2, options) => tocRemoveWrapper(editor, input2, options)
120536
+ },
119392
120537
  query: { match: (input2) => queryMatchAdapter(editor, input2) },
119393
120538
  mutations: {
119394
120539
  preview: (input2) => previewPlan(editor, input2),
@@ -153238,13 +154383,13 @@ var Node$13 = class Node$14 {
153238
154383
  console.warn("Failed to initialize developer tools:", error);
153239
154384
  }
153240
154385
  }
153241
- }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, cacheByEditor, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, PlanError, revisionMap, subscribedEditors, everSyncedProviders, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, CSS_NAMED_COLORS, ZERO_WIDTH_SPACE = "​", ROW_START_TO_TEXT_OFFSET = 3, CELL_TO_TEXT_OFFSET = 2, normalizeHeaderAttrsForBodyCell = (attrs) => {
154386
+ }, BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,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`, LINK_MARK_NAME = "link", COMMENT_MARK_NAME, SUPPORTED_INLINE_TYPES, DocumentApiAdapterError, ALIAS_ELIGIBLE_TYPES, cacheByEditor, DEFAULT_TOC_CONFIG, SWITCH_PATTERN, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, PlanError, revisionMap, subscribedEditors, everSyncedProviders, REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SUPPORTED_STEP_OPS, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, registry, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", OBJECT_REPLACEMENT_CHAR = "", STUB_WHERE, FALLBACK_STORE_KEY = "__documentApiComments", STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL, DERIVED_ID_LENGTH = 24, groupedCache, SUPPORTED_NODE_TYPES, REJECTED_NODE_TYPES, CSS_NAMED_COLORS, ZERO_WIDTH_SPACE = "​", ROW_START_TO_TEXT_OFFSET = 3, CELL_TO_TEXT_OFFSET = 2, normalizeHeaderAttrsForBodyCell = (attrs) => {
153242
154387
  if (attrs?.borders !== null)
153243
154388
  return attrs;
153244
154389
  const nextAttrs = { ...attrs };
153245
154390
  delete nextAttrs.borders;
153246
154391
  return nextAttrs;
153247
- }, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, SETTINGS_PART_PATH = "word/settings.xml", SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
154392
+ }, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, TABLE_ADAPTER_DISPATCH, ROW_OPS, TABLE_SCOPED_OPS, registered = false, SETTINGS_PART_PATH = "word/settings.xml", SectionType, DEFAULT_PARAGRAPH_SECTION_TYPE, DEFAULT_BODY_SECTION_TYPE, TWIPS_PER_INCH$2 = 1440, PX_PER_INCH$2 = 96, DEFAULT_COLUMN_GAP_INCHES = 0.5, DEFAULT_HEADER_FOOTER_MARGIN_PX = 0, LINE_NUMBER_RESTART_VALUES, PAGE_NUMBER_FORMAT_VALUES, SECTION_ORIENTATION_VALUES, SECTION_VERTICAL_ALIGN_VALUES, readSectPrHeaderFooterRefs, PIXELS_PER_INCH$2 = 96, DOCUMENT_RELS_PATH = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE2 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", WORDPROCESSINGML_XMLNS = "http://schemas.openxmlformats.org/wordprocessingml/2006/main", OFFICE_DOCUMENT_RELS_XMLNS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships", RELATIONSHIP_ID_PATTERN, HEADER_FILE_PATTERN, FOOTER_FILE_PATTERN, NO_ENTRIES_PLACEHOLDER, empty_exports, init_empty, PIXELS_PER_INCH$1 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, Editor, ContextMenuPluginKey, MENU_OFFSET_X = 0, MENU_OFFSET_Y = 28, CONTEXT_MENU_OFFSET_X = 10, CONTEXT_MENU_OFFSET_Y = 10, SLASH_COOLDOWN_MS = 5000, ContextMenu, SearchQuery = class {
153248
154393
  constructor(config2) {
153249
154394
  this.search = config2.search;
153250
154395
  this.caseSensitive = !!config2.caseSensitive;
@@ -171419,9 +172564,9 @@ var Node$13 = class Node$14 {
171419
172564
  trackedChanges: context.trackedChanges ?? []
171420
172565
  });
171421
172566
  }, _hoisted_1$6, _hoisted_2$1, _hoisted_3, _hoisted_4, ContextMenu_default, _hoisted_1$5, BasicUpload_default, _hoisted_1$4, MIN_WIDTH = 200, PPI = 96, alignment = "flex-end", Ruler_default, GenericPopover_default, _hoisted_1$3, RESIZE_HANDLE_WIDTH_PX = 9, RESIZE_HANDLE_OFFSET_PX = 4, DRAG_OVERLAY_EXTENSION_PX = 1000, MIN_DRAG_OVERLAY_WIDTH_PX = 2000, THROTTLE_INTERVAL_MS = 16, MIN_RESIZE_DELTA_PX = 1, TableResizeOverlay_default, _hoisted_1$2, OVERLAY_EXPANSION_PX = 2000, RESIZE_HANDLE_SIZE_PX = 12, MOUSE_MOVE_THROTTLE_MS = 16, DIMENSION_CHANGE_THRESHOLD_PX = 1, Z_INDEX_OVERLAY = 10, Z_INDEX_HANDLE = 15, Z_INDEX_GUIDELINE = 20, ImageResizeOverlay_default, LINK_CLICK_DEBOUNCE_MS = 300, CURSOR_UPDATE_TIMEOUT_MS = 10, LinkClickHandler_default, _hoisted_1$1, _hoisted_2, DOCX2 = "application/vnd.openxmlformats-officedocument.wordprocessingml.document", TABLE_RESIZE_HOVER_THRESHOLD = 8, TABLE_RESIZE_THROTTLE_MS = 16, SuperEditor_default, _hoisted_1, SuperInput_default, SlashMenu, Extensions;
171422
- var init_src_B_vDSO7p_es = __esm(() => {
172567
+ var init_src_taG73BWT_es = __esm(() => {
171423
172568
  init_rolldown_runtime_B2q5OVn9_es();
171424
- init_SuperConverter_DhpmwuUN_es();
172569
+ init_SuperConverter_BSZgN87C_es();
171425
172570
  init_jszip_ChlR43oI_es();
171426
172571
  init_uuid_2IzDu5nl_es();
171427
172572
  init_constants_Dw0kAsLd_es();
@@ -179502,6 +180647,21 @@ function print() { __p += __j.call(arguments, '') }
179502
180647
  "tableCell"
179503
180648
  ]);
179504
180649
  cacheByEditor = /* @__PURE__ */ new WeakMap;
180650
+ DEFAULT_TOC_CONFIG = {
180651
+ source: {
180652
+ outlineLevels: {
180653
+ from: 1,
180654
+ to: 3
180655
+ },
180656
+ useAppliedOutlineLevel: true
180657
+ },
180658
+ display: {
180659
+ hyperlinks: true,
180660
+ hideInWebView: true
180661
+ },
180662
+ preserved: {}
180663
+ };
180664
+ SWITCH_PATTERN = /\\([a-z])\s*(?:"([^"]*)")?/gi;
179505
180665
  DUAL_KIND_TYPES = new Set(["sdt", "image"]);
179506
180666
  KNOWN_BLOCK_PM_NODE_TYPES = new Set([
179507
180667
  "paragraph",
@@ -179609,7 +180769,11 @@ function print() { __p += __j.call(arguments, '') }
179609
180769
  "tables.setTablePadding": ["insertTableAt"],
179610
180770
  "tables.setCellPadding": ["insertTableAt"],
179611
180771
  "tables.setCellSpacing": ["insertTableAt"],
179612
- "tables.clearCellSpacing": ["insertTableAt"]
180772
+ "tables.clearCellSpacing": ["insertTableAt"],
180773
+ "create.tableOfContents": ["insertTableOfContentsAt"],
180774
+ "toc.configure": ["setTableOfContentsInstructionById"],
180775
+ "toc.update": ["replaceTableOfContentsContentById"],
180776
+ "toc.remove": ["deleteTableOfContentsById"]
179613
180777
  };
179614
180778
  VALID_CAPABILITY_REASON_CODES = new Set(CAPABILITY_REASON_CODES2);
179615
180779
  REQUIRED_HELPERS = {
@@ -180074,6 +181238,14 @@ function print() { __p += __j.call(arguments, '') }
180074
181238
  RELATIONSHIP_ID_PATTERN = /^rId(\d+)$/;
180075
181239
  HEADER_FILE_PATTERN = /^word\/header(\d+)\.xml$/;
180076
181240
  FOOTER_FILE_PATTERN = /^word\/footer(\d+)\.xml$/;
181241
+ NO_ENTRIES_PLACEHOLDER = [{
181242
+ type: "paragraph",
181243
+ attrs: { paragraphProperties: {} },
181244
+ content: [{
181245
+ type: "text",
181246
+ text: "No table of contents entries found."
181247
+ }]
181248
+ }];
180077
181249
  empty_exports = /* @__PURE__ */ __export2({ default: () => null }, 1);
180078
181250
  init_empty = __esmMin(() => {});
180079
181251
  Editor = class Editor2 extends EventEmitter$1 {
@@ -197302,6 +198474,98 @@ function print() { __p += __j.call(arguments, '') }
197302
198474
  0
197303
198475
  ];
197304
198476
  },
198477
+ addCommands() {
198478
+ const normalizeTocContent = (content3, schema) => {
198479
+ if (!Array.isArray(content3))
198480
+ return null;
198481
+ return content3.map((entry) => entry && typeof entry === "object" && typeof entry.type === "string" ? schema.nodeFromJSON(entry) : entry);
198482
+ };
198483
+ return {
198484
+ insertTableOfContentsAt: (options) => ({ tr, dispatch, state }) => {
198485
+ const { pos, instruction = "", sdBlockId = null, content: content3 } = options;
198486
+ const tocType = this.editor.schema.nodes.tableOfContents;
198487
+ if (!tocType)
198488
+ return false;
198489
+ const defaultContent = [this.editor.schema.nodes.paragraph.create({}, this.editor.schema.text("Update table of contents to populate entries."))];
198490
+ const materializedContent = normalizeTocContent(content3, state.schema) ?? defaultContent;
198491
+ const tocNode = tocType.create({
198492
+ instruction,
198493
+ sdBlockId
198494
+ }, materializedContent);
198495
+ try {
198496
+ if (dispatch)
198497
+ tr.insert(pos, tocNode);
198498
+ return true;
198499
+ } catch (error) {
198500
+ if (error instanceof RangeError)
198501
+ return false;
198502
+ throw error;
198503
+ }
198504
+ },
198505
+ setTableOfContentsInstructionById: (options) => ({ tr, dispatch, state }) => {
198506
+ const { sdBlockId, instruction, content: content3 } = options;
198507
+ let found2 = false;
198508
+ state.doc.descendants((node3, pos) => {
198509
+ if (found2)
198510
+ return false;
198511
+ if (node3.type.name === "tableOfContents" && node3.attrs.sdBlockId === sdBlockId) {
198512
+ if (dispatch) {
198513
+ tr.setNodeMarkup(pos, undefined, {
198514
+ ...node3.attrs,
198515
+ instruction
198516
+ });
198517
+ const fragment = normalizeTocContent(content3, state.schema);
198518
+ if (fragment) {
198519
+ const from$12 = pos + 1;
198520
+ const to = pos + node3.nodeSize - 1;
198521
+ tr.replaceWith(from$12, to, fragment);
198522
+ }
198523
+ }
198524
+ found2 = true;
198525
+ return false;
198526
+ }
198527
+ return true;
198528
+ });
198529
+ return found2;
198530
+ },
198531
+ replaceTableOfContentsContentById: (options) => ({ tr, dispatch, state }) => {
198532
+ const { sdBlockId, content: content3 } = options;
198533
+ let found2 = false;
198534
+ state.doc.descendants((node3, pos) => {
198535
+ if (found2)
198536
+ return false;
198537
+ if (node3.type.name === "tableOfContents" && node3.attrs.sdBlockId === sdBlockId) {
198538
+ if (dispatch) {
198539
+ const from$12 = pos + 1;
198540
+ const to = pos + node3.nodeSize - 1;
198541
+ const fragment = normalizeTocContent(content3, state.schema) ?? [];
198542
+ tr.replaceWith(from$12, to, fragment);
198543
+ }
198544
+ found2 = true;
198545
+ return false;
198546
+ }
198547
+ return true;
198548
+ });
198549
+ return found2;
198550
+ },
198551
+ deleteTableOfContentsById: (options) => ({ tr, dispatch, state }) => {
198552
+ const { sdBlockId } = options;
198553
+ let found2 = false;
198554
+ state.doc.descendants((node3, pos) => {
198555
+ if (found2)
198556
+ return false;
198557
+ if (node3.type.name === "tableOfContents" && node3.attrs.sdBlockId === sdBlockId) {
198558
+ if (dispatch)
198559
+ tr.delete(pos, pos + node3.nodeSize);
198560
+ found2 = true;
198561
+ return false;
198562
+ }
198563
+ return true;
198564
+ });
198565
+ return found2;
198566
+ }
198567
+ };
198568
+ },
197305
198569
  addAttributes() {
197306
198570
  return {
197307
198571
  instruction: {
@@ -202160,8 +203424,8 @@ function print() { __p += __j.call(arguments, '') }
202160
203424
  return isObjectLike_default(value) && hasOwnProperty$8.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
202161
203425
  };
202162
203426
  stubFalse_default = stubFalse;
202163
- freeExports$2 = typeof exports_src_B_vDSO7p_es == "object" && exports_src_B_vDSO7p_es && !exports_src_B_vDSO7p_es.nodeType && exports_src_B_vDSO7p_es;
202164
- freeModule$2 = freeExports$2 && typeof module_src_B_vDSO7p_es == "object" && module_src_B_vDSO7p_es && !module_src_B_vDSO7p_es.nodeType && module_src_B_vDSO7p_es;
203427
+ freeExports$2 = typeof exports_src_taG73BWT_es == "object" && exports_src_taG73BWT_es && !exports_src_taG73BWT_es.nodeType && exports_src_taG73BWT_es;
203428
+ freeModule$2 = freeExports$2 && typeof module_src_taG73BWT_es == "object" && module_src_taG73BWT_es && !module_src_taG73BWT_es.nodeType && module_src_taG73BWT_es;
202165
203429
  Buffer$1 = freeModule$2 && freeModule$2.exports === freeExports$2 ? _root_default.Buffer : undefined;
202166
203430
  isBuffer_default = (Buffer$1 ? Buffer$1.isBuffer : undefined) || stubFalse_default;
202167
203431
  typedArrayTags = {};
@@ -202169,8 +203433,8 @@ function print() { __p += __j.call(arguments, '') }
202169
203433
  typedArrayTags[argsTag$1] = typedArrayTags[arrayTag$1] = typedArrayTags[arrayBufferTag$1] = typedArrayTags[boolTag$1] = typedArrayTags[dataViewTag$2] = typedArrayTags[dateTag$1] = typedArrayTags[errorTag$1] = typedArrayTags[funcTag] = typedArrayTags[mapTag$2] = typedArrayTags[numberTag$1] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag$1] = typedArrayTags[setTag$2] = typedArrayTags[stringTag$1] = typedArrayTags[weakMapTag$1] = false;
202170
203434
  _baseIsTypedArray_default = baseIsTypedArray;
202171
203435
  _baseUnary_default = baseUnary;
202172
- freeExports$1 = typeof exports_src_B_vDSO7p_es == "object" && exports_src_B_vDSO7p_es && !exports_src_B_vDSO7p_es.nodeType && exports_src_B_vDSO7p_es;
202173
- freeModule$1 = freeExports$1 && typeof module_src_B_vDSO7p_es == "object" && module_src_B_vDSO7p_es && !module_src_B_vDSO7p_es.nodeType && module_src_B_vDSO7p_es;
203436
+ freeExports$1 = typeof exports_src_taG73BWT_es == "object" && exports_src_taG73BWT_es && !exports_src_taG73BWT_es.nodeType && exports_src_taG73BWT_es;
203437
+ freeModule$1 = freeExports$1 && typeof module_src_taG73BWT_es == "object" && module_src_taG73BWT_es && !module_src_taG73BWT_es.nodeType && module_src_taG73BWT_es;
202174
203438
  freeProcess = freeModule$1 && freeModule$1.exports === freeExports$1 && _freeGlobal_default.process;
202175
203439
  _nodeUtil_default = function() {
202176
203440
  try {
@@ -202275,8 +203539,8 @@ function print() { __p += __j.call(arguments, '') }
202275
203539
  Stack.prototype.has = _stackHas_default;
202276
203540
  Stack.prototype.set = _stackSet_default;
202277
203541
  _Stack_default = Stack;
202278
- freeExports = typeof exports_src_B_vDSO7p_es == "object" && exports_src_B_vDSO7p_es && !exports_src_B_vDSO7p_es.nodeType && exports_src_B_vDSO7p_es;
202279
- freeModule = freeExports && typeof module_src_B_vDSO7p_es == "object" && module_src_B_vDSO7p_es && !module_src_B_vDSO7p_es.nodeType && module_src_B_vDSO7p_es;
203542
+ freeExports = typeof exports_src_taG73BWT_es == "object" && exports_src_taG73BWT_es && !exports_src_taG73BWT_es.nodeType && exports_src_taG73BWT_es;
203543
+ freeModule = freeExports && typeof module_src_taG73BWT_es == "object" && module_src_taG73BWT_es && !module_src_taG73BWT_es.nodeType && module_src_taG73BWT_es;
202280
203544
  Buffer4 = freeModule && freeModule.exports === freeExports ? _root_default.Buffer : undefined;
202281
203545
  allocUnsafe = Buffer4 ? Buffer4.allocUnsafe : undefined;
202282
203546
  _cloneBuffer_default = cloneBuffer;
@@ -209928,8 +211192,8 @@ var init_zipper_Cnk_HjM2_es = __esm(() => {
209928
211192
 
209929
211193
  // ../../packages/superdoc/dist/super-editor.es.js
209930
211194
  var init_super_editor_es = __esm(() => {
209931
- init_src_B_vDSO7p_es();
209932
- init_SuperConverter_DhpmwuUN_es();
211195
+ init_src_taG73BWT_es();
211196
+ init_SuperConverter_BSZgN87C_es();
209933
211197
  init_jszip_ChlR43oI_es();
209934
211198
  init_xml_js_DLE8mr0n_es();
209935
211199
  init_constants_Dw0kAsLd_es();
@@ -210271,6 +211535,23 @@ function normalizeExcerpt2(text5) {
210271
211535
  return trimmed.length ? trimmed : undefined;
210272
211536
  }
210273
211537
 
211538
+ // ../../packages/super-editor/src/document-api-adapters/helpers/toc-node-id.ts
211539
+ function stableHash2(input2) {
211540
+ let hash2 = 2166136261;
211541
+ for (let index2 = 0;index2 < input2.length; index2 += 1) {
211542
+ hash2 ^= input2.charCodeAt(index2);
211543
+ hash2 = Math.imul(hash2, 16777619);
211544
+ }
211545
+ return (hash2 >>> 0).toString(16).padStart(8, "0");
211546
+ }
211547
+ function buildFallbackTocNodeId2(node3, pos) {
211548
+ const instruction = typeof node3.attrs?.instruction === "string" ? node3.attrs.instruction : "";
211549
+ return `toc-auto-${stableHash2(`${pos}:${instruction}`)}`;
211550
+ }
211551
+ function resolvePublicTocNodeId2(node3, pos) {
211552
+ return buildFallbackTocNodeId2(node3, pos);
211553
+ }
211554
+
210274
211555
  // ../../packages/super-editor/src/document-api-adapters/errors.ts
210275
211556
  var DocumentApiAdapterError3;
210276
211557
  var init_errors3 = __esm(() => {
@@ -210329,6 +211610,8 @@ function mapBlockNodeType2(node3) {
210329
211610
  return "tableCell";
210330
211611
  case "image":
210331
211612
  return "image";
211613
+ case "tableOfContents":
211614
+ return "tableOfContents";
210332
211615
  case "structuredContentBlock":
210333
211616
  case "sdt":
210334
211617
  return "sdt";
@@ -210336,11 +211619,14 @@ function mapBlockNodeType2(node3) {
210336
211619
  return;
210337
211620
  }
210338
211621
  }
210339
- function resolveBlockNodeId2(node3) {
211622
+ function resolveBlockNodeId2(node3, pos, nodeType) {
210340
211623
  if (node3.type.name === "paragraph") {
210341
211624
  const attrs2 = node3.attrs;
210342
211625
  return toId2(attrs2?.paraId) ?? toId2(attrs2?.sdBlockId);
210343
211626
  }
211627
+ if (nodeType === "tableOfContents") {
211628
+ return resolvePublicTocNodeId2(node3, pos);
211629
+ }
210344
211630
  const attrs = node3.attrs ?? {};
210345
211631
  const typeName = node3.type.name;
210346
211632
  if (typeName === "table" || typeName === "tableRow" || typeName === "tableCell" || typeName === "tableHeader") {
@@ -210380,7 +211666,7 @@ function buildBlockIndex2(editor) {
210380
211666
  const nodeType = mapBlockNodeType2(node3);
210381
211667
  if (!nodeType)
210382
211668
  return;
210383
- const nodeId = resolveBlockNodeId2(node3);
211669
+ const nodeId = resolveBlockNodeId2(node3, pos, nodeType);
210384
211670
  if (!nodeId)
210385
211671
  return;
210386
211672
  const candidate = {
@@ -210483,6 +211769,7 @@ var init_node_address_resolver = __esm(() => {
210483
211769
  "table",
210484
211770
  "tableRow",
210485
211771
  "tableCell",
211772
+ "tableOfContents",
210486
211773
  "image",
210487
211774
  "sdt"
210488
211775
  ]);
@@ -210730,6 +212017,199 @@ var init_adapter_utils = __esm(() => {
210730
212017
  init_errors3();
210731
212018
  });
210732
212019
 
212020
+ // ../../packages/super-editor/src/core/super-converter/field-references/shared/toc-switches.ts
212021
+ function parseLevelRange2(value) {
212022
+ const match2 = value.match(/^(\d+)-(\d+)$/);
212023
+ if (!match2)
212024
+ return;
212025
+ return { from: parseInt(match2[1], 10), to: parseInt(match2[2], 10) };
212026
+ }
212027
+ function parseCustomStyles2(value) {
212028
+ const entries = [];
212029
+ const parts = value.split(",");
212030
+ for (let i4 = 0;i4 < parts.length - 1; i4 += 2) {
212031
+ const styleName = parts[i4].trim();
212032
+ const level = parseInt(parts[i4 + 1].trim(), 10);
212033
+ if (styleName && !isNaN(level)) {
212034
+ entries.push({ styleName, level });
212035
+ }
212036
+ }
212037
+ return entries;
212038
+ }
212039
+ function parseTocInstruction2(instruction) {
212040
+ const source = {};
212041
+ const display = {};
212042
+ const preserved = {};
212043
+ const rawExtensions = [];
212044
+ let match2;
212045
+ while ((match2 = SWITCH_PATTERN2.exec(instruction)) !== null) {
212046
+ const switchChar = match2[1].toLowerCase();
212047
+ const arg = match2[2] ?? "";
212048
+ switch (switchChar) {
212049
+ case "o": {
212050
+ const range = parseLevelRange2(arg);
212051
+ if (range)
212052
+ source.outlineLevels = range;
212053
+ break;
212054
+ }
212055
+ case "u":
212056
+ source.useAppliedOutlineLevel = true;
212057
+ break;
212058
+ case "h":
212059
+ display.hyperlinks = true;
212060
+ break;
212061
+ case "z":
212062
+ display.hideInWebView = true;
212063
+ break;
212064
+ case "n": {
212065
+ const range = parseLevelRange2(arg);
212066
+ if (range)
212067
+ display.omitPageNumberLevels = range;
212068
+ break;
212069
+ }
212070
+ case "p":
212071
+ if (arg)
212072
+ display.separator = arg;
212073
+ break;
212074
+ case "t":
212075
+ if (arg)
212076
+ preserved.customStyles = parseCustomStyles2(arg);
212077
+ break;
212078
+ case "b":
212079
+ if (arg)
212080
+ preserved.bookmarkName = arg;
212081
+ break;
212082
+ case "f":
212083
+ if (arg)
212084
+ preserved.tcFieldIdentifier = arg;
212085
+ break;
212086
+ case "l": {
212087
+ const range = parseLevelRange2(arg);
212088
+ if (range)
212089
+ preserved.tcFieldLevels = range;
212090
+ break;
212091
+ }
212092
+ case "a":
212093
+ if (arg)
212094
+ preserved.captionType = arg;
212095
+ break;
212096
+ case "c":
212097
+ if (arg)
212098
+ preserved.seqFieldIdentifier = arg;
212099
+ break;
212100
+ case "d":
212101
+ if (arg)
212102
+ preserved.chapterSeparator = arg;
212103
+ break;
212104
+ case "s":
212105
+ if (arg)
212106
+ preserved.chapterNumberSource = arg;
212107
+ break;
212108
+ case "w":
212109
+ preserved.preserveTabEntries = true;
212110
+ break;
212111
+ default:
212112
+ rawExtensions.push(arg ? `\\${switchChar} "${arg}"` : `\\${switchChar}`);
212113
+ break;
212114
+ }
212115
+ }
212116
+ if (rawExtensions.length > 0) {
212117
+ preserved.rawExtensions = rawExtensions;
212118
+ }
212119
+ return { source, display, preserved };
212120
+ }
212121
+ function serializeTocInstruction2(config2) {
212122
+ const parts = ["TOC"];
212123
+ const { source, display, preserved } = config2;
212124
+ if (source.outlineLevels) {
212125
+ parts.push(`\\o "${source.outlineLevels.from}-${source.outlineLevels.to}"`);
212126
+ }
212127
+ if (source.useAppliedOutlineLevel) {
212128
+ parts.push("\\u");
212129
+ }
212130
+ if (preserved.customStyles?.length) {
212131
+ const pairs = preserved.customStyles.map((s2) => `${s2.styleName},${s2.level}`).join(",");
212132
+ parts.push(`\\t "${pairs}"`);
212133
+ }
212134
+ if (display.hyperlinks) {
212135
+ parts.push("\\h");
212136
+ }
212137
+ if (display.hideInWebView) {
212138
+ parts.push("\\z");
212139
+ }
212140
+ if (display.omitPageNumberLevels) {
212141
+ parts.push(`\\n "${display.omitPageNumberLevels.from}-${display.omitPageNumberLevels.to}"`);
212142
+ }
212143
+ if (display.separator) {
212144
+ parts.push(`\\p "${display.separator}"`);
212145
+ }
212146
+ if (preserved.captionType) {
212147
+ parts.push(`\\a "${preserved.captionType}"`);
212148
+ }
212149
+ if (preserved.bookmarkName) {
212150
+ parts.push(`\\b "${preserved.bookmarkName}"`);
212151
+ }
212152
+ if (preserved.seqFieldIdentifier) {
212153
+ parts.push(`\\c "${preserved.seqFieldIdentifier}"`);
212154
+ }
212155
+ if (preserved.chapterSeparator) {
212156
+ parts.push(`\\d "${preserved.chapterSeparator}"`);
212157
+ }
212158
+ if (preserved.tcFieldIdentifier) {
212159
+ parts.push(`\\f "${preserved.tcFieldIdentifier}"`);
212160
+ }
212161
+ if (preserved.tcFieldLevels) {
212162
+ parts.push(`\\l "${preserved.tcFieldLevels.from}-${preserved.tcFieldLevels.to}"`);
212163
+ }
212164
+ if (preserved.chapterNumberSource) {
212165
+ parts.push(`\\s "${preserved.chapterNumberSource}"`);
212166
+ }
212167
+ if (preserved.preserveTabEntries) {
212168
+ parts.push("\\w");
212169
+ }
212170
+ if (preserved.rawExtensions?.length) {
212171
+ parts.push(...preserved.rawExtensions);
212172
+ }
212173
+ return parts.join(" ");
212174
+ }
212175
+ function applyTocPatch2(existing, patch3) {
212176
+ return {
212177
+ source: {
212178
+ ...existing.source,
212179
+ ...patch3.outlineLevels !== undefined && { outlineLevels: patch3.outlineLevels },
212180
+ ...patch3.useAppliedOutlineLevel !== undefined && { useAppliedOutlineLevel: patch3.useAppliedOutlineLevel }
212181
+ },
212182
+ display: {
212183
+ ...existing.display,
212184
+ ...patch3.hyperlinks !== undefined && { hyperlinks: patch3.hyperlinks },
212185
+ ...patch3.hideInWebView !== undefined && { hideInWebView: patch3.hideInWebView },
212186
+ ...patch3.omitPageNumberLevels !== undefined && { omitPageNumberLevels: patch3.omitPageNumberLevels },
212187
+ ...patch3.separator !== undefined && { separator: patch3.separator }
212188
+ },
212189
+ preserved: { ...existing.preserved }
212190
+ };
212191
+ }
212192
+ function areTocConfigsEqual2(a2, b2) {
212193
+ return serializeTocInstruction2(a2) === serializeTocInstruction2(b2);
212194
+ }
212195
+ var DEFAULT_SOURCE, DEFAULT_DISPLAY, DEFAULT_TOC_CONFIG2, SWITCH_PATTERN2;
212196
+ var init_toc_switches = __esm(() => {
212197
+ DEFAULT_SOURCE = {
212198
+ outlineLevels: { from: 1, to: 3 },
212199
+ useAppliedOutlineLevel: true
212200
+ };
212201
+ DEFAULT_DISPLAY = {
212202
+ hyperlinks: true,
212203
+ hideInWebView: true
212204
+ };
212205
+ DEFAULT_TOC_CONFIG2 = {
212206
+ source: DEFAULT_SOURCE,
212207
+ display: DEFAULT_DISPLAY,
212208
+ preserved: {}
212209
+ };
212210
+ SWITCH_PATTERN2 = /\\([a-z])\s*(?:"([^"]*)")?/gi;
212211
+ });
212212
+
210733
212213
  // ../../packages/super-editor/src/document-api-adapters/helpers/node-info-mapper.ts
210734
212214
  function resolveMeasurement2(value) {
210735
212215
  if (typeof value === "number")
@@ -210871,6 +212351,23 @@ function mapTableCellNode2(candidate) {
210871
212351
  properties
210872
212352
  };
210873
212353
  }
212354
+ function mapTableOfContentsNode2(candidate) {
212355
+ const node3 = candidate.node;
212356
+ const instruction = node3.attrs?.instruction ?? "";
212357
+ const config2 = parseTocInstruction2(instruction);
212358
+ const entryCount = node3.childCount;
212359
+ return {
212360
+ nodeType: "tableOfContents",
212361
+ kind: "block",
212362
+ properties: {
212363
+ instruction,
212364
+ sourceConfig: config2.source,
212365
+ displayConfig: config2.display,
212366
+ preservedSwitches: config2.preserved,
212367
+ entryCount
212368
+ }
212369
+ };
212370
+ }
210874
212371
  function buildImageInfo2(attrs, kind) {
210875
212372
  const properties = {
210876
212373
  src: attrs?.src ?? undefined,
@@ -211112,6 +212609,10 @@ function mapNodeInfo2(candidate, overrideType) {
211112
212609
  const attrs = candidate.node?.attrs;
211113
212610
  return buildSdtInfo2(attrs, kind);
211114
212611
  }
212612
+ case "tableOfContents":
212613
+ if (kind !== "block")
212614
+ throw new DocumentApiAdapterError3("INVALID_TARGET", "TableOfContents nodes can only be resolved as blocks.");
212615
+ return mapTableOfContentsNode2(candidate);
211115
212616
  case "hyperlink":
211116
212617
  if (!isInlineCandidate2(candidate))
211117
212618
  throw new DocumentApiAdapterError3("INVALID_TARGET", "Hyperlink nodes can only be resolved inline.");
@@ -211143,6 +212644,7 @@ function mapNodeInfo2(candidate, overrideType) {
211143
212644
  var init_node_info_mapper = __esm(() => {
211144
212645
  init_node_address_resolver();
211145
212646
  init_errors3();
212647
+ init_toc_switches();
211146
212648
  });
211147
212649
 
211148
212650
  // ../../packages/super-editor/src/document-api-adapters/helpers/node-info-resolver.ts
@@ -212148,7 +213650,11 @@ var init_capabilities_adapter = __esm(() => {
212148
213650
  "tables.setTablePadding": ["insertTableAt"],
212149
213651
  "tables.setCellPadding": ["insertTableAt"],
212150
213652
  "tables.setCellSpacing": ["insertTableAt"],
212151
- "tables.clearCellSpacing": ["insertTableAt"]
213653
+ "tables.clearCellSpacing": ["insertTableAt"],
213654
+ "create.tableOfContents": ["insertTableOfContentsAt"],
213655
+ "toc.configure": ["setTableOfContentsInstructionById"],
213656
+ "toc.update": ["replaceTableOfContentsContentById"],
213657
+ "toc.remove": ["deleteTableOfContentsById"]
212152
213658
  };
212153
213659
  VALID_CAPABILITY_REASON_CODES2 = new Set(CAPABILITY_REASON_CODES);
212154
213660
  REQUIRED_HELPERS2 = {
@@ -255017,7 +256523,8 @@ var XML_NODE_NAME24 = "sd:tableOfContents", SD_NODE_NAME20 = "tableOfContents",
255017
256523
  return processedNode;
255018
256524
  }, decode62 = (params3) => {
255019
256525
  const { node: node4 } = params3;
255020
- const contentNodes = node4.content.map((n) => exportSchemaToJson2({ ...params3, node: n }));
256526
+ const tocContent = Array.isArray(node4.content) ? node4.content : [];
256527
+ const contentNodes = tocContent.map((n) => exportSchemaToJson2({ ...params3, node: n }));
255021
256528
  const tocBeginElements = [
255022
256529
  {
255023
256530
  name: "w:r",
@@ -273617,6 +275124,362 @@ var init_tables_wrappers = __esm(() => {
273617
275124
  init_tables_adapter();
273618
275125
  });
273619
275126
 
275127
+ // ../../packages/super-editor/src/document-api-adapters/helpers/toc-resolver.ts
275128
+ function findAllTocNodes2(doc4) {
275129
+ const results = [];
275130
+ doc4.descendants((node4, pos) => {
275131
+ if (node4.type.name === "tableOfContents") {
275132
+ const sdBlockId = node4.attrs?.sdBlockId;
275133
+ const nodeId = resolvePublicTocNodeId2(node4, pos);
275134
+ const commandNodeId = sdBlockId;
275135
+ results.push({ node: node4, pos, nodeId, commandNodeId });
275136
+ return false;
275137
+ }
275138
+ return true;
275139
+ });
275140
+ return results;
275141
+ }
275142
+ function resolveTocTarget2(doc4, target) {
275143
+ const all6 = findAllTocNodes2(doc4);
275144
+ const found3 = all6.find((t) => t.nodeId === target.nodeId || t.commandNodeId === target.nodeId);
275145
+ if (!found3) {
275146
+ throw new DocumentApiAdapterError3("TARGET_NOT_FOUND", `Table of contents with nodeId "${target.nodeId}" not found.`);
275147
+ }
275148
+ return found3;
275149
+ }
275150
+ function resolvePostMutationTocId2(doc4, sdBlockId) {
275151
+ const all6 = findAllTocNodes2(doc4);
275152
+ const found3 = all6.find((t) => t.commandNodeId === sdBlockId);
275153
+ return found3?.nodeId ?? sdBlockId;
275154
+ }
275155
+ function extractTocInfo2(node4) {
275156
+ const instruction = node4.attrs?.instruction ?? "";
275157
+ const config33 = parseTocInstruction2(instruction);
275158
+ return {
275159
+ nodeType: "tableOfContents",
275160
+ kind: "block",
275161
+ properties: {
275162
+ instruction,
275163
+ sourceConfig: config33.source,
275164
+ displayConfig: config33.display,
275165
+ preservedSwitches: config33.preserved,
275166
+ entryCount: node4.childCount
275167
+ }
275168
+ };
275169
+ }
275170
+ function buildTocDiscoveryItem2(resolved, evaluatedRevision) {
275171
+ const instruction = resolved.node.attrs?.instruction ?? "";
275172
+ const config33 = parseTocInstruction2(instruction);
275173
+ const address2 = {
275174
+ kind: "block",
275175
+ nodeType: "tableOfContents",
275176
+ nodeId: resolved.nodeId
275177
+ };
275178
+ const handle4 = buildResolvedHandle(resolved.nodeId, "stable", "tableOfContents");
275179
+ const domain3 = {
275180
+ address: address2,
275181
+ instruction,
275182
+ sourceConfig: config33.source,
275183
+ displayConfig: config33.display,
275184
+ preserved: config33.preserved,
275185
+ entryCount: resolved.node.childCount
275186
+ };
275187
+ const id2 = `toc:${resolved.nodeId}:${evaluatedRevision}`;
275188
+ return buildDiscoveryItem(id2, handle4, domain3);
275189
+ }
275190
+ var init_toc_resolver = __esm(() => {
275191
+ init_src();
275192
+ init_toc_switches();
275193
+ init_errors3();
275194
+ });
275195
+
275196
+ // ../../packages/super-editor/src/document-api-adapters/helpers/toc-entry-builder.ts
275197
+ function collectHeadingSources2(doc4, config33) {
275198
+ const sources = [];
275199
+ const { outlineLevels } = config33.source;
275200
+ const useApplied = config33.source.useAppliedOutlineLevel ?? false;
275201
+ doc4.descendants((node4, _pos) => {
275202
+ if (node4.type.name === "tableOfContents")
275203
+ return false;
275204
+ if (node4.type.name === "paragraph") {
275205
+ const attrs = node4.attrs;
275206
+ const paragraphProps = attrs?.paragraphProperties;
275207
+ const styleId = paragraphProps?.styleId;
275208
+ const sdBlockId = attrs?.sdBlockId ?? attrs?.paraId;
275209
+ if (!sdBlockId)
275210
+ return true;
275211
+ const headingLevel = getHeadingLevel2(styleId);
275212
+ if (headingLevel != null && outlineLevels) {
275213
+ if (headingLevel >= outlineLevels.from && headingLevel <= outlineLevels.to) {
275214
+ sources.push({ text: flattenText2(node4), level: headingLevel, sdBlockId });
275215
+ return false;
275216
+ }
275217
+ }
275218
+ if (useApplied && outlineLevels) {
275219
+ const rawOutlineLevel = paragraphProps?.outlineLevel;
275220
+ if (rawOutlineLevel != null) {
275221
+ const tocLevel = rawOutlineLevel + 1;
275222
+ if (tocLevel >= outlineLevels.from && tocLevel <= outlineLevels.to) {
275223
+ sources.push({ text: flattenText2(node4), level: tocLevel, sdBlockId });
275224
+ return false;
275225
+ }
275226
+ }
275227
+ }
275228
+ }
275229
+ return true;
275230
+ });
275231
+ return sources;
275232
+ }
275233
+ function flattenText2(node4) {
275234
+ let text9 = "";
275235
+ node4.descendants((child) => {
275236
+ if (child.isText)
275237
+ text9 += child.text;
275238
+ return true;
275239
+ });
275240
+ return text9;
275241
+ }
275242
+ function buildTocEntryParagraphs2(sources, config33) {
275243
+ return sources.map((source) => buildEntryParagraph2(source, config33));
275244
+ }
275245
+ function buildEntryParagraph2(source, config33) {
275246
+ const { display } = config33;
275247
+ const content5 = [];
275248
+ const textNode = {
275249
+ type: "text",
275250
+ text: source.text || " "
275251
+ };
275252
+ if (display.hyperlinks) {
275253
+ textNode.marks = [
275254
+ {
275255
+ type: "link",
275256
+ attrs: {
275257
+ anchor: source.sdBlockId,
275258
+ rId: null,
275259
+ history: true
275260
+ }
275261
+ }
275262
+ ];
275263
+ }
275264
+ content5.push(textNode);
275265
+ const omitRange = display.omitPageNumberLevels;
275266
+ const omitPageNumber = omitRange && source.level >= omitRange.from && source.level <= omitRange.to;
275267
+ if (!omitPageNumber) {
275268
+ if (display.separator) {
275269
+ content5.push({ type: "text", text: display.separator });
275270
+ } else {
275271
+ content5.push({ type: "tab" });
275272
+ }
275273
+ content5.push({ type: "text", text: "0" });
275274
+ }
275275
+ return {
275276
+ type: "paragraph",
275277
+ attrs: {
275278
+ paragraphProperties: {
275279
+ styleId: `TOC${source.level}`
275280
+ },
275281
+ sdBlockId: undefined
275282
+ },
275283
+ content: content5
275284
+ };
275285
+ }
275286
+ var init_toc_entry_builder = __esm(() => {
275287
+ init_node_address_resolver();
275288
+ });
275289
+
275290
+ // ../../packages/super-editor/src/document-api-adapters/plan-engine/toc-wrappers.ts
275291
+ function tocListWrapper2(editor, query2) {
275292
+ const doc4 = editor.state.doc;
275293
+ const revision = getRevision2(editor);
275294
+ const tocNodes = findAllTocNodes2(doc4);
275295
+ const allItems = tocNodes.map((resolved) => buildTocDiscoveryItem2(resolved, revision));
275296
+ const { total, items: paged } = paginate2(allItems, query2?.offset, query2?.limit);
275297
+ const effectiveLimit = query2?.limit ?? total;
275298
+ return buildDiscoveryResult({
275299
+ evaluatedRevision: revision,
275300
+ total,
275301
+ items: paged,
275302
+ page: { limit: effectiveLimit, offset: query2?.offset ?? 0, returned: paged.length }
275303
+ });
275304
+ }
275305
+ function tocGetWrapper2(editor, input2) {
275306
+ const resolved = resolveTocTarget2(editor.state.doc, input2.target);
275307
+ return extractTocInfo2(resolved.node);
275308
+ }
275309
+ function buildTocAddress2(nodeId) {
275310
+ return { kind: "block", nodeType: "tableOfContents", nodeId };
275311
+ }
275312
+ function tocSuccess2(nodeId) {
275313
+ return { success: true, toc: buildTocAddress2(nodeId) };
275314
+ }
275315
+ function tocFailure2(code10, message) {
275316
+ return { success: false, failure: { code: code10, message } };
275317
+ }
275318
+ function toTocEditorCommand2(command2) {
275319
+ return command2;
275320
+ }
275321
+ function runTocAction2(editor, action, expectedRevision) {
275322
+ return executeDomainCommand2(editor, () => {
275323
+ const result = action();
275324
+ if (result)
275325
+ clearIndexCache2(editor);
275326
+ return result;
275327
+ }, { expectedRevision });
275328
+ }
275329
+ function runTocCommand2(editor, command2, args3, expectedRevision) {
275330
+ const executeCommand = toTocEditorCommand2(command2);
275331
+ return runTocAction2(editor, () => executeCommand(args3), expectedRevision);
275332
+ }
275333
+ function receiptApplied2(receipt2) {
275334
+ return receipt2.steps[0]?.effect === "changed";
275335
+ }
275336
+ function isTocContentUnchanged2(existingNode, newContent) {
275337
+ if (existingNode.childCount !== newContent.length)
275338
+ return false;
275339
+ const existingEntries = [];
275340
+ let canSerialize = true;
275341
+ existingNode.forEach((child) => {
275342
+ if (!canSerialize)
275343
+ return;
275344
+ if (typeof child.toJSON !== "function") {
275345
+ canSerialize = false;
275346
+ return;
275347
+ }
275348
+ const json = child.toJSON();
275349
+ if (json.attrs)
275350
+ delete json.attrs.sdBlockId;
275351
+ existingEntries.push(json);
275352
+ });
275353
+ if (!canSerialize)
275354
+ return false;
275355
+ const normalized = newContent.map((entry) => {
275356
+ const clone = JSON.parse(JSON.stringify(entry));
275357
+ if (clone.attrs)
275358
+ delete clone.attrs.sdBlockId;
275359
+ return clone;
275360
+ });
275361
+ return JSON.stringify(existingEntries) === JSON.stringify(normalized);
275362
+ }
275363
+ function materializeTocContent2(doc4, config33) {
275364
+ const headingSources = collectHeadingSources2(doc4, config33);
275365
+ const entryParagraphs = buildTocEntryParagraphs2(headingSources, config33);
275366
+ return entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER2;
275367
+ }
275368
+ function tocConfigureWrapper2(editor, input2, options) {
275369
+ rejectTrackedMode2("toc.configure", options);
275370
+ const command2 = requireEditorCommand2(editor.commands?.setTableOfContentsInstructionById, "toc.configure");
275371
+ const resolved = resolveTocTarget2(editor.state.doc, input2.target);
275372
+ const currentConfig = parseTocInstruction2(resolved.node.attrs?.instruction ?? "");
275373
+ const patched = applyTocPatch2(currentConfig, input2.patch);
275374
+ const nextContent = materializeTocContent2(editor.state.doc, patched);
275375
+ if (areTocConfigsEqual2(currentConfig, patched)) {
275376
+ return tocFailure2("NO_OP", "Configuration patch produced no change.");
275377
+ }
275378
+ if (options?.dryRun) {
275379
+ return tocSuccess2(resolved.nodeId);
275380
+ }
275381
+ const shouldRefreshContent = !isTocContentUnchanged2(resolved.node, nextContent);
275382
+ const commandNodeId = resolved.commandNodeId ?? resolved.nodeId;
275383
+ const receipt2 = runTocCommand2(editor, command2, {
275384
+ sdBlockId: commandNodeId,
275385
+ instruction: serializeTocInstruction2(patched),
275386
+ ...shouldRefreshContent ? { content: nextContent } : {}
275387
+ }, options?.expectedRevision);
275388
+ if (!receiptApplied2(receipt2)) {
275389
+ return tocFailure2("NO_OP", "Configuration change could not be applied.");
275390
+ }
275391
+ const postMutationId = resolvePostMutationTocId2(editor.state.doc, commandNodeId);
275392
+ return tocSuccess2(postMutationId);
275393
+ }
275394
+ function tocUpdateWrapper2(editor, input2, options) {
275395
+ rejectTrackedMode2("toc.update", options);
275396
+ const command2 = requireEditorCommand2(editor.commands?.replaceTableOfContentsContentById, "toc.update");
275397
+ const resolved = resolveTocTarget2(editor.state.doc, input2.target);
275398
+ const config33 = parseTocInstruction2(resolved.node.attrs?.instruction ?? "");
275399
+ const content5 = materializeTocContent2(editor.state.doc, config33);
275400
+ if (isTocContentUnchanged2(resolved.node, content5)) {
275401
+ return tocFailure2("NO_OP", "TOC update produced no change.");
275402
+ }
275403
+ if (options?.dryRun) {
275404
+ return tocSuccess2(resolved.nodeId);
275405
+ }
275406
+ const receipt2 = runTocCommand2(editor, command2, {
275407
+ sdBlockId: resolved.commandNodeId ?? resolved.nodeId,
275408
+ content: content5
275409
+ }, options?.expectedRevision);
275410
+ return receiptApplied2(receipt2) ? tocSuccess2(resolved.nodeId) : tocFailure2("NO_OP", "TOC update produced no change.");
275411
+ }
275412
+ function tocRemoveWrapper2(editor, input2, options) {
275413
+ rejectTrackedMode2("toc.remove", options);
275414
+ const command2 = requireEditorCommand2(editor.commands?.deleteTableOfContentsById, "toc.remove");
275415
+ const resolved = resolveTocTarget2(editor.state.doc, input2.target);
275416
+ if (options?.dryRun) {
275417
+ return tocSuccess2(resolved.nodeId);
275418
+ }
275419
+ const receipt2 = runTocCommand2(editor, command2, {
275420
+ sdBlockId: resolved.commandNodeId ?? resolved.nodeId
275421
+ }, options?.expectedRevision);
275422
+ return receiptApplied2(receipt2) ? tocSuccess2(resolved.nodeId) : tocFailure2("NO_OP", "TOC removal produced no change.");
275423
+ }
275424
+ function createTableOfContentsWrapper2(editor, input2, options) {
275425
+ rejectTrackedMode2("create.tableOfContents", options);
275426
+ const command2 = requireEditorCommand2(editor.commands?.insertTableOfContentsAt, "create.tableOfContents");
275427
+ const at = input2.at ?? { kind: "documentEnd" };
275428
+ let pos;
275429
+ if (at.kind === "documentStart") {
275430
+ pos = 0;
275431
+ } else if (at.kind === "documentEnd") {
275432
+ pos = editor.state.doc.content.size;
275433
+ } else {
275434
+ pos = resolveBlockInsertionPos2(editor, at.target.nodeId, at.kind);
275435
+ }
275436
+ const config33 = input2.config ? applyTocPatch2(DEFAULT_TOC_CONFIG2, input2.config) : DEFAULT_TOC_CONFIG2;
275437
+ const instruction = serializeTocInstruction2(config33);
275438
+ const content5 = materializeTocContent2(editor.state.doc, config33);
275439
+ const sdBlockId = v42();
275440
+ if (options?.dryRun) {
275441
+ return { success: true, toc: buildTocAddress2("(dry-run)") };
275442
+ }
275443
+ const receipt2 = runTocCommand2(editor, command2, {
275444
+ pos,
275445
+ instruction,
275446
+ sdBlockId,
275447
+ content: content5
275448
+ }, options?.expectedRevision);
275449
+ if (!receiptApplied2(receipt2)) {
275450
+ return {
275451
+ success: false,
275452
+ failure: {
275453
+ code: "INVALID_INSERTION_CONTEXT",
275454
+ message: "Table of contents could not be inserted at the requested location."
275455
+ }
275456
+ };
275457
+ }
275458
+ const postMutationId = resolvePostMutationTocId2(editor.state.doc, sdBlockId);
275459
+ return { success: true, toc: buildTocAddress2(postMutationId) };
275460
+ }
275461
+ var NO_ENTRIES_PLACEHOLDER2;
275462
+ var init_toc_wrappers = __esm(() => {
275463
+ init_wrapper();
275464
+ init_src();
275465
+ init_toc_switches();
275466
+ init_toc_resolver();
275467
+ init_toc_entry_builder();
275468
+ init_adapter_utils();
275469
+ init_revision_tracker();
275470
+ init_plan_wrappers();
275471
+ init_mutation_helpers();
275472
+ init_index_cache();
275473
+ init_create_insertion();
275474
+ NO_ENTRIES_PLACEHOLDER2 = [
275475
+ {
275476
+ type: "paragraph",
275477
+ attrs: { paragraphProperties: {} },
275478
+ content: [{ type: "text", text: "No table of contents entries found." }]
275479
+ }
275480
+ ];
275481
+ });
275482
+
273620
275483
  // ../../packages/super-editor/src/document-api-adapters/assemble-adapters.ts
273621
275484
  function assembleDocumentApiAdapters2(editor) {
273622
275485
  registerBuiltInExecutors2();
@@ -273666,7 +275529,8 @@ function assembleDocumentApiAdapters2(editor) {
273666
275529
  paragraph: (input2, options) => createParagraphWrapper2(editor, input2, options),
273667
275530
  heading: (input2, options) => createHeadingWrapper2(editor, input2, options),
273668
275531
  table: (input2, options) => createTableWrapper2(editor, input2, options),
273669
- sectionBreak: (input2, options) => createSectionBreakAdapter2(editor, input2, options)
275532
+ sectionBreak: (input2, options) => createSectionBreakAdapter2(editor, input2, options),
275533
+ tableOfContents: (input2, options) => createTableOfContentsWrapper2(editor, input2, options)
273670
275534
  },
273671
275535
  lists: {
273672
275536
  list: (query2) => listsListWrapper2(editor, query2),
@@ -273739,6 +275603,13 @@ function assembleDocumentApiAdapters2(editor) {
273739
275603
  getCells: (input2) => tablesGetCellsAdapter2(editor, input2),
273740
275604
  getProperties: (input2) => tablesGetPropertiesAdapter2(editor, input2)
273741
275605
  },
275606
+ toc: {
275607
+ list: (query2) => tocListWrapper2(editor, query2),
275608
+ get: (input2) => tocGetWrapper2(editor, input2),
275609
+ configure: (input2, options) => tocConfigureWrapper2(editor, input2, options),
275610
+ update: (input2, options) => tocUpdateWrapper2(editor, input2, options),
275611
+ remove: (input2, options) => tocRemoveWrapper2(editor, input2, options)
275612
+ },
273742
275613
  query: {
273743
275614
  match: (input2) => queryMatchAdapter2(editor, input2)
273744
275615
  },
@@ -273769,6 +275640,7 @@ var init_assemble_adapters = __esm(() => {
273769
275640
  init_sections_adapter();
273770
275641
  init_tables_wrappers();
273771
275642
  init_tables_adapter();
275643
+ init_toc_wrappers();
273772
275644
  });
273773
275645
 
273774
275646
  // ../../packages/super-editor/src/document-api-adapters/index.ts
@@ -276853,6 +278725,25 @@ function mapBlocksError(operationId, error, code10) {
276853
278725
  return error;
276854
278726
  return new CliError("COMMAND_FAILED", message, { operationId, details });
276855
278727
  }
278728
+ function mapTocError(operationId, error, code10) {
278729
+ const message = extractErrorMessage(error);
278730
+ const details = extractErrorDetails(error);
278731
+ const planEngineError = tryMapPlanEngineError(operationId, error, code10);
278732
+ if (planEngineError)
278733
+ return planEngineError;
278734
+ if (code10 === "TARGET_NOT_FOUND") {
278735
+ return new CliError("TARGET_NOT_FOUND", message, { operationId, details });
278736
+ }
278737
+ if (code10 === "INVALID_TARGET") {
278738
+ return new CliError("INVALID_ARGUMENT", message, { operationId, details });
278739
+ }
278740
+ if (code10 === "COMMAND_UNAVAILABLE") {
278741
+ return new CliError("COMMAND_FAILED", message, { operationId, details });
278742
+ }
278743
+ if (error instanceof CliError)
278744
+ return error;
278745
+ return new CliError("COMMAND_FAILED", message, { operationId, details });
278746
+ }
276856
278747
  function mapQueryError(operationId, error, code10) {
276857
278748
  const message = extractErrorMessage(error);
276858
278749
  const details = extractErrorDetails(error);
@@ -276871,11 +278762,14 @@ function tryMapPlanEngineError(operationId, error, code10) {
276871
278762
  details: extractErrorDetails(error)
276872
278763
  });
276873
278764
  }
278765
+ function resolveOperationFamily(operationId) {
278766
+ return OPERATION_FAMILY[operationId] ?? "general";
278767
+ }
276874
278768
  function mapInvokeError(operationId, error) {
276875
278769
  if (error instanceof CliError)
276876
278770
  return error;
276877
278771
  const code10 = extractErrorCode(error);
276878
- const family = OPERATION_FAMILY[operationId];
278772
+ const family = resolveOperationFamily(operationId);
276879
278773
  return FAMILY_MAPPERS[family](operationId, error, code10);
276880
278774
  }
276881
278775
  function isReceiptLike(value) {
@@ -276889,7 +278783,7 @@ function mapFailedReceipt(operationId, result) {
276889
278783
  if (result.success)
276890
278784
  return null;
276891
278785
  const failure = result.failure;
276892
- const family = OPERATION_FAMILY[operationId];
278786
+ const family = resolveOperationFamily(operationId);
276893
278787
  if (!failure) {
276894
278788
  return new CliError("COMMAND_FAILED", `${operationId}: operation failed.`, { operationId });
276895
278789
  }
@@ -276949,6 +278843,15 @@ function mapFailedReceipt(operationId, result) {
276949
278843
  }
276950
278844
  return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
276951
278845
  }
278846
+ if (family === "toc") {
278847
+ if (failureCode === "TARGET_NOT_FOUND") {
278848
+ return new CliError("TARGET_NOT_FOUND", failureMessage, { operationId, failure });
278849
+ }
278850
+ if (failureCode === "INVALID_TARGET") {
278851
+ return new CliError("INVALID_ARGUMENT", failureMessage, { operationId, failure });
278852
+ }
278853
+ return new CliError("COMMAND_FAILED", failureMessage, { operationId, failure });
278854
+ }
276952
278855
  if (family === "tables") {
276953
278856
  if (failureCode === "TARGET_NOT_FOUND") {
276954
278857
  return new CliError("TARGET_NOT_FOUND", failureMessage, { operationId, failure });
@@ -276985,6 +278888,7 @@ var init_error_mapping = __esm(() => {
276985
278888
  comments: mapCommentsError,
276986
278889
  lists: mapListsError,
276987
278890
  tables: mapTablesError,
278891
+ toc: mapTocError,
276988
278892
  textMutation: mapTextMutationError,
276989
278893
  create: mapCreateError,
276990
278894
  blocks: mapBlocksError,