ooxml-core 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +2 -0
  2. package/dist/automation/index.cjs +6089 -5381
  3. package/dist/automation/index.mjs +6089 -5381
  4. package/dist/teams/index.cjs +73 -23
  5. package/dist/teams/index.mjs +73 -23
  6. package/dist/visio/basic-shapes.d.ts +18 -0
  7. package/dist/visio/basic-shapes.d.ts.map +1 -0
  8. package/dist/visio/edit-commands.d.ts +13 -2
  9. package/dist/visio/edit-commands.d.ts.map +1 -1
  10. package/dist/visio/edit-page-size.d.ts +5 -0
  11. package/dist/visio/edit-page-size.d.ts.map +1 -0
  12. package/dist/visio/edit-pages.d.ts.map +1 -1
  13. package/dist/visio/edit-shape-create.d.ts.map +1 -1
  14. package/dist/visio/edit-text-range-commands.d.ts +21 -0
  15. package/dist/visio/edit-text-range-commands.d.ts.map +1 -0
  16. package/dist/visio/edit-text-range-plan.d.ts +7 -0
  17. package/dist/visio/edit-text-range-plan.d.ts.map +1 -0
  18. package/dist/visio/edit-text-ranges.d.ts +4 -0
  19. package/dist/visio/edit-text-ranges.d.ts.map +1 -0
  20. package/dist/visio/edit-text-target.d.ts +3 -0
  21. package/dist/visio/edit-text-target.d.ts.map +1 -0
  22. package/dist/visio/edit-text.d.ts.map +1 -1
  23. package/dist/visio/edit.d.ts +1 -1
  24. package/dist/visio/edit.d.ts.map +1 -1
  25. package/dist/visio/index.cjs +623 -49
  26. package/dist/visio/index.d.ts +2 -1
  27. package/dist/visio/index.d.ts.map +1 -1
  28. package/dist/visio/index.mjs +621 -50
  29. package/dist/visio/model.d.ts +3 -0
  30. package/dist/visio/model.d.ts.map +1 -1
  31. package/dist/visio/parser.d.ts.map +1 -1
  32. package/dist/visio/ui/draw-plan.d.ts +4 -1
  33. package/dist/visio/ui/draw-plan.d.ts.map +1 -1
  34. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  35. package/dist/visio/ui/index.cjs +139 -14
  36. package/dist/visio/ui/index.d.ts +1 -0
  37. package/dist/visio/ui/index.d.ts.map +1 -1
  38. package/dist/visio/ui/index.mjs +135 -15
  39. package/dist/visio/ui/page-size.d.ts +31 -0
  40. package/dist/visio/ui/page-size.d.ts.map +1 -0
  41. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  42. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  43. package/dist/visio/ui/text-replace-types.d.ts +6 -2
  44. package/dist/visio/ui/text-replace-types.d.ts.map +1 -1
  45. package/dist/visio/ui/text-replace.d.ts +3 -4
  46. package/dist/visio/ui/text-replace.d.ts.map +1 -1
  47. package/dist/visio/xml-validation.d.ts.map +1 -1
  48. package/dist/xlsx/collab/codec.d.ts +2 -0
  49. package/dist/xlsx/collab/codec.d.ts.map +1 -1
  50. package/dist/xlsx/collab/index.cjs +5 -0
  51. package/dist/xlsx/collab/index.mjs +5 -0
  52. package/dist/xlsx/display-text.d.ts +4 -0
  53. package/dist/xlsx/display-text.d.ts.map +1 -0
  54. package/dist/xlsx/edit/cell-values.d.ts +4 -3
  55. package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
  56. package/dist/xlsx/edit/clipboard.d.ts.map +1 -1
  57. package/dist/xlsx/edit/context.d.ts +7 -5
  58. package/dist/xlsx/edit/context.d.ts.map +1 -1
  59. package/dist/xlsx/edit/deps.d.ts +1 -1
  60. package/dist/xlsx/edit/deps.d.ts.map +1 -1
  61. package/dist/xlsx/edit/dimensions.d.ts.map +1 -1
  62. package/dist/xlsx/edit/fill.d.ts.map +1 -1
  63. package/dist/xlsx/edit/filter.d.ts.map +1 -1
  64. package/dist/xlsx/edit/find.d.ts.map +1 -1
  65. package/dist/xlsx/edit/paste-selection.d.ts.map +1 -1
  66. package/dist/xlsx/edit/shift-formulas.d.ts +10 -4
  67. package/dist/xlsx/edit/shift-formulas.d.ts.map +1 -1
  68. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  69. package/dist/xlsx/edit/structure.d.ts +1 -1
  70. package/dist/xlsx/edit/structure.d.ts.map +1 -1
  71. package/dist/xlsx/edit/table-header-names.d.ts +3 -0
  72. package/dist/xlsx/edit/table-header-names.d.ts.map +1 -0
  73. package/dist/xlsx/edit/tables.d.ts +1 -2
  74. package/dist/xlsx/edit/tables.d.ts.map +1 -1
  75. package/dist/xlsx/filter-rows.d.ts +12 -0
  76. package/dist/xlsx/filter-rows.d.ts.map +1 -0
  77. package/dist/xlsx/formula/functions/math-sum.d.ts.map +1 -1
  78. package/dist/xlsx/formula/table-refs.d.ts +2 -0
  79. package/dist/xlsx/formula/table-refs.d.ts.map +1 -1
  80. package/dist/xlsx/index.cjs +466 -329
  81. package/dist/xlsx/index.mjs +466 -329
  82. package/dist/xlsx/load/index.cjs +7622 -7585
  83. package/dist/xlsx/load/index.mjs +7622 -7585
  84. package/dist/xlsx/model.d.ts +4 -0
  85. package/dist/xlsx/model.d.ts.map +1 -1
  86. package/dist/xlsx/read/load.d.ts.map +1 -1
  87. package/dist/xlsx/ui/index.cjs +464 -329
  88. package/dist/xlsx/ui/index.mjs +464 -329
  89. package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
  90. package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
  91. package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
  92. package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
  93. package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -253,6 +253,9 @@ export interface VisioConnection {
253
253
  }
