@byfungsi/lipat 0.1.0 → 0.2.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/README.md CHANGED
@@ -25,7 +25,7 @@ npm run verify
25
25
  npm run dev
26
26
  ```
27
27
 
28
- `npm run dev` builds the package and prints the Vite URL. The demo includes semantic editing, drag/resize and keyboard nudges, history, source JSON, Markdown/PPTX upload, presentation playback, an agent edit and a read-only attachment preview. The library ships no global CSS.
28
+ `npm run dev` builds the package and prints the Vite URL. The demo includes semantic editing, drag/resize and keyboard nudges, history, source JSON, Markdown/PPTX upload, presentation playback, an agent edit and a read-only attachment preview. The library ships no global CSS. Choose **Animation sample** to try fade, rise, slide and zoom, or [open it directly](https://byfungsi.github.io/lipat/playground/index.html?sample=animations).
29
29
 
30
30
  ## Create and edit
31
31
 
@@ -116,26 +116,27 @@ Five provider-neutral tools implement inspect → edit → compile → preview
116
116
 
117
117
  ## Public entrypoints
118
118
 
119
- | Import | Responsibility |
120
- | ----------------- | --------------------------------------------------------------------- |
121
- | `@byfungsi/lipat` | WASM initialization, creation, presets, common types and PPTX helpers |
122
- | `/model` | Portable document, scene, operation and diagnostic contracts |
123
- | `/core` | Runtime, history, subscriptions, presets and Markdown authoring |
124
- | `/pptx` | Independent PPTX byte adapter |
125
- | `/wasm` | Explicit Rust engine initialization |
126
- | `/render` | Headless SVG and self-contained HTML output |
127
- | `/react` | Provider, hooks, canvas, inspector, editor, preview and player |
128
- | `/agent` | Tool definitions, execution and generated JSON schemas |
129
- | `/reveal` | Optional reveal.js-compatible markup and synchronization |
130
- | `/lipat.wasm` | Bundled binary asset, emitted/copied by the host's bundler |
131
-
132
- ESM and TypeScript declarations are supplied. React 18.3/19 is an optional peer and is isolated to `/react`. The npm package has no runtime JavaScript dependencies. Source releases and documentation are published from the byfungsi/lipat repository.
119
+ | Import | Responsibility |
120
+ | ----------------- | ---------------------------------------------------------------------- |
121
+ | `@byfungsi/lipat` | WASM initialization, creation, presets, common types and PPTX helpers |
122
+ | `/model` | Portable document, scene, operation and diagnostic contracts |
123
+ | `/core` | Runtime, history, subscriptions, presets and Markdown authoring |
124
+ | `/pptx` | Independent PPTX byte adapter |
125
+ | `/wasm` | Explicit Rust engine initialization |
126
+ | `/render` | Headless SVG and self-contained HTML output |
127
+ | `/motion` | Optional Motion browser playback adapter (install `motion` separately) |
128
+ | `/react` | Provider, hooks, canvas, inspector, editor, preview and player |
129
+ | `/agent` | Tool definitions, execution and generated JSON schemas |
130
+ | `/reveal` | Optional reveal.js-compatible markup and synchronization |
131
+ | `/lipat.wasm` | Bundled binary asset, emitted/copied by the host's bundler |
132
+
133
+ ESM and TypeScript declarations are supplied. React 18.3/19 and Motion 14.6+ are optional peers isolated to `/react` and `/motion`. The npm package has no runtime JavaScript dependencies. Source releases and documentation are published from the byfungsi/lipat repository.
133
134
 
134
135
  ## Architecture and compatibility
135
136
 
136
137
  Read [architecture](docs/architecture.md), [creation](docs/creation.md), [API](docs/api.md), [WASM and native usage](docs/wasm.md), [support and Nori parity](docs/support.md), [React](docs/react.md), [import/export](docs/pptx.md), and [verification](docs/verification.md).
137
138
 
138
- Flow layout uses deterministic font metrics. Defaults are approximate and reported as diagnostics; supply measured glyph widths for accurate wrapping. Browser font rasterization can differ from the compiler. Supported PPTX content includes ordinary text/runs, basic shapes, raster images, simple tables, notes, slide ordering and inherited placeholder geometry. Charts, SmartArt, media, animations and arbitrary lossless PPTX rewriting are outside this version. Import/export warnings make these boundaries visible.
139
+ Flow layout uses deterministic font metrics. Defaults are approximate and reported as diagnostics; supply measured glyph widths for accurate wrapping. Browser font rasterization can differ from the compiler. Supported PPTX content includes ordinary text/runs, basic shapes, raster images, simple tables, notes, slide ordering and inherited placeholder geometry. Browser entrance effects are available through the optional [Motion adapter](docs/animations.md). Charts, SmartArt, media, native PPTX animations and arbitrary lossless PPTX rewriting are outside this version. Import/export warnings make these boundaries visible.
139
140
 
140
141
  ## Native Rust
141
142
 
package/dist/agent.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { D as DeckRuntime } from './deck-runtime-BpZw0FJ_.js';
1
+ import { D as DeckRuntime } from './deck-runtime-30b2wHTB.js';
2
2
  import { LipatResult, LipatEngine } from './model.js';
3
3
 
4
4
  /** Provider-neutral tool description; register with the agent framework of your choice. */
@@ -62,6 +62,10 @@ declare const deckSchemas: {
62
62
  $schema: string;
63
63
  additionalProperties: boolean;
64
64
  definitions: {
65
+ AnimationEasing: {
66
+ enum: string[];
67
+ type: string;
68
+ };
65
69
  Asset: {
66
70
  additionalProperties: boolean;
67
71
  properties: {
@@ -86,6 +90,41 @@ declare const deckSchemas: {
86
90
  required: string[];
87
91
  type: string;
88
92
  };
93
+ EntranceAnimation: {
94
+ additionalProperties: boolean;
95
+ description: string;
96
+ properties: {
97
+ delayMs: {
98
+ default: number;
99
+ format: string;
100
+ maximum: number;
101
+ minimum: number;
102
+ type: string;
103
+ };
104
+ durationMs: {
105
+ default: number;
106
+ format: string;
107
+ maximum: number;
108
+ minimum: number;
109
+ type: string;
110
+ };
111
+ easing: {
112
+ allOf: {
113
+ $ref: string;
114
+ }[];
115
+ default: string;
116
+ };
117
+ effect: {
118
+ $ref: string;
119
+ };
120
+ };
121
+ required: string[];
122
+ type: string;
123
+ };
124
+ EntranceEffect: {
125
+ enum: string[];
126
+ type: string;
127
+ };
89
128
  Frame: {
90
129
  additionalProperties: boolean;
91
130
  properties: {
@@ -440,6 +479,15 @@ declare const deckSchemas: {
440
479
  type: string;
441
480
  })[];
442
481
  properties: {
482
+ animation: {
483
+ anyOf: ({
484
+ $ref: string;
485
+ type?: never;
486
+ } | {
487
+ type: string;
488
+ $ref?: never;
489
+ })[];
490
+ };
443
491
  frame: {
444
492
  anyOf: ({
445
493
  $ref: string;
@@ -662,6 +710,10 @@ declare const deckSchemas: {
662
710
  operation: {
663
711
  $schema: string;
664
712
  definitions: {
713
+ AnimationEasing: {
714
+ enum: string[];
715
+ type: string;
716
+ };
665
717
  Asset: {
666
718
  additionalProperties: boolean;
667
719
  properties: {
@@ -686,6 +738,41 @@ declare const deckSchemas: {
686
738
  required: string[];
687
739
  type: string;
688
740
  };
741
+ EntranceAnimation: {
742
+ additionalProperties: boolean;
743
+ description: string;
744
+ properties: {
745
+ delayMs: {
746
+ default: number;
747
+ format: string;
748
+ maximum: number;
749
+ minimum: number;
750
+ type: string;
751
+ };
752
+ durationMs: {
753
+ default: number;
754
+ format: string;
755
+ maximum: number;
756
+ minimum: number;
757
+ type: string;
758
+ };
759
+ easing: {
760
+ allOf: {
761
+ $ref: string;
762
+ }[];
763
+ default: string;
764
+ };
765
+ effect: {
766
+ $ref: string;
767
+ };
768
+ };
769
+ required: string[];
770
+ type: string;
771
+ };
772
+ EntranceEffect: {
773
+ enum: string[];
774
+ type: string;
775
+ };
689
776
  Frame: {
690
777
  additionalProperties: boolean;
691
778
  properties: {
@@ -1086,6 +1173,15 @@ declare const deckSchemas: {
1086
1173
  type: string;
1087
1174
  })[];
1088
1175
  properties: {
1176
+ animation: {
1177
+ anyOf: ({
1178
+ $ref: string;
1179
+ type?: never;
1180
+ } | {
1181
+ type: string;
1182
+ $ref?: never;
1183
+ })[];
1184
+ };
1089
1185
  frame: {
1090
1186
  anyOf: ({
1091
1187
  $ref: string;
@@ -1248,6 +1344,8 @@ declare const deckSchemas: {
1248
1344
  };
1249
1345
  style?: never;
1250
1346
  frame?: never;
1347
+ animation?: never;
1348
+ step?: never;
1251
1349
  layout?: never;
1252
1350
  node?: never;
1253
1351
  index?: never;
@@ -1278,6 +1376,8 @@ declare const deckSchemas: {
1278
1376
  };
1279
1377
  text?: never;
1280
1378
  frame?: never;
1379
+ animation?: never;
1380
+ step?: never;
1281
1381
  layout?: never;
1282
1382
  node?: never;
1283
1383
  index?: never;
@@ -1314,6 +1414,80 @@ declare const deckSchemas: {
1314
1414
  };
1315
1415
  text?: never;
1316
1416
  style?: never;
1417
+ animation?: never;
1418
+ step?: never;
1419
+ layout?: never;
1420
+ node?: never;
1421
+ index?: never;
1422
+ parentId?: never;
1423
+ slide?: never;
1424
+ slideId?: never;
1425
+ background?: never;
1426
+ hidden?: never;
1427
+ notes?: never;
1428
+ title?: never;
1429
+ theme?: never;
1430
+ asset?: never;
1431
+ assetId?: never;
1432
+ };
1433
+ required: string[];
1434
+ type: string;
1435
+ } | {
1436
+ properties: {
1437
+ animation: {
1438
+ anyOf: ({
1439
+ $ref: string;
1440
+ type?: never;
1441
+ } | {
1442
+ type: string;
1443
+ $ref?: never;
1444
+ })[];
1445
+ };
1446
+ nodeId: {
1447
+ type: string;
1448
+ };
1449
+ type: {
1450
+ enum: string[];
1451
+ type: string;
1452
+ };
1453
+ text?: never;
1454
+ style?: never;
1455
+ frame?: never;
1456
+ step?: never;
1457
+ layout?: never;
1458
+ node?: never;
1459
+ index?: never;
1460
+ parentId?: never;
1461
+ slide?: never;
1462
+ slideId?: never;
1463
+ background?: never;
1464
+ hidden?: never;
1465
+ notes?: never;
1466
+ title?: never;
1467
+ theme?: never;
1468
+ asset?: never;
1469
+ assetId?: never;
1470
+ };
1471
+ required: string[];
1472
+ type: string;
1473
+ } | {
1474
+ properties: {
1475
+ nodeId: {
1476
+ type: string;
1477
+ };
1478
+ step: {
1479
+ format: string;
1480
+ minimum: number;
1481
+ type: string[];
1482
+ };
1483
+ type: {
1484
+ enum: string[];
1485
+ type: string;
1486
+ };
1487
+ text?: never;
1488
+ style?: never;
1489
+ frame?: never;
1490
+ animation?: never;
1317
1491
  layout?: never;
1318
1492
  node?: never;
1319
1493
  index?: never;
@@ -1345,6 +1519,8 @@ declare const deckSchemas: {
1345
1519
  text?: never;
1346
1520
  style?: never;
1347
1521
  frame?: never;
1522
+ animation?: never;
1523
+ step?: never;
1348
1524
  node?: never;
1349
1525
  index?: never;
1350
1526
  parentId?: never;
@@ -1375,6 +1551,8 @@ declare const deckSchemas: {
1375
1551
  text?: never;
1376
1552
  style?: never;
1377
1553
  frame?: never;
1554
+ animation?: never;
1555
+ step?: never;
1378
1556
  layout?: never;
1379
1557
  index?: never;
1380
1558
  parentId?: never;
@@ -1411,6 +1589,8 @@ declare const deckSchemas: {
1411
1589
  text?: never;
1412
1590
  style?: never;
1413
1591
  frame?: never;
1592
+ animation?: never;
1593
+ step?: never;
1414
1594
  layout?: never;
1415
1595
  slide?: never;
1416
1596
  slideId?: never;
@@ -1436,6 +1616,8 @@ declare const deckSchemas: {
1436
1616
  text?: never;
1437
1617
  style?: never;
1438
1618
  frame?: never;
1619
+ animation?: never;
1620
+ step?: never;
1439
1621
  layout?: never;
1440
1622
  node?: never;
1441
1623
  index?: never;
@@ -1472,6 +1654,8 @@ declare const deckSchemas: {
1472
1654
  text?: never;
1473
1655
  style?: never;
1474
1656
  frame?: never;
1657
+ animation?: never;
1658
+ step?: never;
1475
1659
  layout?: never;
1476
1660
  node?: never;
1477
1661
  slide?: never;
@@ -1504,6 +1688,8 @@ declare const deckSchemas: {
1504
1688
  text?: never;
1505
1689
  style?: never;
1506
1690
  frame?: never;
1691
+ animation?: never;
1692
+ step?: never;
1507
1693
  layout?: never;
1508
1694
  node?: never;
1509
1695
  parentId?: never;
@@ -1531,6 +1717,8 @@ declare const deckSchemas: {
1531
1717
  text?: never;
1532
1718
  style?: never;
1533
1719
  frame?: never;
1720
+ animation?: never;
1721
+ step?: never;
1534
1722
  layout?: never;
1535
1723
  node?: never;
1536
1724
  index?: never;
@@ -1564,6 +1752,8 @@ declare const deckSchemas: {
1564
1752
  text?: never;
1565
1753
  style?: never;
1566
1754
  frame?: never;
1755
+ animation?: never;
1756
+ step?: never;
1567
1757
  layout?: never;
1568
1758
  node?: never;
1569
1759
  parentId?: never;
@@ -1607,6 +1797,8 @@ declare const deckSchemas: {
1607
1797
  text?: never;
1608
1798
  style?: never;
1609
1799
  frame?: never;
1800
+ animation?: never;
1801
+ step?: never;
1610
1802
  layout?: never;
1611
1803
  node?: never;
1612
1804
  index?: never;
@@ -1631,6 +1823,8 @@ declare const deckSchemas: {
1631
1823
  text?: never;
1632
1824
  style?: never;
1633
1825
  frame?: never;
1826
+ animation?: never;
1827
+ step?: never;
1634
1828
  layout?: never;
1635
1829
  node?: never;
1636
1830
  index?: never;
@@ -1659,6 +1853,8 @@ declare const deckSchemas: {
1659
1853
  text?: never;
1660
1854
  style?: never;
1661
1855
  frame?: never;
1856
+ animation?: never;
1857
+ step?: never;
1662
1858
  layout?: never;
1663
1859
  node?: never;
1664
1860
  index?: never;
@@ -1687,6 +1883,8 @@ declare const deckSchemas: {
1687
1883
  text?: never;
1688
1884
  style?: never;
1689
1885
  frame?: never;
1886
+ animation?: never;
1887
+ step?: never;
1690
1888
  layout?: never;
1691
1889
  node?: never;
1692
1890
  index?: never;
package/dist/agent.js CHANGED
@@ -1,5 +1,5 @@
1
- import { encodeAssetBytes } from './chunk-JII3PWXC.js';
2
- import { renderDeckHtml, renderSlideSvg } from './chunk-WY2QAOOU.js';
1
+ import { encodeAssetBytes } from './chunk-NBLRI3RU.js';
2
+ import { renderDeckHtml, renderSlideSvg } from './chunk-VSEJNCEF.js';
3
3
 
4
4
  // ../agent/src/schemas.json
5
5
  var schemas_default = {
@@ -50,6 +50,10 @@ var schemas_default = {
50
50
  $schema: "http://json-schema.org/draft-07/schema#",
51
51
  additionalProperties: false,
52
52
  definitions: {
53
+ AnimationEasing: {
54
+ enum: ["easeOut", "easeInOut", "linear"],
55
+ type: "string"
56
+ },
53
57
  Asset: {
54
58
  additionalProperties: false,
55
59
  properties: {
@@ -74,6 +78,43 @@ var schemas_default = {
74
78
  required: ["data", "id", "mimeType"],
75
79
  type: "object"
76
80
  },
81
+ EntranceAnimation: {
82
+ additionalProperties: false,
83
+ description: "Portable entrance effects; milliseconds are serialized, never executable Motion props.",
84
+ properties: {
85
+ delayMs: {
86
+ default: 0,
87
+ format: "double",
88
+ maximum: 6e4,
89
+ minimum: 0,
90
+ type: "number"
91
+ },
92
+ durationMs: {
93
+ default: 350,
94
+ format: "double",
95
+ maximum: 1e4,
96
+ minimum: 0,
97
+ type: "number"
98
+ },
99
+ easing: {
100
+ allOf: [
101
+ {
102
+ $ref: "#/definitions/AnimationEasing"
103
+ }
104
+ ],
105
+ default: "easeOut"
106
+ },
107
+ effect: {
108
+ $ref: "#/definitions/EntranceEffect"
109
+ }
110
+ },
111
+ required: ["effect"],
112
+ type: "object"
113
+ },
114
+ EntranceEffect: {
115
+ enum: ["fade", "rise", "slide", "zoom"],
116
+ type: "string"
117
+ },
77
118
  Frame: {
78
119
  additionalProperties: false,
79
120
  properties: {
@@ -324,6 +365,16 @@ var schemas_default = {
324
365
  }
325
366
  ],
326
367
  properties: {
368
+ animation: {
369
+ anyOf: [
370
+ {
371
+ $ref: "#/definitions/EntranceAnimation"
372
+ },
373
+ {
374
+ type: "null"
375
+ }
376
+ ]
377
+ },
327
378
  frame: {
328
379
  anyOf: [
329
380
  {
@@ -566,6 +617,10 @@ var schemas_default = {
566
617
  operation: {
567
618
  $schema: "http://json-schema.org/draft-07/schema#",
568
619
  definitions: {
620
+ AnimationEasing: {
621
+ enum: ["easeOut", "easeInOut", "linear"],
622
+ type: "string"
623
+ },
569
624
  Asset: {
570
625
  additionalProperties: false,
571
626
  properties: {
@@ -590,6 +645,43 @@ var schemas_default = {
590
645
  required: ["data", "id", "mimeType"],
591
646
  type: "object"
592
647
  },
648
+ EntranceAnimation: {
649
+ additionalProperties: false,
650
+ description: "Portable entrance effects; milliseconds are serialized, never executable Motion props.",
651
+ properties: {
652
+ delayMs: {
653
+ default: 0,
654
+ format: "double",
655
+ maximum: 6e4,
656
+ minimum: 0,
657
+ type: "number"
658
+ },
659
+ durationMs: {
660
+ default: 350,
661
+ format: "double",
662
+ maximum: 1e4,
663
+ minimum: 0,
664
+ type: "number"
665
+ },
666
+ easing: {
667
+ allOf: [
668
+ {
669
+ $ref: "#/definitions/AnimationEasing"
670
+ }
671
+ ],
672
+ default: "easeOut"
673
+ },
674
+ effect: {
675
+ $ref: "#/definitions/EntranceEffect"
676
+ }
677
+ },
678
+ required: ["effect"],
679
+ type: "object"
680
+ },
681
+ EntranceEffect: {
682
+ enum: ["fade", "rise", "slide", "zoom"],
683
+ type: "string"
684
+ },
593
685
  Frame: {
594
686
  additionalProperties: false,
595
687
  properties: {
@@ -901,6 +993,16 @@ var schemas_default = {
901
993
  }
902
994
  ],
903
995
  properties: {
996
+ animation: {
997
+ anyOf: [
998
+ {
999
+ $ref: "#/definitions/EntranceAnimation"
1000
+ },
1001
+ {
1002
+ type: "null"
1003
+ }
1004
+ ]
1005
+ },
904
1006
  frame: {
905
1007
  anyOf: [
906
1008
  {
@@ -1121,6 +1223,47 @@ var schemas_default = {
1121
1223
  required: ["nodeId", "type"],
1122
1224
  type: "object"
1123
1225
  },
1226
+ {
1227
+ properties: {
1228
+ animation: {
1229
+ anyOf: [
1230
+ {
1231
+ $ref: "#/definitions/EntranceAnimation"
1232
+ },
1233
+ {
1234
+ type: "null"
1235
+ }
1236
+ ]
1237
+ },
1238
+ nodeId: {
1239
+ type: "string"
1240
+ },
1241
+ type: {
1242
+ enum: ["setAnimation"],
1243
+ type: "string"
1244
+ }
1245
+ },
1246
+ required: ["nodeId", "type"],
1247
+ type: "object"
1248
+ },
1249
+ {
1250
+ properties: {
1251
+ nodeId: {
1252
+ type: "string"
1253
+ },
1254
+ step: {
1255
+ format: "uint32",
1256
+ minimum: 0,
1257
+ type: ["integer", "null"]
1258
+ },
1259
+ type: {
1260
+ enum: ["setStep"],
1261
+ type: "string"
1262
+ }
1263
+ },
1264
+ required: ["nodeId", "type"],
1265
+ type: "object"
1266
+ },
1124
1267
  {
1125
1268
  properties: {
1126
1269
  layout: {
@@ -1341,7 +1484,7 @@ function createAgentTools(deck, options) {
1341
1484
  const tools = [
1342
1485
  {
1343
1486
  name: "lipat_inspect",
1344
- description: "Read deck revision, stable slide/node identities and compact semantic content.",
1487
+ description: "Read deck revision, stable slide/node identities, compact semantic content and explicit reveal steps/animations.",
1345
1488
  inputSchema: {
1346
1489
  type: "object",
1347
1490
  additionalProperties: false,