@paged-media/introspect-wasm 0.61.1 → 0.63.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog.json +429 -4
- package/package.json +1 -1
- package/paged_introspect_wasm.d.ts +103 -14
- package/paged_introspect_wasm_bg.wasm +0 -0
package/catalog.json
CHANGED
|
@@ -756,12 +756,257 @@
|
|
|
756
756
|
"kind": "write",
|
|
757
757
|
"summary": "Set or clear the text caret/range."
|
|
758
758
|
},
|
|
759
|
+
{
|
|
760
|
+
"name": "paged.reorderElement",
|
|
761
|
+
"params": "(id, target)",
|
|
762
|
+
"returns": "bool",
|
|
763
|
+
"kind": "author",
|
|
764
|
+
"summary": "Raise or lower an element in its parent's z-order. target = front | back | forward | backward | {index: n} (n = the final slot, 0 = backmost)."
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
"name": "paged.pasteInto",
|
|
768
|
+
"params": "(containerId, childId)",
|
|
769
|
+
"returns": "bool",
|
|
770
|
+
"kind": "author",
|
|
771
|
+
"summary": "Nest an existing item inside a container frame."
|
|
772
|
+
},
|
|
773
|
+
{
|
|
774
|
+
"name": "paged.releaseFrom",
|
|
775
|
+
"params": "(childId)",
|
|
776
|
+
"returns": "bool",
|
|
777
|
+
"kind": "author",
|
|
778
|
+
"summary": "Lift a nested item back out of its container (inverse of pasteInto)."
|
|
779
|
+
},
|
|
780
|
+
{
|
|
781
|
+
"name": "paged.closePath",
|
|
782
|
+
"params": "(id, subpath?)",
|
|
783
|
+
"returns": "bool",
|
|
784
|
+
"kind": "author",
|
|
785
|
+
"summary": "Close an open contour; subpath defaults to the whole path."
|
|
786
|
+
},
|
|
787
|
+
{
|
|
788
|
+
"name": "paged.joinPaths",
|
|
789
|
+
"params": "(id, otherId)",
|
|
790
|
+
"returns": "bool",
|
|
791
|
+
"kind": "author",
|
|
792
|
+
"summary": "Weld two open paths into one."
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"name": "paged.pathfinderDivide",
|
|
796
|
+
"params": "([id, ...])",
|
|
797
|
+
"returns": "bool",
|
|
798
|
+
"kind": "author",
|
|
799
|
+
"summary": "Divide the selection into its planar regions."
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
"name": "paged.pathfinderTrim",
|
|
803
|
+
"params": "([id, ...])",
|
|
804
|
+
"returns": "bool",
|
|
805
|
+
"kind": "author",
|
|
806
|
+
"summary": "Trim hidden parts of the lower shapes away."
|
|
807
|
+
},
|
|
808
|
+
{
|
|
809
|
+
"name": "paged.pathfinderMerge",
|
|
810
|
+
"params": "([id, ...])",
|
|
811
|
+
"returns": "bool",
|
|
812
|
+
"kind": "author",
|
|
813
|
+
"summary": "Merge adjacent same-paint regions of the selection."
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
"name": "paged.pathfinderCrop",
|
|
817
|
+
"params": "([id, ...])",
|
|
818
|
+
"returns": "bool",
|
|
819
|
+
"kind": "author",
|
|
820
|
+
"summary": "Crop the selection to the topmost shape."
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
"name": "paged.pathfinderOutline",
|
|
824
|
+
"params": "([id, ...])",
|
|
825
|
+
"returns": "bool",
|
|
826
|
+
"kind": "author",
|
|
827
|
+
"summary": "Reduce the selection to its outlined edges."
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"name": "paged.pathfinderMinusBack",
|
|
831
|
+
"params": "([id, ...])",
|
|
832
|
+
"returns": "bool",
|
|
833
|
+
"kind": "author",
|
|
834
|
+
"summary": "Subtract the shapes behind from the frontmost one."
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"name": "paged.pathfinderFaces",
|
|
838
|
+
"params": "([id, ...], [faceId, ...], mode)",
|
|
839
|
+
"returns": "bool",
|
|
840
|
+
"kind": "author",
|
|
841
|
+
"summary": "Keep or drop named faces of the planar arrangement; mode = keep | remove. Face ids come from paged.planarRegions."
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
"name": "paged.planarRegions",
|
|
845
|
+
"params": "([id, ...], [x, y]?)",
|
|
846
|
+
"returns": "PlanarRegionsResult JSON",
|
|
847
|
+
"kind": "read",
|
|
848
|
+
"summary": "The planar arrangement of the named paths: found, faces (each with an id), inputCount, complete, reason. With a point, only the face under it. This is how a script names a face for pathfinderFaces."
|
|
849
|
+
},
|
|
850
|
+
{
|
|
851
|
+
"name": "paged.applyOpacityMask",
|
|
852
|
+
"params": "(targetId, maskId, {maskType?, invert?}?)",
|
|
853
|
+
"returns": "bool",
|
|
854
|
+
"kind": "author",
|
|
855
|
+
"summary": "Mask one element with another."
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"name": "paged.releaseOpacityMask",
|
|
859
|
+
"params": "(targetId)",
|
|
860
|
+
"returns": "bool",
|
|
861
|
+
"kind": "author",
|
|
862
|
+
"summary": "Remove an element's opacity mask."
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
"name": "paged.attachTextToPath",
|
|
866
|
+
"params": "(id, storyId, {pathTypeAlignment?, flipPathEffect?, startBracket?, endBracket?}?)",
|
|
867
|
+
"returns": "bool",
|
|
868
|
+
"kind": "author",
|
|
869
|
+
"summary": "Run a story along a path."
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"name": "paged.detachTextFromPath",
|
|
873
|
+
"params": "(id)",
|
|
874
|
+
"returns": "bool",
|
|
875
|
+
"kind": "author",
|
|
876
|
+
"summary": "Take a story back off its path."
|
|
877
|
+
},
|
|
878
|
+
{
|
|
879
|
+
"name": "paged.insertAnchoredFrame",
|
|
880
|
+
"params": "(storyId, offset, width, height, imageUri?)",
|
|
881
|
+
"returns": "bool",
|
|
882
|
+
"kind": "author",
|
|
883
|
+
"summary": "Anchor a frame in the text at a story offset; with imageUri the frame is created holding that image."
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"name": "paged.insertHyperlink",
|
|
887
|
+
"params": "(storyId, start, end, url)",
|
|
888
|
+
"returns": "bool",
|
|
889
|
+
"kind": "author",
|
|
890
|
+
"summary": "Make a character range a clickable link. Read the result with paged.collection(\"hyperlinks\") — paged.links() is the placed-asset list, not this."
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"name": "paged.layerSetVisible",
|
|
894
|
+
"params": "(layerId, visible)",
|
|
895
|
+
"returns": "bool",
|
|
896
|
+
"kind": "write",
|
|
897
|
+
"summary": "Show or hide a layer."
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"name": "paged.layerSetLocked",
|
|
901
|
+
"params": "(layerId, locked)",
|
|
902
|
+
"returns": "bool",
|
|
903
|
+
"kind": "write",
|
|
904
|
+
"summary": "Lock or unlock a layer."
|
|
905
|
+
},
|
|
906
|
+
{
|
|
907
|
+
"name": "paged.layerSetPrintable",
|
|
908
|
+
"params": "(layerId, printable)",
|
|
909
|
+
"returns": "bool",
|
|
910
|
+
"kind": "write",
|
|
911
|
+
"summary": "Include a layer in output, or hold it back."
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"name": "paged.layerSetName",
|
|
915
|
+
"params": "(layerId, name)",
|
|
916
|
+
"returns": "bool",
|
|
917
|
+
"kind": "write",
|
|
918
|
+
"summary": "Rename a layer."
|
|
919
|
+
},
|
|
920
|
+
{
|
|
921
|
+
"name": "paged.createSwatch",
|
|
922
|
+
"params": "(spec)",
|
|
923
|
+
"returns": "string (created id) | null",
|
|
924
|
+
"kind": "author",
|
|
925
|
+
"summary": "Create a swatch from a SwatchSpec ({space, value: [...], name?, model?, tint?}); returns its selfId."
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
"name": "paged.editSwatch",
|
|
929
|
+
"params": "(swatchId, spec)",
|
|
930
|
+
"returns": "bool",
|
|
931
|
+
"kind": "author",
|
|
932
|
+
"summary": "Replace a swatch's definition."
|
|
933
|
+
},
|
|
934
|
+
{
|
|
935
|
+
"name": "paged.deleteSwatch",
|
|
936
|
+
"params": "(swatchId)",
|
|
937
|
+
"returns": "bool",
|
|
938
|
+
"kind": "author",
|
|
939
|
+
"summary": "Delete a swatch."
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
"name": "paged.createGradient",
|
|
943
|
+
"params": "(spec)",
|
|
944
|
+
"returns": "string (created id) | null",
|
|
945
|
+
"kind": "author",
|
|
946
|
+
"summary": "Create a gradient from a GradientSpec ({kind: \"Linear\"|\"Radial\", stops: [...], name?}); returns its selfId."
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"name": "paged.editGradient",
|
|
950
|
+
"params": "(gradientId, spec)",
|
|
951
|
+
"returns": "bool",
|
|
952
|
+
"kind": "author",
|
|
953
|
+
"summary": "Replace a gradient's definition."
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
"name": "paged.deleteGradient",
|
|
957
|
+
"params": "(gradientId)",
|
|
958
|
+
"returns": "bool",
|
|
959
|
+
"kind": "author",
|
|
960
|
+
"summary": "Delete a gradient."
|
|
961
|
+
},
|
|
962
|
+
{
|
|
963
|
+
"name": "paged.createColorGroup",
|
|
964
|
+
"params": "(spec)",
|
|
965
|
+
"returns": "string (created id) | null",
|
|
966
|
+
"kind": "author",
|
|
967
|
+
"summary": "Create a colour group from a ColorGroupSpec; returns its selfId."
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
"name": "paged.editColorGroup",
|
|
971
|
+
"params": "(groupId, spec)",
|
|
972
|
+
"returns": "bool",
|
|
973
|
+
"kind": "author",
|
|
974
|
+
"summary": "Replace a colour group's definition."
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
"name": "paged.deleteColorGroup",
|
|
978
|
+
"params": "(groupId)",
|
|
979
|
+
"returns": "bool",
|
|
980
|
+
"kind": "author",
|
|
981
|
+
"summary": "Delete a colour group."
|
|
982
|
+
},
|
|
759
983
|
{
|
|
760
984
|
"name": "console.log",
|
|
761
985
|
"params": "(...)",
|
|
762
986
|
"returns": "undefined",
|
|
763
987
|
"kind": "console",
|
|
764
|
-
"summary": "Append a line to the captured output log
|
|
988
|
+
"summary": "Append a line to the captured output log."
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"name": "console.warn",
|
|
992
|
+
"params": "(...)",
|
|
993
|
+
"returns": "undefined",
|
|
994
|
+
"kind": "console",
|
|
995
|
+
"summary": "Append a warn-level line to the captured output log."
|
|
996
|
+
},
|
|
997
|
+
{
|
|
998
|
+
"name": "console.error",
|
|
999
|
+
"params": "(...)",
|
|
1000
|
+
"returns": "undefined",
|
|
1001
|
+
"kind": "console",
|
|
1002
|
+
"summary": "Append an error-level line to the captured output log."
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
"name": "console.info",
|
|
1006
|
+
"params": "(...)",
|
|
1007
|
+
"returns": "undefined",
|
|
1008
|
+
"kind": "console",
|
|
1009
|
+
"summary": "Append an info-level line to the captured output log."
|
|
765
1010
|
}
|
|
766
1011
|
],
|
|
767
1012
|
"idGrammar": [
|
|
@@ -803,6 +1048,7 @@
|
|
|
803
1048
|
"appliedParagraphStyle",
|
|
804
1049
|
"appliedCharacterStyle",
|
|
805
1050
|
"appliedObjectStyle",
|
|
1051
|
+
"itemLayer",
|
|
806
1052
|
"appliedCellStyle",
|
|
807
1053
|
"appliedTableStyle",
|
|
808
1054
|
"appliedConditions",
|
|
@@ -923,6 +1169,7 @@
|
|
|
923
1169
|
"frameDirectionalFeatherNoise",
|
|
924
1170
|
"frameDirectionalFeatherChoke",
|
|
925
1171
|
"frameBlendMode",
|
|
1172
|
+
"frameGradientFeather",
|
|
926
1173
|
"cellFillColor",
|
|
927
1174
|
"cellFillTint",
|
|
928
1175
|
"cellInsetTop",
|
|
@@ -942,8 +1189,6 @@
|
|
|
942
1189
|
"cellRightEdgeStrokeColor",
|
|
943
1190
|
"cellRightEdgeStrokeWeight",
|
|
944
1191
|
"cellRightEdgeStrokeTint",
|
|
945
|
-
"tableRowCount",
|
|
946
|
-
"tableColumnCount",
|
|
947
1192
|
"pluginMetadata",
|
|
948
1193
|
"anchoredPosition",
|
|
949
1194
|
"anchorPoint",
|
|
@@ -956,7 +1201,34 @@
|
|
|
956
1201
|
"anchoredSpineRelative",
|
|
957
1202
|
"anchoredLockPosition",
|
|
958
1203
|
"elementVisible",
|
|
959
|
-
"elementLocked"
|
|
1204
|
+
"elementLocked",
|
|
1205
|
+
"characterFontFamily",
|
|
1206
|
+
"characterFontStyle",
|
|
1207
|
+
"characterKerningMethod",
|
|
1208
|
+
"characterCase",
|
|
1209
|
+
"characterPosition",
|
|
1210
|
+
"characterLanguage",
|
|
1211
|
+
"characterBaselineShift",
|
|
1212
|
+
"characterHorizontalScale",
|
|
1213
|
+
"characterVerticalScale",
|
|
1214
|
+
"characterSkew",
|
|
1215
|
+
"characterUnderline",
|
|
1216
|
+
"characterStrikethru",
|
|
1217
|
+
"characterLigatures",
|
|
1218
|
+
"characterOtfFeatures",
|
|
1219
|
+
"paragraphLeftIndent",
|
|
1220
|
+
"paragraphRightIndent",
|
|
1221
|
+
"paragraphDropCapCharacters",
|
|
1222
|
+
"paragraphDropCapLines",
|
|
1223
|
+
"paragraphHyphenation",
|
|
1224
|
+
"paragraphKeepLinesTogether",
|
|
1225
|
+
"paragraphKeepWithNext",
|
|
1226
|
+
"paragraphRuleAbove",
|
|
1227
|
+
"paragraphRuleBelow",
|
|
1228
|
+
"paragraphTabStops",
|
|
1229
|
+
"paragraphListType",
|
|
1230
|
+
"paragraphBulletCharacter",
|
|
1231
|
+
"paragraphNumberingFormat"
|
|
960
1232
|
],
|
|
961
1233
|
"constraints": [
|
|
962
1234
|
"Scripts run in Boa (pure ECMAScript), NOT Node: no require/import, fetch, fs, setTimeout, or network. Use only paged.* and console.*.",
|
|
@@ -967,6 +1239,125 @@
|
|
|
967
1239
|
"insertFrame/insertTextFrame return the new element's kind:id address (and auto-select it); insertPage returns the new page's selfId. Pass the returned id straight to paged.set / placeImage / insertText (use paged.pages() for a page id, paged.stories() for the minted story).",
|
|
968
1240
|
"Bounds are page-local points in [top, left, bottom, right] order. The document works in points (1/72 inch)."
|
|
969
1241
|
],
|
|
1242
|
+
"operations": [
|
|
1243
|
+
"insertText",
|
|
1244
|
+
"deleteRange",
|
|
1245
|
+
"applyStyle",
|
|
1246
|
+
"insertField",
|
|
1247
|
+
"insertAnchoredFrame",
|
|
1248
|
+
"insertHyperlink",
|
|
1249
|
+
"setFieldValue",
|
|
1250
|
+
"placeImage",
|
|
1251
|
+
"replaceImageBytes",
|
|
1252
|
+
"moveFrame",
|
|
1253
|
+
"resizeFrame",
|
|
1254
|
+
"linkFrames",
|
|
1255
|
+
"unlinkFrames",
|
|
1256
|
+
"insertPage",
|
|
1257
|
+
"deletePage",
|
|
1258
|
+
"resizePage",
|
|
1259
|
+
"insertFrame",
|
|
1260
|
+
"insertTextFrame",
|
|
1261
|
+
"deleteFrame",
|
|
1262
|
+
"insertLine",
|
|
1263
|
+
"insertPath",
|
|
1264
|
+
"setDocumentDefaults",
|
|
1265
|
+
"setColorSettings",
|
|
1266
|
+
"setProofSetup",
|
|
1267
|
+
"importSwatchLibrary",
|
|
1268
|
+
"setInkSetting",
|
|
1269
|
+
"setUseStandardLabForSpots",
|
|
1270
|
+
"pathPointInsert",
|
|
1271
|
+
"pathPointRemove",
|
|
1272
|
+
"pathOpenAt",
|
|
1273
|
+
"outlineStroke",
|
|
1274
|
+
"offsetPath",
|
|
1275
|
+
"simplifyPath",
|
|
1276
|
+
"closePath",
|
|
1277
|
+
"joinPaths",
|
|
1278
|
+
"pasteInto",
|
|
1279
|
+
"releaseFrom",
|
|
1280
|
+
"reorderElement",
|
|
1281
|
+
"applyOpacityMask",
|
|
1282
|
+
"releaseOpacityMask",
|
|
1283
|
+
"attachTextToPath",
|
|
1284
|
+
"detachTextFromPath",
|
|
1285
|
+
"createGroup",
|
|
1286
|
+
"dissolveGroup",
|
|
1287
|
+
"setGroupTransform",
|
|
1288
|
+
"setPluginMetadata",
|
|
1289
|
+
"pathPointCurveType",
|
|
1290
|
+
"pathPointSet",
|
|
1291
|
+
"batch",
|
|
1292
|
+
"bindCreated",
|
|
1293
|
+
"layerSetVisible",
|
|
1294
|
+
"layerSetLocked",
|
|
1295
|
+
"layerSetPrintable",
|
|
1296
|
+
"layerSetName",
|
|
1297
|
+
"layerMove",
|
|
1298
|
+
"layerInsert",
|
|
1299
|
+
"layerRemove",
|
|
1300
|
+
"setElementProperty",
|
|
1301
|
+
"pathfinderBoolean",
|
|
1302
|
+
"pathfinderDivide",
|
|
1303
|
+
"pathfinderTrim",
|
|
1304
|
+
"pathfinderMerge",
|
|
1305
|
+
"pathfinderCrop",
|
|
1306
|
+
"pathfinderOutline",
|
|
1307
|
+
"pathfinderMinusBack",
|
|
1308
|
+
"pathfinderFaces",
|
|
1309
|
+
"createSwatch",
|
|
1310
|
+
"editSwatch",
|
|
1311
|
+
"deleteSwatch",
|
|
1312
|
+
"createGradient",
|
|
1313
|
+
"editGradient",
|
|
1314
|
+
"deleteGradient",
|
|
1315
|
+
"createColorGroup",
|
|
1316
|
+
"editColorGroup",
|
|
1317
|
+
"deleteColorGroup",
|
|
1318
|
+
"createNumberingList",
|
|
1319
|
+
"editNumberingList",
|
|
1320
|
+
"deleteNumberingList",
|
|
1321
|
+
"createParagraphStyle",
|
|
1322
|
+
"renameParagraphStyle",
|
|
1323
|
+
"deleteParagraphStyle",
|
|
1324
|
+
"createCharacterStyle",
|
|
1325
|
+
"renameCharacterStyle",
|
|
1326
|
+
"deleteCharacterStyle",
|
|
1327
|
+
"createObjectStyle",
|
|
1328
|
+
"renameObjectStyle",
|
|
1329
|
+
"deleteObjectStyle",
|
|
1330
|
+
"createCellStyle",
|
|
1331
|
+
"renameCellStyle",
|
|
1332
|
+
"deleteCellStyle",
|
|
1333
|
+
"createTableStyle",
|
|
1334
|
+
"renameTableStyle",
|
|
1335
|
+
"deleteTableStyle",
|
|
1336
|
+
"setStyleProperty",
|
|
1337
|
+
"insertOval",
|
|
1338
|
+
"insertGuide",
|
|
1339
|
+
"moveGuide",
|
|
1340
|
+
"deleteGuide",
|
|
1341
|
+
"setConditionVisible",
|
|
1342
|
+
"activateConditionSet",
|
|
1343
|
+
"applyMasterToPage",
|
|
1344
|
+
"duplicatePage",
|
|
1345
|
+
"insertSection",
|
|
1346
|
+
"editSection",
|
|
1347
|
+
"deleteSection",
|
|
1348
|
+
"setRowHeight",
|
|
1349
|
+
"setColumnWidth",
|
|
1350
|
+
"insertTableRow",
|
|
1351
|
+
"deleteTableRow",
|
|
1352
|
+
"insertTableColumn",
|
|
1353
|
+
"deleteTableColumn",
|
|
1354
|
+
"insertHeaderRow",
|
|
1355
|
+
"removeHeaderRow",
|
|
1356
|
+
"insertFooterRow",
|
|
1357
|
+
"removeFooterRow",
|
|
1358
|
+
"setCellSpan",
|
|
1359
|
+
"insertTable"
|
|
1360
|
+
],
|
|
970
1361
|
"elements": [
|
|
971
1362
|
{
|
|
972
1363
|
"name": "TextFrame",
|
|
@@ -1328,5 +1719,39 @@
|
|
|
1328
1719
|
}
|
|
1329
1720
|
]
|
|
1330
1721
|
}
|
|
1722
|
+
],
|
|
1723
|
+
"pathAliases": [
|
|
1724
|
+
{
|
|
1725
|
+
"name": "frameTextWrapInvert",
|
|
1726
|
+
"wire": "textWrapInvert"
|
|
1727
|
+
},
|
|
1728
|
+
{
|
|
1729
|
+
"name": "frameInnerShadow",
|
|
1730
|
+
"wire": "frameInnerShadowEnabled"
|
|
1731
|
+
},
|
|
1732
|
+
{
|
|
1733
|
+
"name": "frameOuterGlow",
|
|
1734
|
+
"wire": "frameOuterGlowEnabled"
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"name": "frameInnerGlow",
|
|
1738
|
+
"wire": "frameInnerGlowEnabled"
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
"name": "frameBevel",
|
|
1742
|
+
"wire": "frameBevelEnabled"
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
"name": "frameSatin",
|
|
1746
|
+
"wire": "frameSatinEnabled"
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
"name": "frameFeather",
|
|
1750
|
+
"wire": "frameFeatherEnabled"
|
|
1751
|
+
},
|
|
1752
|
+
{
|
|
1753
|
+
"name": "frameDirectionalFeather",
|
|
1754
|
+
"wire": "frameDirectionalFeatherEnabled"
|
|
1755
|
+
}
|
|
1331
1756
|
]
|
|
1332
1757
|
}
|
package/package.json
CHANGED
|
@@ -5,6 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type ScenePathSeg = { op: "moveTo"; x: number; y: number } | { op: "lineTo"; x: number; y: number } | { op: "cubicTo"; cx1: number; cy1: number; cx2: number; cy2: number; x: number; y: number } | { op: "close" };
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A byte buffer that crosses the message channel. Wraps `Vec<u8>`
|
|
10
|
+
* so transferable-via-`postMessage` semantics are explicit at call
|
|
11
|
+
* sites; the wasm crate decides whether to clone or transfer based
|
|
12
|
+
* on whether the value is the JS-side `Uint8Array` or a Rust-side
|
|
13
|
+
* `Vec`. The wire form is whatever serde produces for `Vec<u8>` —
|
|
14
|
+
* JSON renders an array of numbers; future binary protocols (CBOR
|
|
15
|
+
* / messagepack) render a real bytes blob without code change.
|
|
16
|
+
*/
|
|
17
|
+
export type ByteBuf = number[];
|
|
18
|
+
|
|
8
19
|
/**
|
|
9
20
|
* A compositing blend mode for [`SceneItem::FillPathBlend`] (C-1.4).
|
|
10
21
|
* Mirrors the CSS-relevant subset of the display list\'s
|
|
@@ -15,6 +26,17 @@ export type ScenePathSeg = { op: "moveTo"; x: number; y: number } | { op: "lineT
|
|
|
15
26
|
*/
|
|
16
27
|
export type SceneBlendMode = "multiply" | "screen" | "overlay" | "darken" | "lighten" | "colorDodge" | "colorBurn" | "hardLight" | "softLight" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity";
|
|
17
28
|
|
|
29
|
+
/**
|
|
30
|
+
* A content-space mutation. Phase 1 carries the *envelope* only —
|
|
31
|
+
* the worker rejects each variant with `WorkerError::NotImplemented`.
|
|
32
|
+
* Phase 3 lights these up incrementally.
|
|
33
|
+
*
|
|
34
|
+
* Behind the default `mutations` feature: its payload types come from
|
|
35
|
+
* `paged-mutate`, and the read-only viewer SDK must not link that.
|
|
36
|
+
* See the crate docs.
|
|
37
|
+
*/
|
|
38
|
+
export type Mutation = { op: "insertText"; args: { storyId: string; offset: number; text: string; cell?: TextCellAddr | null } } | { op: "deleteRange"; args: { storyId: string; start: number; end: number; cell?: TextCellAddr | null } } | { op: "applyStyle"; args: { storyId: string; start: number; end: number; style: string; scope: StyleScope; cell?: TextCellAddr | null } } | { op: "insertField"; args: { storyId: string; offset: number; field: FieldKind } } | { op: "insertAnchoredFrame"; args: { storyId: string; offset: number; width: number; height: number; imageUri?: string | null } } | { op: "insertHyperlink"; args: { storyId: string; start: number; end: number; url: string } } | { op: "setFieldValue"; args: { storyId: string; offset: number; value?: string | null } } | { op: "placeImage"; args: { elementId: string; uri: string; fit?: string | null } } | { op: "replaceImageBytes"; args: { elementId: string; bytes?: number[] | null } } | { op: "moveFrame"; args: { frameId: string; transform: [number, number, number, number, number, number] } } | { op: "resizeFrame"; args: { frameId: string; bounds: [number, number, number, number] } } | { op: "linkFrames"; args: { from: string; to: string } } | { op: "unlinkFrames"; args: { frame: string } } | { op: "insertPage"; args: { afterPageId: PageId | null; masterId: string | null } } | { op: "deletePage"; args: { pageId: PageId } } | { op: "resizePage"; args: { pageId: PageId; bounds: [number, number, number, number] } } | { op: "insertFrame"; args: { pageId: PageId; bounds: [number, number, number, number] } } | { op: "insertTextFrame"; args: { pageId: PageId; bounds: [number, number, number, number] } } | { op: "deleteFrame"; args: { frameId: string } } | { op: "insertLine"; args: { pageId: PageId; start: [number, number]; end: [number, number] } } | { op: "insertPath"; args: { pageId: PageId; anchors: PathAnchorSpec[]; open: boolean; smooth?: boolean } } | { op: "setDocumentDefaults"; args: { fillColor: string | null; strokeColor: string | null; strokeWeight: number | null } } | { op: "setColorSettings"; args: { cmykProfileName: string | null; rgbPolicy: string | null; intent: string | null; bpc: boolean | null } } | { op: "setProofSetup"; args: { profileName: string | null; simulatePaperWhite?: boolean; intent: string | null } } | { op: "importSwatchLibrary"; args: { bytes: number[]; groupName?: string | null } } | { op: "setInkSetting"; args: { spotId: string; convertToProcess?: boolean; aliasTo?: string | null } } | { op: "setUseStandardLabForSpots"; args: { enabled: boolean } } | { op: "pathPointInsert"; args: { elementId: ElementId; index: number; anchor: PathAnchorSpec; prevSubpathStarts?: number[] | null } } | { op: "pathPointRemove"; args: { elementId: ElementId; index: number } } | { op: "pathOpenAt"; args: { elementId: ElementId; index: number } } | { op: "outlineStroke"; args: { elementId: ElementId; width: number; cap: string; join: string; miterLimit: number } } | { op: "offsetPath"; args: { elementId: ElementId; delta: number; join: string; miterLimit: number } } | { op: "simplifyPath"; args: { elementId: ElementId; tolerance: number } } | { op: "closePath"; args: { elementId: ElementId; subpath?: number | null } } | { op: "joinPaths"; args: { elementId: ElementId; otherId: ElementId } } | { op: "pasteInto"; args: { containerId: ElementId; childId: ElementId } } | { op: "releaseFrom"; args: { childId: ElementId } } | { op: "reorderElement"; args: { elementId: ElementId; to: ZOrderTarget } } | { op: "applyOpacityMask"; args: { targetId: ElementId; maskId: ElementId; maskType?: string | null; invert?: boolean | null } } | { op: "releaseOpacityMask"; args: { targetId: ElementId } } | { op: "attachTextToPath"; args: { elementId: ElementId; storyId: string; pathTypeAlignment?: string | null; flipPathEffect?: string | null; startBracket?: number | null; endBracket?: number | null } } | { op: "detachTextFromPath"; args: { elementId: ElementId } } | { op: "createGroup"; args: { memberIds: ElementId[] } } | { op: "dissolveGroup"; args: { groupId: string } } | { op: "setGroupTransform"; args: { groupId: string; transform?: [number, number, number, number, number, number] | null } } | { op: "setPluginMetadata"; args: { elementId: ElementId; key: string; value?: string | null; caller?: string | null } } | { op: "pathPointCurveType"; args: { elementId: ElementId; index: number; smooth: boolean } } | { op: "pathPointSet"; args: { elementId: ElementId; index: number; role: PathPointRole; position: [number, number] } } | { op: "batch"; args: { ops: Mutation[] } } | { op: "bindCreated"; args: { handle: string } } | { op: "layerSetVisible"; args: { layerId: string; visible: boolean } } | { op: "layerSetLocked"; args: { layerId: string; locked: boolean } } | { op: "layerSetPrintable"; args: { layerId: string; printable: boolean } } | { op: "layerSetName"; args: { layerId: string; name: string } } | { op: "layerMove"; args: { layerId: string; newIndex: number } } | { op: "layerInsert"; args: { position: number; name: string } } | { op: "layerRemove"; args: { layerId: string } } | { op: "setElementProperty"; args: { elementId: ElementId; path: PropertyPath; value: Value } } | { op: "pathfinderBoolean"; args: { kept: ElementId; others: ElementId[]; kind: PathfinderKind } } | { op: "pathfinderDivide"; args: { elementIds: ElementId[] } } | { op: "pathfinderTrim"; args: { elementIds: ElementId[] } } | { op: "pathfinderMerge"; args: { elementIds: ElementId[] } } | { op: "pathfinderCrop"; args: { elementIds: ElementId[] } } | { op: "pathfinderOutline"; args: { elementIds: ElementId[] } } | { op: "pathfinderMinusBack"; args: { elementIds: ElementId[] } } | { op: "pathfinderFaces"; args: { elementIds: ElementId[]; faces: string[]; mode: FaceSelectMode } } | { op: "createSwatch"; args: { spec: SwatchSpec } } | { op: "editSwatch"; args: { swatchId: string; spec: SwatchSpec } } | { op: "deleteSwatch"; args: { swatchId: string } } | { op: "createGradient"; args: { spec: GradientSpec } } | { op: "editGradient"; args: { gradientId: string; spec: GradientSpec } } | { op: "deleteGradient"; args: { gradientId: string } } | { op: "createColorGroup"; args: { spec: ColorGroupSpec } } | { op: "editColorGroup"; args: { groupId: string; spec: ColorGroupSpec } } | { op: "deleteColorGroup"; args: { groupId: string } } | { op: "createNumberingList"; args: { spec: NumberingListSpec } } | { op: "editNumberingList"; args: { listId: string; spec: NumberingListSpec } } | { op: "deleteNumberingList"; args: { listId: string } } | { op: "createParagraphStyle"; args: { selfId?: string | null; name?: string | null; basedOn?: string | null } } | { op: "renameParagraphStyle"; args: { styleId: string; name: string } } | { op: "deleteParagraphStyle"; args: { styleId: string } } | { op: "createCharacterStyle"; args: { selfId?: string | null; name?: string | null; basedOn?: string | null } } | { op: "renameCharacterStyle"; args: { styleId: string; name: string } } | { op: "deleteCharacterStyle"; args: { styleId: string } } | { op: "createObjectStyle"; args: { selfId?: string | null; name?: string | null; basedOn?: string | null } } | { op: "renameObjectStyle"; args: { styleId: string; name: string } } | { op: "deleteObjectStyle"; args: { styleId: string } } | { op: "createCellStyle"; args: { selfId?: string | null; name?: string | null; basedOn?: string | null } } | { op: "renameCellStyle"; args: { styleId: string; name: string } } | { op: "deleteCellStyle"; args: { styleId: string } } | { op: "createTableStyle"; args: { selfId?: string | null; name?: string | null; basedOn?: string | null } } | { op: "renameTableStyle"; args: { styleId: string; name: string } } | { op: "deleteTableStyle"; args: { styleId: string } } | { op: "setStyleProperty"; args: { collection: StyleCollection; styleId: string; path: PropertyPath; value: Value } } | { op: "insertOval"; args: { pageId: PageId; bounds: [number, number, number, number] } } | { op: "insertGuide"; args: { spreadId: string; orientation: GuideOrientationSpec; position: number; pageIndex?: number } } | { op: "moveGuide"; args: { guideId: string; position: number } } | { op: "deleteGuide"; args: { guideId: string } } | { op: "setConditionVisible"; args: { condition: string; visible: boolean } } | { op: "activateConditionSet"; args: { set: string } } | { op: "applyMasterToPage"; args: { page: PageId; master?: string | null } } | { op: "duplicatePage"; args: { page: PageId } } | { op: "insertSection"; args: { atPage: PageId; prefix?: string | null; numberingStyle?: string | null; startAt?: number | null } } | { op: "editSection"; args: { sectionId: string; prefix?: string | null | null; numberingStyle?: string | null; startAt?: number | null | null } } | { op: "deleteSection"; args: { sectionId: string } } | { op: "setRowHeight"; args: { storyId: string; tableId: string; row: number; height?: number | null } } | { op: "setColumnWidth"; args: { storyId: string; tableId: string; col: number; width?: number | null } } | { op: "insertTableRow"; args: { storyId: string; tableId: string; at: number } } | { op: "deleteTableRow"; args: { storyId: string; tableId: string; at: number } } | { op: "insertTableColumn"; args: { storyId: string; tableId: string; at: number } } | { op: "deleteTableColumn"; args: { storyId: string; tableId: string; at: number } } | { op: "insertHeaderRow"; args: { storyId: string; tableId: string } } | { op: "removeHeaderRow"; args: { storyId: string; tableId: string } } | { op: "insertFooterRow"; args: { storyId: string; tableId: string } } | { op: "removeFooterRow"; args: { storyId: string; tableId: string } } | { op: "setCellSpan"; args: { storyId: string; tableId: string; row: number; col: number; rowSpan: number; columnSpan: number } } | { op: "insertTable"; args: { storyId: string; rows: number; cols: number; headerRows?: number; footerRows?: number; columnWidths?: number[]; rowHeights?: number[] } };
|
|
39
|
+
|
|
18
40
|
/**
|
|
19
41
|
* A plugin gradient paint for [`SceneItem::FillPathGradient`] (C-1.3).
|
|
20
42
|
* Coordinates are frame-content points (mapped by the frame transform
|
|
@@ -222,6 +244,19 @@ export interface GradientFeatherStopSpec {
|
|
|
222
244
|
midpointPct?: number;
|
|
223
245
|
}
|
|
224
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Element address the user can select OR a `SetElementProperty`
|
|
249
|
+
* mutation can target. The first six variants are page items
|
|
250
|
+
* (selection state holds these); `StoryRange` is the half-open
|
|
251
|
+
* character range that character / paragraph property writes
|
|
252
|
+
* address. Selection state today never holds `StoryRange` (the
|
|
253
|
+
* text-side caret + range live in `ContentSelection`); the
|
|
254
|
+
* variant exists so the apply layer can be reached via the
|
|
255
|
+
* existing `Mutation::SetElementProperty` wire shape — see
|
|
256
|
+
* `docs/paged/sdk-implementation-plan.md` §3c.1 ADR.
|
|
257
|
+
*/
|
|
258
|
+
export type ElementId = { kind: "textFrame"; id: string } | { kind: "rectangle"; id: string } | { kind: "oval"; id: string } | { kind: "polygon"; id: string } | { kind: "graphicLine"; id: string } | { kind: "group"; id: string } | { kind: "storyRange"; id: { story_id: string; start: number; end: number } } | { kind: "table"; id: { story_id: string; table_id: string } } | { kind: "tableCell"; id: { story_id: string; table_id: string; row: number; col: number } };
|
|
259
|
+
|
|
225
260
|
/**
|
|
226
261
|
* Hint to downstream caches about what the apply touched. Lists
|
|
227
262
|
* instead of a single enum so a Batch aggregates by union without
|
|
@@ -239,6 +274,16 @@ export interface InvalidationHint {
|
|
|
239
274
|
structural: boolean;
|
|
240
275
|
}
|
|
241
276
|
|
|
277
|
+
/**
|
|
278
|
+
* How a `SetElementSelection` request combines with the current set.
|
|
279
|
+
* Mirrors the canonical macOS / industry convention:
|
|
280
|
+
* - `Replace` — plain click; selection becomes the request.
|
|
281
|
+
* - `Add` — Shift-click; union (already-selected ids stay).
|
|
282
|
+
* - `Toggle` — Cmd/Ctrl-click; ids already in the set are removed,
|
|
283
|
+
* ids not in the set are added.
|
|
284
|
+
*/
|
|
285
|
+
export type SelectionMode = "replace" | "add" | "toggle";
|
|
286
|
+
|
|
242
287
|
/**
|
|
243
288
|
* One RGBA8 tile of a [`PixelLayer`]. `rgba` is tightly packed
|
|
244
289
|
* (`width*height*4`, row-major); the tile is placed at the `(x, y)`
|
|
@@ -341,25 +386,13 @@ export type PathfinderKind = "union" | "intersect" | "subtract" | "exclude";
|
|
|
341
386
|
*/
|
|
342
387
|
export type NodeId = { kind: "TextFrame"; id: string } | { kind: "Rectangle"; id: string } | { kind: "Oval"; id: string } | { kind: "Polygon"; id: string } | { kind: "GraphicLine"; id: string } | { kind: "Group"; id: string } | { kind: "Spread"; id: string } | { kind: "Page"; id: string } | { kind: "Story"; id: string } | { kind: "Layer"; id: string } | { kind: "StoryRange"; id: { story_id: string; start: number; end: number } } | { kind: "Table"; id: { story_id: string; table_id: string } } | { kind: "TableCell"; id: { story_id: string; table_id: string; row: number; col: number } };
|
|
343
388
|
|
|
344
|
-
/**
|
|
345
|
-
* Stable page identity, independent of position in the page vector.
|
|
346
|
-
*
|
|
347
|
-
* Derived from the IDML `<Page Self=\"...\">` attribute where present;
|
|
348
|
-
* synthesised as `\"page-<spread_idx>-<local_idx>\"` when missing
|
|
349
|
-
* (older / synthetic fixtures without `Self`). The canvas keys
|
|
350
|
-
* display-list caches and LOD tiles by `PageId`, so the value must
|
|
351
|
-
* stay stable across re-layouts — only document-structural edits
|
|
352
|
-
* (insert/delete page) should ever change the set of `PageId`s.
|
|
353
|
-
*/
|
|
354
|
-
export type PageId = string;
|
|
355
|
-
|
|
356
389
|
/**
|
|
357
390
|
* The canonical mutation primitive. A closed set, extended only with
|
|
358
391
|
* deliberation. Collection mutations (swatches, styles) operate on the
|
|
359
392
|
* document\'s `BTreeMap` palettes/stylesheets rather than the scene
|
|
360
393
|
* tree, so they\'re top-level variants rather than `InsertNode`.
|
|
361
394
|
*/
|
|
362
|
-
export type Operation = { kind: "SetProperty"; node: NodeId; path: PropertyPath; value: Value } | { kind: "InsertNode"; parent: NodeId; position: number; node: NodeSpec; z_slot?: number | null } | { kind: "RemoveNode"; node: NodeId } | { kind: "MoveNode"; node: NodeId; new_parent: NodeId; position: number } | { kind: "ReorderNode"; node: NodeId; target: ZOrderTarget } | { kind: "Batch"; ops: Operation[] } | { kind: "InsertPage"; after_page_id?: string | null; master_id?: string | null; spread_self_id?: string | null; page_self_id?: string | null; restore_spread_json?: string | null } | { kind: "RemovePage"; page_id: string } | { kind: "MoveLayer"; layer_id: string; new_index: number } | { kind: "InsertLayer"; position: number; name: string; self_id?: string | null } | { kind: "RemoveLayer"; layer_id: string } | { kind: "CreateSwatch"; spec: SwatchSpec } | { kind: "EditSwatch"; swatch_id: string; spec: SwatchSpec } | { kind: "DeleteSwatch"; swatch_id: string } | { kind: "CreateParagraphStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameParagraphStyle"; style_id: string; name: string } | { kind: "DeleteParagraphStyle"; style_id: string } | { kind: "CreateCharacterStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameCharacterStyle"; style_id: string; name: string } | { kind: "DeleteCharacterStyle"; style_id: string } | { kind: "CreateObjectStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameObjectStyle"; style_id: string; name: string } | { kind: "DeleteObjectStyle"; style_id: string } | { kind: "CreateCellStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameCellStyle"; style_id: string; name: string } | { kind: "DeleteCellStyle"; style_id: string } | { kind: "CreateTableStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameTableStyle"; style_id: string; name: string } | { kind: "DeleteTableStyle"; style_id: string } | { kind: "CreateGroup"; spec: GroupSpec } | { kind: "DissolveGroup"; group_id: string; restore_slots?: number[] | null } | { kind: "SetGroupTransform"; group: string; transform?: [number, number, number, number, number, number] | null; prev?: [number, number, number, number, number, number] | null } | { kind: "CreateGradient"; spec: GradientSpec } | { kind: "EditGradient"; gradient_id: string; spec: GradientSpec } | { kind: "DeleteGradient"; gradient_id: string } | { kind: "CreateColorGroup"; spec: ColorGroupSpec } | { kind: "EditColorGroup"; group_id: string; spec: ColorGroupSpec } | { kind: "DeleteColorGroup"; group_id: string } | { kind: "CreateNumberingList"; spec: NumberingListSpec } | { kind: "EditNumberingList"; list_id: string; spec: NumberingListSpec } | { kind: "DeleteNumberingList"; list_id: string } | { kind: "SetStyleProperty"; collection: StyleCollection; style_id: string; path: PropertyPath; value: Value } | { kind: "PathfinderBoolean"; kept: NodeId; others: NodeId[]; opKind: PathfinderKind } | { kind: "PathfinderRegion"; elements: NodeId[]; verb: PathfinderRegionVerb } | { kind: "PathfinderFaces"; elements: NodeId[]; faces: string[]; mode: FaceSelectMode } | { kind: "JoinPaths"; kept: NodeId; other: NodeId } | { kind: "PasteInto"; container: NodeId; child: NodeId; child_index?: number | null } | { kind: "ReleaseFrom"; child: NodeId; restore_slot?: number | null } | { kind: "ApplyOpacityMask"; target: NodeId; mask: NodeId; mask_type?: OpacityMaskMode; invert?: boolean } | { kind: "ReleaseOpacityMask"; target: NodeId; restore_slot?: number | null } | { kind: "AttachTextToPath"; host: NodeId; story_id: string; spec?: TextPathSpec } | { kind: "DetachTextFromPath"; host: NodeId; index?: number | null; restore?: TextPathSpec | null } | { kind: "LinkFrames"; from: string; to: string } | { kind: "UnlinkFrames"; frame: string; prev_next?: string | null } | { kind: "ApplyStyle"; story_id: string; start: number; end: number; style: string; scope: StyleScope; cell?: CellAddr | null } | { kind: "InsertField"; story_id: string; offset: number; field: FieldKind } | { kind: "DeleteField"; story_id: string; offset: number; field: FieldKind } | { kind: "InsertAnchoredFrame"; story_id: string; offset: number; width: number; height: number; image_uri?: string | null; self_id: string } | { kind: "RemoveAnchoredFrame"; story_id: string; self_id: string } | { kind: "InsertHyperlink"; story_id: string; start: number; end: number; url: string; source_id: string; dest_id: string; hyperlink_id: string } | { kind: "RemoveHyperlink"; story_id: string; start: number; end: number; url: string; source_id: string; dest_id: string; hyperlink_id: string } | { kind: "SetFieldValue"; story_id: string; offset: number; value?: string | null } | { kind: "PlaceImage"; frame: NodeId; image_uri?: string | null; fit?: string | null } | { kind: "ReplaceImageBytes"; frame: NodeId; bytes?: number[] | null; prior_has_image_element?: boolean | null } | { kind: "InsertGuide"; spread_id: string; orientation: GuideOrientationSpec; position: number; page_index?: number; guide_id?: string | null } | { kind: "MoveGuide"; guide_id: string; position: number } | { kind: "DeleteGuide"; guide_id: string } | { kind: "SetConditionVisible"; condition: string; visible: boolean } | { kind: "ActivateConditionSet"; set: string } | { kind: "RestoreConditionVisibility"; states: [string, boolean][] } | { kind: "ApplyMasterToPage"; page: string; master?: string | null } | { kind: "DuplicatePage"; page: string; clone_spread_json?: string | null } | { kind: "InsertSection"; at_page: string; prefix?: string | null; numbering_style?: string | null; start_at?: number | null; self_id?: string | null } | { kind: "EditSection"; section_id: string; prefix?: string | null | null; numbering_style?: string | null; start_at?: number | null | null } | { kind: "DeleteSection"; section_id: string } | { kind: "SetRowHeight"; story_id: string; table_id: string; row: number; height?: number | null } | { kind: "SetColumnWidth"; story_id: string; table_id: string; col: number; width?: number | null } | { kind: "InsertTableRow"; story_id: string; table_id: string; at: number; restore?: TableLineRestoreJson | null } | { kind: "DeleteTableRow"; story_id: string; table_id: string; at: number } | { kind: "InsertTableColumn"; story_id: string; table_id: string; at: number; restore?: TableLineRestoreJson | null } | { kind: "DeleteTableColumn"; story_id: string; table_id: string; at: number } | { kind: "InsertHeaderRow"; story_id: string; table_id: string; restore?: TableLineRestoreJson | null } | { kind: "RemoveHeaderRow"; story_id: string; table_id: string } | { kind: "InsertFooterRow"; story_id: string; table_id: string; restore?: TableLineRestoreJson | null } | { kind: "RemoveFooterRow"; story_id: string; table_id: string } | { kind: "SetCellSpan"; story_id: string; table_id: string; row: number; col: number; row_span: number; column_span: number };
|
|
395
|
+
export type Operation = { kind: "SetProperty"; node: NodeId; path: PropertyPath; value: Value } | { kind: "InsertNode"; parent: NodeId; position: number; node: NodeSpec; z_slot?: number | null } | { kind: "RemoveNode"; node: NodeId } | { kind: "MoveNode"; node: NodeId; new_parent: NodeId; position: number } | { kind: "ReorderNode"; node: NodeId; target: ZOrderTarget } | { kind: "Batch"; ops: Operation[] } | { kind: "InsertPage"; after_page_id?: string | null; master_id?: string | null; spread_self_id?: string | null; page_self_id?: string | null; restore_spread_json?: string | null } | { kind: "RemovePage"; page_id: string } | { kind: "MoveLayer"; layer_id: string; new_index: number } | { kind: "InsertLayer"; position: number; name: string; self_id?: string | null } | { kind: "RemoveLayer"; layer_id: string } | { kind: "CreateSwatch"; spec: SwatchSpec } | { kind: "EditSwatch"; swatch_id: string; spec: SwatchSpec } | { kind: "DeleteSwatch"; swatch_id: string } | { kind: "CreateParagraphStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameParagraphStyle"; style_id: string; name: string } | { kind: "DeleteParagraphStyle"; style_id: string } | { kind: "CreateCharacterStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameCharacterStyle"; style_id: string; name: string } | { kind: "DeleteCharacterStyle"; style_id: string } | { kind: "CreateObjectStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameObjectStyle"; style_id: string; name: string } | { kind: "DeleteObjectStyle"; style_id: string } | { kind: "CreateCellStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameCellStyle"; style_id: string; name: string } | { kind: "DeleteCellStyle"; style_id: string } | { kind: "CreateTableStyle"; self_id?: string | null; name?: string | null; based_on?: string | null; restore_json?: string | null } | { kind: "RenameTableStyle"; style_id: string; name: string } | { kind: "DeleteTableStyle"; style_id: string } | { kind: "CreateGroup"; spec: GroupSpec } | { kind: "DissolveGroup"; group_id: string; restore_slots?: number[] | null } | { kind: "SetGroupTransform"; group: string; transform?: [number, number, number, number, number, number] | null; prev?: [number, number, number, number, number, number] | null } | { kind: "CreateGradient"; spec: GradientSpec } | { kind: "EditGradient"; gradient_id: string; spec: GradientSpec } | { kind: "DeleteGradient"; gradient_id: string } | { kind: "CreateColorGroup"; spec: ColorGroupSpec } | { kind: "EditColorGroup"; group_id: string; spec: ColorGroupSpec } | { kind: "DeleteColorGroup"; group_id: string } | { kind: "CreateNumberingList"; spec: NumberingListSpec } | { kind: "EditNumberingList"; list_id: string; spec: NumberingListSpec } | { kind: "DeleteNumberingList"; list_id: string } | { kind: "SetStyleProperty"; collection: StyleCollection; style_id: string; path: PropertyPath; value: Value } | { kind: "PathfinderBoolean"; kept: NodeId; others: NodeId[]; opKind: PathfinderKind } | { kind: "PathfinderRegion"; elements: NodeId[]; verb: PathfinderRegionVerb } | { kind: "PathfinderFaces"; elements: NodeId[]; faces: string[]; mode: FaceSelectMode } | { kind: "JoinPaths"; kept: NodeId; other: NodeId } | { kind: "PasteInto"; container: NodeId; child: NodeId; child_index?: number | null } | { kind: "ReleaseFrom"; child: NodeId; restore_slot?: number | null } | { kind: "ApplyOpacityMask"; target: NodeId; mask: NodeId; mask_type?: OpacityMaskMode; invert?: boolean } | { kind: "ReleaseOpacityMask"; target: NodeId; restore_slot?: number | null } | { kind: "AttachTextToPath"; host: NodeId; story_id: string; spec?: TextPathSpec } | { kind: "DetachTextFromPath"; host: NodeId; index?: number | null; restore?: TextPathSpec | null } | { kind: "LinkFrames"; from: string; to: string } | { kind: "UnlinkFrames"; frame: string; prev_next?: string | null; restore_target?: [string, string | null, string | null] | null } | { kind: "ApplyStyle"; story_id: string; start: number; end: number; style: string; scope: StyleScope; cell?: CellAddr | null } | { kind: "InsertField"; story_id: string; offset: number; field: FieldKind } | { kind: "DeleteField"; story_id: string; offset: number; field: FieldKind } | { kind: "InsertAnchoredFrame"; story_id: string; offset: number; width: number; height: number; image_uri?: string | null; self_id: string } | { kind: "RemoveAnchoredFrame"; story_id: string; self_id: string } | { kind: "InsertHyperlink"; story_id: string; start: number; end: number; url: string; source_id: string; dest_id: string; hyperlink_id: string } | { kind: "RemoveHyperlink"; story_id: string; start: number; end: number; url: string; source_id: string; dest_id: string; hyperlink_id: string } | { kind: "SetFieldValue"; story_id: string; offset: number; value?: string | null } | { kind: "PlaceImage"; frame: NodeId; image_uri?: string | null; fit?: string | null } | { kind: "ReplaceImageBytes"; frame: NodeId; bytes?: number[] | null; prior_has_image_element?: boolean | null } | { kind: "InsertGuide"; spread_id: string; orientation: GuideOrientationSpec; position: number; page_index?: number; guide_id?: string | null } | { kind: "MoveGuide"; guide_id: string; position: number } | { kind: "DeleteGuide"; guide_id: string } | { kind: "SetConditionVisible"; condition: string; visible: boolean } | { kind: "ActivateConditionSet"; set: string } | { kind: "RestoreConditionVisibility"; states: [string, boolean][] } | { kind: "ApplyMasterToPage"; page: string; master?: string | null } | { kind: "DuplicatePage"; page: string; clone_spread_json?: string | null } | { kind: "InsertSection"; at_page: string; prefix?: string | null; numbering_style?: string | null; start_at?: number | null; self_id?: string | null } | { kind: "EditSection"; section_id: string; prefix?: string | null | null; numbering_style?: string | null; start_at?: number | null | null } | { kind: "DeleteSection"; section_id: string } | { kind: "SetRowHeight"; story_id: string; table_id: string; row: number; height?: number | null } | { kind: "SetColumnWidth"; story_id: string; table_id: string; col: number; width?: number | null } | { kind: "InsertTableRow"; story_id: string; table_id: string; at: number; restore?: TableLineRestoreJson | null } | { kind: "DeleteTableRow"; story_id: string; table_id: string; at: number } | { kind: "InsertTableColumn"; story_id: string; table_id: string; at: number; restore?: TableLineRestoreJson | null } | { kind: "DeleteTableColumn"; story_id: string; table_id: string; at: number } | { kind: "InsertHeaderRow"; story_id: string; table_id: string; restore?: TableLineRestoreJson | null } | { kind: "RemoveHeaderRow"; story_id: string; table_id: string } | { kind: "InsertFooterRow"; story_id: string; table_id: string; restore?: TableLineRestoreJson | null } | { kind: "RemoveFooterRow"; story_id: string; table_id: string } | { kind: "SetCellSpan"; story_id: string; table_id: string; row: number; col: number; row_span: number; column_span: number };
|
|
363
396
|
|
|
364
397
|
/**
|
|
365
398
|
* Track J — wire-shape mirror of `paged_model::PathAnchor`. The
|
|
@@ -390,7 +423,7 @@ export type Value = { type: "bounds"; value: [number, number, number, number] }
|
|
|
390
423
|
* (`\"fill.color\"`) — so JS callers don\'t need to learn the Rust
|
|
391
424
|
* enum shape.
|
|
392
425
|
*/
|
|
393
|
-
export type PropertyPath = "frameBounds" | "frameFillColor" | "frameStrokeColor" | "frameStrokeWeight" | "frameOpacity" | "frameTransform" | "imageContentTransform" | "framePathPoint" | "pathPointInsert" | "pathPointRemove" | "pathPointCurveType" | "layerVisible" | "layerLocked" | "layerPrintable" | "layerName" | "characterFontSize" | "characterLeading" | "characterTracking" | "characterFillColor" | "paragraphSpaceBefore" | "paragraphSpaceAfter" | "paragraphFirstLineIndent" | "appliedParagraphStyle" | "appliedCharacterStyle" | "appliedObjectStyle" | "appliedCellStyle" | "appliedTableStyle" | "framePath" | "frameNonprinting" | "frameFillTint" | "frameGradientFillAngle" | "frameGradientFillLength" | "frameGradientStrokeAngle" | "frameGradientStrokeLength" | "pathOpenAt" | "outlineStroke" | "outlineStrokeVariable" | "offsetPath" | "simplifyPath" | "closePath" | "frameGradientFeather" | "pageBounds" | "frameDropShadowMode" | "frameDropShadowXOffset" | "frameDropShadowYOffset" | "frameDropShadowSize" | "frameDropShadowOpacity" | "frameDropShadowColor" | "frameDropShadow" | "frameFittingCrops" | "frameFittingType" | "frameTextWrapMode" | "frameTextWrapOffsets" | "frameTextWrapContourType" | "frameTextWrapContourIncludeInside" | "paragraphJustification" | "paragraphStyleNextStyle" | "paragraphAppliedNumberingList" | "frameStrokeEndCap" | "frameInsetSpacing" | "appliedConditions" | "characterFontFamily" | "characterFontStyle" | "characterKerningMethod" | "characterCase" | "characterPosition" | "characterLanguage" | "characterBaselineShift" | "characterHorizontalScale" | "characterVerticalScale" | "characterSkew" | "characterUnderline" | "characterStrikethru" | "characterLigatures" | "characterOtfFeatures" | "paragraphLeftIndent" | "paragraphRightIndent" | "paragraphDropCapCharacters" | "paragraphDropCapLines" | "paragraphHyphenation" | "paragraphKeepLinesTogether" | "paragraphKeepWithNext" | "paragraphRuleAbove" | "paragraphRuleBelow" | "paragraphTabStops" | "paragraphListType" | "paragraphBulletCharacter" | "paragraphNumberingFormat" | "textFrameColumnCount" | "textFrameColumnGutter" | "textFrameColumnBalance" | "textFrameVerticalJustification" | "textFrameAutoSizing" | "textFrameFirstBaseline" | "textWrapInvert" | "frameFittingReferencePoint" | "frameAutoFit" | "frameStrokeType" | "frameStrokeJoin" | "frameStrokeMiterLimit" | "frameStrokeAlignment" | "frameStrokeGapColor" | "frameStrokeGapTint" | "frameStrokeDashArray" | "frameCornerOptionTopLeft" | "frameCornerOptionTopRight" | "frameCornerOptionBottomLeft" | "frameCornerOptionBottomRight" | "frameCornerRadiusTopLeft" | "frameCornerRadiusTopRight" | "frameCornerRadiusBottomLeft" | "frameCornerRadiusBottomRight" | "frameRotationAngle" | "frameScaleX" | "frameScaleY" | "frameFlipH" | "frameFlipV" | "frameOverprintFill" | "frameOverprintStroke" | "frameInnerShadowEnabled" | "frameInnerShadowBlendMode" | "frameInnerShadowColor" | "frameInnerShadowOpacity" | "frameInnerShadowAngle" | "frameInnerShadowDistance" | "frameInnerShadowSize" | "frameInnerShadowChoke" | "frameInnerShadowNoise" | "frameOuterGlowEnabled" | "frameOuterGlowBlendMode" | "frameOuterGlowColor" | "frameOuterGlowOpacity" | "frameOuterGlowSpread" | "frameOuterGlowSize" | "frameOuterGlowNoise" | "frameInnerGlowEnabled" | "frameInnerGlowBlendMode" | "frameInnerGlowColor" | "frameInnerGlowOpacity" | "frameInnerGlowChoke" | "frameInnerGlowSize" | "frameInnerGlowSource" | "frameInnerGlowNoise" | "frameBevelEnabled" | "frameBevelStyle" | "frameBevelTechnique" | "frameBevelDepth" | "frameBevelDirection" | "frameBevelSize" | "frameBevelSoften" | "frameBevelAngle" | "frameBevelAltitude" | "frameBevelHighlightColor" | "frameBevelShadowColor" | "frameBevelHighlightOpacity" | "frameBevelShadowOpacity" | "frameSatinEnabled" | "frameSatinBlendMode" | "frameSatinColor" | "frameSatinOpacity" | "frameSatinAngle" | "frameSatinDistance" | "frameSatinSize" | "frameSatinInvert" | "frameFeatherEnabled" | "frameFeatherWidth" | "frameFeatherCornerType" | "frameFeatherNoise" | "frameFeatherChoke" | "frameDirectionalFeatherEnabled" | "frameDirectionalFeatherLeftWidth" | "frameDirectionalFeatherRightWidth" | "frameDirectionalFeatherTopWidth" | "frameDirectionalFeatherBottomWidth" | "frameDirectionalFeatherAngle" | "frameDirectionalFeatherNoise" | "frameDirectionalFeatherChoke" | "frameBlendMode" | "nextTextFrame" | "previousTextFrame" | "cellFillColor" | "cellFillTint" | "cellInsetTop" | "cellInsetLeft" | "cellInsetBottom" | "cellInsetRight" | "cellVerticalJustification" | "cellTopEdgeStrokeColor" | "cellTopEdgeStrokeWeight" | "cellTopEdgeStrokeTint" | "cellBottomEdgeStrokeColor" | "cellBottomEdgeStrokeWeight" | "cellBottomEdgeStrokeTint" | "cellLeftEdgeStrokeColor" | "cellLeftEdgeStrokeWeight" | "cellLeftEdgeStrokeTint" | "cellRightEdgeStrokeColor" | "cellRightEdgeStrokeWeight" | "cellRightEdgeStrokeTint" | "tableRowCount" | "tableColumnCount" | "pluginMetadata" | "anchoredPosition" | "anchorPoint" | "anchoredXOffset" | "anchoredYOffset" | "anchoredHorizontalReference" | "anchoredVerticalReference" | "anchoredHorizontalAlignment" | "anchoredVerticalAlignment" | "anchoredSpineRelative" | "anchoredLockPosition" | "elementVisible" | "elementLocked" | "frameStrokeStartArrowhead" | "frameStrokeEndArrowhead";
|
|
426
|
+
export type PropertyPath = "frameBounds" | "frameFillColor" | "frameStrokeColor" | "frameStrokeWeight" | "frameOpacity" | "frameTransform" | "imageContentTransform" | "framePathPoint" | "pathPointInsert" | "pathPointRemove" | "pathPointCurveType" | "layerVisible" | "layerLocked" | "layerPrintable" | "layerName" | "characterFontSize" | "characterLeading" | "characterTracking" | "characterFillColor" | "paragraphSpaceBefore" | "paragraphSpaceAfter" | "paragraphFirstLineIndent" | "appliedParagraphStyle" | "appliedCharacterStyle" | "appliedObjectStyle" | "itemLayer" | "appliedCellStyle" | "appliedTableStyle" | "framePath" | "frameNonprinting" | "frameFillTint" | "frameGradientFillAngle" | "frameGradientFillLength" | "frameGradientStrokeAngle" | "frameGradientStrokeLength" | "pathOpenAt" | "outlineStroke" | "outlineStrokeVariable" | "offsetPath" | "simplifyPath" | "closePath" | "frameGradientFeather" | "pageBounds" | "frameDropShadowMode" | "frameDropShadowXOffset" | "frameDropShadowYOffset" | "frameDropShadowSize" | "frameDropShadowOpacity" | "frameDropShadowColor" | "frameDropShadow" | "frameFittingCrops" | "frameFittingType" | "frameTextWrapMode" | "frameTextWrapOffsets" | "frameTextWrapContourType" | "frameTextWrapContourIncludeInside" | "paragraphJustification" | "paragraphStyleNextStyle" | "paragraphAppliedNumberingList" | "frameStrokeEndCap" | "frameInsetSpacing" | "appliedConditions" | "characterFontFamily" | "characterFontStyle" | "characterKerningMethod" | "characterCase" | "characterPosition" | "characterLanguage" | "characterBaselineShift" | "characterHorizontalScale" | "characterVerticalScale" | "characterSkew" | "characterUnderline" | "characterStrikethru" | "characterLigatures" | "characterOtfFeatures" | "paragraphLeftIndent" | "paragraphRightIndent" | "paragraphDropCapCharacters" | "paragraphDropCapLines" | "paragraphHyphenation" | "paragraphKeepLinesTogether" | "paragraphKeepWithNext" | "paragraphRuleAbove" | "paragraphRuleBelow" | "paragraphTabStops" | "paragraphListType" | "paragraphBulletCharacter" | "paragraphNumberingFormat" | "textFrameColumnCount" | "textFrameColumnGutter" | "textFrameColumnBalance" | "textFrameVerticalJustification" | "textFrameAutoSizing" | "textFrameFirstBaseline" | "textWrapInvert" | "frameFittingReferencePoint" | "frameAutoFit" | "frameStrokeType" | "frameStrokeJoin" | "frameStrokeMiterLimit" | "frameStrokeAlignment" | "frameStrokeGapColor" | "frameStrokeGapTint" | "frameStrokeDashArray" | "frameCornerOptionTopLeft" | "frameCornerOptionTopRight" | "frameCornerOptionBottomLeft" | "frameCornerOptionBottomRight" | "frameCornerRadiusTopLeft" | "frameCornerRadiusTopRight" | "frameCornerRadiusBottomLeft" | "frameCornerRadiusBottomRight" | "frameRotationAngle" | "frameScaleX" | "frameScaleY" | "frameFlipH" | "frameFlipV" | "frameOverprintFill" | "frameOverprintStroke" | "frameInnerShadowEnabled" | "frameInnerShadowBlendMode" | "frameInnerShadowColor" | "frameInnerShadowOpacity" | "frameInnerShadowAngle" | "frameInnerShadowDistance" | "frameInnerShadowSize" | "frameInnerShadowChoke" | "frameInnerShadowNoise" | "frameOuterGlowEnabled" | "frameOuterGlowBlendMode" | "frameOuterGlowColor" | "frameOuterGlowOpacity" | "frameOuterGlowSpread" | "frameOuterGlowSize" | "frameOuterGlowNoise" | "frameInnerGlowEnabled" | "frameInnerGlowBlendMode" | "frameInnerGlowColor" | "frameInnerGlowOpacity" | "frameInnerGlowChoke" | "frameInnerGlowSize" | "frameInnerGlowSource" | "frameInnerGlowNoise" | "frameBevelEnabled" | "frameBevelStyle" | "frameBevelTechnique" | "frameBevelDepth" | "frameBevelDirection" | "frameBevelSize" | "frameBevelSoften" | "frameBevelAngle" | "frameBevelAltitude" | "frameBevelHighlightColor" | "frameBevelShadowColor" | "frameBevelHighlightOpacity" | "frameBevelShadowOpacity" | "frameSatinEnabled" | "frameSatinBlendMode" | "frameSatinColor" | "frameSatinOpacity" | "frameSatinAngle" | "frameSatinDistance" | "frameSatinSize" | "frameSatinInvert" | "frameFeatherEnabled" | "frameFeatherWidth" | "frameFeatherCornerType" | "frameFeatherNoise" | "frameFeatherChoke" | "frameDirectionalFeatherEnabled" | "frameDirectionalFeatherLeftWidth" | "frameDirectionalFeatherRightWidth" | "frameDirectionalFeatherTopWidth" | "frameDirectionalFeatherBottomWidth" | "frameDirectionalFeatherAngle" | "frameDirectionalFeatherNoise" | "frameDirectionalFeatherChoke" | "frameBlendMode" | "nextTextFrame" | "previousTextFrame" | "cellFillColor" | "cellFillTint" | "cellInsetTop" | "cellInsetLeft" | "cellInsetBottom" | "cellInsetRight" | "cellVerticalJustification" | "cellTopEdgeStrokeColor" | "cellTopEdgeStrokeWeight" | "cellTopEdgeStrokeTint" | "cellBottomEdgeStrokeColor" | "cellBottomEdgeStrokeWeight" | "cellBottomEdgeStrokeTint" | "cellLeftEdgeStrokeColor" | "cellLeftEdgeStrokeWeight" | "cellLeftEdgeStrokeTint" | "cellRightEdgeStrokeColor" | "cellRightEdgeStrokeWeight" | "cellRightEdgeStrokeTint" | "tableRowCount" | "tableColumnCount" | "pluginMetadata" | "anchoredPosition" | "anchorPoint" | "anchoredXOffset" | "anchoredYOffset" | "anchoredHorizontalReference" | "anchoredVerticalReference" | "anchoredHorizontalAlignment" | "anchoredVerticalAlignment" | "anchoredSpineRelative" | "anchoredLockPosition" | "elementVisible" | "elementLocked" | "frameStrokeStartArrowhead" | "frameStrokeEndArrowhead";
|
|
394
427
|
|
|
395
428
|
/**
|
|
396
429
|
* W0.2 — wire mirror of `paged_model::ParagraphRule` (the
|
|
@@ -441,6 +474,60 @@ export type FieldKind = "pageNumber" | "nextPageNumber" | { placeholder: { plugi
|
|
|
441
474
|
*/
|
|
442
475
|
export type GuideOrientationSpec = "vertical" | "horizontal";
|
|
443
476
|
|
|
477
|
+
/**
|
|
478
|
+
* W1.13 — cell qualifier for a content address that points INTO a
|
|
479
|
+
* table cell rather than the story\'s main paragraph flow.
|
|
480
|
+
*
|
|
481
|
+
* ## The two-stream addressing model
|
|
482
|
+
*
|
|
483
|
+
* Table-cell text is stored out of band on `Table.cells[].paragraphs`
|
|
484
|
+
* (see `idml_import`), disjoint from `Story.paragraphs`. So a content
|
|
485
|
+
* address needs to say *which* paragraph stream its byte offsets index:
|
|
486
|
+
*
|
|
487
|
+
* - `ContentSelection.cell == None` — offsets are story-local bytes
|
|
488
|
+
* over `story.paragraphs` (the body flow). Unchanged from before.
|
|
489
|
+
* - `ContentSelection.cell == Some(addr)` — offsets are CELL-LOCAL
|
|
490
|
+
* bytes over `cell.paragraphs`, under the same story-offset contract
|
|
491
|
+
* (run bytes + one synthetic `\\n` per inter-paragraph boundary,
|
|
492
|
+
* counted within the cell). The owning story is still `story_id`;
|
|
493
|
+
* `addr` picks the cell within that story\'s table.
|
|
494
|
+
*
|
|
495
|
+
* `table_id` / `row` / `col` are the SAME identifiers the hit-test
|
|
496
|
+
* surface emits (`HitResult.table_context` / `TableHitContext`) and
|
|
497
|
+
* that the renderer stamps onto cell `LineLayout`s
|
|
498
|
+
* (`paged_renderer::CellAddr`), so a hit that lands in a cell hands
|
|
499
|
+
* back exactly the qualifier the caret/edit address needs — no second
|
|
500
|
+
* query.
|
|
501
|
+
*
|
|
502
|
+
* ## Why a qualifier and not a re-numbered flat offset
|
|
503
|
+
*
|
|
504
|
+
* The alternative — fold cells into one flat story-offset space via a
|
|
505
|
+
* reserved high-bit/region scheme — was rejected: it makes
|
|
506
|
+
* `shift_for_insert`/`shift_for_delete`, undo inverse offsets, and the
|
|
507
|
+
* existing body-only consumers (BreakRecord, the A/B harness, every
|
|
508
|
+
* `RequestWordBounds`/`RequestLineBounds` caller) all have to learn the
|
|
509
|
+
* encoding, and a single arithmetic slip silently routes an edit into
|
|
510
|
+
* the wrong cell. The qualifier keeps body addressing byte-identical
|
|
511
|
+
* (the field defaults to `None` and is `#[serde(default)]`, so it
|
|
512
|
+
* rides v35 additively — old senders omit it) and makes \"which stream\
|
|
513
|
+
* an explicit, type-checked decision. Undo is trivially correct
|
|
514
|
+
* because the inverse op carries the same `cell` qualifier.
|
|
515
|
+
*/
|
|
516
|
+
export interface TextCellAddr {
|
|
517
|
+
/**
|
|
518
|
+
* `<Table Self=\"...\">` id within `story_id`.
|
|
519
|
+
*/
|
|
520
|
+
tableId: string;
|
|
521
|
+
/**
|
|
522
|
+
* Template row (0-based); span-origin row for spanned cells.
|
|
523
|
+
*/
|
|
524
|
+
row: number;
|
|
525
|
+
/**
|
|
526
|
+
* Column (0-based); span-origin column for spanned cells.
|
|
527
|
+
*/
|
|
528
|
+
col: number;
|
|
529
|
+
}
|
|
530
|
+
|
|
444
531
|
/**
|
|
445
532
|
* W1.20 — `(parent_group_id, index_within_parent_members)` carried by
|
|
446
533
|
* a `GroupSpec` when a group must be (re)created nested inside another
|
|
@@ -567,6 +654,8 @@ export type StyleScope = "paragraph" | "character";
|
|
|
567
654
|
*/
|
|
568
655
|
export type ZOrderTarget = "front" | "back" | "forward" | "backward" | { index: number };
|
|
569
656
|
|
|
657
|
+
export type PageId = string;
|
|
658
|
+
|
|
570
659
|
|
|
571
660
|
export class Inspector {
|
|
572
661
|
free(): void;
|
|
Binary file
|