@deckflow/deckuse 1.2.1 → 1.3.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 (281) hide show
  1. package/README.es.md +342 -0
  2. package/README.fr.md +342 -0
  3. package/README.ja.md +342 -0
  4. package/README.ko.md +342 -0
  5. package/README.md +46 -8
  6. package/README.pt-BR.md +342 -0
  7. package/README.ru.md +342 -0
  8. package/README.zh-CN.md +367 -0
  9. package/assets/default.docx +0 -0
  10. package/assets/default.pptx +0 -0
  11. package/dist/bin.js +183 -19
  12. package/dist/bin.js.map +1 -1
  13. package/dist/core/adapter.d.ts +24 -0
  14. package/dist/core/adapter.d.ts.map +1 -0
  15. package/dist/core/adapter.js +20 -0
  16. package/dist/core/adapter.js.map +1 -0
  17. package/dist/core/executor.d.ts +24 -0
  18. package/dist/core/executor.d.ts.map +1 -0
  19. package/dist/core/executor.js +65 -0
  20. package/dist/core/executor.js.map +1 -0
  21. package/dist/core/index.d.ts +7 -0
  22. package/dist/core/index.d.ts.map +1 -0
  23. package/dist/core/index.js +7 -0
  24. package/dist/core/index.js.map +1 -0
  25. package/dist/core/length.d.ts +27 -0
  26. package/dist/core/length.d.ts.map +1 -0
  27. package/dist/core/length.js +63 -0
  28. package/dist/core/length.js.map +1 -0
  29. package/dist/core/measure.d.ts +24 -0
  30. package/dist/core/measure.d.ts.map +1 -0
  31. package/dist/core/measure.js +79 -0
  32. package/dist/core/measure.js.map +1 -0
  33. package/dist/core/not-implemented.d.ts +3 -0
  34. package/dist/core/not-implemented.d.ts.map +1 -0
  35. package/dist/core/not-implemented.js +12 -0
  36. package/dist/core/not-implemented.js.map +1 -0
  37. package/dist/core/schema.d.ts +3035 -0
  38. package/dist/core/schema.d.ts.map +1 -0
  39. package/dist/core/schema.js +798 -0
  40. package/dist/core/schema.js.map +1 -0
  41. package/dist/default-template.d.ts +8 -0
  42. package/dist/default-template.d.ts.map +1 -0
  43. package/dist/default-template.js +29 -0
  44. package/dist/default-template.js.map +1 -0
  45. package/dist/docx/adapter.d.ts +29 -0
  46. package/dist/docx/adapter.d.ts.map +1 -0
  47. package/dist/docx/adapter.js +442 -0
  48. package/dist/docx/adapter.js.map +1 -0
  49. package/dist/docx/addressing.d.ts +18 -0
  50. package/dist/docx/addressing.d.ts.map +1 -0
  51. package/dist/docx/addressing.js +111 -0
  52. package/dist/docx/addressing.js.map +1 -0
  53. package/dist/docx/blank.d.ts +4 -0
  54. package/dist/docx/blank.d.ts.map +1 -0
  55. package/dist/docx/blank.js +75 -0
  56. package/dist/docx/blank.js.map +1 -0
  57. package/dist/docx/index-sync.d.ts +7 -0
  58. package/dist/docx/index-sync.d.ts.map +1 -0
  59. package/dist/docx/index-sync.js +24 -0
  60. package/dist/docx/index-sync.js.map +1 -0
  61. package/dist/docx/index.d.ts +5 -0
  62. package/dist/docx/index.d.ts.map +1 -0
  63. package/dist/docx/index.js +4 -0
  64. package/dist/docx/index.js.map +1 -0
  65. package/dist/docx/indexer.d.ts +41 -0
  66. package/dist/docx/indexer.d.ts.map +1 -0
  67. package/dist/docx/indexer.js +353 -0
  68. package/dist/docx/indexer.js.map +1 -0
  69. package/dist/docx/mutations.d.ts +5 -0
  70. package/dist/docx/mutations.d.ts.map +1 -0
  71. package/dist/docx/mutations.js +311 -0
  72. package/dist/docx/mutations.js.map +1 -0
  73. package/dist/docx/paragraphs.d.ts +26 -0
  74. package/dist/docx/paragraphs.d.ts.map +1 -0
  75. package/dist/docx/paragraphs.js +314 -0
  76. package/dist/docx/paragraphs.js.map +1 -0
  77. package/dist/docx/properties.d.ts +23 -0
  78. package/dist/docx/properties.d.ts.map +1 -0
  79. package/dist/docx/properties.js +414 -0
  80. package/dist/docx/properties.js.map +1 -0
  81. package/dist/docx/tables.d.ts +4 -0
  82. package/dist/docx/tables.d.ts.map +1 -0
  83. package/dist/docx/tables.js +64 -0
  84. package/dist/docx/tables.js.map +1 -0
  85. package/dist/docx/text-spans.d.ts +25 -0
  86. package/dist/docx/text-spans.d.ts.map +1 -0
  87. package/dist/docx/text-spans.js +142 -0
  88. package/dist/docx/text-spans.js.map +1 -0
  89. package/dist/docx/types.d.ts +27 -0
  90. package/dist/docx/types.d.ts.map +1 -0
  91. package/dist/docx/types.js +2 -0
  92. package/dist/docx/types.js.map +1 -0
  93. package/dist/docx/workspace.d.ts +20 -0
  94. package/dist/docx/workspace.d.ts.map +1 -0
  95. package/dist/docx/workspace.js +145 -0
  96. package/dist/docx/workspace.js.map +1 -0
  97. package/dist/docx/xml.d.ts +18 -0
  98. package/dist/docx/xml.d.ts.map +1 -0
  99. package/dist/docx/xml.js +87 -0
  100. package/dist/docx/xml.js.map +1 -0
  101. package/dist/edition-config/index.d.ts +25 -0
  102. package/dist/edition-config/index.d.ts.map +1 -0
  103. package/dist/edition-config/index.js +22 -0
  104. package/dist/edition-config/index.js.map +1 -0
  105. package/dist/edition.d.ts +2 -2
  106. package/dist/edition.d.ts.map +1 -1
  107. package/dist/edition.js +1 -1
  108. package/dist/edition.js.map +1 -1
  109. package/dist/help.d.ts.map +1 -1
  110. package/dist/help.js +124 -32
  111. package/dist/help.js.map +1 -1
  112. package/dist/index.d.ts +1 -1
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +6 -6
  115. package/dist/index.js.map +1 -1
  116. package/dist/key/index.d.ts +2 -0
  117. package/dist/key/index.d.ts.map +1 -0
  118. package/dist/key/index.js +3 -0
  119. package/dist/key/index.js.map +1 -0
  120. package/dist/monitor-daemon.d.ts +21 -8
  121. package/dist/monitor-daemon.d.ts.map +1 -1
  122. package/dist/monitor-daemon.js +189 -51
  123. package/dist/monitor-daemon.js.map +1 -1
  124. package/dist/monitor-registry.d.ts +34 -0
  125. package/dist/monitor-registry.d.ts.map +1 -0
  126. package/dist/monitor-registry.js +191 -0
  127. package/dist/monitor-registry.js.map +1 -0
  128. package/dist/monitor.js +1 -1
  129. package/dist/monitor.js.map +1 -1
  130. package/dist/numbers/index.d.ts +2 -0
  131. package/dist/numbers/index.d.ts.map +1 -0
  132. package/dist/numbers/index.js +3 -0
  133. package/dist/numbers/index.js.map +1 -0
  134. package/dist/opc/index.d.ts +90 -0
  135. package/dist/opc/index.d.ts.map +1 -0
  136. package/dist/opc/index.js +569 -0
  137. package/dist/opc/index.js.map +1 -0
  138. package/dist/pptx/adapter.d.ts +167 -0
  139. package/dist/pptx/adapter.d.ts.map +1 -0
  140. package/dist/pptx/adapter.js +807 -0
  141. package/dist/pptx/adapter.js.map +1 -0
  142. package/dist/pptx/addressing.d.ts +45 -0
  143. package/dist/pptx/addressing.d.ts.map +1 -0
  144. package/dist/pptx/addressing.js +428 -0
  145. package/dist/pptx/addressing.js.map +1 -0
  146. package/dist/pptx/align.d.ts +24 -0
  147. package/dist/pptx/align.d.ts.map +1 -0
  148. package/dist/pptx/align.js +112 -0
  149. package/dist/pptx/align.js.map +1 -0
  150. package/dist/pptx/chart-classify.d.ts +10 -0
  151. package/dist/pptx/chart-classify.d.ts.map +1 -0
  152. package/dist/pptx/chart-classify.js +58 -0
  153. package/dist/pptx/chart-classify.js.map +1 -0
  154. package/dist/pptx/chart.d.ts +42 -0
  155. package/dist/pptx/chart.d.ts.map +1 -0
  156. package/dist/pptx/chart.js +614 -0
  157. package/dist/pptx/chart.js.map +1 -0
  158. package/dist/pptx/edition-extension.d.ts +25 -0
  159. package/dist/pptx/edition-extension.d.ts.map +1 -0
  160. package/dist/pptx/edition-extension.js +10 -0
  161. package/dist/pptx/edition-extension.js.map +1 -0
  162. package/dist/pptx/edition.d.ts +20 -0
  163. package/dist/pptx/edition.d.ts.map +1 -0
  164. package/dist/pptx/edition.js +69 -0
  165. package/dist/pptx/edition.js.map +1 -0
  166. package/dist/pptx/elements.d.ts +12 -0
  167. package/dist/pptx/elements.d.ts.map +1 -0
  168. package/dist/pptx/elements.js +224 -0
  169. package/dist/pptx/elements.js.map +1 -0
  170. package/dist/pptx/hyperlink.d.ts +7 -0
  171. package/dist/pptx/hyperlink.d.ts.map +1 -0
  172. package/dist/pptx/hyperlink.js +81 -0
  173. package/dist/pptx/hyperlink.js.map +1 -0
  174. package/dist/pptx/index-sync.d.ts +7 -0
  175. package/dist/pptx/index-sync.d.ts.map +1 -0
  176. package/dist/pptx/index-sync.js +24 -0
  177. package/dist/pptx/index-sync.js.map +1 -0
  178. package/dist/pptx/index.d.ts +10 -0
  179. package/dist/pptx/index.d.ts.map +1 -0
  180. package/dist/pptx/index.js +7 -0
  181. package/dist/pptx/index.js.map +1 -0
  182. package/dist/pptx/indexer.d.ts +19 -0
  183. package/dist/pptx/indexer.d.ts.map +1 -0
  184. package/dist/pptx/indexer.js +319 -0
  185. package/dist/pptx/indexer.js.map +1 -0
  186. package/dist/pptx/layout-ref.d.ts +41 -0
  187. package/dist/pptx/layout-ref.d.ts.map +1 -0
  188. package/dist/pptx/layout-ref.js +145 -0
  189. package/dist/pptx/layout-ref.js.map +1 -0
  190. package/dist/pptx/media.d.ts +15 -0
  191. package/dist/pptx/media.d.ts.map +1 -0
  192. package/dist/pptx/media.js +145 -0
  193. package/dist/pptx/media.js.map +1 -0
  194. package/dist/pptx/mutations.d.ts +11 -0
  195. package/dist/pptx/mutations.d.ts.map +1 -0
  196. package/dist/pptx/mutations.js +1111 -0
  197. package/dist/pptx/mutations.js.map +1 -0
  198. package/dist/pptx/picture.d.ts +25 -0
  199. package/dist/pptx/picture.d.ts.map +1 -0
  200. package/dist/pptx/picture.js +118 -0
  201. package/dist/pptx/picture.js.map +1 -0
  202. package/dist/pptx/placeholder-role.d.ts +19 -0
  203. package/dist/pptx/placeholder-role.d.ts.map +1 -0
  204. package/dist/pptx/placeholder-role.js +71 -0
  205. package/dist/pptx/placeholder-role.js.map +1 -0
  206. package/dist/pptx/properties.d.ts +13 -0
  207. package/dist/pptx/properties.d.ts.map +1 -0
  208. package/dist/pptx/properties.js +587 -0
  209. package/dist/pptx/properties.js.map +1 -0
  210. package/dist/pptx/resolve-properties.d.ts +17 -0
  211. package/dist/pptx/resolve-properties.d.ts.map +1 -0
  212. package/dist/pptx/resolve-properties.js +571 -0
  213. package/dist/pptx/resolve-properties.js.map +1 -0
  214. package/dist/pptx/slide-size.d.ts +9 -0
  215. package/dist/pptx/slide-size.d.ts.map +1 -0
  216. package/dist/pptx/slide-size.js +29 -0
  217. package/dist/pptx/slide-size.js.map +1 -0
  218. package/dist/pptx/slides.d.ts +15 -0
  219. package/dist/pptx/slides.d.ts.map +1 -0
  220. package/dist/pptx/slides.js +236 -0
  221. package/dist/pptx/slides.js.map +1 -0
  222. package/dist/pptx/table-measure.d.ts +43 -0
  223. package/dist/pptx/table-measure.d.ts.map +1 -0
  224. package/dist/pptx/table-measure.js +70 -0
  225. package/dist/pptx/table-measure.js.map +1 -0
  226. package/dist/pptx/table.d.ts +23 -0
  227. package/dist/pptx/table.d.ts.map +1 -0
  228. package/dist/pptx/table.js +529 -0
  229. package/dist/pptx/table.js.map +1 -0
  230. package/dist/pptx/types.d.ts +27 -0
  231. package/dist/pptx/types.d.ts.map +1 -0
  232. package/dist/pptx/types.js +2 -0
  233. package/dist/pptx/types.js.map +1 -0
  234. package/dist/pptx/workspace.d.ts +23 -0
  235. package/dist/pptx/workspace.d.ts.map +1 -0
  236. package/dist/pptx/workspace.js +148 -0
  237. package/dist/pptx/workspace.js.map +1 -0
  238. package/dist/pptx/xml.d.ts +67 -0
  239. package/dist/pptx/xml.d.ts.map +1 -0
  240. package/dist/pptx/xml.js +355 -0
  241. package/dist/pptx/xml.js.map +1 -0
  242. package/dist/render.d.ts.map +1 -1
  243. package/dist/render.js +14 -2
  244. package/dist/render.js.map +1 -1
  245. package/dist/version.d.ts +1 -1
  246. package/dist/version.js +1 -1
  247. package/dist/workspace/git.d.ts +7 -0
  248. package/dist/workspace/git.d.ts.map +1 -0
  249. package/dist/workspace/git.js +82 -0
  250. package/dist/workspace/git.js.map +1 -0
  251. package/dist/workspace/index.d.ts +7 -0
  252. package/dist/workspace/index.d.ts.map +1 -0
  253. package/dist/workspace/index.js +7 -0
  254. package/dist/workspace/index.js.map +1 -0
  255. package/dist/workspace/lock.d.ts +3 -0
  256. package/dist/workspace/lock.d.ts.map +1 -0
  257. package/dist/workspace/lock.js +35 -0
  258. package/dist/workspace/lock.js.map +1 -0
  259. package/dist/workspace/metadata.d.ts +4 -0
  260. package/dist/workspace/metadata.d.ts.map +1 -0
  261. package/dist/workspace/metadata.js +21 -0
  262. package/dist/workspace/metadata.js.map +1 -0
  263. package/dist/workspace/operations.d.ts +14 -0
  264. package/dist/workspace/operations.d.ts.map +1 -0
  265. package/dist/workspace/operations.js +35 -0
  266. package/dist/workspace/operations.js.map +1 -0
  267. package/dist/workspace/paths.d.ts +11 -0
  268. package/dist/workspace/paths.d.ts.map +1 -0
  269. package/dist/workspace/paths.js +12 -0
  270. package/dist/workspace/paths.js.map +1 -0
  271. package/dist/workspace/revision.d.ts +6 -0
  272. package/dist/workspace/revision.d.ts.map +1 -0
  273. package/dist/workspace/revision.js +15 -0
  274. package/dist/workspace/revision.js.map +1 -0
  275. package/dist/xlsx/index.d.ts +2 -0
  276. package/dist/xlsx/index.d.ts.map +1 -0
  277. package/dist/xlsx/index.js +3 -0
  278. package/dist/xlsx/index.js.map +1 -0
  279. package/package.json +48 -27
  280. package/schema/command.schema.json +2399 -0
  281. package/dist/.tsbuildinfo +0 -1
