@sliiu/present-renderer 0.0.0-stage → 0.1.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 (126) hide show
  1. package/COPYRIGHT +5 -0
  2. package/LICENSE +661 -0
  3. package/THIRD-PARTY-NOTICES.md +221 -0
  4. package/dist/cjs/arrow-geom.js +38 -0
  5. package/dist/cjs/canvas-backend.js +1368 -0
  6. package/dist/cjs/cell-borders.js +25 -0
  7. package/dist/cjs/chart-canvas.js +1059 -0
  8. package/dist/cjs/chart-ex-render.js +275 -0
  9. package/dist/cjs/chart-geom.js +313 -0
  10. package/dist/cjs/chart-svg.js +1110 -0
  11. package/dist/cjs/compose.js +74 -0
  12. package/dist/cjs/effect-clip.js +652 -0
  13. package/dist/cjs/entrance-hide.js +63 -0
  14. package/dist/cjs/font-stack.js +103 -0
  15. package/dist/cjs/hit-geom.js +50 -0
  16. package/dist/cjs/hybrid-backend.js +93 -0
  17. package/dist/cjs/hybrid-segments.js +54 -0
  18. package/dist/cjs/index.js +70 -0
  19. package/dist/cjs/linked-src.js +116 -0
  20. package/dist/cjs/metafile-preview.js +142 -0
  21. package/dist/cjs/model3d-frame.js +199 -0
  22. package/dist/cjs/model3d-render.js +78 -0
  23. package/dist/cjs/morph-transition.js +57 -0
  24. package/dist/cjs/node-affine.js +79 -0
  25. package/dist/cjs/ole-render.js +291 -0
  26. package/dist/cjs/package.json +1 -0
  27. package/dist/cjs/paint-canvas.js +701 -0
  28. package/dist/cjs/paint-svg.js +674 -0
  29. package/dist/cjs/scene-node.js +762 -0
  30. package/dist/cjs/selection.js +130 -0
  31. package/dist/cjs/shape-effects.js +66 -0
  32. package/dist/cjs/shape-front.js +38 -0
  33. package/dist/cjs/stage-chrome.js +15 -0
  34. package/dist/cjs/svg-backend.js +2172 -0
  35. package/dist/cjs/text-autofit.js +48 -0
  36. package/dist/cjs/text-hit.js +284 -0
  37. package/dist/cjs/text-layout.js +408 -0
  38. package/dist/cjs/text-shared.js +238 -0
  39. package/dist/cjs/text-stacked.js +82 -0
  40. package/dist/cjs/text-warp.js +377 -0
  41. package/dist/cjs/text-wordart.js +33 -0
  42. package/dist/cjs/video-frame.js +113 -0
  43. package/dist/cjs/webgl-model3d-backend.js +285 -0
  44. package/dist/cjs/webgl-shape-backend.js +360 -0
  45. package/dist/esm/arrow-geom.js +33 -0
  46. package/dist/esm/canvas-backend.js +1363 -0
  47. package/dist/esm/cell-borders.js +21 -0
  48. package/dist/esm/chart-canvas.js +1056 -0
  49. package/dist/esm/chart-ex-render.js +261 -0
  50. package/dist/esm/chart-geom.js +296 -0
  51. package/dist/esm/chart-svg.js +1107 -0
  52. package/dist/esm/compose.js +71 -0
  53. package/dist/esm/effect-clip.js +648 -0
  54. package/dist/esm/entrance-hide.js +59 -0
  55. package/dist/esm/font-stack.js +100 -0
  56. package/dist/esm/hit-geom.js +45 -0
  57. package/dist/esm/hybrid-backend.js +89 -0
  58. package/dist/esm/hybrid-segments.js +51 -0
  59. package/dist/esm/index.js +24 -0
  60. package/dist/esm/linked-src.js +109 -0
  61. package/dist/esm/metafile-preview.js +135 -0
  62. package/dist/esm/model3d-frame.js +158 -0
  63. package/dist/esm/model3d-render.js +73 -0
  64. package/dist/esm/morph-transition.js +54 -0
  65. package/dist/esm/node-affine.js +71 -0
  66. package/dist/esm/ole-render.js +286 -0
  67. package/dist/esm/paint-canvas.js +693 -0
  68. package/dist/esm/paint-svg.js +670 -0
  69. package/dist/esm/scene-node.js +750 -0
  70. package/dist/esm/selection.js +122 -0
  71. package/dist/esm/shape-effects.js +60 -0
  72. package/dist/esm/shape-front.js +35 -0
  73. package/dist/esm/stage-chrome.js +12 -0
  74. package/dist/esm/svg-backend.js +2168 -0
  75. package/dist/esm/text-autofit.js +44 -0
  76. package/dist/esm/text-hit.js +280 -0
  77. package/dist/esm/text-layout.js +400 -0
  78. package/dist/esm/text-shared.js +221 -0
  79. package/dist/esm/text-stacked.js +78 -0
  80. package/dist/esm/text-warp.js +371 -0
  81. package/dist/esm/text-wordart.js +30 -0
  82. package/dist/esm/video-frame.js +109 -0
  83. package/dist/esm/webgl-model3d-backend.js +248 -0
  84. package/dist/esm/webgl-shape-backend.js +323 -0
  85. package/dist/types/arrow-geom.d.ts +10 -0
  86. package/dist/types/canvas-backend.d.ts +55 -0
  87. package/dist/types/cell-borders.d.ts +9 -0
  88. package/dist/types/chart-canvas.d.ts +2 -0
  89. package/dist/types/chart-ex-render.d.ts +79 -0
  90. package/dist/types/chart-geom.d.ts +112 -0
  91. package/dist/types/chart-svg.d.ts +2 -0
  92. package/dist/types/compose.d.ts +2 -0
  93. package/dist/types/effect-clip.d.ts +10 -0
  94. package/dist/types/entrance-hide.d.ts +16 -0
  95. package/dist/types/font-stack.d.ts +9 -0
  96. package/dist/types/hit-geom.d.ts +15 -0
  97. package/dist/types/hybrid-backend.d.ts +21 -0
  98. package/dist/types/hybrid-segments.d.ts +11 -0
  99. package/dist/types/index.d.ts +24 -0
  100. package/dist/types/linked-src.d.ts +13 -0
  101. package/dist/types/metafile-preview.d.ts +11 -0
  102. package/dist/types/model3d-frame.d.ts +8 -0
  103. package/dist/types/model3d-render.d.ts +4 -0
  104. package/dist/types/morph-transition.d.ts +15 -0
  105. package/dist/types/node-affine.d.ts +22 -0
  106. package/dist/types/ole-render.d.ts +7 -0
  107. package/dist/types/paint-canvas.d.ts +22 -0
  108. package/dist/types/paint-svg.d.ts +19 -0
  109. package/dist/types/scene-node.d.ts +128 -0
  110. package/dist/types/selection.d.ts +22 -0
  111. package/dist/types/shape-effects.d.ts +13 -0
  112. package/dist/types/shape-front.d.ts +4 -0
  113. package/dist/types/stage-chrome.d.ts +8 -0
  114. package/dist/types/svg-backend.d.ts +88 -0
  115. package/dist/types/text-autofit.d.ts +7 -0
  116. package/dist/types/text-hit.d.ts +7 -0
  117. package/dist/types/text-layout.d.ts +35 -0
  118. package/dist/types/text-shared.d.ts +86 -0
  119. package/dist/types/text-stacked.d.ts +11 -0
  120. package/dist/types/text-warp.d.ts +37 -0
  121. package/dist/types/text-wordart.d.ts +18 -0
  122. package/dist/types/video-frame.d.ts +2 -0
  123. package/dist/types/webgl-model3d-backend.d.ts +25 -0
  124. package/dist/types/webgl-shape-backend.d.ts +33 -0
  125. package/package.json +33 -4
  126. package/README.md +0 -3
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.composeSlideForRender = composeSlideForRender;
4
+ // 阶段 2.1:把 slide.layoutRef 指向的 master/layout 装饰 shape 实时合成为渲染 layer,
5
+ // 替代阶段 1 中 parser 把副本注入 slide.layers[0]/[1] 的做法。这使得 deck 级
6
+ // `Presentation.masters[]` 成为单一数据源:editor 改 master 后所有 slide 自动联动。
7
+ //
8
+ // id 命名约定(必须保持兼容!):
9
+ // - master 装饰 shape 在 SceneNode 树里的 id 仍然是 `master__sp_N`
10
+ // - layout 装饰 shape 的 id 仍然是 `layout__sp_N`
11
+ // 这与历史 parser 注入路径一致,OOXML animation runtime / SceneNode lookup 路径不需要改。
12
+ //
13
+ // 合成顺序:master shapes(底) → layout shapes → slide.layers[*](顶)。
14
+ // 母版/版式 shapes 只取「非占位符」(占位符在 slide 内通过 inherit 已合并)。
15
+ function composeSlideForRender(slide, masters) {
16
+ const out = [];
17
+ // ECMA-376 sld@showMasterSp defaults to true. When false, hide master/layout
18
+ // graphics (non-placeholders). Placeholders are never composed here.
19
+ const showMasterSp = slide.showMasterSp !== false;
20
+ if (showMasterSp && slide.layoutRef && masters && masters.length > 0) {
21
+ const master = masters.find((m) => m.id === slide.layoutRef.masterId);
22
+ const layout = master?.layouts?.find((l) => l.id === slide.layoutRef.layoutId);
23
+ if (master) {
24
+ const ms = prefixShapeIds(nonPlaceholderShapes(master.shapes), "master__", true);
25
+ if (ms.length > 0) {
26
+ out.push({ id: "master", name: "Master", visible: true, locked: true, shapes: ms });
27
+ }
28
+ }
29
+ if (layout) {
30
+ const ls = prefixShapeIds(nonPlaceholderShapes(layout.shapes), "layout__", true);
31
+ if (ls.length > 0) {
32
+ out.push({ id: "layout", name: "Layout", visible: true, locked: true, shapes: ls });
33
+ }
34
+ }
35
+ }
36
+ // 注意 slide.layers 阶段 2 起只剩 "main";为兼容历史 parser 输出(仍可能含 "master"/"layout"),
37
+ // 这里显式过滤,避免重复渲染装饰。
38
+ for (const l of slide.layers) {
39
+ if (l.id === "master" || l.id === "layout")
40
+ continue;
41
+ out.push(l);
42
+ }
43
+ return out;
44
+ }
45
+ function nonPlaceholderShapes(shapes) {
46
+ return shapes.filter((s) => !s.placeholder);
47
+ }
48
+ // 与 parser/parse.ts 的 prefixShapeIds 行为一致 —— 给装饰 shape 一个 prefix
49
+ // 防止与 slide 内部 sp_N 冲突;同时强制 locked=true 保护它在 hit-test 时不被点中。
50
+ function prefixShapeIds(shapes, prefix, forceLock) {
51
+ // 收集这批 shapes 用到的所有 id(顶层 + group children 递归),
52
+ // 只 prefix 这些 id —— 兼容旧逻辑:跟 parser 那侧基于 slideIdSet 的判定等价(在
53
+ // composer 这边 master 装饰本身不会出现在 slide 主体里,所以全部 prefix 即可)。
54
+ const collected = new Set();
55
+ const collectIds = (s) => {
56
+ collected.add(s.id);
57
+ if (s.kind === "group")
58
+ for (const c of s.children)
59
+ collectIds(c);
60
+ };
61
+ for (const s of shapes)
62
+ collectIds(s);
63
+ const rename = (id) => (collected.has(id) ? `${prefix}${id}` : id);
64
+ const walk = (s) => {
65
+ const next = { ...s, id: rename(s.id) };
66
+ if (forceLock)
67
+ next.locked = true;
68
+ if (s.kind === "group") {
69
+ next.children = s.children.map(walk);
70
+ }
71
+ return next;
72
+ };
73
+ return shapes.map(walk);
74
+ }