254
254
  export interface VisioPage {
255
255
  id: string;
256
+ /** Explicit cached drawing page-size modes. Missing or invalid source caches are omitted. */
257
+ drawingSizeType?: number;
258
+ drawingResizeType?: number;
256
259
  /** Cached PageScale/DrawingScale. Scene geometry is in physical page inches;
257
260
  * source-backed geometry edits continue to accept drawing inches. Omitted means 1.
258
261
  */
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../visio/model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../visio/model.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../visio/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAiBrF,MAAM,WAAW,gBAAgB;IAChC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAoQxB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAYvF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../visio/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGxD,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAiBrF,MAAM,WAAW,gBAAgB;IAChC,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD,uFAAuF;AACvF,wBAAsB,SAAS,CAC9B,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAqRxB;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAYvF"}
@@ -1,5 +1,6 @@
1
1
  import type { VisioGeometryEdit } from '../edit-commands.js';
2
2
  import type { VisioPage } from '../model.js';
3
+ import type { VisioBasicShape } from '../basic-shapes.js';
3
4
  export type VisioDrawingTool = 'rectangle' | 'ellipse' | 'line' | 'text';
4
5
  /** Physical page inches, with the SVG top-left origin and downward Y axis. */
5
6
  export interface VisioDrawingPoint {
@@ -24,7 +25,9 @@ export declare function visioDrawBounds(start: VisioDrawingPoint, end: VisioDraw
24
25
  export declare function visioBoxCreationCommand(page: VisioPage, kind: Exclude<VisioDrawingTool, 'line'>, centre: VisioDrawingPoint, size: {
25
26
  width: number;
26
27
  height: number;
27
- }, text?: string): VisioGeometryEdit;
28
+ }, text?: string,
29
+ /** A Basic Shapes outline for a rectangle-kind box (see `VISIO_BASIC_SHAPES`). */
30
+ shape?: VisioBasicShape): VisioGeometryEdit;
28
31
  export declare function visioLineCreationCommand(page: VisioPage, begin: VisioDrawingPoint, end: VisioDrawingPoint): VisioGeometryEdit;
29
32
  /** Fixed-bounds creation. Native click-only sizing and automatic text growth are not inferred. */
30
33
  export declare function visioDrawIsLargeEnough(kind: VisioDrawingTool, start: VisioDrawingPoint, end: VisioDrawingPoint): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"draw-plan.d.ts","sourceRoot":"","sources":["../../../visio/ui/draw-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI1C,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACzE,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AACD,MAAM,WAAW,kBAAkB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACjD,iBAAiB,GAAG,SAAS,CAY/B;AAED,wBAAgB,eAAe,CAC9B,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,kBAAkB,CAapB;AAED,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,EACvC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,CAAC,EAAE,MAAM,GACX,iBAAiB,CAyBnB;AASD,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,iBAAiB,CAYnB;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAUT;AAED,wBAAgB,aAAa,CAC5B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,EACtB,IAAI,CAAC,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAM/B"}
1
+ {"version":3,"file":"draw-plan.d.ts","sourceRoot":"","sources":["../../../visio/ui/draw-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACzE,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACV;AACD,MAAM,WAAW,kBAAkB;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAID,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GACjD,iBAAiB,GAAG,SAAS,CAY/B;AAED,wBAAgB,eAAe,CAC9B,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,kBAAkB,CAapB;AAED,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,EACvC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,CAAC,EAAE,MAAM;AACb,kFAAkF;AAClF,KAAK,CAAC,EAAE,eAAe,GACrB,iBAAiB,CA0BnB;AASD,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,iBAAiB,CAYnB;AAED,kGAAkG;AAClG,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAUT;AAED,wBAAgB,aAAa,CAC5B,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,gBAAgB,EACtB,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,iBAAiB,EACtB,IAAI,CAAC,EAAE,MAAM,GACX,iBAAiB,GAAG,SAAS,CAM/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit-commands.d.ts","sourceRoot":"","sources":["../../../visio/ui/edit-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAM1C,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAiItE"}
1
+ {"version":3,"file":"edit-commands.d.ts","sourceRoot":"","sources":["../../../visio/ui/edit-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAO1C,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAqJtE"}
@@ -578,6 +578,45 @@ function visioAnchoredResizeGeometry(current, size, anchor) {
578
578
  return [pinX, pinY, locPinX, locPinY, ...matrix2].every(Number.isFinite) ? { pinX, pinY, locPinX, locPinY, transform: matrix2 } : void 0;
579
579
  }
580
580
 
581
+ // visio/edit-text-range-commands.ts
582
+ var invalidXmlText = /[\u0000-\u0008\u000b\u000c\u000d\u000e-\u001f\ufffe\uffff]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/u;
583
+ function textRangeBoundary(text, offset) {
584
+ return !(offset > 0 && offset < text.length && /[\ud800-\udbff]/.test(text[offset - 1]) && /[\udc00-\udfff]/.test(text[offset]));
585
+ }
586
+ function snapshotTextRanges(edit, consume) {
587
+ let characters = 0;
588
+ const text = (value) => {
589
+ if (typeof value !== "string" || invalidXmlText.test(value))
590
+ fail("INVALID_EDIT_TEXT", "Range replacement requires valid XML text.");
591
+ characters += value.length;
592
+ if (characters > 1e6)
593
+ fail("LIMIT_EDIT_TEXT", "Range replacement text exceeds input limits.");
594
+ return consume ? consume(value) : value;
595
+ };
596
+ const pageId = edit.pageId, shapeId = edit.shapeId;
597
+ if ([pageId, shapeId].some((id) => typeof id !== "string" || !id || id.length > 256))
598
+ fail("INVALID_EDIT", "Invalid text range target.");
599
+ const expectedText = text(edit.expectedText), original = edit.ranges;
600
+ if (!Array.isArray(original)) fail("INVALID_EDIT", "Text ranges require an array.");
601
+ const length = original.length;
602
+ if (!Number.isSafeInteger(length) || length < 1 || length > 1e4)
603
+ fail("LIMIT_EDITS", "Range replacement requires 1-10000 ranges.");
604
+ const ranges = [];
605
+ let end = 0, output = expectedText.length;
606
+ for (let index = 0; index < length; index++) {
607
+ const input = original[index], start = input.start, nextEnd = input.end, replacement = text(input.text);
608
+ if (!Number.isSafeInteger(start) || !Number.isSafeInteger(nextEnd) || start < end || nextEnd <= start || nextEnd > expectedText.length || !textRangeBoundary(expectedText, start) || !textRangeBoundary(expectedText, nextEnd))
609
+ fail("INVALID_EDIT", "Text ranges require ascending nonoverlapping UTF16 scalar boundaries.");
610
+ if (replacement.includes("\n") || expectedText.slice(start, nextEnd).includes("\n"))
611
+ fail("UNSUPPORTED_TEXT_RANGE", "Range replacement across paragraph breaks is unsupported.");
612
+ ranges.push({ start, end: nextEnd, text: replacement });
613
+ end = nextEnd;
614
+ output += replacement.length - (nextEnd - start);
615
+ }
616
+ if (output > 1e6) fail("LIMIT_EDIT_TEXT", "Range replacement output exceeds limits.");
617
+ return { type: "replace-text-ranges", pageId, shapeId, expectedText, ranges };
618
+ }
619
+
581
620
  // visio/ui/edit-commands.ts
582
621
  function snapshotEdits(edits) {
583
622
  if (!Array.isArray(edits) || edits.length > 1e3)
@@ -594,6 +633,18 @@ function snapshotEdits(edits) {
594
633
  return { type: command.type, pageId: command.pageId, index: command.index };
595
634
  }
596
635
  if (command.type === "delete-page") return { type: command.type, pageId: command.pageId };
636
+ if (command.type === "set-page-size") {
637
+ if (![command.width, command.height].every(
638
+ (value) => typeof value === "number" && Number.isFinite(value) && value > 0 && value <= 1e6
639
+ ))
640
+ throw new Error("Invalid physical page dimensions.");
641
+ return {
642
+ type: command.type,
643
+ pageId: command.pageId,
644
+ width: command.width,
645
+ height: command.height
646
+ };
647
+ }
597
648
  const text = (value) => {
598
649
  if (typeof value !== "string") throw new Error("Invalid edit text.");
599
650
  characters += value.length;
@@ -649,6 +700,8 @@ function snapshotEdits(edits) {
649
700
  };
650
701
  case "replace-plain-text":
651
702
  return { type: command.type, ...target, text: text(command.text) };
703
+ case "replace-text-ranges":
704
+ return snapshotTextRanges(command, text);
652
705
  case "delete-shape":
653
706
  return { type: command.type, ...target };
654
707
  case "rotate-shape":
@@ -693,7 +746,8 @@ function snapshotEdits(edits) {
693
746
  y: command.y,
694
747
  width: command.width,
695
748
  height: command.height,
696
- ...command.text === void 0 ? {} : { text: text(command.text) }
749
+ ...command.text === void 0 ? {} : { text: text(command.text) },
750
+ ...command.type !== "create-rectangle" || command.shape === void 0 ? {} : { shape: command.shape }
697
751
  };
698
752
  default:
699
753
  throw new Error("Invalid edit command type.");
@@ -1900,6 +1954,9 @@ function assertViewableDocument(model) {
1900
1954
  finite2(page.height, "page height", 1e-3);
1901
1955
  if (page.drawingToPageScale !== void 0)
1902
1956
  finite2(page.drawingToPageScale, "drawing scale", Number.MIN_VALUE, Number.MAX_VALUE);
1957
+ for (const mode of [page.drawingSizeType, page.drawingResizeType])
1958
+ if (mode !== void 0 && (!Number.isSafeInteger(mode) || mode < 0 || mode > 255))
1959
+ throw new Error("The scene has an invalid drawing page-size mode.");
1903
1960
  if (!Array.isArray(page.shapes) || stack.length + page.shapes.length > MAX_SHAPES)
1904
1961
  throw new Error("The scene exceeds safe shape count limits or has an invalid shape list.");
1905
1962
  const ids = /* @__PURE__ */ new Set();
@@ -2348,7 +2405,9 @@ function copySnapshotScene(model) {
2348
2405
  "height",
2349
2406
  "isBackground",
2350
2407
  "backgroundPageId",
2351
- "drawingToPageScale"
2408
+ "drawingToPageScale",
2409
+ "drawingSizeType",
2410
+ "drawingResizeType"
2352
2411
  ]),
2353
2412
  shapes: shapes(page.shapes),
2354
2413
  connectors: []
@@ -3061,7 +3120,7 @@ function visioDrawBounds(start, end) {
3061
3120
  radiusY: Math.abs(end.y - start.y) / 2
3062
3121
  };
3063
3122
  }
3064
- function visioBoxCreationCommand(page, kind, centre, size, text) {
3123
+ function visioBoxCreationCommand(page, kind, centre, size, text, shape) {
3065
3124
  if (!["rectangle", "ellipse", "text"].includes(kind) || ![centre.x, centre.y, size.width, size.height].every(boundedNumber) || size.width <= 0 || size.height <= 0)
3066
3125
  throw new Error("Invalid box creation geometry or tool.");
3067
3126
  const box2 = {
@@ -3075,7 +3134,8 @@ function visioBoxCreationCommand(page, kind, centre, size, text) {
3075
3134
  const command = kind === "text" ? { ...box2, type: "create-text-box", text: text ?? "" } : {
3076
3135
  ...box2,
3077
3136
  type: kind === "ellipse" ? "create-ellipse" : "create-rectangle",
3078
- ...text === void 0 ? {} : { text }
3137
+ ...text === void 0 ? {} : { text },
3138
+ ...kind === "rectangle" && shape !== void 0 ? { shape } : {}
3079
3139
  };
3080
3140
  return drawingCommand(page, command);
3081
3141
  }
@@ -3341,7 +3401,7 @@ function visioTextReplacePlan(model, input) {
3341
3401
  }
3342
3402
  if (targets.size > VISIO_TEXT_REPLACE_LIMITS.commands) textReplaceError("Replace command count exceeds limits.");
3343
3403
  const edits = [], updated = [];
3344
- let outputCharacters = 0;
3404
+ let outputCharacters = 0, commandCharacters = 0;
3345
3405
  for (const entry of entries) {
3346
3406
  const matches = targets.get(JSON.stringify([entry.pageId, entry.shapeId]));
3347
3407
  let text = entry.text;
@@ -3358,14 +3418,27 @@ function visioTextReplacePlan(model, input) {
3358
3418
  }
3359
3419
  parts.push(text.slice(from));
3360
3420
  text = parts.join("");
3361
- edits.push(
3362
- Object.freeze({
3363
- type: "replace-plain-text",
3364
- pageId: entry.pageId,
3365
- shapeId: entry.shapeId,
3366
- text
3367
- })
3368
- );
3421
+ const target = { pageId: entry.pageId, shapeId: entry.shapeId };
3422
+ if (replacement.includes("\n") || scope.query.includes("\n")) {
3423
+ commandCharacters += text.length;
3424
+ edits.push(Object.freeze({ type: "replace-plain-text", ...target, text }));
3425
+ } else {
3426
+ commandCharacters += entry.text.length + matches.length * replacement.length;
3427
+ edits.push(
3428
+ Object.freeze({
3429
+ type: "replace-text-ranges",
3430
+ ...target,
3431
+ expectedText: entry.text,
3432
+ ranges: Object.freeze(
3433
+ matches.map(
3434
+ (match) => Object.freeze({ start: match.start, end: match.end, text: replacement })
3435
+ )
3436
+ )
3437
+ })
3438
+ );
3439
+ }
3440
+ if (commandCharacters > VISIO_TEXT_REPLACE_LIMITS.output)
3441
+ textReplaceError("Replace input exceeds aggregate command text limits.");
3369
3442
  }
3370
3443
  updated.push({ ...entry, text });
3371
3444
  }
@@ -3396,7 +3469,9 @@ function visioTextReplaceCommands(model, plan) {
3396
3469
  return entry.pageId !== saved.pageId || entry.shapeId !== saved.shapeId || entry.text !== saved.text;
3397
3470
  }))
3398
3471
  textReplaceError("Replace plan is stale. Search the current drawing again.");
3399
- return plan.edits.map((edit) => ({ ...edit }));
3472
+ return plan.edits.map(
3473
+ (edit) => edit.type === "replace-text-ranges" ? { ...edit, ranges: edit.ranges.map((range) => ({ ...range })) } : { ...edit }
3474
+ );
3400
3475
  }
3401
3476
 
3402
3477
  // visio/ui/svg-stroke.ts
@@ -3404,6 +3479,51 @@ function visioSvgStrokeStyle(style) {
3404
3479
  return style.lineWidth === 0 ? { ...style, lineWidth: 0.75 / 72 } : style;
3405
3480
  }
3406
3481
 
3482
+ // visio/ui/page-size.ts
3483
+ var VISIO_PAGE_SIZE_PRESETS = Object.freeze([
3484
+ Object.freeze({ id: "letter", label: "Letter", width: 8.5, height: 11 }),
3485
+ Object.freeze({ id: "a4", label: "A4", width: 210 / 25.4, height: 297 / 25.4 })
3486
+ ]);
3487
+ var dimension = (value) => Number.isFinite(value) && value > 0 && value <= 1e6;
3488
+ function visioPageSizeState(page) {
3489
+ const { id: pageId, width, height, drawingSizeType, drawingResizeType } = page;
3490
+ if (!dimension(width) || !dimension(height) || !pageId || pageId.length > 256) return void 0;
3491
+ return Object.freeze({
3492
+ pageId,
3493
+ width,
3494
+ height,
3495
+ orientation: width === height ? "square" : width > height ? "landscape" : "portrait",
3496
+ ...drawingSizeType === void 0 ? {} : { drawingSizeType },
3497
+ ...drawingResizeType === void 0 ? {} : { drawingResizeType }
3498
+ });
3499
+ }
3500
+ function visioPageSizeCommand(page, width, height) {
3501
+ const state = visioPageSizeState(page);
3502
+ if (!state || !dimension(width) || !dimension(height)) return void 0;
3503
+ if (width === state.width && height === state.height && state.drawingSizeType === 3 && state.drawingResizeType === 0)
3504
+ return [];
3505
+ return [{ type: "set-page-size", pageId: state.pageId, width, height }];
3506
+ }
3507
+ function visioPageOrientationCommand(page, orientation) {
3508
+ const state = visioPageSizeState(page);
3509
+ if (!state || !["portrait", "landscape"].includes(orientation)) return void 0;
3510
+ const short = Math.min(state.width, state.height), long = Math.max(state.width, state.height);
3511
+ return visioPageSizeCommand(
3512
+ page,
3513
+ orientation === "portrait" ? short : long,
3514
+ orientation === "portrait" ? long : short
3515
+ );
3516
+ }
3517
+ function visioPageSizePresetCommand(page, id) {
3518
+ const state = visioPageSizeState(page), preset = VISIO_PAGE_SIZE_PRESETS.find((item) => item.id === id);
3519
+ if (!state || !preset) return void 0;
3520
+ return visioPageSizeCommand(
3521
+ page,
3522
+ state.orientation === "landscape" ? preset.height : preset.width,
3523
+ state.orientation === "landscape" ? preset.width : preset.height
3524
+ );
3525
+ }
3526
+
3407
3527
  exports.DocumentHistory = DocumentHistory;
3408
3528
  exports.EDIT_HISTORY_LIMITS = EDIT_HISTORY_LIMITS;
3409
3529
  exports.EMPTY_EDIT_STATE = EMPTY_EDIT_STATE;
@@ -3414,6 +3534,7 @@ exports.ForeignVectorBudget = ForeignVectorBudget;
3414
3534
  exports.MAX_INPUT_BYTES = MAX_INPUT_BYTES;
3415
3535
  exports.TEXT_SEARCH_LIMITS = TEXT_SEARCH_LIMITS;
3416
3536
  exports.VISIO_IDENTITY_TRANSFORM = IDENTITY_AFFINE;
3537
+ exports.VISIO_PAGE_SIZE_PRESETS = VISIO_PAGE_SIZE_PRESETS;
3417
3538
  exports.VISIO_RESIZE_HANDLES = VISIO_RESIZE_HANDLES;
3418
3539
  exports.VISIO_TEXT_REPLACE_LIMITS = VISIO_TEXT_REPLACE_LIMITS;
3419
3540
  exports.assertShapeDetails = assertShapeDetails;
@@ -3462,6 +3583,10 @@ exports.visioOrderingShape = visioOrderingShape;
3462
3583
  exports.visioPageDragDelta = visioPageDragDelta;
3463
3584
  exports.visioPageEditToDrawing = visioPageEditToDrawing;
3464
3585
  exports.visioPageInsertCommand = visioPageInsertCommand;
3586
+ exports.visioPageOrientationCommand = visioPageOrientationCommand;
3587
+ exports.visioPageSizeCommand = visioPageSizeCommand;
3588
+ exports.visioPageSizePresetCommand = visioPageSizePresetCommand;
3589
+ exports.visioPageSizeState = visioPageSizeState;
3465
3590
  exports.visioPasteCommand = visioPasteCommand;
3466
3591
  exports.visioQuarterTurnCommand = visioQuarterTurnCommand;
3467
3592
  exports.visioRenderedGradientStopCount = visioRenderedGradientStopCount;
@@ -32,4 +32,5 @@ export * from './line-dash.js';
32
32
  export * from './shape-formatting.js';
33
33
  export * from './text-replace.js';
34
34
  export * from './svg-stroke.js';
35
+ export * from './page-size.js';
35
36
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../visio/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../visio/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,8BAA8B,GAC9B,MAAM,0BAA0B,CAAC;AAElC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -576,6 +576,45 @@ function visioAnchoredResizeGeometry(current, size, anchor) {
576
576
  return [pinX, pinY, locPinX, locPinY, ...matrix2].every(Number.isFinite) ? { pinX, pinY, locPinX, locPinY, transform: matrix2 } : void 0;
577
577
  }
578
578
 
579
+ // visio/edit-text-range-commands.ts
580
+ var invalidXmlText = /[\u0000-\u0008\u000b\u000c\u000d\u000e-\u001f\ufffe\uffff]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/u;
581
+ function textRangeBoundary(text, offset) {
582
+ return !(offset > 0 && offset < text.length && /[\ud800-\udbff]/.test(text[offset - 1]) && /[\udc00-\udfff]/.test(text[offset]));
583
+ }
584
+ function snapshotTextRanges(edit, consume) {
585
+ let characters = 0;
586
+ const text = (value) => {
587
+ if (typeof value !== "string" || invalidXmlText.test(value))
588
+ fail("INVALID_EDIT_TEXT", "Range replacement requires valid XML text.");
589
+ characters += value.length;
590
+ if (characters > 1e6)
591
+ fail("LIMIT_EDIT_TEXT", "Range replacement text exceeds input limits.");
592
+ return consume ? consume(value) : value;
593
+ };
594
+ const pageId = edit.pageId, shapeId = edit.shapeId;
595
+ if ([pageId, shapeId].some((id) => typeof id !== "string" || !id || id.length > 256))
596
+ fail("INVALID_EDIT", "Invalid text range target.");
597
+ const expectedText = text(edit.expectedText), original = edit.ranges;
598
+ if (!Array.isArray(original)) fail("INVALID_EDIT", "Text ranges require an array.");
599
+ const length = original.length;
600
+ if (!Number.isSafeInteger(length) || length < 1 || length > 1e4)
601
+ fail("LIMIT_EDITS", "Range replacement requires 1-10000 ranges.");
602
+ const ranges = [];
603
+ let end = 0, output = expectedText.length;
604
+ for (let index = 0; index < length; index++) {
605
+ const input = original[index], start = input.start, nextEnd = input.end, replacement = text(input.text);
606
+ if (!Number.isSafeInteger(start) || !Number.isSafeInteger(nextEnd) || start < end || nextEnd <= start || nextEnd > expectedText.length || !textRangeBoundary(expectedText, start) || !textRangeBoundary(expectedText, nextEnd))
607
+ fail("INVALID_EDIT", "Text ranges require ascending nonoverlapping UTF16 scalar boundaries.");
608
+ if (replacement.includes("\n") || expectedText.slice(start, nextEnd).includes("\n"))
609
+ fail("UNSUPPORTED_TEXT_RANGE", "Range replacement across paragraph breaks is unsupported.");
610
+ ranges.push({ start, end: nextEnd, text: replacement });
611
+ end = nextEnd;
612
+ output += replacement.length - (nextEnd - start);
613
+ }
614
+ if (output > 1e6) fail("LIMIT_EDIT_TEXT", "Range replacement output exceeds limits.");
615
+ return { type: "replace-text-ranges", pageId, shapeId, expectedText, ranges };
616
+ }
617
+
579
618
  // visio/ui/edit-commands.ts
580
619
  function snapshotEdits(edits) {
581
620
  if (!Array.isArray(edits) || edits.length > 1e3)
@@ -592,6 +631,18 @@ function snapshotEdits(edits) {
592
631
  return { type: command.type, pageId: command.pageId, index: command.index };
593
632
  }
594
633
  if (command.type === "delete-page") return { type: command.type, pageId: command.pageId };
634
+ if (command.type === "set-page-size") {
635
+ if (![command.width, command.height].every(
636
+ (value) => typeof value === "number" && Number.isFinite(value) && value > 0 && value <= 1e6
637
+ ))
638
+ throw new Error("Invalid physical page dimensions.");
639
+ return {
640
+ type: command.type,
641
+ pageId: command.pageId,
642
+ width: command.width,
643
+ height: command.height
644
+ };
645
+ }
595
646
  const text = (value) => {
596
647
  if (typeof value !== "string") throw new Error("Invalid edit text.");
597
648
  characters += value.length;
@@ -647,6 +698,8 @@ function snapshotEdits(edits) {
647
698
  };
648
699
  case "replace-plain-text":
649
700
  return { type: command.type, ...target, text: text(command.text) };
701
+ case "replace-text-ranges":
702
+ return snapshotTextRanges(command, text);
650
703
  case "delete-shape":
651
704
  return { type: command.type, ...target };
652
705
  case "rotate-shape":
@@ -691,7 +744,8 @@ function snapshotEdits(edits) {
691
744
  y: command.y,
692
745
  width: command.width,
693
746
  height: command.height,
694
- ...command.text === void 0 ? {} : { text: text(command.text) }
747
+ ...command.text === void 0 ? {} : { text: text(command.text) },
748
+ ...command.type !== "create-rectangle" || command.shape === void 0 ? {} : { shape: command.shape }
695
749
  };
696
750
  default:
697
751
  throw new Error("Invalid edit command type.");
@@ -1898,6 +1952,9 @@ function assertViewableDocument(model) {
1898
1952
  finite2(page.height, "page height", 1e-3);
1899
1953
  if (page.drawingToPageScale !== void 0)
1900
1954
  finite2(page.drawingToPageScale, "drawing scale", Number.MIN_VALUE, Number.MAX_VALUE);
1955
+ for (const mode of [page.drawingSizeType, page.drawingResizeType])
1956
+ if (mode !== void 0 && (!Number.isSafeInteger(mode) || mode < 0 || mode > 255))
1957
+ throw new Error("The scene has an invalid drawing page-size mode.");
1901
1958
  if (!Array.isArray(page.shapes) || stack.length + page.shapes.length > MAX_SHAPES)
1902
1959
  throw new Error("The scene exceeds safe shape count limits or has an invalid shape list.");
1903
1960
  const ids = /* @__PURE__ */ new Set();
@@ -2346,7 +2403,9 @@ function copySnapshotScene(model) {
2346
2403
  "height",
2347
2404
  "isBackground",
2348
2405
  "backgroundPageId",
2349
- "drawingToPageScale"
2406
+ "drawingToPageScale",
2407
+ "drawingSizeType",
2408
+ "drawingResizeType"
2350
2409
  ]),
2351
2410
  shapes: shapes(page.shapes),
2352
2411
  connectors: []
@@ -3059,7 +3118,7 @@ function visioDrawBounds(start, end) {
3059
3118
  radiusY: Math.abs(end.y - start.y) / 2
3060
3119
  };
3061
3120
  }
3062
- function visioBoxCreationCommand(page, kind, centre, size, text) {
3121
+ function visioBoxCreationCommand(page, kind, centre, size, text, shape) {
3063
3122
  if (!["rectangle", "ellipse", "text"].includes(kind) || ![centre.x, centre.y, size.width, size.height].every(boundedNumber) || size.width <= 0 || size.height <= 0)
3064
3123
  throw new Error("Invalid box creation geometry or tool.");
3065
3124
  const box2 = {
@@ -3073,7 +3132,8 @@ function visioBoxCreationCommand(page, kind, centre, size, text) {
3073
3132
  const command = kind === "text" ? { ...box2, type: "create-text-box", text: text ?? "" } : {
3074
3133
  ...box2,
3075
3134
  type: kind === "ellipse" ? "create-ellipse" : "create-rectangle",
3076
- ...text === void 0 ? {} : { text }
3135
+ ...text === void 0 ? {} : { text },
3136
+ ...kind === "rectangle" && shape !== void 0 ? { shape } : {}
3077
3137
  };
3078
3138
  return drawingCommand(page, command);
3079
3139
  }
@@ -3339,7 +3399,7 @@ function visioTextReplacePlan(model, input) {
3339
3399
  }
3340
3400
  if (targets.size > VISIO_TEXT_REPLACE_LIMITS.commands) textReplaceError("Replace command count exceeds limits.");
3341
3401
  const edits = [], updated = [];
3342
- let outputCharacters = 0;
3402
+ let outputCharacters = 0, commandCharacters = 0;
3343
3403
  for (const entry of entries) {
3344
3404
  const matches = targets.get(JSON.stringify([entry.pageId, entry.shapeId]));
3345
3405
  let text = entry.text;
@@ -3356,14 +3416,27 @@ function visioTextReplacePlan(model, input) {
3356
3416
  }
3357
3417
  parts.push(text.slice(from));
3358
3418
  text = parts.join("");
3359
- edits.push(
3360
- Object.freeze({
3361
- type: "replace-plain-text",
3362
- pageId: entry.pageId,
3363
- shapeId: entry.shapeId,
3364
- text
3365
- })
3366
- );
3419
+ const target = { pageId: entry.pageId, shapeId: entry.shapeId };
3420
+ if (replacement.includes("\n") || scope.query.includes("\n")) {
3421
+ commandCharacters += text.length;
3422
+ edits.push(Object.freeze({ type: "replace-plain-text", ...target, text }));
3423
+ } else {
3424
+ commandCharacters += entry.text.length + matches.length * replacement.length;
3425
+ edits.push(
3426
+ Object.freeze({
3427
+ type: "replace-text-ranges",
3428
+ ...target,
3429
+ expectedText: entry.text,
3430
+ ranges: Object.freeze(
3431
+ matches.map(
3432
+ (match) => Object.freeze({ start: match.start, end: match.end, text: replacement })
3433
+ )
3434
+ )
3435
+ })
3436
+ );
3437
+ }
3438
+ if (commandCharacters > VISIO_TEXT_REPLACE_LIMITS.output)
3439
+ textReplaceError("Replace input exceeds aggregate command text limits.");
3367
3440
  }
3368
3441
  updated.push({ ...entry, text });
3369
3442
  }
@@ -3394,7 +3467,9 @@ function visioTextReplaceCommands(model, plan) {
3394
3467
  return entry.pageId !== saved.pageId || entry.shapeId !== saved.shapeId || entry.text !== saved.text;
3395
3468
  }))
3396
3469
  textReplaceError("Replace plan is stale. Search the current drawing again.");
3397
- return plan.edits.map((edit) => ({ ...edit }));
3470
+ return plan.edits.map(
3471
+ (edit) => edit.type === "replace-text-ranges" ? { ...edit, ranges: edit.ranges.map((range) => ({ ...range })) } : { ...edit }
3472
+ );
3398
3473
  }
3399
3474
 
3400
3475
  // visio/ui/svg-stroke.ts
@@ -3402,4 +3477,49 @@ function visioSvgStrokeStyle(style) {
3402
3477
  return style.lineWidth === 0 ? { ...style, lineWidth: 0.75 / 72 } : style;
3403
3478
  }
3404
3479
 
3405
- export { DocumentHistory, EDIT_HISTORY_LIMITS, EMPTY_EDIT_STATE, EMPTY_SELECTION, EMPTY_TEXT_SEARCH, FOREIGN_VECTOR_SCENE_LIMITS, ForeignVectorBudget, MAX_INPUT_BYTES, TEXT_SEARCH_LIMITS, IDENTITY_AFFINE as VISIO_IDENTITY_TRANSFORM, VISIO_RESIZE_HANDLES, VISIO_TEXT_REPLACE_LIMITS, assertShapeDetails, assertViewableDocument, compatibilityNotes, compatibilityText, composeAffine as composeVisioTransform, copySnapshotScene, demoDocument, editErrorMessage, eventKeys, hasVisibleShapeContent, indexDocumentText, inspectForeignVectorResource, isEditCancellation, propertyKeys, sameSelection, searchDocumentText, selectionKey, snapshotEdits, snapshotSelection, textSearchStatus, validateSearchQuery, visioArrangeCommands, visioBoxCreationCommand, visioClipboardShape, visioDrawBounds, visioDrawIsLargeEnough, visioDrawPlan, visioDrawingPoint, visioDuplicateCommand, visioFillPatternTransform, visioFontFamilies, visioFormattingShape, visioGradientInstances, visioLineCreationCommand, visioLineDashLengths, visioLocalRotationShape, visioMarqueeBox, visioMarqueeSelection, visioMoveCommands, visioMovePreviewTransform, visioMovementShape, visioNextShapeId, visioOrderingShape, visioPageDragDelta, visioPageEditToDrawing, visioPageInsertCommand, visioPasteCommand, visioQuarterTurnCommand, visioRenderedGradientStopCount, visioRenderedGradientStops, visioResizeDrag, visioResizeFrame, visioResizeShape, visioRotationPreviewTransform, visioSelectionIsOnPage, visioShapeFormattingState, visioShapePageBox, visioSizePositionCommand, visioSizePositionState, visioStraightLineHandles, visioStrokeGradient, visioStyleFormattingShape, visioSvgStrokeStyle, visioTextFontStepCommand, visioTextFormattingState, visioTextIndentCommand, visioTextOccurrenceSelection, visioTextReplaceCommands, visioTextReplaceFindNext, visioTextReplaceOccurrences, visioTextReplacePlan };
3480
+ // visio/ui/page-size.ts
3481
+ var VISIO_PAGE_SIZE_PRESETS = Object.freeze([
3482
+ Object.freeze({ id: "letter", label: "Letter", width: 8.5, height: 11 }),
3483
+ Object.freeze({ id: "a4", label: "A4", width: 210 / 25.4, height: 297 / 25.4 })
3484
+ ]);
3485
+ var dimension = (value) => Number.isFinite(value) && value > 0 && value <= 1e6;
3486
+ function visioPageSizeState(page) {
3487
+ const { id: pageId, width, height, drawingSizeType, drawingResizeType } = page;
3488
+ if (!dimension(width) || !dimension(height) || !pageId || pageId.length > 256) return void 0;
3489
+ return Object.freeze({
3490
+ pageId,
3491
+ width,
3492
+ height,
3493
+ orientation: width === height ? "square" : width > height ? "landscape" : "portrait",
3494
+ ...drawingSizeType === void 0 ? {} : { drawingSizeType },
3495
+ ...drawingResizeType === void 0 ? {} : { drawingResizeType }
3496
+ });
3497
+ }
3498
+ function visioPageSizeCommand(page, width, height) {
3499
+ const state = visioPageSizeState(page);
3500
+ if (!state || !dimension(width) || !dimension(height)) return void 0;
3501
+ if (width === state.width && height === state.height && state.drawingSizeType === 3 && state.drawingResizeType === 0)
3502
+ return [];
3503
+ return [{ type: "set-page-size", pageId: state.pageId, width, height }];
3504
+ }
3505
+ function visioPageOrientationCommand(page, orientation) {
3506
+ const state = visioPageSizeState(page);
3507
+ if (!state || !["portrait", "landscape"].includes(orientation)) return void 0;
3508
+ const short = Math.min(state.width, state.height), long = Math.max(state.width, state.height);
3509
+ return visioPageSizeCommand(
3510
+ page,
3511
+ orientation === "portrait" ? short : long,
3512
+ orientation === "portrait" ? long : short
3513
+ );
3514
+ }
3515
+ function visioPageSizePresetCommand(page, id) {
3516
+ const state = visioPageSizeState(page), preset = VISIO_PAGE_SIZE_PRESETS.find((item) => item.id === id);
3517
+ if (!state || !preset) return void 0;
3518
+ return visioPageSizeCommand(
3519
+ page,
3520
+ state.orientation === "landscape" ? preset.height : preset.width,
3521
+ state.orientation === "landscape" ? preset.width : preset.height
3522
+ );
3523
+ }
3524
+
3525
+ export { DocumentHistory, EDIT_HISTORY_LIMITS, EMPTY_EDIT_STATE, EMPTY_SELECTION, EMPTY_TEXT_SEARCH, FOREIGN_VECTOR_SCENE_LIMITS, ForeignVectorBudget, MAX_INPUT_BYTES, TEXT_SEARCH_LIMITS, IDENTITY_AFFINE as VISIO_IDENTITY_TRANSFORM, VISIO_PAGE_SIZE_PRESETS, VISIO_RESIZE_HANDLES, VISIO_TEXT_REPLACE_LIMITS, assertShapeDetails, assertViewableDocument, compatibilityNotes, compatibilityText, composeAffine as composeVisioTransform, copySnapshotScene, demoDocument, editErrorMessage, eventKeys, hasVisibleShapeContent, indexDocumentText, inspectForeignVectorResource, isEditCancellation, propertyKeys, sameSelection, searchDocumentText, selectionKey, snapshotEdits, snapshotSelection, textSearchStatus, validateSearchQuery, visioArrangeCommands, visioBoxCreationCommand, visioClipboardShape, visioDrawBounds, visioDrawIsLargeEnough, visioDrawPlan, visioDrawingPoint, visioDuplicateCommand, visioFillPatternTransform, visioFontFamilies, visioFormattingShape, visioGradientInstances, visioLineCreationCommand, visioLineDashLengths, visioLocalRotationShape, visioMarqueeBox, visioMarqueeSelection, visioMoveCommands, visioMovePreviewTransform, visioMovementShape, visioNextShapeId, visioOrderingShape, visioPageDragDelta, visioPageEditToDrawing, visioPageInsertCommand, visioPageOrientationCommand, visioPageSizeCommand, visioPageSizePresetCommand, visioPageSizeState, visioPasteCommand, visioQuarterTurnCommand, visioRenderedGradientStopCount, visioRenderedGradientStops, visioResizeDrag, visioResizeFrame, visioResizeShape, visioRotationPreviewTransform, visioSelectionIsOnPage, visioShapeFormattingState, visioShapePageBox, visioSizePositionCommand, visioSizePositionState, visioStraightLineHandles, visioStrokeGradient, visioStyleFormattingShape, visioSvgStrokeStyle, visioTextFontStepCommand, visioTextFormattingState, visioTextIndentCommand, visioTextOccurrenceSelection, visioTextReplaceCommands, visioTextReplaceFindNext, visioTextReplaceOccurrences, visioTextReplacePlan };
@@ -0,0 +1,31 @@
1
+ import type { VisioPageSizeEdit } from '../edit-commands.js';
2
+ import type { VisioPage } from '../model.js';
3
+ export type VisioPageOrientation = 'portrait' | 'landscape';
4
+ export interface VisioPageSizeState {
5
+ readonly pageId: string;
6
+ /** Physical page inches, independent of the drawing scale and printer paper. */
7
+ readonly width: number;
8
+ readonly height: number;
9
+ readonly orientation: VisioPageOrientation | 'square';
10
+ readonly drawingSizeType?: number;
11
+ readonly drawingResizeType?: number;
12
+ }
13
+ export declare const VISIO_PAGE_SIZE_PRESETS: readonly (Readonly<{
14
+ id: "letter";
15
+ label: "Letter";
16
+ width: 8.5;
17
+ height: 11;
18
+ }> | Readonly<{
19
+ id: "a4";
20
+ label: "A4";
21
+ width: number;
22
+ height: number;
23
+ }>)[];
24
+ /** Coarse scene state. Source formulas and mode protection remain authoritative. */
25
+ export declare function visioPageSizeState(page: VisioPage): VisioPageSizeState | undefined;
26
+ /** Set fixed custom drawing dimensions. An absent mode never becomes an assumed no-op. */
27
+ export declare function visioPageSizeCommand(page: VisioPage, width: number, height: number): VisioPageSizeEdit[] | undefined;
28
+ export declare function visioPageOrientationCommand(page: VisioPage, orientation: VisioPageOrientation): VisioPageSizeEdit[] | undefined;
29
+ /** Viewer policy: a preset preserves the current landscape orientation; square uses portrait. */
30
+ export declare function visioPageSizePresetCommand(page: VisioPage, id: string): VisioPageSizeEdit[] | undefined;
31
+ //# sourceMappingURL=page-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-size.d.ts","sourceRoot":"","sources":["../../../visio/ui/page-size.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,CAAC;AAC5D,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,oBAAoB,GAAG,QAAQ,CAAC;IACtD,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACpC;AACD,eAAO,MAAM,uBAAuB;;;;;;;;;;KAGlC,CAAC;AAGH,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAWlF;AAED,0FAA0F;AAC1F,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACZ,iBAAiB,EAAE,GAAG,SAAS,CAWjC;AAED,wBAAgB,2BAA2B,CAC1C,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,oBAAoB,GAC/B,iBAAiB,EAAE,GAAG,SAAS,CAUjC;AAED,iGAAiG;AACjG,wBAAgB,0BAA0B,CACzC,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,MAAM,GACR,iBAAiB,EAAE,GAAG,SAAS,CASjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-validation.d.ts","sourceRoot":"","sources":["../../../visio/ui/scene-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,aAAa,EAGlB,MAAM,UAAU,CAAC;AAIlB,eAAO,MAAM,eAAe,QAAmB,CAAC;AAUhD,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CA8TjE"}
1
+ {"version":3,"file":"scene-validation.d.ts","sourceRoot":"","sources":["../../../visio/ui/scene-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,aAAa,EAGlB,MAAM,UAAU,CAAC;AAIlB,eAAO,MAAM,eAAe,QAAmB,CAAC;AAUhD,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAiUjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-scene.d.ts","sourceRoot":"","sources":["../../../visio/ui/snapshot-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EAOb,MAAM,UAAU,CAAC;AAwBlB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAuOrE"}
1
+ {"version":3,"file":"snapshot-scene.d.ts","sourceRoot":"","sources":["../../../visio/ui/snapshot-scene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EAOb,MAAM,UAAU,CAAC;AAwBlB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAyOrE"}