@@ -0,0 +1,571 @@
1
+ import { cNvPrIdOf } from './addressing.js';
2
+ import { NS, REL, attr, children, cNvPr, descendants, first, root, textOf } from './xml.js';
3
+ const EMU_PER_PT = 12700;
4
+ const SHAPE_LOCAL_NAMES = new Set(['sp', 'pic', 'graphicFrame', 'cxnSp', 'grpSp']);
5
+ const directChild = (node, localName) => children(node).find((child) => child.localName === localName);
6
+ const shapeByCNvPrId = (doc, id) => descendants(doc).find((node) => node.localName != null &&
7
+ SHAPE_LOCAL_NAMES.has(node.localName) &&
8
+ attr(cNvPr(node), 'id') === id);
9
+ const nodeForItem = (doc, item) => {
10
+ if (['slide', 'notes', 'master', 'layout', 'theme'].includes(item.kind))
11
+ return root(doc);
12
+ const id = cNvPrIdOf(item);
13
+ return id ? shapeByCNvPrId(doc, id) : undefined;
14
+ };
15
+ const prop = (effective, direct, source, unit) => {
16
+ const inherited = direct === null || direct === undefined;
17
+ return {
18
+ effective: effective ?? null,
19
+ direct: direct ?? null,
20
+ inherited,
21
+ ...(source ? { source } : inherited ? { source: { scope: 'default' } } : {}),
22
+ ...(unit ? { unit } : {}),
23
+ };
24
+ };
25
+ const readSrgb = (node) => {
26
+ if (!node)
27
+ return undefined;
28
+ const srgb = first(node, 'srgbClr');
29
+ const val = attr(srgb, 'val');
30
+ if (val)
31
+ return `#${val.toUpperCase()}`;
32
+ return undefined;
33
+ };
34
+ const readSchemeColor = (node, themeColors) => {
35
+ if (!node)
36
+ return undefined;
37
+ const scheme = first(node, 'schemeClr');
38
+ const name = attr(scheme, 'val');
39
+ if (!name)
40
+ return undefined;
41
+ const mapped = themeColors.get(name) ?? themeColors.get(name.toLowerCase());
42
+ return mapped ? `#${mapped.replace(/^#/, '').toUpperCase()}` : undefined;
43
+ };
44
+ const readFillColor = (container, themeColors) => {
45
+ if (!container)
46
+ return undefined;
47
+ if (directChild(container, 'noFill'))
48
+ return { kind: 'none', color: null, transparency: null };
49
+ const solid = directChild(container, 'solidFill');
50
+ if (solid) {
51
+ const color = readSrgb(solid) ?? readSchemeColor(solid, themeColors) ?? null;
52
+ const alpha = attr(first(solid, 'alpha') ?? first(solid, 'srgbClr'), 'val');
53
+ // alpha on srgbClr child
54
+ const alphaNode = descendants(solid, 'alpha')[0];
55
+ const alphaVal = attr(alphaNode, 'val');
56
+ let transparency = null;
57
+ if (alphaVal !== undefined) {
58
+ const n = Number(alphaVal);
59
+ if (Number.isFinite(n))
60
+ transparency = Math.round((1 - n / 100000) * 100);
61
+ }
62
+ void alpha;
63
+ return { kind: 'solid', color, transparency };
64
+ }
65
+ return undefined;
66
+ };
67
+ const loadThemeColors = (archive, themePart) => {
68
+ const map = new Map();
69
+ if (!themePart || !archive.getPart(themePart))
70
+ return map;
71
+ const doc = archive.readXml(themePart);
72
+ const scheme = first(doc, 'clrScheme');
73
+ if (!scheme)
74
+ return map;
75
+ for (const child of children(scheme)) {
76
+ const name = child.localName;
77
+ if (!name)
78
+ continue;
79
+ const srgb = attr(first(child, 'srgbClr'), 'val');
80
+ const sys = attr(first(child, 'sysClr'), 'lastClr');
81
+ const val = srgb ?? sys;
82
+ if (val) {
83
+ map.set(name, val.toUpperCase());
84
+ map.set(name.toLowerCase(), val.toUpperCase());
85
+ }
86
+ }
87
+ return map;
88
+ };
89
+ const loadThemeFonts = (archive, themePart) => {
90
+ if (!themePart || !archive.getPart(themePart))
91
+ return {};
92
+ const doc = archive.readXml(themePart);
93
+ const major = attr(first(first(doc, 'majorFont') ?? doc, 'latin'), 'typeface');
94
+ const minor = attr(first(first(doc, 'minorFont') ?? doc, 'latin'), 'typeface');
95
+ return { ...(major ? { major } : {}), ...(minor ? { minor } : {}) };
96
+ };
97
+ const resolveStyleChain = (archive, slidePart) => {
98
+ const slideRels = archive.getRelationships(slidePart);
99
+ const layoutRel = slideRels.find((r) => r.type === REL.layout);
100
+ const layoutPart = layoutRel?.resolvedTarget;
101
+ let masterPart;
102
+ let themePart;
103
+ if (layoutPart) {
104
+ const layoutRels = archive.getRelationships(layoutPart);
105
+ const masterRel = layoutRels.find((r) => r.type === REL.slideMaster);
106
+ masterPart = masterRel?.resolvedTarget;
107
+ }
108
+ if (masterPart) {
109
+ const masterRels = archive.getRelationships(masterPart);
110
+ const themeRel = masterRels.find((r) => r.type === REL.theme);
111
+ themePart = themeRel?.resolvedTarget;
112
+ }
113
+ if (!themePart) {
114
+ const theme = [...archive.parts.keys()].find((name) => name.startsWith('/ppt/theme/') && name.endsWith('.xml'));
115
+ themePart = theme;
116
+ }
117
+ return {
118
+ ...(layoutPart
119
+ ? {
120
+ layoutPart,
121
+ layoutTarget: `layout:${layoutPart
122
+ .split('/')
123
+ .pop()
124
+ ?.replace(/\.xml$/, '') ?? layoutPart}`,
125
+ }
126
+ : {}),
127
+ ...(masterPart
128
+ ? {
129
+ masterPart,
130
+ masterTarget: `master:${masterPart
131
+ .split('/')
132
+ .pop()
133
+ ?.replace(/\.xml$/, '') ?? masterPart}`,
134
+ }
135
+ : {}),
136
+ ...(themePart ? { themePart } : {}),
137
+ };
138
+ };
139
+ const placeholderOf = (node) => {
140
+ const ph = first(node, 'ph');
141
+ if (!ph)
142
+ return undefined;
143
+ const type = attr(ph, 'type') ?? 'body';
144
+ const idx = attr(ph, 'idx');
145
+ return { type, ...(idx !== undefined ? { idx } : {}) };
146
+ };
147
+ const findPlaceholderShape = (doc, type, idx) => {
148
+ for (const node of descendants(doc)) {
149
+ if (!node.localName || !SHAPE_LOCAL_NAMES.has(node.localName))
150
+ continue;
151
+ const ph = placeholderOf(node);
152
+ if (!ph)
153
+ continue;
154
+ if (idx !== undefined && ph.idx === idx)
155
+ return node;
156
+ if (type && ph.type === type && (idx === undefined || ph.idx === undefined))
157
+ return node;
158
+ }
159
+ return undefined;
160
+ };
161
+ const txStyleLevel = (masterDoc, styleKind, level) => {
162
+ const styles = first(masterDoc, 'txStyles');
163
+ if (!styles)
164
+ return undefined;
165
+ const blockName = styleKind === 'title' ? 'titleStyle' : styleKind === 'body' ? 'bodyStyle' : 'otherStyle';
166
+ const block = directChild(styles, blockName) ?? first(styles, blockName);
167
+ if (!block)
168
+ return undefined;
169
+ if (level === 0)
170
+ return (directChild(block, 'defPPr') ??
171
+ first(block, 'defPPr') ??
172
+ directChild(block, 'lvl1pPr') ??
173
+ first(block, 'lvl1pPr'));
174
+ const name = `lvl${level + 1}pPr`;
175
+ return directChild(block, name) ?? first(block, name);
176
+ };
177
+ const styleKindForPlaceholder = (type) => {
178
+ if (!type)
179
+ return 'body';
180
+ if (type === 'title' || type === 'ctrTitle')
181
+ return 'title';
182
+ if (type === 'body' || type === 'obj' || type === 'subTitle')
183
+ return 'body';
184
+ return 'other';
185
+ };
186
+ const readFontFromRPr = (rPr, themeFonts, themeColors) => {
187
+ if (!rPr)
188
+ return {};
189
+ const sz = attr(rPr, 'sz');
190
+ const size = sz !== undefined ? Number(sz) / 100 : undefined;
191
+ const latin = attr(directChild(rPr, 'latin'), 'typeface');
192
+ let family = latin;
193
+ if (family?.startsWith('+mj-'))
194
+ family = themeFonts.major;
195
+ if (family?.startsWith('+mn-'))
196
+ family = themeFonts.minor;
197
+ const bold = attr(rPr, 'b');
198
+ const italic = attr(rPr, 'i');
199
+ const underline = attr(rPr, 'u');
200
+ const solid = directChild(rPr, 'solidFill');
201
+ const color = solid ? (readSrgb(solid) ?? readSchemeColor(solid, themeColors)) : undefined;
202
+ return {
203
+ ...(family ? { family } : {}),
204
+ ...(size !== undefined && Number.isFinite(size) ? { size } : {}),
205
+ ...(bold === '1' || bold === 'true'
206
+ ? { weight: 'bold' }
207
+ : bold === '0'
208
+ ? { weight: 'regular' }
209
+ : {}),
210
+ ...(italic === '1' || italic === 'true'
211
+ ? { italic: true }
212
+ : italic === '0'
213
+ ? { italic: false }
214
+ : {}),
215
+ ...(underline && underline !== 'none' ? { underline: true } : {}),
216
+ ...(color ? { color } : {}),
217
+ };
218
+ };
219
+ const firstRunRPr = (node) => {
220
+ const run = descendants(node, 'r')[0];
221
+ return run ? directChild(run, 'rPr') : undefined;
222
+ };
223
+ const defRPrFromLevel = (level) => {
224
+ if (!level)
225
+ return undefined;
226
+ return directChild(level, 'defRPr') ?? first(level, 'defRPr');
227
+ };
228
+ const readTransform = (node) => {
229
+ const xfrm = first(node, 'xfrm');
230
+ const off = xfrm ? first(xfrm, 'off') : undefined;
231
+ const ext = xfrm ? first(xfrm, 'ext') : undefined;
232
+ const rot = attr(xfrm, 'rot');
233
+ return {
234
+ x: attr(off, 'x') !== undefined ? Number(attr(off, 'x')) : null,
235
+ y: attr(off, 'y') !== undefined ? Number(attr(off, 'y')) : null,
236
+ width: attr(ext, 'cx') !== undefined ? Number(attr(ext, 'cx')) : null,
237
+ height: attr(ext, 'cy') !== undefined ? Number(attr(ext, 'cy')) : null,
238
+ rotation: rot !== undefined ? Number(rot) / 60000 : null,
239
+ 'flip.x': attr(xfrm, 'flipH') === '1',
240
+ 'flip.y': attr(xfrm, 'flipV') === '1',
241
+ };
242
+ };
243
+ const filterProps = (all, props, mode, includeProvenance) => {
244
+ const keys = props?.length ? props : Object.keys(all);
245
+ const out = {};
246
+ for (const key of keys) {
247
+ const value = all[key];
248
+ if (!value)
249
+ continue;
250
+ if (mode === 'effective') {
251
+ out[key] = includeProvenance
252
+ ? {
253
+ effective: value.effective,
254
+ inherited: value.inherited,
255
+ ...(value.source ? { source: value.source } : {}),
256
+ ...(value.unit ? { unit: value.unit } : {}),
257
+ }
258
+ : value.effective;
259
+ }
260
+ else if (mode === 'direct') {
261
+ out[key] = includeProvenance
262
+ ? {
263
+ direct: value.direct,
264
+ inherited: value.inherited,
265
+ ...(value.unit ? { unit: value.unit } : {}),
266
+ }
267
+ : value.direct;
268
+ }
269
+ else {
270
+ out[key] = includeProvenance
271
+ ? value
272
+ : { effective: value.effective, direct: value.direct, inherited: value.inherited };
273
+ }
274
+ }
275
+ return out;
276
+ };
277
+ export function resolveProperties(archive, resolved, options = {}) {
278
+ const mode = options.resolve ?? 'both';
279
+ const includeProvenance = options.provenance !== false;
280
+ const warnings = [];
281
+ const item = resolved.item;
282
+ const doc = archive.readXml(item.partUri);
283
+ const node = nodeForItem(doc, item);
284
+ if (!node) {
285
+ warnings.push('Element XML node was not found; returning empty properties');
286
+ return {
287
+ target: resolved.target,
288
+ uid: resolved.uid,
289
+ ...(item.name ? { name: item.name } : {}),
290
+ properties: {},
291
+ warnings,
292
+ };
293
+ }
294
+ if (item.kind === 'slide' ||
295
+ item.kind === 'master' ||
296
+ item.kind === 'layout' ||
297
+ item.kind === 'theme') {
298
+ const properties = {
299
+ name: prop(item.name ?? null, item.name ?? null, { scope: 'local', target: resolved.target }),
300
+ };
301
+ return {
302
+ target: resolved.target,
303
+ uid: resolved.uid,
304
+ ...(item.name ? { name: item.name } : {}),
305
+ properties: filterProps(properties, options.props, mode, includeProvenance),
306
+ warnings,
307
+ };
308
+ }
309
+ const chain = resolveStyleChain(archive, item.partUri);
310
+ const themeColors = loadThemeColors(archive, chain.themePart);
311
+ const themeFonts = loadThemeFonts(archive, chain.themePart);
312
+ const all = {};
313
+ const name = attr(cNvPr(node), 'name') ?? null;
314
+ all['name'] = prop(name, name, { scope: 'local', target: resolved.target, path: 'name' });
315
+ const nvPr = first(node, 'nvPr');
316
+ const hidden = attr(nvPr, 'hidden') === '1';
317
+ all['visible'] = prop(!hidden, !hidden, {
318
+ scope: 'local',
319
+ target: resolved.target,
320
+ path: 'visible',
321
+ });
322
+ const xfrm = readTransform(node);
323
+ for (const [key, value] of Object.entries(xfrm)) {
324
+ const unit = ['x', 'y', 'width', 'height'].includes(key)
325
+ ? 'emu'
326
+ : key === 'rotation'
327
+ ? 'deg'
328
+ : undefined;
329
+ all[key] = prop(value, value, { scope: 'local', target: resolved.target, path: key }, unit);
330
+ }
331
+ const spPr = directChild(node, 'spPr') ?? first(node, 'spPr');
332
+ const directFill = readFillColor(spPr, themeColors);
333
+ all['fill.kind'] = prop(directFill?.kind ?? null, directFill?.kind ?? null, directFill
334
+ ? { scope: 'local', target: resolved.target, path: 'fill.kind' }
335
+ : { scope: 'default' });
336
+ all['fill.color'] = prop(directFill?.color ?? null, directFill?.color ?? null, directFill?.color
337
+ ? { scope: 'local', target: resolved.target, path: 'fill.color' }
338
+ : { scope: 'default' });
339
+ all['fill.transparency'] = prop(directFill?.transparency ?? null, directFill?.transparency ?? null, directFill?.transparency !== null && directFill?.transparency !== undefined
340
+ ? { scope: 'local', target: resolved.target, path: 'fill.transparency' }
341
+ : { scope: 'default' });
342
+ const ln = spPr ? directChild(spPr, 'ln') : undefined;
343
+ if (ln && directChild(ln, 'noFill')) {
344
+ all['line.kind'] = prop('none', 'none', {
345
+ scope: 'local',
346
+ target: resolved.target,
347
+ path: 'line.kind',
348
+ });
349
+ all['line.color'] = prop(null, null, {
350
+ scope: 'local',
351
+ target: resolved.target,
352
+ path: 'line.color',
353
+ });
354
+ all['line.width'] = prop(null, null, { scope: 'local', target: resolved.target, path: 'line.width' }, 'pt');
355
+ }
356
+ else if (ln) {
357
+ const lineFill = readFillColor(ln, themeColors);
358
+ const w = attr(ln, 'w');
359
+ all['line.kind'] = prop('solid', 'solid', {
360
+ scope: 'local',
361
+ target: resolved.target,
362
+ path: 'line.kind',
363
+ });
364
+ all['line.color'] = prop(lineFill?.color ?? null, lineFill?.color ?? null, {
365
+ scope: 'local',
366
+ target: resolved.target,
367
+ path: 'line.color',
368
+ });
369
+ all['line.width'] = prop(w !== undefined ? Number(w) / EMU_PER_PT : null, w !== undefined ? Number(w) / EMU_PER_PT : null, { scope: 'local', target: resolved.target, path: 'line.width' }, 'pt');
370
+ }
371
+ else {
372
+ all['line.kind'] = prop(null, null, { scope: 'default' });
373
+ all['line.color'] = prop(null, null, { scope: 'default' });
374
+ all['line.width'] = prop(null, null, { scope: 'default' }, 'pt');
375
+ }
376
+ const text = textOf(node).replace(/\s+/g, ' ').trim();
377
+ all['text.value'] = prop(text || null, text || null, {
378
+ scope: 'local',
379
+ target: resolved.target,
380
+ path: 'text.value',
381
+ });
382
+ const directRPr = firstRunRPr(node);
383
+ const directFont = readFontFromRPr(directRPr, themeFonts, themeColors);
384
+ const ph = placeholderOf(node);
385
+ let inheritedFont = {};
386
+ let inheritedSource;
387
+ if (!directFont.size || !directFont.family || !directFont.color) {
388
+ // Try layout placeholder shape defRPr / list style, then master txStyles.
389
+ if (ph && chain.layoutPart && archive.getPart(chain.layoutPart)) {
390
+ const layoutDoc = archive.readXml(chain.layoutPart);
391
+ const layoutShape = findPlaceholderShape(layoutDoc, ph.type, ph.idx);
392
+ if (layoutShape) {
393
+ const layoutRPr = firstRunRPr(layoutShape) ??
394
+ defRPrFromLevel(first(layoutShape, 'lstStyle')
395
+ ? first(first(layoutShape, 'lstStyle'), 'defPPr')
396
+ : undefined);
397
+ const fromLayout = readFontFromRPr(layoutRPr, themeFonts, themeColors);
398
+ inheritedFont = { ...fromLayout, ...inheritedFont };
399
+ if (fromLayout.size || fromLayout.family || fromLayout.color) {
400
+ inheritedSource = {
401
+ scope: 'layout',
402
+ target: chain.layoutTarget,
403
+ path: 'placeholder.font',
404
+ };
405
+ }
406
+ }
407
+ }
408
+ if (chain.masterPart && archive.getPart(chain.masterPart)) {
409
+ const masterDoc = archive.readXml(chain.masterPart);
410
+ const styleKind = styleKindForPlaceholder(ph?.type);
411
+ const level = txStyleLevel(masterDoc, styleKind, 0);
412
+ const fromMaster = readFontFromRPr(defRPrFromLevel(level), themeFonts, themeColors);
413
+ inheritedFont = { ...fromMaster, ...inheritedFont };
414
+ if (!inheritedSource && (fromMaster.size || fromMaster.family || fromMaster.color)) {
415
+ inheritedSource = {
416
+ scope: 'master',
417
+ target: chain.masterTarget,
418
+ path: `textStyles.${styleKind}.level.0.font`,
419
+ };
420
+ }
421
+ // Also match placeholder shape on master.
422
+ if (ph) {
423
+ const masterShape = findPlaceholderShape(masterDoc, ph.type, ph.idx);
424
+ if (masterShape) {
425
+ const masterRPr = firstRunRPr(masterShape);
426
+ const fromMasterShape = readFontFromRPr(masterRPr, themeFonts, themeColors);
427
+ inheritedFont = { ...fromMasterShape, ...inheritedFont };
428
+ }
429
+ }
430
+ }
431
+ if (!inheritedFont.family && themeFonts.minor) {
432
+ inheritedFont = { ...inheritedFont, family: themeFonts.minor };
433
+ if (!inheritedSource)
434
+ inheritedSource = { scope: 'theme', target: 'theme', path: 'fontScheme.minorFont' };
435
+ }
436
+ }
437
+ const mergeFont = (key, propName, unit) => {
438
+ const direct = directFont[key] ?? null;
439
+ const effective = (directFont[key] ?? inheritedFont[key] ?? null);
440
+ const source = direct !== null && direct !== undefined
441
+ ? { scope: 'local', target: resolved.target, path: propName }
442
+ : inheritedFont[key] !== undefined
443
+ ? (inheritedSource ?? { scope: 'default' })
444
+ : { scope: 'default' };
445
+ // Refine path for master font.size
446
+ const refined = source?.scope === 'master' && propName.startsWith('font.')
447
+ ? {
448
+ ...source,
449
+ path: `${source.path?.replace(/\.font$/, '') ?? 'textStyles.body.level.0'}.${propName}`,
450
+ }
451
+ : source;
452
+ all[propName] = prop(effective, direct, refined, unit);
453
+ };
454
+ mergeFont('family', 'font.family');
455
+ mergeFont('size', 'font.size', 'pt');
456
+ mergeFont('weight', 'font.weight');
457
+ mergeFont('italic', 'font.italic');
458
+ mergeFont('underline', 'font.underline');
459
+ mergeFont('color', 'font.color');
460
+ const pPr = first(descendants(node, 'p')[0] ?? node, 'pPr');
461
+ const align = attr(pPr, 'algn');
462
+ const lvl = attr(pPr, 'lvl');
463
+ all['paragraph.align'] = prop(align ?? null, align ?? null, align
464
+ ? { scope: 'local', target: resolved.target, path: 'paragraph.align' }
465
+ : { scope: 'default' });
466
+ all['paragraph.level'] = prop(lvl !== undefined ? Number(lvl) : 0, lvl !== undefined ? Number(lvl) : null, lvl !== undefined
467
+ ? { scope: 'local', target: resolved.target, path: 'paragraph.level' }
468
+ : { scope: 'default' });
469
+ const hlink = typeof item.payload?.['hyperlink'] === 'string' ? item.payload['hyperlink'] : null;
470
+ all['hyperlink'] = prop(hlink, hlink, hlink ? { scope: 'local', target: resolved.target, path: 'hyperlink' } : { scope: 'default' });
471
+ const phType = typeof item.payload?.['placeholder'] === 'string' ? item.payload['placeholder'] : null;
472
+ all['placeholder'] = prop(phType, phType, phType
473
+ ? { scope: 'local', target: resolved.target, path: 'placeholder' }
474
+ : { scope: 'default' });
475
+ return {
476
+ target: resolved.target,
477
+ uid: resolved.uid,
478
+ ...(name ? { name } : {}),
479
+ properties: filterProps(all, options.props, mode, includeProvenance),
480
+ warnings,
481
+ };
482
+ }
483
+ /** Map Phase-1 dotted property names to legacy setProperties keys. */
484
+ export const mapDottedProperties = (properties) => {
485
+ const out = {};
486
+ for (const [key, value] of Object.entries(properties)) {
487
+ switch (key) {
488
+ case 'font.family':
489
+ out['fontFamily'] = value;
490
+ break;
491
+ case 'font.size':
492
+ out['fontSize'] = value;
493
+ break;
494
+ case 'font.weight':
495
+ out['bold'] = value === 'bold' || value === true;
496
+ break;
497
+ case 'font.italic':
498
+ out['italic'] = value;
499
+ break;
500
+ case 'font.underline':
501
+ out['underline'] = value;
502
+ break;
503
+ case 'font.color':
504
+ out['textColor'] = typeof value === 'string' ? value.replace(/^#/, '') : value;
505
+ break;
506
+ case 'fill.color':
507
+ out['fill'] = typeof value === 'string' ? value.replace(/^#/, '') : value;
508
+ break;
509
+ case 'fill.kind':
510
+ if (value === 'none')
511
+ out['fill'] = 'none';
512
+ break;
513
+ case 'fill.transparency':
514
+ // Stored via fill object when combined; ignore alone for now.
515
+ break;
516
+ case 'line.color':
517
+ case 'line.kind':
518
+ case 'line.width':
519
+ case 'line.dash': {
520
+ const line = out['line'] ?? {};
521
+ if (key === 'line.color' && typeof value === 'string')
522
+ line['color'] = value.replace(/^#/, '');
523
+ else if (key === 'line.kind' && value === 'none')
524
+ out['line'] = 'none';
525
+ else if (key === 'line.width')
526
+ line['width'] = value;
527
+ else if (key === 'line.dash')
528
+ line['dash'] = value;
529
+ if (out['line'] !== 'none')
530
+ out['line'] = { ...line };
531
+ break;
532
+ }
533
+ case 'text.value':
534
+ out['text'] = value;
535
+ break;
536
+ case 'name':
537
+ out['name'] = value;
538
+ break;
539
+ case 'visible':
540
+ out['hidden'] = value === false;
541
+ break;
542
+ case 'paragraph.align':
543
+ out['paragraph.align'] = value;
544
+ break;
545
+ case 'paragraph.level':
546
+ out['paragraph.level'] = typeof value === 'string' ? Number(value) : value;
547
+ break;
548
+ case 'bullet':
549
+ out['bullet'] = value;
550
+ break;
551
+ case 'hyperlink':
552
+ out['hyperlink'] = value === '' ? null : value;
553
+ break;
554
+ default:
555
+ out[key] = value;
556
+ }
557
+ }
558
+ // Combine fill.color + transparency
559
+ if ('fill.color' in properties || 'fill.transparency' in properties) {
560
+ const color = properties['fill.color'];
561
+ const transparency = properties['fill.transparency'];
562
+ if (typeof color === 'string') {
563
+ out['fill'] =
564
+ transparency !== undefined
565
+ ? { type: 'solid', color: color.replace(/^#/, ''), transparency }
566
+ : color.replace(/^#/, '');
567
+ }
568
+ }
569
+ return out;
570
+ };
571
+ //# sourceMappingURL=resolve-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-properties.js","sourceRoot":"","sources":["../../src/pptx/resolve-properties.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type LengthContext } from '../core/index.js';
2
+ import type { OpcArchive } from '../opc/index.js';
3
+ export interface SlideSize {
4
+ readonly widthEmu: number;
5
+ readonly heightEmu: number;
6
+ }
7
+ export declare function readSlideSize(archive: OpcArchive): SlideSize;
8
+ export declare function lengthContextFor(archive: OpcArchive, axis?: LengthContext['axis']): LengthContext;
9
+ //# sourceMappingURL=slide-size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide-size.d.ts","sourceRoot":"","sources":["../../src/pptx/slide-size.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAgB5D;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAc,GACvC,aAAa,CAOf"}
@@ -0,0 +1,29 @@
1
+ import { DEFAULT_SLIDE_HEIGHT_EMU, DEFAULT_SLIDE_WIDTH_EMU, } from '../core/index.js';
2
+ import { attr, first } from './xml.js';
3
+ export function readSlideSize(archive) {
4
+ try {
5
+ const presentation = archive.readXml('/ppt/presentation.xml');
6
+ const sldSz = first(presentation, 'sldSz');
7
+ const cx = attr(sldSz, 'cx');
8
+ const cy = attr(sldSz, 'cy');
9
+ if (cx && cy) {
10
+ const widthEmu = Number(cx);
11
+ const heightEmu = Number(cy);
12
+ if (Number.isFinite(widthEmu) && Number.isFinite(heightEmu) && widthEmu > 0 && heightEmu > 0)
13
+ return { widthEmu, heightEmu };
14
+ }
15
+ }
16
+ catch {
17
+ // fall through to defaults
18
+ }
19
+ return { widthEmu: DEFAULT_SLIDE_WIDTH_EMU, heightEmu: DEFAULT_SLIDE_HEIGHT_EMU };
20
+ }
21
+ export function lengthContextFor(archive, axis = 'absolute') {
22
+ const size = readSlideSize(archive);
23
+ return {
24
+ slideWidthEmu: size.widthEmu,
25
+ slideHeightEmu: size.heightEmu,
26
+ axis,
27
+ };
28
+ }
29
+ //# sourceMappingURL=slide-size.js.map